top of page

Eerst één soort, dan vijf: zo groeit dit spel 🪨

Foto van schrijver: Marcel Dütscher
Marcel Dütscher
27 jul
4 minuten om te lezen

Wie naar onze versielijst kijkt, ziet 29 releases in ruim vijf weken, van 0.1.0 op 20 juni tot 0.9.0 gisteren. Hoe kan dat? Zeker niet door een afgerond feature in één grote beweging te bouwen. We bouwen in fasen: eerst de kleinste versie die echt werkt, en dan, als die stabiel en leuk is, de volgende fase. Op dit moment laten de asteroïden dat beter zien dan wat ook.


Fase 1: ze bestaan überhaupt. Toen asteroïden in het spel kwamen, telde maar één vraag: werkt landen, lopen en delven op een piepklein lichaam waar je in een paar minuten omheen loopt? Een asteroïde is geen kleine planeet: hij heeft een eigen groottecategorie, andere zwaartekracht, een andere horizon. Dat was fase 1, en al het andere deed er bewust niet toe. Daarom was er precies één soort: het type zat hardgecodeerd en omdat er geen lijst met mogelijke oppervlakken was, werd elke kolom met kristal bedekt. Elke asteroïde in het hele sterrenstelsel zag er hetzelfde uit. De enige variatie was de omtrek en waar de kraters toevallig lagen.


Fase 2: nu mag het verschillen. Fase twee is sinds gisteren af en komt met de volgende update in het spel. Dan zijn er vijf asteroïdefamilies en elke rots trekt de zijne met gewogen kans. De stenige is het werkpaard, met ijzer, silicaat, koper en tin. De metallische is bijna puur metaal: overal titanium, dieper kobalt, wolfraam en platina. De ijzige zit op −95 °C en draagt vluchtige stoffen in plaats van metalen: koolstof, lithium, zwavel. De koolstofrijke is roetzwart, vol grotten, en verbergt ver beneden uranium en diamant. En de kristallijne, precies wat elke asteroïde vroeger was, is nu de zeldzame vondst. Daarbovenop krijgt elk lichaam zijn eigen kraterreliëf: dichtheid, bekkenbreedte, diepte, randhoogte en hoe glooiend het stof ertussen ligt. Voorheen waren dat vijf vaste getallen voor het hele universum, en daarom zag elk luchtloos lichaam er hetzelfde uit. De manen profiteren er trouwens ook van, want zij lopen door dezelfde code.


De echte beloning komt daarna. Het mooie van een netjes gebouwde tweede fase is de derde: een zesde familie is geen programmeerklus meer maar een regel in een databestand: naam, oppervlakken, ertsen, frequentie, klaar. “Dat zou iemand eens moeten inbouwen” is geworden tot “dat kunnen we een avond proberen”. Dáárom is de ombouw de moeite waard.


Waarom we het altijd zo doen. Drie redenen, alle drie op de harde manier geleerd. Eén: je weet van tevoren niet of een idee leuk is. Een kleine eerste versie kun je met Justus op één avond uitproberen, en daarna weet je of de uitbreiding de moeite waard is, of dat het idee eigenlijk saai was. Twee: een kleine stap kun je nakijken, testen en zo nodig terugdraaien. Over een gigantisch feature dat op vijftig plekken tegelijk ingrijpt, kun je alleen maar bidden. Drie, en voor ons het belangrijkste: dit spel wordt door kinderen gespeeld. Een half afgemaakt gigantisch feature is voor hen erger dan een klein dat betrouwbaar werkt.


Overal hetzelfde patroon. Blokken waren eerst kubussen; hellingen, trappen en bollen kwamen later, dan kleuren, dan de fijne randafschuiningen zodat niets meer op een kartonnen doos lijkt. Planeten begonnen als een grijze rots; echte zeeën, grotstelsels, hoogteklimaat en vulkanen kwamen later, dan bevroren zeeën op koude werelden, en nu de asteroïden. Bij kinderveiligheid was er eerst alleen een meldcommando in de chat, daarna verbanningen met redenen en time-outs, en meest recent de onzichtbare observatiemodus. En onze bandieten, net uitgebracht, zijn zelf nog fase 1: ze raken je via een nabijheidseffect in plaats van met echt vliegende projectielen. Dat is geen vergissing, het staat in het plan: fase 2, zodra fase 1 zich heeft bewezen.


Wat deze manier van werken kost. Eerlijk gezegd twee dingen. Eén: bestaande werelden veranderen. Omdat het type van een hemellichaam bij elke keer laden opnieuw wordt berekend en nooit wordt opgeslagen, krijgen de asteroïden in je oude werelden met de volgende update andere families en een ander reliëf. Je gebouwde blokken blijven bestaan, maar kunnen ineens vrij zweven of in rots vastzitten. Daarom komt zoiets altijd in de release notes. Twee: zelfs de eerste fase moet zo gebouwd zijn dat de tweede überhaupt mogelijk is. Voor asteroïden betekent dat: er is nu precies één plek in de code die “is dit een asteroïde?” beantwoordt, en een test die voor elke gegenereerde familie controleert dat die er echt als zodanig wordt ingedeeld. Mis je één aanroeper, dan komt een naar oud probleem terug: een rots waar je geen enkel blok kunt delven.


En weer redden de tests ons. Tijdens het bouwen van de nieuwe families sloeg een controle van lang geleden aan: die zorgt ervoor dat je op elke wereld met ertsafzettingen het kabelrecept kunt bereiken. Drie van de vijf nieuwe families hadden gewoon geen koper: spelers waren daar in hun voortgang vastgelopen. Geen mens merkte dat; een test die iemand weken eerder had geschreven wel. Alle families hebben nu koper en silicaat.


Hierna volgt weer zo'n fase, ergens tussen planten, dieren en de bandieten. Welke dat wordt, is meestal aan Justus. 🌟

Recente blogposts

Alles weergeven

Opmerkingen


Het is niet meer mogelijk om opmerkingen te plaatsen bij deze post. Neem contact op met de website-eigenaar voor meer info.
bottom of page