Een eiland in de oceaan van weblogs

Tag: godot-wild-jam (pagina 2 van 2)

Jam update #4

Gaaaaaaaaaaaaaaap!

Ik vanochtend na 4 uur slaap

Gisteravond beetje tot te laat doorgegaan. Ik had ’s middags (tussen allerlei meetings door) al aan het inventory-systeem gewerkt.

De player kon nu items oppakken en er werd een inventory getoond wat hij dus in z’n broekzakken had zitten.

Onze rat kan items oppakken 🎉

Toen ’s avonds wilde ik aan de slag met het quest-syteem. Doel was dat de player naar een npc (non-player character) kon lopen, met hem/haar kon praten, dan een quest kreeg (een opdracht om een item te zoeken/halen) en die dan terug kon brengen.

Lastige vond ik dat m’n collega-developer had aangegeven dat hij wel eventjes dat dialoog-systeem zou bouwen. Maar ik had het gevoel dat ik een goed idee had hoe dit te moeten bouwen … en hij deed constant maar 1-2 uurtjes werk en haakte daarna weer af onder het mom van allerlei smoesjes. Dus ik besloot om (wederom) de stoute schoenen aan te trekken en gewoon het dialoog-systeem te bouwen.

Enige probleem was dat het inmiddels al 23:00 was en ik nog moest beginnen.

Maar ik zag het helemaal voor me. Had de JSON-file al helemaal opgezet hoe ik het voor me zag, dus hoefde nu ‘alleen nog maar’ de code te typen.

En dat ging wonderwel zo eenvoudig als het klonk. Juist omdat ik de hele JSON-structuur al klaar had, kon ik vrijwel in een constante stroom alle benodigde code schrijven en had uiteindelijk om 02:30 (’s nachts ja) een super gaaf dialoog-systeem.

Waarbij de player dus bepaalde quests kon doen, daarbij werd bijgehouden of hij die quest al geaccepteerd had en bepaalde reacties werden zelfs pas actief wanneer de speler de benodigde item in z’n inventory had.

Voelde echt super gaaf – ondanks het late tijdstip. En ik had heel veel geleerd en was nu vol zelfvertrouwen hoe ik bepaalde dingen in Godot moest gaan doen.

De demo van m’n dialog-systeem, welke ik vol trots aan m’n teamgenoten stuurde

Enige nadeel (en klein beetje voordeel) was dat m’n collega-developer (die dus vrijwel niks had gedaan de afgelopen 2 dagen) me vanochtend een berichtje stuurde: “Wow, de development gaat wel heel hard. Weet even niet wat ik moet doen nu”

Dus heb hem keurig een lijstje gestuurd met alles wat er gedaan moet worden; dingen als animaties, menu, navigatie etc. En zeker de levels, want zonder levels hebben we niks.

En nu gaat hij zich dus richten op het level-design. En kan ik me dus op de randzaken gaan richten als animaties, overall game-flow etc.

Er is nog genoeg te doen voordat het aanstaande zondag klaar moet zijn.

Jam update #3

Vandaag bezig geweest met overdenken hoe de game er nou globaal uit moest komen te zien, qua flow en verschillende ‘states’.

Verschillende flows van de game

Daaruit volgde dat ik bepaalde zaken ergens moest gaan bijhouden, maar was niet helemaal tevreden met de voorgestelde mappen-structuur van m’n collega-developer.

Aangezien hij meer ervaring had met Godot ben ik de eerste dagen hem gevolgd met z’n voorgestelde mappenstructuur, maar hoe meer ik in Godot werkte, hoe meer ik een hekel kreeg aan de opgezette mappenstructuur. Het werkte allemaal niet fijn, zat teveel theoretisch bij elkaar, maar niet logisch.

Ter voorbeeld, zo zat alle animaties in een mapje animations en de code in movable_objects – maar als ik dan iets met de player wilde doen, moest ik in 2/3 verschillende mappen zijn. Veels te veel gedoe.

En aangezien m’n collega-developer vandaag ineens aangaf dat hij examens had op z’n school en dus weinig kon doen (verrassing!), besloot ik om de stoute schoenen aan te trekken en gewoon de boel helemaal om te gooien naar een (voor mij) logischere indeling.

Deze indeling was ongeveer als volgt:

.
├── assets
├── data
├── entities
├── global
├── gui
├── levels
├── menu
├── sound
├── splash
├── tilesets
└── zzzz_deprecated
  • assets – alle sounds en sprites, onderverdeeld in verschillende mappen, per entiteit of domein:
├── assets
│   ├── Sound
│   ├── fonts
│   └── images
│       ├── enemies
│       ├── items
│       ├── menu_animation
│       ├── misc
│       ├── npcs
│       ├── player
│       ├── ui
│       │   ├── main
│       │   ├── npc_dialog
│       │   └── splash
│       └── world
│           ├── floor
│           ├── props
│           └── walls
  • entities – alle verschillende entiteiten, zoals een mapje voor de player, een ander mapje voor een enemy en dan weer een ander mapje voor een item of een npc. Zo staat alles wat bij elkaar hoort bij elkaar, code en animaties:
├── entities
│   ├── enemies
│   ├── items
│   ├── player
│   ├── villagers
│   └── world
  • global – alle globale scripts – bijvoorbeeld om de game-state bij te houden of om muziek af te spelen. Maar ook zaken om globaal de dialogen bij te houden
  • gui – alle UI gerelateerde zaken
  • level – de verschillende levels die gemaakt waren
  • tilesets – de verschillende tilemaps voor de levels

Een aantal mappen had ik achteraf gezien ergens anders willen onderbrengen:

  • sound waarin de code stond voor het aansturen van de muziek, had eigenlijk als submap in global gemoeten
  • menu had als submap van gui gemoeten
  • net als splash wat ook een submap van gui had moeten zijn

Maar al-met-al was ik wel heel happy met hoe ik de overall structuur opgezet had. Voelde heel intuitief aan en wordt ook door Godot niet afgedwongen ofzo – dus kon zelf gewoon lekker m’n eigen weg erin vinden.

En nu dus morgen lekker aan de slag met het quest-systeem, waarbij een npc dus een bepaald item kan requesten, de player dit item dus moet kunnen oppakken en kunnen afleveren.

Heb al wel beetje een idee, maar eens zien hoe we dat gaan aanpakken dan.

Jam update #2

Afgelopen weekend een beetje aan de game jam kunnen doen.

Zaterdagmiddag beetje lopen rommelen met de globale game opzet, terwijl m’n collega-developer de player-movement voor z’n rekening zou nemen. Daarna aan de slag gegaan met het detecteren van de player door de vijanden. Dit ging eigenlijk verbazingwekkend snel en had ik binnen een uurtje in elkaar gezet.

En zondag was ik overdag op visite bij de familie in Almere, maar toen ’s avonds lekker aan de slag gegaan met de player-animaties. Heb dus nu al een wandelende player, inclusief een staart die los van de speler beweegt. Wel beetje laat geworden, sloot pas na 1:00 ’s nachts af – wilde echt even die staart-animatie en alles goed hebben.

Het resultaat is wel heel gaaf:

Wandelende rat (inclusief bewegende staart)

M’n collega-developer ben ik alleen iets minder over te spreken.

Het begon zaterdag al meteen dat hij wel even de player-movement zou doen, had hij toch al wat voor liggen.

Uiteindelijk na een paar uur wachten produceerde hij een stukje code waarmee we de player konden bewegen. Maar ik had in diezelfde tijd de vijand detectie geschreven en om dat te testen ook zelf even tussendoor de player movement geschreven. En mijn haastig geschreven stukje code was eigenlijk zelfs al beter (als ik dat zelf mag beoordelen) dan zijn gepruts code.

En nu – na nog niet eens 2 dagen – begin ik al kriebels te krijgen over deze samenwerking. De artists en muziek-gast zijn allemaal hard aan de slag, tonen echt duidelijk inzet en produceren ook. Maar vanuit m’n collega-developer krijg ik voornamelijk commentaar op het werk wat ik doe, allemaal commentaar over de code die ik schrijf, terwijl vanuit hem weinig komt.

Er komen voornamelijk excuses (die nu al steeds meer beginnen te klinken als smoesjes) waarom hij bepaalde dingen niet afgekregen heeft. Terwijl hij tegelijkertijd hoog van de toren blaast dat het allemaal makkelijk is en hij het wel ‘even’ zal afmaken allemaal de komende uren.

Heb nu al bijna genoeg van deze game jam, als dat zo moet verlopen. Merk dat ik zelf moet loslaten de controle te hebben en dat ik me maar moet focussen op dat ik zelf veel kan leren. Het idee dat dit maar een week duurt steunt me enorm.

Maar had me dit toch iets anders voorgesteld. Ben benieuwd hoe dit gaat uitpakken.

Jammin’

Een game jam is een wedstrijd waarbij de deelnemers vanuit niks een video game proberen te maken. Afhankelijk van de opzet mogen deelnemers ofwel allen of samen in teams werken. De wedstrijd duurt gebruikelijk 24 tot 72 uur. Deelnemers zijn over het algemeen programmeurs, ontwerpers, tekenaars, schrijvers en andere game gerelateerde disciplines.

Traditioneel richten game jams zich op video games, maar soms worden er ook wel bordspellen gemaakt.

Losse vertaling van de definitie van Wikipedia

Al een paar jaar wil ik eens een keer aan een game jam meedoen. Er zijn er genoeg. Ik kende in eerste instantie alleen de Global Game Jam of Ludum Dare. Dit zijn de twee meeste bekende en elke keer als er weer eentje aangekondigd werd, begon ik te twijfelen of ik nou deze keer eens mee wilde gaan doen.

Maar ik durfde nooit.

Het leek me geweldig om met een klein team gefocussed aan een maf idee te werken. Maar had altijd het gevoel dat ik nog niet genoeg game dev ervaring had en eerst zelf meer bekend moest zijn met Unity, voordat ik echt tot nut kon zijn en met een team mee kon draaien. Dus ik liet de game jams allemaal aan me voorbij gaan…

Maar toen ik dus 3 weken geleden Godot ontdekte, kwam ik al snel op de Discord in gesprek met iemand die zei dat het heel leerzaam was om met een game jam mee te doen. En toevallig was er een specifieke Godot game jam die elke maand gedaan wordt. Dus ik heb me vol enthousiasme aangemeld, in de dagen in aanloop naar de game-jam een team gezocht en kleine dingetjes (zoals automatische deploys naar itch.io) opgezet.

En vannacht om middernacht begon deze game jam. Vanochtend vroeg opgestaan (6:00) om samen met m’n team te overleggen. Het moest zo vroeg, want alle teamleden zitten verspreid over de hele wereld, een in India, twee in Amerika en twee in Estland.

Vanochtend dus onze brainstorm-sessie gehad, tot een beetje een idee gekomen (een stealth game waarbij je (spelende als rat) langzaam volgers moet werven voor je revolutie tegen katten). En nu beginnen we langzaam met ons idee uitwerken.

– wordt vervolgd –