Fiasko/Deliverables/Oblig4.md

362 lines
15 KiB
Markdown
Raw Normal View History

# Team Fiasko
2020-04-30 12:04:25 +02:00
## Deloppgave 1
### Rollefordeling
Rollefordelingen i teamet fungerer fint slik som vi har det.
### Erfaringer
* Vi burde kommunisert med gruppeleder på et tidligere tidspunkt for å klarere hvilket krav som
faktisk skal møtes til innlevering.
* Vi skulle passet mer på i starten å ikke lage isfjell ved oppdeling av arbeidsoppgaver.
2020-05-07 11:16:37 +02:00
* Det er viktig å alltid lage brukerhistorier før implementering.
2020-04-30 12:04:25 +02:00
### Retrospektiv
#### Plan
Det vi planla var å ha tre digitale møter per korte sprint (en uke) for parprogrammering,
2020-05-05 14:37:17 +02:00
planlegging og generell diskusjon rundt prosjektet. Vi bruker oppsettet til scrum med parprogrammering lagt til.
Dette var metodikken vi planlagte å bruke fra starten av prosjektet og det har fortsatt å være dette oppsettet vi
har valgt bruke gjennom hele prosjektet.
Vi valgte å bruke scrum fordi oppsettet passer fint for tidsperiodene mellom obligene på prosjektet, der vi da kan ha
korte sprinter på en uke hver og lange sprinter i tidsrommet fra oblig til oblig.
2020-04-30 12:04:25 +02:00
Vi planla også å lage ferdig alle brukerhistoriene, akseptansekravene og
2020-05-05 14:37:17 +02:00
arbeidsoppgavene før vi begynte noe av kodearbeidet.
2020-04-30 12:04:25 +02:00
Arbeidsoppgaver skulle settes opp som issues i prosjektet på GitHub med gode beskrivelser
for så å legges til prosjekttavlen. Når noen i teamet skal begynne på en ny arbeidsoppgave skulle de
legge seg til i oppgaven på prosjekttavlen for så å flytte oppgaven fra "To do" kolonnen til "In progress" kolonnen.
#### Gjennomførelse
Vi har gjennomført planen vår som planlagt.
2020-05-07 11:16:37 +02:00
Det vi syntes at vi har gjort bra er at (nesten) alle har vært tilstede på alle møter vi har hatt.
2020-04-30 12:04:25 +02:00
#### Forbedringspunkter
2020-05-07 11:16:37 +02:00
Vi ville kommunisert med gruppeleder på et tidligere tidspunkt for å klarere hvilke krav som faktisk skal møtes
til innlevering, i tillegg til å sjekke retteskjemet. Vi har lært det er viktig å dele opp arbeidsoppgaver i passelige
biter, for å unngå isfjell.
2020-05-05 14:37:17 +02:00
Alltid lag brukerhistorie før implementering, et problem vi hadde i starten.
Ha tester som automatisk sjekker at alt funker som det skal, og lag manuelle tester for det som ikke
kan testes automatisk. Tenk på funksjonalitet i forhold til lettvinthet ved implementasjon av ting som multiplayer.
Selv når vi kodet med multiplayer in mind, måtte vi endre en del for å støtte klient og server funksjonalitet.
2020-04-30 12:04:25 +02:00
Prosjektmetodikken vi har valgt ville vi også brukt hvis vi måtte begynt på nytt.
2020-05-05 14:37:17 +02:00
### Gruppedynamikk og kommunikasjon
Kommunikasjonen innad i teamet har i all hovedsak fungert fint.
Vi brukte allerede online møter før nedstenging, så da gikk vi fra to timer til 8 timer online møte i uken.
2020-05-07 11:16:37 +02:00
Vi jobber typisk først sammen for så å dele oss opp i flere samtaler ut ifra hvem som jobber sammen.
2020-05-05 14:37:17 +02:00
Visualisering i form av tavle ble noe vanskeligere når vi måtte bruke skjermdeling av paint i stedet for
2020-05-07 11:16:37 +02:00
en fysisk tavle. Når vi ikke hadde fysisk møter, så vi heller ikke gruppeleder, noe som førte til mindre kommunikasjon.
2020-05-05 14:37:17 +02:00
Når vi sitter i forskjellige samtaler er det også vanskeligere for teamleder å ha oversikt over hele gruppen.
Det tar lenger tid å få hjelp enn om vi satt i samme rom.
## Deloppgave 2
2020-05-07 12:00:01 +02:00
### Systemkrav denne sprinten
##### MVP Krav
- En spiller taper når de mister alle liv.
- En spiller må kunne vinne.
- Runder (Består av 5 faser. Du får nye kort, reparasjon, powerdown etc.).
- Faser (Ett kort fra hver spiller blir brukt, og objekter på brettet interagerer.
Registrering av flagg skjer etter hver fase).
- Kunne spille med andre spillere over lan/internett.
- Spillere beveger seg hver fase og kort bestemmer hvem som går først.
- Velge kort i starten av runden.
- Kunne velge powerdown etter alle har låst kortene sine.
- Ved slutten av runden mister roboten en i skade hvis de står på en reparasjonsbrikke eller flagg.
- Hvis en spiller er i powerdown blir spilleren spurt (i starten av nye runden) om han vil bli i powerdown eller ikke.
- Samle inn kort i slutten av en runde.
- Ikke samle sammen kort som er låst.
##### Nye implementerte NTH (Nice to have)
- Kunne velge hvilket brett man vil spille på
- Flere funksjonelle tiles (partalls pushere og oddetalls pushere)
- Bedre grafikk for bedre brukeropplevelse (informasjon som liv, skade etc.)
- Automatisk scanning av LAN
- Kunne velge hvilken port man vil
- Host kan se antall spillere koblet til spillet før start
- En spiller har valget mellom å se på spillet eller disconnecte etter han/hun har tapt.
- Vise låste kort
2020-05-07 11:16:37 +02:00
### Brukerhistorier for en runde
#### Brukerhistorie 1
2020-05-05 14:37:17 +02:00
* Som runde trenger jeg å kunne kjøre faser for å progresere spillet.
*Akseptansekrav*
* Runden kjører fem faser.
*Arbeidsoppgaver*
* Legg til en funksjon for å kjøre fem faser.
#### Brukerhistorie 2
2020-05-05 14:37:17 +02:00
* Som spiller trenger jeg å få tildelt programmeringskort for å kunne lage et program.
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Del ut programmeringskort fra spillet sin kortstokk til hver spiller.
2020-05-05 14:37:17 +02:00
* Spillere får antall programmeringskort ut ifra hvor mye skade de har blitt påført.
*Arbeidsoppgaver*
* Legg til funksjon for å tildele programmeringskort til alle spillere.
#### Brukerhistorie 3
2020-05-05 14:37:17 +02:00
* Som spiller trenger jeg å få mulighet til å annonsere powerdown for at roboten min vil kunne ta en powerdown.
*Akseptansekrav*
* Spiller må få spørsmål i starten av en runde om de vil gå i powerdown neste runde.
* Roboten til spilleren må gå i powerdown om spilleren annonserte det forrige runde.
*Arbeidsoppgaver*
* Serveren må kunne sende programmeringskortene, spiller listen og brett navnet til alle klientene og
alle klientene må forvente å mota dette objektet.
* Legg til en funksjon for å gi spiller en mulighet for å gå i powerdown.
#### Brukerhistorie 4
2020-05-05 14:37:17 +02:00
* Som robot trenger jeg å kunne gå i powerdown for å kunne kurere all skade.
*Akseptansekrav*
* Starten av runden settes skaden til roboter som skal i powerdown til null.
*Arbeidsoppgaver*
* Legg til funksjon for å gå i powerdown.
#### Brukerhistorie 5
2020-05-05 14:37:17 +02:00
* Som reperasjonstile trenger jeg å kunne fikse skade på roboter for å gjennomføre min funksjon.
*Akseptansekrav*
* Roboter som står på en reperasjonstile i slutten av en runde, får fjernet en skade.
* Reperasjonstiles er: Flagg, skiftenøkkel og skiftenøkkel + hammer.
*Arbeidsoppgaver*
* Legg til en funksjon som aktiverer alle reperasjonstiles og reparere roboter som står der.
#### Brukerhistorie 6
2020-05-05 14:37:17 +02:00
* Som spiller må jeg kunne levere inn mine gamle ulåste kort for å få nye kort.
*Akseptansekrav*
* Ulåste kort blir lagt tilbake i spillkortstokken etter runden er ferdig.
*Arbeidsoppgaver*
* Legg til funksjon for å samle inn kort som ikke er låst.
#### Brukerhistorie 7
2020-05-05 14:37:17 +02:00
* Som spiller må jeg få mulighet til å fortsette min powerdown for å kunne fikse eventuell ny skade.
*Akseptansekrav*
* Spillere som er i powerdown får mulighet i starten av runden om å fortsette powerdown eller ikke.
*Arbeidsoppgaver*
* Legg til funksjon for å gi spillere som er i powerdown mulighet for å fortsette i powerdown.
#### Brukerhistorie 8
2020-05-07 11:16:37 +02:00
* Som spiller må roboten min kunne bli respawnet for å kunne ta del i spillet videre, gitt at den har flere liv.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
* En robot som dør får ett mindre liv.
* Hvis roboten er tom for liv, taper spilleren dens.
* Når en robot dør, gjennoppliver den på sin backup posisjon.
*Arbeidsoppgaver*
* Legg til en funksjon som gjennoppliver roboter som har flere liv.
#### Brukerhistorie 9
2020-05-05 14:37:17 +02:00
* Som spiller må registrene mine bli låst ut ifra hvor mye skade jeg har, for å representere en skadet robot.
*Akseptansekrav*
* Roboter med mer enn fire skade, får låst antall register over fire skade.
2020-05-07 11:16:37 +02:00
* Kort som står i låste registre blir ikke samlet inn og kan ikke endres.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
2020-05-07 11:16:37 +02:00
* Legg til en funksjon for å låse registre.
2020-05-05 14:37:17 +02:00
2020-05-07 11:16:37 +02:00
### Brukerhistorier for GUI/Nettverk
#### Brukerhistorie 10
2020-05-05 14:37:17 +02:00
* Som spiller må jeg kunne velge kort for å programmere roboten min.
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Det finnes et grafisk grensesnitt for å velge kort.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Lage et grafisk grensesnitt som lar en bruker velge kort.
#### Brukerhistorie 11
2020-05-07 11:16:37 +02:00
* Som spiller, når jeg treffer det siste flagget mitt skal/må spillet stoppe for at jeg skal kunne vinne.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
* Det blir vist en skjerm som sier hvem som vinner.
*Arbeidsoppgaver*
* Lage en libgdx skjerm som sier hvilken spiller som har vunnet.
2020-05-07 11:16:37 +02:00
* Få spillet til å ikke fortsette til neste runde, men bytte til vinneskjermen i stedet
2020-05-05 14:37:17 +02:00
#### Brukerhistorie 12
2020-05-07 11:16:37 +02:00
* Som spiller må en person også være en server som kan dele ut informasjon til alle klienter for å ha et
sentralt distribusjons-senter for informasjon.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
* Det finnes en funksjon som lar deg velge å bli en server.
*Arbeidsoppgaver*
2020-05-07 11:16:37 +02:00
* Legge til en grafisk knapp som lar spilleren starte en serever
2020-05-05 14:37:17 +02:00
* Legge til funksjonalitet som starter en server dersom brukeren velger å starte som server.
#### Brukerhistorie 13
2020-05-05 14:37:17 +02:00
* Som klient må jeg kunne sende inn spillernavnet mitt til serveren for å bli identifisert i spillet.
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Det finnes et grafisk grensesnitt som lar klienten skrive inn navnet sitt og sende det til serveren.
* Serveren må forvente å motta navnet fra spilleren.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
2020-05-07 11:16:37 +02:00
* Serveren må forvente å motta navn fra spillere og må bruke det navnet til å lage en spiller.
2020-05-05 14:37:17 +02:00
* Lage et grafisk grensesnitt som lar en klient koble seg til en server.
2020-05-07 11:16:37 +02:00
#### Brukerhistorie 14
2020-05-05 14:37:17 +02:00
* Som spiller må jeg kunne se hvilken robot som er min for at jeg skal kunne identifisere roboten min.
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Brettet må kunne vise hvilken robot som hører til hvilken spiller.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Lage et grafisk grensesnitt som lar deg se navn på alle spillere og hvilken robot som tilhører hver spiller.
#### Brukerhistorie 15
2020-05-07 11:16:37 +02:00
* Som server må jeg kunne sende brettnavn og en spillerliste med alle spillerne for at spillet skal bli synkronisert.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Serveren må sende brettnavnet og en liste med alle spillerne til alle klientene.
* Klientene må forvente å mota brettnavnet og en liste med alle spillerne.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
2020-05-07 11:16:37 +02:00
* Serveren må kunne sende spillerlisten og brettnavnet til alle klientene, og
alle klientene må forvente å motta dette objektet.
2020-05-05 14:37:17 +02:00
#### Brukerhistorie 16
2020-05-07 11:16:37 +02:00
* Som klient må jeg kunne sende informasjon om jeg skal i powerdown og programmet mitt inn til serveren for at spillet
skal bli synkronisert.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Klienten må kunne sende powerdown og programmet mitt inn til serveren.
* Serven må forvente å motta informasjon om powerdown og programmet til klienten.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Alle klienter må kunne sende inn informasjon om de skal i powerdown og programmet spilleren har programmert.
#### Brukerhistorie 17
2020-05-05 14:37:17 +02:00
* Som server må jeg kunne sende informasjon om alle som skal i powerdown og alle sine programmer for at
spillet skal bli synkronisert.
*Akseptansekrav*
* Serveren må kunne sende informasjon om alle som skal i powerdown til alle klientene.
2020-05-07 11:16:37 +02:00
* Klientene må forvente å motta informasjon om alle som skal i powerdown.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Informasjon om powerdown og programmeringskort må sendes tilbake til alle klienter slik at
alle har samme informasjon.
* Klientene må forvente å mota denne informasjon.
#### Brukerhistorie 18
2020-05-05 14:37:17 +02:00
* Som Host må jeg kunne samle inn alle ulåste kort fra spillerne for at integriteten til kortstokken skal ivaretas.
*Akseptansekrav*
* Host må samle inn alle de ulåste kortene ut ifra programmene som blir mottatt fra serveren.
*Arbeidsoppgaver*
2020-05-07 11:16:37 +02:00
* Flytte ubrukte kort tilbake i hovedkortstokken hvis denne instansen av spillet er en host.
2020-05-05 14:37:17 +02:00
#### Brukerhistorie 19
2020-05-05 14:37:17 +02:00
* Som klient må jeg få mulighet til å fortsette powerdown og sende den informasjonen inn til serveren for at ønsket om
powerdown skal bli vedlikeholdt mellom alle klientene.
*Akseptansekrav*
* Det finnes et grafisk grensesnitt som lar deg velge å fortsette powerdown.
* Valget av å fortsette powerdown må bli sent inn til serveren.
* Serveren må forvente å motta valget om å fortsette powerdown.
*Arbeidsoppgaver*
* Lage et grafisk grensesnitt som lar en bruker fortsette powerdown.
2020-05-07 11:16:37 +02:00
* Klienten må få mulighet til å fortsette powerdown og serveren må forvente å motta denne informasjonen.
2020-05-05 14:37:17 +02:00
#### Brukerhistorie 20
* Som server må jeg kunne sende informasjon om alle roboter i powerdown og sende nye programmerings kort til alle
klientene for at spillet skal bli synkronisert.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
2020-05-05 14:37:17 +02:00
* Serveren må kunne sende informasjon om alle roboter i powerdown og nye programmerings kort til alle klientene.
2020-05-07 11:16:37 +02:00
* Klientene må forvente å motta informasjon om powerdown og de nye programmeringskortene.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Serveren må kunne sende informasjon om alle som fortsetter powerdown og nye programmeringskort.
* Klienten må forvente å motta denne informasjonen.
#### Brukerhistorie 21
2020-05-05 14:37:17 +02:00
* Som server må jeg kunne håndtere spillere som taper for at klienter som har tapt ikke skal bli spurt om input.
*Akseptansekrav*
* Serveren må kunne markere klienter den ikke skal ha input fra.
*Arbeidsoppgaver*
* Serveren makerer alle som har død og derfor ikke skal ha input fra.
2020-05-07 11:16:37 +02:00
* Serveren må håndtere en spiller som er død og blir frakoblet og som ikke er host.
2020-05-05 14:37:17 +02:00
#### Brukerhistorie 22
2020-05-05 14:37:17 +02:00
* Som spiller må jeg ha et grensesnitt for å bestemme om jeg skal være server, klient eller avslutte.
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Det finnes et grafisk grensesnitt for å kunne velge å være server, klient eller å avslutte.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Lage et grafisk grensesnitt som lar brukeren velge å starte som server, koble til en server eller avslutte spillet.
#### Brukerhistorie 23
2020-05-07 11:16:37 +02:00
* Som spiller må jeg ha et grensesnitt for å bestemme hvilken server jeg skal koble til.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
* Det finnes et grafisk grensesnitt for å kunne velge server.
*Arbeidsoppgaver*
* Lage en libgdx skjerm som viser servere som kjører på samme nettverk på default port.
* Skjermen må inneholde mulighet for å kunne spesifisere ip og port for en vilkårlig server.
#### Brukerhistorie 24
2020-05-07 11:16:37 +02:00
* Som spiller må jeg ha et grensesnitt for å kunne skrive inn spiller-navnet mitt.
2020-05-05 14:37:17 +02:00
*Akseptansekrav*
2020-05-07 11:16:37 +02:00
* Det finnes et grafisk grensesnitt for å kunne skrive inn spiller-navnet.
2020-05-05 14:37:17 +02:00
*Arbeidsoppgaver*
* Lage et grafisk grensesnitt som lar en klient skrive inn sitt spiller navn.
#### Brukerhistorie 25
2020-05-05 14:37:17 +02:00
* Som spiller må jeg ha et grensesnitt som viser at jeg venter på noe, for å ikke bli forvirret når ingenting skjer.
*Akseptansekrav*
* Det finnes et grafisk grensesnitt for å varsle om venting i spillet.
*Arbeidsoppgaver*
* Lage en libgdx skjerm som viser at spillet venter på noe.
## Deloppgave 3
- For dokumentasjon om bygging, testing og kjøring, se [README.md](../README.md).