Twee kinderen, een zondag, en een spel over donuts dat naar Planeet Donut vliegt.
Vanochtend zei Aeron (10) dat hij een spelletje wilde maken. Iets als Cookie Clicker, maar met donuts. Elias (8) vond dat meteen ook. Aan het eind van de dag stond er een spel op donut.taizer.net met 151 haltes, vijf raketten, een asteroïdenveld en echte afstanden in lichtjaren.
Ze hebben het gemaakt door de hele dag samen te werken met Claude (zo’n vier uur netto stoeien), met mij ernaast. En ze zijn er heilig van overtuigd dat het van hen is. Dat is ook zo, en de reden daarvoor is interessanter dan ik vooraf dacht.
Speel het eerst even, dan leest de rest van dit stuk een stuk prettiger: donut.taizer.net. Klikken op de donut, geen account, dertig seconden en je bakt. Wel even op iets met een fatsoenlijk scherm: een tablet of een laptop. Op een telefoon past het simpelweg niet, en dat ga ik voorlopig ook niet oplossen. De jongens spelen het gewoon in de browser op hun iPad.

Twee skills als vertrekpunt
Voordat er iets gebouwd werd, heb ik twee dingen klaargezet. Allebei Agent Skills: mapjes met instructies die Claude erbij pakt wanneer ze van pas komen (zie ook Introduction to Agent Skills).
Het eerste kostte me de hele ochtend: uitzoeken wélk framework. Ik heb me door de gebruikelijke verdachten heen gelezen, van complete game-engines tot “gewoon zelf een canvas en een requestAnimationFrame”. KAPLAY.js kwam eruit als de meest simpele, to-the-point keuze voor dit moment: klein, één bestand, geen ceremonie, en je bent binnen tien regels een sprite aan het bewegen.
Die keuze heb ik daarna vastgelegd in een eigen KAPLAY-skill: een stukje context dat precies weet hoe KAPLAY werkt (docs, GitHub), welke versie actueel is, en hoe je er een speelbaar spel mee opzet zonder build-stap.
Dat vastleggen is het halve werk. Vraag een AI zonder kaders om “een spel voor mijn kinderen” en de kans is reëel dat je een uur later een Unreal Engine-project aan het installeren bent, of dat hij besluit zijn eigen physics-engine te schrijven omdat dat leerzamer is. Beide zijn technisch verdedigbaar en allebei ben je je zondag kwijt. Zonder skill leunt hij bovendien vrolijk op de oude Kaboom.js-API, en dan zit je met een kind naast je naar een zwart scherm te kijken.
Met die skill erbij was het framework simpelweg geen onderwerp meer. De jongens konden meteen over hún spel praten in plaats van over gereedschap.
Het tweede was grill-me van AI Hero, een skill die niet bouwt maar doorvraagt: hij blijft je ondervragen over je plan tot elke tak van de beslisboom is afgelopen. Die twee heb ik gecombineerd, grill-me om te starten en de KAPLAY-skill om te weten wat er technisch mogelijk was, en toen pas mochten de jongens achter het scherm.
Eerst een uur lang vragen krijgen
We zijn dus niet begonnen met bouwen. We zijn begonnen met een interview, en Claude stelde de vragen. Wat is het gekke, eigen idee? Hoe kom je vooruit? Wat koop je? Waar eindigt het?
Elke vraag kwam met drie concrete antwoorden om uit te kiezen. Dat is precies wat werkt bij kinderen: kiezen uit een lijstje is voor een achtjarige heel ander werk dan iets verzinnen uit het niets. En bij elke optie stond wat het zou betekenen. “Als je dit kiest wordt het spannender, maar dan zit je langer te wachten.”
Wat er vervolgens gebeurde had ik niet zien aankomen. Aeron en Elias riepen en discussieerden élke stap van de weg onderling door: over elke vraag, elke optie, elk getal. Ze overlegden, overstemden elkaar, kwamen terug op iets van drie vragen eerder, en kwamen er uiteindelijk samen uit. Mijn rol was daarbij vooral: luisteren, hun gezamenlijke antwoord eruit destilleren, en dat met mijn typediploma zo snel mogelijk intypen voordat ze alweer drie ideeën verder waren.
Ze hebben continu samen gevalideerd. “Nee wacht, dan is het te makkelijk.” “Ja maar dan moet je wel eerst…” En daar kwamen keuzes uit die ik zelf nooit genomen zou hebben. Dat interview heeft het spel gemaakt. Niet ik, en ook niet de AI.
Een uur lang vragen beantwoorden voordat er één regel code geschreven werd, door een tienjarige en een achtjarige. Ik heb volwassen projectteams gezien die daar minder geduld voor hadden.
Wat zij bedachten en niemand anders had verzonnen
Op de vraag waar het spel over ging koos Aeron een reis. Je bakt donuts, je stopt ze in een raket, je vliegt naar Planeet Donut waar alle andere levende donuts wonen.
Toen kwam de vraag wat je doet terwijl de raket vliegt. Er lagen drie opties klaar. Elias antwoordde met iets dat er niet bij stond: “in het begin moet je twee ingrediënten kopen om donuts te maken terwijl je bezig bent met vliegen.”
Daar zat een compleet spelmechaniek in verstopt, en Claude haalde het eruit en legde het terug als vraag: bedoelen jullie dat je vóór het lanceren voorraad meel en suiker inslaat, en dat elke donut die je tijdens de vlucht bakt daarvan opeet? Ja, dat bedoelden ze.
Dus nu moet je vóór elke lancering kiezen: veel voorraad meenemen, of dat geld in een snellere raket stoppen. Dat zit niet in Cookie Clicker. Dat is van Elias.
Later op de dag kwam er nog zoiets. De haltes stonden in een rare volgorde: Venus na de Maan, maar Mars vóór Jupiter zonder dat je ooit langs de zon kwam. Aeron zag het en stelde voor om eerst naar bínnen te vliegen, een rondje om de zon te maken om vaart te pakken, en dan pas naar buiten. Zo kom je elke planeet precies één keer tegen.
Dat is een zwaartekrachtslinger. Dat is wat Voyager 2 deed. Dat hij dat soort dingen ziet komt niet uit de lucht vallen: we zitten samen regelmatig bij lezingen op de sterrenwacht, zie 2026-04-25 Een bezoek aan Halley Sterrenwacht en 2026-05-29 Het opgeblazen heelal.
Wat de AI goed deed
Het typen, om te beginnen. Dat klinkt banaal, maar het is precies waar de meeste kinderprojecten sneuvelen: een puntkomma vergeten, een uur zoeken, motivatie weg. Nu was de weg van “kan de raket ook geluid maken” naar een werkend geluidje twee minuten.
Het tweede is geduld. Een tienjarige komt met tien ideeën per kwartier, in willekeurige volgorde, half af, en die van een achtjarige komen er dwars doorheen. Claude bleef netjes één ding tegelijk doen, zorgde dat het spel na elke ronde speelbaar was, en eindigde elke beurt met wat er nu werkte en twee of drie keuzes voor daarna. Dat volhouden is voor een ouder op een zondag eerlijk gezegd zwaarder dan het klinkt.
Het derde was narekenen. Drie keer bleek een leuk idee wiskundig kapot, en dat zie je niet door te spelen. De Gouden Donut, de raket die je vrijspeelt op level 5, kreeg 100 gratis brandstof bij elke halte. Klinkt als een mooie beloning. Maar 100 × 151 haltes is ruim 15.000 brandstof, terwijl de hele reis er 2.771 kost. Die raket maakte het spel letterlijk gratis. Op level 5 vrijgespeeld en dan de hele economie van het spel wegvagen: als game-designbeslissing eigenlijk best gedurfd, alleen niet de bedoeling.
Zelfde verhaal met de asteroïdenbonus, en met een afstandentabel die op vier cijfers was afgerond waardoor Mars en zijn maan Phobos exact hetzelfde getal kregen en je snelheid ineens op nul stond. Het spel had strikt genomen gelijk: leg je nul afstand af, dan doe je dat inderdaad met nul snelheid.
Het aardige is dat de AI die drie zelf vond, door na het bouwen de sommen te maken. Het minder aardige is dat ze er in de eerste plaats in zaten.
Wat ik deed
Het onzichtbare deel, vooral. Dat hoefde overigens niet: dubbelklikken op het bestand op mijn laptop had voor de jongens net zo goed gewerkt. Maar ik wilde het online hebben, dus draait het spel op mijn eigen server, achter een reverse proxy die zelf certificaten regelt. Er is een deploy.sh die een schone public/ map bouwt, met node --check controleert of alle JavaScript geldig is, naar de server rsynct en daarna zelf ophaalt of https://donut.taizer.net het echt doet. Dat alles voor één HTML-bestand. Ik weet het. Bezoekers worden geteld met Umami, dat ik toch al draai; de statistieken staan open voor wie wil meekijken. Dat hele stuk hebben de jongens nooit gezien, en dat is prima. Voor hen was het: “papa, is het al online?”
Maar ik was ook de tolk en de rem. Tolk, omdat ik degene ben die weet wat een kind ergens mee bedoelt: toen ze zeiden dat je “steeds 2x meer” moest kunnen, betekende dat niet “nog een upgrade erbij” maar “elke upgrade moet halveren wat het kost”. Dat soort vertaalwerk gaat sneller met een ouder ernaast.
Rem, omdat er op een gegeven moment een voorstel kwam om een exporteer-en-importeerfunctie te bouwen zodat je je spel kunt meenemen naar een ander apparaat. Prima idee, maar niet vandaag: dan waren we een uur kwijt aan iets waar geen kind om gevraagd had.
De techniek, kort
Eén HTML-bestand met KAPLAY.js erin, een kleine JavaScript-spelbibliotheek die vroeger Kaboom heette. Geen build-stap, geen framework, geen node_modules. Je dubbelklikt op index.html en het speelt.
Dat laatste is belangrijker dan het klinkt. Als een kind na een wijziging binnen dertig seconden ziet dat het werkt, blijft het van hem.
Bovenaan het bestand staat een blok “hier mag je aan draaien”: alle getallen die het spel bepalen, in gewoon Nederlands.
const ZWAARDER = 0.3; // hoeveel zwaarder de raket trekt per halte hoger
const DUURDER = 1.6; // hoeveel duurder het wordt als je er nog een kooptAlles wat ze lezen is Nederlands: knoppen, meldingen, variabelen, comments. Opslaan gaat via localStorage, dus geen accounts en geen database. Je typt je naam in een van de vijf opslagplekken, dus het hele gezin past op één computer.
De planeten zijn getekend met DALL·E, uit prompts die één identiek stijlblok delen.
De geluidjes zijn niet opgenomen maar berekend met de Web Audio API: een plop is een sinus waarvan de toonhoogte in een tiende seconde wegzakt.
Hebben ze het dan zelf gemaakt?
Die vraag ligt voor de hand als een AI alle code getypt heeft. Ik denk van wel, en niet omdat ik aardig wil zijn.
Ze hebben elke beslissing genomen die ertoe deed. Waar het spel over gaat. Hoe je vooruitkomt. Dat er ingrediënten zijn die opraken. Dat halte 75 Frikandelbroodje heet en dat wie daar langskomt twee minuten dubbele donuts krijgt. Dat er een opper-opperdonut moest komen, de baas van alle opperdonuts. De radar linksonder waar je je hele route ziet als een spiraal om de zon: hun idee, tot en met de wens dat hij langzaam uitzoomt naarmate je verder komt.
Een regisseur bedient de camera niet en schrijft de muziek niet. Toch is het zijn film.
Wat ze geleerd hebben is trouwens niet programmeren. Het is iets anders en misschien nuttigers: dat je een vaag idee kunt omzetten in iets dat werkt, door het op te knippen, keuzes te maken en te kijken wat er gebeurt. En dat de eerste versie altijd stuk is.
Als je dit zelf wil doen
Je hebt geen server nodig. Een browser en een zondag is genoeg.
- Kies zélf het framework, vóórdat het kind erbij zit. Laat je die keuze aan de AI, dan is de kans groot dat je zondag opgaat aan een engine-installatie.
- Zet grill-me klaar en laat de AI eerst een uur lang alleen maar vragen stellen. Nog niet bouwen.
- Geef de AI vooraf de actuele KAPLAY-docs mee. Zonder dat bouwt hij op de oude Kaboom-API en kijk je samen naar een zwart scherm.
- Eén HTML-bestand, geen build-stap. Dubbelklikken en spelen.
Nog één ding
Tussen de 151 haltes zitten zesenzeventig echte exoplaneten, met de namen die sterrenkundigen ze officieel gegeven hebben. Draugr, Poltergeist, Dulcinea, Rocinante.
En halte 51 heet Janssen. Naar Zacharias Janssen, de Middelburgse brillenmaker die rond 1590 misschien wel de eerste telescoop maakte. Een echte planeet bij de ster 55 Cancri.
Onze achternaam staat op halte 51. Dat geloven ze nog steeds niet helemaal.
Het spel staat op donut.taizer.net, op een tablet of laptop. Klikken op de donut, en niet vergeten voorraad in te slaan voor je lanceert.
