Release

Onze game Aybabtu is nu officieel uit en gratis speelbaar! Klik in het menu op de tab 'Onze Game' voor de download link.

Finishing the game

De laatste paar weken hebben we hard gewerkt aan het project. Veel deadlines zijn gesteld, gehaald en mislukt. Het is natuurlijk de bedoeling dat het spel al over een week wordt gepresenteerd, dus we moeten nu de laatste features er nog inzetten en de laatste tweaks maken. Maar dat weerhoudt ons er niet van om de laatste ideeën nog in het spel te persen!

In een paar weken heeft het spel op eens een werkend shop systeem, meer enemies, boss fights, meer wapens en nog veel meer! Het shop systeem en de HUD valt misschien wel het meest op, Maurits en Dirk hebben hard gewerkt om hier mooie sprites voor te maken en dat zie je ook. We hebben nu een health bar voor jezelf en je base bovenin van het scherm staan en links onderin staan je wapens waar je doorheen kan scrollen. Als je het spel gaat spelen telt het spel eerst af van 5 naar 0 voordat de enemies spawnen. Als het je lukt om ze allemaal dood te schieten geeft het spel je even aan hoeveel punten je hebt behaald en hoeveel geld je er bij hebt gekregen. Vervolgens kom je in de shop en kan je upgrades kopen of je base repareren. Je kan onder andere ook al turrets kopen die rond je base rondvliegen om je te helpen. Iemand vond het leuk om de prijzen van alles flink naar beneden te gooien waardoor het enorm makkelijk werd om honderden turrets te kopen, deze turrets deden allemaal hun stinkende best om enemies dood te schieten, het resultaat is een prachtig patroon aan kogels. Iedereen kon hier wel om lachen en ging vervolgens het limiet van hun laptop opzoeken...


Het laat wel meteen zien hoeveel particles en objecten het spel aan kan voordat het niet meer werkt (wat wel meer dan duizenden zijn!) en het laat zien hoe moeilijk het eigenlijk is om een mooie balans voor de speler op te stellen. Het moet niet te moeilijk zijn maar ook niet te makkelijk. Hiervoor moeten we de prijzen van alle wapens en upgrades in de shop gaan tweaken zodat je niet instant dood gaat maar dat je het niet, zoals boven te zien is, op eens enorm makkelijk krijgt.

Over wapens gesproken, we hebben een mooi, werkend (!) wapen systeem in het spel gezet. De wapens zijn nu je standaard geweer, een shotgun, een sniper en een grenade launcher. De laatste drie kan je in de shop kopen en upgraden, de eerste kan je alleen upgraden. Als je een wapen upgrade krijgt hij meer damage of schiet hij sneller. Wanneer je de sniper upgrade krijgt het ook een langere range en een grotere ‘penetrationdepth’, oftewel door hoeveel enemies een kogel kan voordat de kogel verdwijnt.

Naast wapens, wapen upgrades en turrets zijn er nog upgrades voor de character die je kan kopen in de shop. Zoals een upgrade die je maximale health of de snelheid van de character vergroot. We moeten nog meer van dat soort upgrades maken/bedenken voor in de shop, want er kan nog wel wat bij. Een idee is om nog een upgrade te maken die ervoor zorgt dat de character sneller ‘respawned’ wanneer je dood bent gegaan.

Het spel is al bijna klaar, maar er zijn wel nog wat kleine bugs die gefixed moeten worden. Laatst bij het doen van een testrun overleefde ik nog net een wave, al was de healthbar van de base helemaal leeg. Ik had erg veel geluk:
Dat luck tho

Kleine bugs als deze kom je vaak alleen tegen als je het spel speelt, dus dat is het leuke van de fase waarin we nu zitten. Er hoeft niet heel veel nieuws meer gemaakt te worden, maar we kunnen het spel gaan spelen om eventuele bugs te vinden. En dat is leuk want het is een best leuk en verslavend spel geworden, al zeg ik het zelf. Als je begint met spelen wil je niet zo snel stoppen, omdat je steeds weer een wave verder wil komen en upgrades wil kunnen kopen met het geld dat je elke wave verdiend.

De grote dingen die nog gedaan moeten worden is het maken van een startscherm en het compleet maken van de shop. Wanneer dat is gedaan is het spel echt af en kan het gebrand worden op een CD/DVD. Die we vervolgens in een doosje doen met een prachtige cover waar Orissa nog mee bezig is. Natuurlijk is onze game vanaf volgende week ook hier op de site te downloaden. Houd daarvoor de pagina ‘Onze Game’ in de gaten. Daar plaatsen we binnenkort ook nog een trailer van de game, gemaakt door Wouter. Vrijdag 31 januari is er een symposium waar we onze game zullen presenteren en wellicht nemen we nog een award mee naar huis!

Happy New Year

Wat gaat de tijd toch snel! Het is alweer 2014 en kerst ligt ook alweer ver achter ons. Ook de werkzaamheden op de uni hebben zicht hervat. Wij werken ook weer op volle snelheid aan ons project. Maar in de vakantie hebben we ook niet stil gezeten!

Naast hertentamens leren, gamen, op vakantie gaan en biertjes drinken zijn we ook bezig geweest met ons project. Je hoort het al wel, het was een volle vakantie! In de vorige blogpost hebben jullie kunnen lezen dat we gebleven waren bij colissions. De colissions waren bedoeld voor het schieten en botsen met de enemies, alleen… we hadden nog niet heel veel verschillende enemies. Daar hebben we dus wat aan gedaan! We hebben nu drie verschillende enemy sprites (met dank aan Jurriaan en Dirk), ook kunnen dezelfde vijanden soms een net iets andere AI hebben. Dit maakt ons spel verrassender en onvoorspelbaarder.



Over AI gesproken, Stef en Gijs hebben in de vakantie hard gewerkt om deze verschillen in AI te realiseren. Zo hebben ze enemies gemaakt die zich focussen op jou als speler om jou dood te schieten, enemies die zich focussen op de base en kamikaze enemies die op volle snelheid op je afkomen (omdat het kan). In de AI wordt veel gebruikgemaakt van random getallen om te spelen met de snelheid van de vijand, de kracht van de kogels en hun health. Deze waardes bepalen de moeilijkheid van een vijand. De punten die je krijgt zijn afhankelijk van de moeilijkheid. Huh, punten? Ja! Sinds deze vakantie hebben we ook een score systeem.

De score: als je een enemy doodt dan krijg je een standaard aantal punten vermenigvuldigd met de moeilijkheid van een enemy. Op deze manier word je eerlijk beloond voor de moeilijkheid van de wave. Dood gaan is ook geen optie meer, je verliest dan namelijk 500 punten (we gaan nog kijken of dit misschien meer moet worden). Zeg maar dag tegen je highscore ;).

Laat me even denken, wat hebben we nog meer gedaan deze vakantie… ehm, het pauze menu! Deze is compleet op de schop gegaan. Voor degene die niet betrokken waren bij het opnieuw vormgeven van het menu was het resultaat een grote verassing. Het is echt heel mooi geworden! Dit design past ook veel beter bij ons pixel-based spel.

Vanuit dit pauze menu kun je bij ons optie scherm komen. In dat menu zitten een tweetal sliders waarmee je als speler het volume kan regelen. Eén van de sliders is voor het achtergrond muziekje. De ander kun je gebruiken om de sound effects aan te passen. Ook hebben we een optie toegevoegd om fullscreen te spelen. Om het makkelijker te maken kun je ook f11 gebruiken om in fullscreen te komen.

Deze maand is niet alleen het nieuwe jaar begonnen, maar is ook de deadline een stuk dichterbij gekomen en er moeten nog een aantal dingen gebeuren. Gelukkig zijn het grootste deel slechts kleine aanpassingen, maar er moeten ook nog een aantal sprites gemaakt worden. Een van de belangrijkste dingen is echter de gameplay afmaken: de waves vijanden moeten niet te makkelijk en niet te moeilijk zijn, en dit gaan we ook dit weekend proberen te fixen. Dit zal bepalend zijn voor het succes of falen van het spel. Hier zal dan ook best wat tijd in gaan zitten. Een goede balans tussen player skill en difficulty zorgt voor een leuk en goed spel, maar helaas zit hier vaak ook de meeste uitdaging in.

Daarnaast moeten ook de laatste 2 powerups nog werken, de shotgun en het schild en we moeten nog met een boss-battle idee komen (de Demo-versie die we gaan presenteren moet natuurlijk wel eindigen met een knal :) ). Als dat allemaal gedaan is moeten we terugkijken op de sprites die we gemaakt hebben en kijken of ze wel goed passen binnen het isometric-idee van ons spel, want we zijn dat een beetje uit het oog verloren.

Hierna zou ons spel mooi presenteerbaar zijn, maar we zullen niet rusten totdat de laatste ideeën uit ons zijn geperst (of totdat we geen tijd meer hebben om dingen toe te voegen). We zaten te denken aan een high-score list bijvoorbeeld, zodat iedereen die de demo speelt kan zien hoe hij/zij het heeft gedaan ten opzichte van de andere bezoekers.

Dit zijn allemaal virtuele dingen, tweaks aan het spel en toevoegingen, maar we moeten ons spel ook goed aanbieden: Orissa, Wouter en Maurits gaan bezig met flyers, box-art en een korte trailer om mensen enthousiast te maken. Het programmeren voor hun is een beetje op de back-burner gezet zodat ook deze essentiële dingen afgemaakt kunnen worden, op tijd voor het symposium.

Er is de komende maand dus nog genoeg te doen, en de deadline nadert snel! De eindsprint is begonnen en we zetten alles op alles om dit allemaal zo goed mogelijk af te maken.

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.

Welkom!

Welkom op onze blog! We zullen hier de komende tijd berichten plaatsen over de voortgang van ons gameproject.

Space Invaders
We gaan een game maken gebaseerd op de bekende retro game Space Invaders. Het spel dateert uit 1978 en is ontworpen in Japan. Bij het spel heb je enkele rijen aliens die heen en weer bewegen en langzaam van boven naar beneden komen. Als een alien de onderkant van het scherm raakt is het spel afgelopen. Om dit te voorkomen ben jij, als speler, een soort kanon met als doel de aliens uit de lucht schieten. Space Invaders was een groot succes. Het was in zijn tijd de best verkopende game van dat moment.

SimCity 3000™
Onze game wordt een compleet ander spel, met aanpassingen aan de gameplay, audio en graphics. Ons hoofddoel is het toevoegen van artificial intelligence (AI) en dat zo goed mogelijk te laten werken. Het spel krijgt een isometric view, oftewel een wereld die 3D lijkt, maar eigenlijk 2D is. Dit kan door de 2D sprites van de gameobjecten zo te tekenen dat ze 3D lijken en ze op de juiste manier elkaar te laten overlappen. De wat oudere versies van games als Rollercoaster Tycoon, Pokémon en SimCity hadden bijvoorbeeld ook isometric view.

In het spel dat we gaan maken speel je als een character dat vrij rond kan bewegen en in alle richtingen kan schieten. Vijanden komen niet van één kant zoals bij Space Invaders, maar komen vanuit alle richtingen. De bedoeling is jezelf (en misschien een basis) te verdedigen door de vijanden neer te schieten. Een leuke gameplay zou zijn wanneer het neerschieten van een vijand een reward geeft, zoals geld waarmee je upgrades kan kopen in een shop zodat je op die manier progressie maakt.
Space Invaders had hele simpele vijanden die alleen heen en weer bewegen, wat het vrij saai maakt. Er is tegenwoordig veel meer mogelijk bij het maken van games, zo hebben games veel betere AI dan vroeger. Dit is ook waar wij ons met dit project veel op willen richten: het intelligent maken van de vijanden. Goede AI maakt een spel veel uitdagender en dus leuker om te spelen.

Houd deze blog in de gaten voor de voortgang van ons gameproject. We hopen de game eind januari 2014 uit te kunnen brengen.