And the game goes on!

We zijn ondertussen op de helft van de tijd voor ons project en dit betekent dat er langzamerhand resultaten moeten komen, deze zijn er natuurlijk ook. Sinds onze laatste blogpost is er flink veel veranderd. We hadden alleen een framework, een speler die kon bewegen en schieten en een paar menu’s. We hebben de gameplay nu al flink veel verder uitgewerkt, hier volgt een korte samenvatting van wat we de laatste tijd geprogrammeerd hebben.

We hebben onze player verder uitgebreid met beweeg animaties voor 8 kanten en de camera class gemaakt zodat je door het hele speelveld kan rond bewegen. Hierna heeft Stef alle gameObjecten op een 2D grid gezet zodat het mogelijk werd om op collision te testen tussen kogels en tegenstanders, speler en onze base. Met behulp van deze collision is de rest van de gameplay gemaakt. Er spawnen nu aan een random kant van je base enemies die je kunt raken (yay collision), deze enemies hebben al een AI. Ze focussen of de speler of je base en soms zelfs beiden, net welke dichterbij is. De enemies kunnen natuurlijk dood als je ze vaak genoeg raakt maar jij zelf kan ook dood aangezien ze ook al terugschieten. Als je dood gaat is het gelukkig nog niet gameover, je respawned na een korte tijd weer vlak naast je base maar geeft daarmee wel de enemies tijd om je base kapot te maken. Deze base heeft 100 levens en als die allemaal op zijn wordt je weer teruggestuurd naar het startscherm en wordt het spel gereset. Als extraatje heeft Stef nog mooie visuals gemaakt met particles, als je kogel nu iets raakt splat die uiteen in een paar spettertjes in plaats van gewoon te verdwijnen. Daarnaast is er een kleine recoil als jij schiet, dit geeft een realistischer gevoel aan het spel. Ook is er een kleine knockback als je zelf geraakt wordt of als je een enemy raakt.

Het is nu dan eindelijk vakantie! Feitelijk houdt dat in dat iedereen weg is, maar we gaan wel hard doorwerken aan onze game. Het plan is om in ieder geval een begin te maken aan de turrets die je kunt kopen om je base uit te breiden. Wat ook inhoud dat onze ingame shop moet worden verbeterd. Ook de graphics verdienen natuurlijk aandacht en we hopen een goede hoeveelheid nieuwe zelf gemaakte sprites af te hebben tegen het einde van de vakantie zodat onze base er niet meer zo uit ziet. (in het spel ziet hij er veel lelijker uit omdat er een wit vierkant omheen zit dat niet transparant is.)

Naast al dit harde werk voor ons project zijn er ook ideeën om een keer lekker gezellig samen naar de film te gaan, waarschijnlijk de hobbit als nog niet iedereen die tegen die tijd gezien heeft. Het lijkt alleen alsof we nooit een tijdstip kunnen vinden waarop iedereen hier zin en of tijd voor heeft. 

Deze week hebben we ook een presentatie gehouden over onze game, net als alle andere groepen.
Zo hebben we dus kunnen zien wat mensen allemaal aan het doen zijn. Wat opviel is dat wij eigenlijk vrij ver gevorderd zijn; de andere groepjes liggen best ver achter of hebben op dit moment gewoon nog niet zo veel om te laten zien. Dat is dus op zich best een geruststelling.
Wat dan wel weer een probleempje is, is dat we uren te kort komen. We moeten voor dit project namelijk een bepaald aantal uren vullen, maar de meeste mensen uit ons team zitten nu pas op een kwart daarvan (of nog minder), terwijl we al halverwege de tijd zijn.
AYBABTU begint  toch al wel redelijk  vorm te krijgen, dus waarschijnlijk is de game al af als wij op de helft van de vereiste tijd zitten. Dan is de vraag dus; werken wij nou zo snel, of moeten we gewoon meer doen?


Nog een ander ding dat veranderd is, die leuke filters die we eerst over onze sprites heen gooiden, hebben we er weer uit gehaald. De Pixel-achtige stijl vonden we toch mooier en de game een meer retro-look geven.

Het begin

Na een paar weken in dit project begint onze werkstijl al een beetje vast te liggen. Meestal zit een man of 4 via Skype te praten terwijl ze aan hun dingen werken, zodat we elkaar tips kunnen geven en helpen met moeilijke dingen. Sommige mensen zitten zelfs al tot diep in de nacht door te werken (Stef *kuch*), of tijdens hoorcolleges doodleuk code te schrijven.
Een ding staat vast, iedereen begint steeds meer lol te krijgen in het programmeren.
Sommige Skypesessies kunnen urenlang doorgaan en eindigen vaak in het gezamenlijk gamen om alle serieuze zaken af te ronden met wat ontspanning.

De game zelf begint ook al ergens op te lijken. De eerste sprites zijn gemaakt, de sprites van de character, en de basis voor het programmeerwerk is al zo’n beetje gelegd.
Het spel gaat zich afspelen in de ruimte. De character die je bestuurt is zoals je ziet een persoon met een jetpack. Hiermee moet je je basis verdedigen tegen enemies uit de ruimte. Deze enemies komen in waves naar je basis toe. Tussen de waves door heb je tijd om je basis te repareren, turrets te kopen/upgraden en je character te upgraden. Het geld dat je daar voor nodig hebt krijg je door geld op te pakken dat vijanden ‘droppen’ als je ze neerschiet. Het verdedigen van je basis hoef je niet alleen te doen, zoals ik net al zei is het mogelijk om turrets te kopen. Deze turrets kan je rond je basis plaatsen en doen dan hun best om enemies neer te schieten om te voorkomen dat je basis beschadigd raakt.

De artstyle waar we voor hebben gekozen is een cartoon-achtige style. Dit komt door de manier waarop we de sprite bewerken. Het origineel van de sprites is 32x32 pixels groot, maar wordt daarna 3x vergroot. Vervolgens wordt er met Photoshop een ‘Dry Brush’-filter op toegepast, waardoor het er best wel cool uitziet. Op deze manier kunnen we vrij makkelijk sprites maken van een redelijke grootte. We zijn op deze manier gekomen, omdat de sprites die Dirk had gemaakt eigenlijk wat te klein waren voor onze game. De game is namelijk bedoeld om in fullscreen te spelen. Wanneer je zo’n kleine sprite 3x vergroot ziet het er niet echt geweldig uit. Maar met het Photoshop filter er overheen zag het er wel cool uit, omdat het ervoor zorgt dat de pixels niet zo duidelijk zichtbaar zijn (zie afbeelding hierboven).

Stef en Gijs hebben de basis van het programmeerwerk gedaan. Zo hebben we de structuur van het spel beschreven en ook al beginnetjes aan de klassen gemaakt. Deze structuur is tijdens vergaderingen nog goed uitgelegd en later zijn er ook wat taken verdeeld. Zo heeft Wouter bijvoorbeeld een beginnetje gemaakt aan de menu’s, zoals een helpmenu en startmenu.

Tijdens vergaderingen hebben wij besloten om een middag gezellig met z’n allen te programmeren en zo het spel een stuk verder afgemaakt te krijgen. Op deze manier kunnen we ook vragen stellen aan elkaar en werkt dit ten goede van onze motivatie om er aan te werken. Ook kunnen we op die manier een nuttige en gezellige tijd hebben!

Naast onze vorderingen en plannen hebben we even nagedacht over eventuele problemen. Het is zo dat het werken en programmeren in groepen even wennen is, waarbij problemen zouden kunnen ontstaan. Wij denken echter dat hierbij geen problemen zullen ontstaan, zolang iedereen zijn best doet en we goed blijven communiceren op Skype. Tot nu toe is het best prima gedaan, dus dit is zeker iets om vol te blijven houden.

Ook al was het lastig  om een beetje op gang te komen, ging het sinds we de basis van de game hadden stukken beter en hebben we taken verdeeld. Ook aangezien er al wat resultaten werden bereikt, werd iedereen wat gemotiveerder en werd er beter gewerkt.

Zoals al eerder is gezegd zijn we al flink begonnen met programmeren, soms tot diep in de nacht. Natuurlijk betekent dat ook dat delen van onze game al werken. Hier volgt een korte samenvatting van wat we tot nu toe geprogrammeerd hebben.
We zijn begonnen met het framework maken. Dit is deels gekopieerd van een game die we hebben gemaakt in het vak Gameprogrammeren, maar met redelijk veel aanpassingen. Als eerste hebben we de GameStates geïmplementeerd waarna we door zijn gegaan met Entity’s maken (gameobjecten) hierna volgt natuurlijk de spriteEntity. De spriteEntity kan ook animaties bevatten, sterker nog meerdere animaties. Hierna begon het leuk te worden en hebben we de player gemaakt, dit is het eerste echt zichtbare bewijs dat er iets gedaan is. Deze speler kan bewegen en schieten, dit brengt me bij het volgende punt, Particles. Stef vond het leuk om om 3 uur ‘s nachts even een particle engine in elkaar te bouwen waardoor onze speler een gruwelijk mooie lightsaber heeft gekregen. Dit terwijl het de bedoeling was dat onze speler kan schieten maar dat hebben we ondertussen ook al opgelost. De classes voor de enemies en de base die onze game krijgt staan ook al klaar, maar daar zijn nog geen sprites voor en die zijn ook nog niet volledig uitgewerkt. Naast al dit programmeren aan de game is er ook al werk verricht aan de menu’s. Er is een Menu class en een Button class die het mogelijk maakt om heel snel en simpel een menuutje in elkaar te flansen.
Tot zover de update over hoe het staat met het programmeren van onze game. Zoals gezegd sluiten we onze programmeer sessies graag af met een potje League of Legends met als hoogtepunt voor mij persoonlijk de All for One-Poppy game van vorige week.