UPPGIFTEN: OPTIMALT SPEL
Ht1-2
## SYFTE
Syftet med uppgiften är skapa och optimera din spelarkontroll. Vi ska lära oss använda skapa experiment, köra ignång dem med olika inställnignar och samla resultat. Men vi måste förstås tänka efter först.
## SPELIDE och OPTIMERING
Din spelide ska någon form av 2D-spel där man styr en spelare som rör sig på skrämen antingen TOP_DOWN eller SIDE_VIEW och där vi kan identifiera egenskaper hos spelaren och/eller hos hinder/fiender som vi behöver balansera.
**Exempel:**
Tänk dig ett rymdspel där man flyger runt och skjuter på fiender. Fienderna står stilla men skjuter tillbaka på spelaren. Spelarens farkost kan åka framåt med en maxhastighet, rotera och skjuta.
I spelet kommer fienderna att skjuta kulor med en viss hastighet.
**Målet:**
Jag vill ta reda på hur snabba fiendernas skott kan vara utan att spelet blir omöjligt. Det gäller särskilt när det finns många fiender som skjuter från olika håll samtidigt.
Spelaren har en bestämd maxhastighet som jag har testat fram. Utifrån det, och hur ofta fienderna skjuter, vill jag hitta den högsta möjliga skotthastigheten där spelaren fortfarande kan klara sig igenom banan utan att dö.
**Optimering:**
Det handlar om att hitta en balans: skotten ska vara så snabba som möjligt, men inte så snabba att det blir orättvist eller ospelbart. Jag testar mig fram inom vissa intervall för att se vad som ger bäst spelupplevelse.
## SPELAR-STYRNING
Jag behöver skapa en styrning till mitt spel. Det finns olika nivåer av hur avancerad och bra styrningen är. Ju mer utvecklad den blir, desto bättre borde det ju bli :)
**Nivå 1:**
När jag trycker på piltangenterna rör sig spelaren ett fast steg varje bildruta (frame). Vänster och höger roterar farkosten ett bestämt antal grader varje gång.
**Nivå 2:**
Istället för fasta steg har jag nu en hastighet. Om jag trycker på upp-pilen ökar farten, och om jag trycker på ner-pilen bromsar jag och åker tillsut bakåt. Jag har även en max-hastighet. På samma sätt fungerar rotationen – jag har en rotationshastighet som jag själv måste balansera.
**Nivå 3:**
Här lägger jag till en extra funktion: om jag försöker styra åt motsatt håll från hur farkosten rör sig (t.ex. trycker bakåt medan jag åker framåt), så får jag en extra skjuts i den riktningen – en sorts "vändacceleration". Samma sak gäller om jag försöker svänga åt motsatt håll. Dessutom lägger jag till friktion som långsamt bromsar all rörelse över tid.
## HINDERBANA
För att göra optimeringen måste jag skapa en hinderbana i vilken vi kan spela och på så sätt hitta bästa värdena. Här måste jag stoppa in hinder eller fiender som jag ska balansera mot. Sedan måste jag identifiera ett vilkor för vinst. Det kan som i exempel ovan vara den högsta hastigheten inom ett interval jag valt för hand, där jag klara att ta mig från A till B. Eller det kan vara den hastighet som jag kan ta mig från A till B på med lägst hastighet. Beroende på vad jag väljer måste jag kunna fånga att vi når målet, och fåga värden som innbär att vi fått ett bättre resultat än tidigare.
Här kan man skriva upp bästa värden man haft tidigare i koden och sedan fortsätta köra en annan dag.
## OPTIMERING
Att optimera handlar egentligen om att spela spelet flera gånger tills man hittar det bästa värdet för en viss egenskap, till exempel skotthastighet eller spelarfart.
Men för att kunna avgöra vad som är "bäst" måste man först ha blivit ganska bra på att spela själv. Det krävs alltså både testning och träning, man får nog spela lite fler omgångar innan vi vet.
## FÅR MAN OPTIMERA MER?
Absolut! Det går att optimera många delar av spelet för att göra det riktigt bra. Men det är smartast att ta en sak i taget. Välj en egenskap att justera först – som maxhastighet – och balansera sedan andra delar av spelet utifrån det.
Till exempel:
Om du optimerar maxhastigheten i ett spel med hinder, där spelaren dör vid krockar, så testar du fram vilken fart som är lagom för att klara banan utan att det blir för lätt eller för svårt. Sedan kan du optimera nästa egenskap som beror på maxhastigheten.
Eftersom spelets olika delar påverkar varandra är det enklast att fokusera på en egenskap åt gången, särskilt när du spelar själv. Om man däremot kunde spela tusentals gånger automatiskt, eller ha en AI som spelade åt en, då skulle man kunna testa många egenskaper samtidigt och hitta helt andra resultat.
## REDOVISING
För att bli godkänd på uppgiften ska ni förklara koden för assistent och visa att ni förstå alla delar. Det är ni och inte assisteten som ska förklara. Koden lämnas sedan även in på [inlämningssidan](https://www.ida.liu.se/~TDDE04/handin/inlamning.sv.shtml)
Sidansvarig: infomaster
Senast uppdaterad: 2025-04-08