Waves

Skärmklipp

Hej jag heter Linus Bjernhagen och är från grupp 17.

Spelet som vår grupp skapar heter Planet Suburbia. I spelet skjuter man på utomjordingar som vill ta sig till jorden. Man kan förflytta sig runt jorden igenom fyra olika sektorer.

På måndagen så programmerade jag så att fienderna kommer i ett antal olika ‘waves’. Det gör att alla fienderna inte kommer på en gång, och då kan spelaren ta en kort paus i spelandet så det inte blir för hektiskt. När en ny wave kommer så kommer ett meddelande upp mitt på skärmen där det står att en ny wave kommer; t.ex. ”First Wave”, ”Second Wave”, ”Third Wave”, och så vidare. Vi har inte bestämt exakt hur varje wave ska se ut, eller vilket antal. På bilden ovan ser man att den andra waven håller på att startar, och att två utomjording-skepp som har spawnat.

Spawningen av fiender i waves är uppbyggt genom att det finns en lista över ‘WaveStep’ som itereras igenom hela spelets gång. En WaveStep innehåller vilken som är den nästa typen av fiende som ska spawna, hur lång tid det är från den föregående tills den ny ska spawna, vilken vinkel runt jorden den ska spawna, och om en ny wave ska börja.

Med det här systemet är det även lätt för andra saker i koden att se vilken wave det är just nu, det är bara att kolla vilken den nuvarande WaveStep är.

Jag tyckte jag kom på ett bra sätt hur jag skulle programmera det nästan på direkten, så jag tänkte inte på några andra sätt att programmera det på. Några andra sätt som jag tänker nu i efterhand som också kunde ha fungerat är:

  • Att skriva en klass för varje gång en ny fiende dyker upp. Det här vore en väldigt dum idé eftersom det i så fall behövas hundratals klasser som alla är nästan precis likadana. Det skulle bli onödigt mycket kod, och svårare att hålla koll på.
  • Man kan ha så att fienderna spawnar slumpmässigt runt jorden och waves hanteras igenom att varje wave pågår en viss tid, och pausen emellan waves pågår en viss tid. Tiden kan vara samma i varje wave, eller variera under spelets gång.
  • Istället för att ha WaveStep eller iterera igenom en lista så kan man kalla på AlienShip::create() med parametrar om när och var den ska spawna, och kalla på den på alla fiender som ska spawna efter varandra på följd. Det här skulle fungera ungefär lika bra, men jag tycker sättet som gjorde det på är snyggare.

About Linus Bjernhagen

2015 Programming