een-game-die-als-grap-begon.md

Een game die als grap begon
Hoe het begon
Op een gegeven moment had ik Netflix uitgekeken en verveelde ik me rot. Ondertussen zag ik de kinderen Minecraft spelen, en als grap ben ik vanuit bed, op de telefoon, gaan kijken of ik een eigen versie kon maken. Een iets realistischere, was het idee. Op heel veel fronten is dat overigens niet gelukt, maar dat lost Jonah op zijn eigen manier op; daarover zo meer.
Na een paar dagen begon het echt ergens op te lijken. Toen was het geen grap meer, en zo is Shipwright Shore ontstaan.
Een survivalgame met een uitweg
Je speelt Jonah Flint. Aan boord van de Marigold vertrouwde niemand hem meer toe dan een zwabber, en na een storm spoelt hij aan op een eiland dat op geen enkele kaart een naam heeft. Lege handen, één plan: een schip bouwen en wegvaren.

Dat schip is het doel van het spel, en volgens mij meteen het grootste verschil met waar het begon. Je bouwt het zelf, onderdeel voor onderdeel, op een scheepshelling op je eigen strand. Eerst moet je overleven en ambachten leren in de volgorde waarin het echt zou gaan: vezels uit het gras, stokken en losse stenen, touw draaien, een vuurstenen mes. Daarna brons, daarna ijzer. Geen plank zonder zaag.
Het eiland trekt zich weinig aan van je planning. Honger, dorst en koude nachten tellen mee, regen maakt je doornat en na donker sluipt er een fossa door het laagland. Graaf je te dicht bij een meer, dan loopt je kuil vol. Bouw je te ruim zonder ondersteuning, dan komt het naar beneden. Met een vlot haal je de eilanden om je heen, met een roeiboot het ijzer daarachter, en daarna ligt er nog meer.
Jonah heeft overal een mening over, en vooral over de dingen die uiteindelijk helemaal niet zo realistisch zijn. In plaats van ze weg te moffelen, benoemt hij ze, met het soort droge tekstuele humor dat je kent van Monkey Island. Prop twee kisten in je broek en hij zegt: "A chest in each pocket. Very sensible. Very normal." Ga je dood, dan krijg je daar een kleine voorstelling van, verteld met precies het medeleven dat hij verdient.
Wat ik zelf het leukste vind: er zit geen map met tekeningen in het spel. Elke textuur is een recept van kleur en ruis, elk eiland groeit uit een seed, de dieren en boten zijn in code opgebouwd uit blokken, en de muziek wordt gecomponeerd terwijl je speelt.
Buiten mijn comfortzone
Ik ben backendontwikkelaar, en een game-engine kwam in mijn werk nooit voor. Shipwright Shore is geschreven in C# op Godot 4, zonder dat ik serieuze ervaring had met gameontwikkeling.
Het typewerk doet AI; ik ben de stuurman. Ik bepaal de koers, review de C#-code en stuur op basis daarvan bij. Dat is een aparte positie om in te zitten, en tegelijkertijd een heel leerzame: je leest code in een taal en een domein die niet de jouwe zijn, en je moet toch kunnen zeggen of het klopt. Wat ik wel herkende, waren de principes. De spelregels zitten in gewone bibliotheken buiten de engine en worden zonder de engine getest; dezelfde grens tussen voorspelbaar en onvoorspelbaar die ik in mijn klantwerk ook trek.
Het is bijzonder om te zien hoe ver je daarmee komt. AI bedenkt het spel niet voor je, maar het maakt de afstand tussen "ik weet hoe het zou moeten werken" en "het werkt" een stuk kleiner.
Helemaal alleen doe ik het overigens niet. Mijn zoon is de vaste bemanning aan boord: hij jaagt op bugs, speelt mee en komt met ideeën en feedback op het ontwerp.
Zwaartekracht, eindelijk
Hoe dat bijsturen er in de praktijk uitziet, laat de laatste devlog goed zien. Zelfde seed, zelfde bewegingen, twee versies naast elkaar. In de oude versie geeft een gekapte boom het op en verandert hij in buit. In de nieuwe valt hij echt om, in het gat, en blijft daar liggen. De zwaartekracht was eindelijk komen opdagen.
Daarna ben ik, voor de wetenschap, van een richel gestapt. Oude versie: Jonah landt, staat op, zeer waardig. Nieuwe versie: tja... hij vond de zee.
Ruim vijftienhonderd beslissingen
Ik bouw het met ANVIL, de workflow voor Claude Code die ik zelf heb gemaakt. Elke keuze die ertoe doet, legt die vast in een architectuurbeslissing (ADR). Inmiddels staan er ruim vijftienhonderd in de repository, en meer dan tweehonderd daarvan zijn later aangepast of vervangen.
Dat aantal zegt in mijn ogen meer over het project dan welke feature ook. Een game zit vol beslissingen die je pas goed kunt nemen als je ze hebt zien misgaan: hoe water stroomt, wat een blok overeind houdt, hoe een duim op een scherm stuurt. Veel daarvan heb ik genomen, verworpen en opnieuw genomen. Dat het allemaal is vastgelegd, maakt heroverwegen juist makkelijk.
Waar het nu staat
Shipwright Shore is nog in ontwikkeling: voor Android via Google Play, en later voor Windows en Linux via Steam. Het spel draait volledig offline, zonder advertenties, accounts of tracking, en er valt in het spel niets te kopen. Het is gemaakt voor telefoon en desktop: touch met twee duimsticks (ook in een indeling voor linkshandigen), toetsenbord en muis, of een gamepad.
De pagina op Google Play staat er al, al kun je het spel daar nog niet installeren. Steam volgt later. En de zwaartekracht blijft, denk ik.
legal.json
"bedrijfsnaam": "Bas de Kort",
"rechtsvorm": "eenmanszaak",
"handelsnamen": ["Bas de Kort", "LengthOfRope"],
"vestigingsadres": "Kerkeakker 3, 6674 EM Herveld, NL",
"kvk": "42038027",
"btw_id": "NL004476145B32",
"contact": { "form": "basdekort.nl/contact", "telephone": "+31628456862" },
"documenten": [ "privacy", "algemene voorwaarden", "verwerkersovereenkomst" ]
}