Categorieën
Devlog Game development

Game gejam

Afgelopen week in een spontane aktie weer meegedaan met een game-jam, de Godot Wild Jam. De game-jam was afgelopen vrijdag al begonnen, maar kwam maandag op m’n radar en toen stond m’n pet juist in de “ik heb weer zin om een game jam te doen”-modus … dus ideale timing. En deze keer weer eens lekker alleen-ig.

Het thema was deze keer “You Aren’t The Hero”.

Begon dus eerst met het brainstormen van ideeën; vele ideeën kwamen op het papier en even leek het alsof het idee van een tovenaar die een platform-held moest helpen met het overkomen van obstakels zou “winnen”. Maar het voelde niet leuk – en dat is toch wel belangrijk als je iets wilt gaan bouwen.

Dus nog even beetje nadenken en toen was daar HET idee – een held die door een dungeon loopt, welke jij moet bouwen voor hem. De held loopt / vecht vanzelf, jij bepaald indirect zijn succes, door te bepalen waar de monsters, de schatten en de hartjes komen.

Maandag (17) begon ik met het genereren van kamers met willekeurige deuren, zodat niet elke kamer hetzelfde aantal en plekken van deuren had. En toen plaatste ik deze kamers op het grid.

Op dinsdag (18) maakte ik een design in Aseprite en verwerkte dat in de game. Aan het eind had ik iets wat een beetje leek op wat ik had getekend.

Het design in Aseprite

Woensdag en donderdag (20) werkte ik aan de mogelijkheid om kamers te kunnen selecteren, een preview te kunnen zien en ze te kunnen plaatsen.

Vrijdag (21) voegde ik de eindkamer toe (eindelijk een doel om naartoe te kunnen bouwen) en deed ik wat tweaks met de look-and-feel.

Nog twee dagen te gaan en had wel een basis, maar nog weinig echte gameplay. Terwijl dat altijd wel m’n aanpak is, zo snel mogelijk de gameloop klaar – zodat je kan aanvoelen en testen of het leuk is om te spelen.

Komt ook wel beetje doordat ik doordeweeks gewoon moet werken en dus alleen ’s avonds aan m’n gamejam kan werken.

Zaterdag (22) maakte ik beduidend meer voortgang:

  • de held loopt zelfstandig door de dungeon
  • wanneer deur connecten, teken een “opening”
  • de held loopt in willekeurige volgorde door de dungeon
  • kamers hebben verschillende eigenschappen (monsters, schatten of hartjes) en daar wordt iets mee gedaan

Zondag (23) was de laatste dag en er was nog genoeg te doen. De deadline van 22:00 kwam in de buurt en uiteindelijk heel veel kunnen oplossen:

  • Je score wordt berekend op basis van aantal “stapjes”
  • De levenskracht van de held wordt bijgehouden en hij/zij kan “dood”
  • Wat visuele tweaks (zoals de grond en gras)
  • Een splash-screen en hoofdmenu werden toegevoegd

Uiteindelijk submitte ik m’n game en was klaar. De deadline was afgelopen en ik was klaar.

Of toch niet?

Toen ik het spel – kort na de deadline – bekeek op de itch.io pagina, zag ik dat de tekst door elkaar stond. Tijdens de last-minute tweaks, had ik per ongeluk wat tekst versleept. Nu stond de uitleg door een stukje tekst over hoe te restarten. Helemaal niet leesbaar.

Gelukkig heeft de organisatie van de Godot Wild Jam een regel dat als er een game-breaking bug in je game zit, dat je die dan mag uploaden om te fixen. Dus ik paste het gelijk aan en stuurde een berichtje.

Maar de organisatrice was aan het werk en niet te bereiken. Dus ik moest wachten tot ze weer terug was om te reageren.

In de tussentijd merkte ik op dat het spel in de browser heel (heel veel!) trager speelde dan lokaal. Het was gewoon bijna niet speelbaar, de held liep super traag en je moest dus heel lang wachten totdat hij uberhaupt de dungeon binnentrad.

En ik begreep maar niet waar het door kwam. Totdat ik m’n fout realiseerde en me wel voor m’n kop kon slaan. Ik had het lopen van de held op basis van een Timer gedaan – dus elke 18 milliseconden deed hij een stapje. Maar aangezien het spel in de browser draaide, was de update daarvan niet consistent. Soms werd de code wat later uitgevoerd en dan was het “stap”-moment al geweest en werd de held dus niet verplaatst.

Een hele erg beginnersfout, een van de eerste dingen die je leert als game-maker … maar ik was er toch ingetrapt.

De fix was heel eenvoudig, zit gewoon (praktisch) ingebakken in Godot. Bij de update (_process) functie krijg je altijd de tijd mee sinds de vorige update. Dus als je daar gewoon kijkt of er inmiddels 18 milliseconden voorbij zijn, kan je dan de held een stapje laten zetten … en kan je gewoon normaal bewegen – ongeacht de snelheid van de updates.

Dat werkt perfect. Deed z’n werk en was ook nu robuust gemaakt. Maar ja, ik had m’n game al gesubmit. En zo’n fix is niet echt game-breaking.

Maar toen kwam de organisatie van GWJ en meldde dat de upload nog even aangezet was. Dus ik kon m’n tekst wijziging nog uploaden. En toevallig kwam daarin ook m’n timer-probleem-fix mee.

Gefixed!

Check de game hier

De rest van de week heb ik eigenlijk (te) weinig reclame gemaakt voor m’n game, het werd maar door 15 mensen gerate en het spel eindigde dan dus ook op plek 48, van de 89 – dus net iets onder de helft. Helaas.

Qua meeste categorieen (graphics en theme) stond ik in de middenmoot. Alleen qua controls en originaliteit en fun eindigde ik iets hoger:

Controls#18
Originality#22
Fun#26
Theme#32
Overall#48
Graphics#53
Accessibility#59
Audio#82

En hoe nu verder?

Ik typ deze blog nu 2 maanden later (19 juli), maar cheat een beetje (voor de record van het archief) door deze op de oorspronkelijke postdatum te laten staan.

Maar nu ik het proces van deze game jam heb beschreven, merk ik dat m’n enthousiasme voor dit concept nog steeds leeft. Het was zo lekker simpel en eenvoudig, maar had zoveel potentieel.

Dus ik wil er heel graag aan verder werken – betere game van maken.

Heb hierna nog een andere game jam gedaan en de game die daaruit kwam was een leuk experiment – maar merkte dat ik daar veel minder enthousiast over was.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *