Two kids, one Sunday, and a game about donuts that flies to Planet Donut.

This morning Aeron (10) said he wanted to make a game. Something like Cookie Clicker, but with donuts. Elias (8) was instantly on board. By the end of the day there was a game live at donut.taizer.net with 151 stops, five rockets, an asteroid field, and real distances in light-years.

They built it by working with Claude all day (about four hours of actual wrestling with it), with me sitting next to them. And they are dead certain the game is theirs. It is, and the reason why turned out to be more interesting than I expected.

Go play it first, the rest of this piece reads better that way: donut.taizer.net. Click the donut, no account needed, thirty seconds and you’re baking. Do use something with a decent screen though: a tablet or a laptop. It simply doesn’t fit on a phone, and I’m not going to fix that any time soon. The boys just play it in the browser on their iPads.

Two skills as a starting point

Before anything got built, I set up two things. Both of them Agent Skills: folders of instructions that Claude reaches for when they’re useful (see also Introduction to Agent Skills).

The first one took me the whole morning: figuring out which framework. I read my way through the usual suspects, from full-blown game engines all the way down to “just grab a canvas and a requestAnimationFrame”. KAPLAY.js came out as the simplest, most to-the-point choice for right now: small, one file, no ceremony, and you’re moving a sprite around within ten lines.

I then locked that choice in as a KAPLAY skill of my own: a chunk of context that knows exactly how KAPLAY works (docs, GitHub), which version is current, and how to stand up a playable game with it without a build step.

Locking it in is half the work. Ask an AI for “a game for my kids” with no constraints and there’s a real chance you’ll be installing an Unreal Engine project an hour later, or that it decides to write its own physics engine because that’s more educational. Both are technically defensible and both cost you your Sunday. Without the skill it will also happily lean on the old Kaboom.js API, and then you’re sitting there with a kid next to you staring at a black screen.

With that skill in place, the framework simply stopped being a topic. The boys could talk about their game instead of about tooling.

The second was grill-me from AI Hero, a skill that doesn’t build anything but keeps asking: it interrogates you about your plan until every branch of the decision tree has been walked. I combined the two, grill-me to get started and the KAPLAY skill so it knew what was technically possible, and only then did the boys get to sit down at the screen.

An hour of getting questions first

So we didn’t start by building. We started with an interview, and Claude asked the questions. What’s the weird idea that’s yours? How do you make progress? What do you buy? Where does it end?

Every question came with three concrete answers to pick from. That’s exactly what works with kids: picking from a list is a completely different job for an eight-year-old than inventing something out of thin air. And every option spelled out what it would mean. “If you pick this it gets more exciting, but then you’ll be waiting longer.”

What happened next I hadn’t seen coming. Aeron and Elias shouted and argued their way through every single step: every question, every option, every number. They conferred, talked over each other, circled back to something from three questions earlier, and eventually landed on an answer together. My role was mostly this: listen, distill their joint answer out of the noise, and type it in as fast as my typing diploma allowed before they were three ideas further along.

They validated everything with each other, constantly. “No wait, then it’s too easy.” “Yeah but then you have to first…” And out of that came choices I never would have made myself. That interview is what made the game. Not me, and not the AI either.

An hour of answering questions before a single line of code got written, by a ten-year-old and an eight-year-old. I have seen grown project teams with less patience for that.

What they came up with that nobody else would have

Asked what the game was about, Aeron picked a journey. You bake donuts, you load them into a rocket, you fly to Planet Donut where all the other living donuts live.

Then came the question of what you do while the rocket is flying. Three options were ready. Elias answered with something that wasn’t on the list: “at the start you have to buy two ingredients so you can make donuts while you’re flying.”

There was a complete game mechanic hidden in that, and Claude pulled it out and handed it back as a question: do you mean that before launching you stock up on flour and sugar, and that every donut you bake during the flight eats into that supply? Yes, that’s exactly what they meant.

So now, before every launch, you have to choose: bring a lot of supplies, or put that money into a faster rocket. That’s not in Cookie Clicker. That’s Elias’.

Later in the day another one came along. The stops were in a strange order: Venus after the Moon, but Mars before Jupiter without ever passing the sun. Aeron spotted it and proposed flying inward first, doing a loop around the sun to pick up speed, and only then heading out. That way you hit every planet exactly once.

That’s a gravity assist. That’s what Voyager 2 did. Him spotting that kind of thing didn’t come out of nowhere: we go to lectures at the observatory together regularly, see 2026-04-25 A visit to Halley Observatory and 2026-05-29 The Inflationary Universe.

What the AI did well

The typing, to start with. That sounds trivial, but it’s precisely where most kids’ projects die: a missing semicolon, an hour of searching, motivation gone. Now the road from “can the rocket make a sound too” to a working sound effect was two minutes.

The second thing is patience. A ten-year-old produces ten ideas per quarter hour, in random order, half-finished, and an eight-year-old’s ideas come barrelling straight through them. Claude kept doing one thing at a time, made sure the game was playable after every round, and ended every turn with what worked now plus two or three choices for what’s next. Sustaining that as a parent on a Sunday is honestly harder than it sounds.

The third was checking the math. Three times a fun idea turned out to be mathematically broken, and you don’t catch that by playing. The Golden Donut, the rocket you unlock at level 5, granted 100 free fuel at every stop. Sounds like a nice reward. But 100 × 151 stops is over 15,000 fuel, while the entire journey costs 2,771. That rocket made the game literally free. Unlocked at level 5 and it wipes out the entire economy of the game: as a design decision that’s actually pretty bold, just not what anyone intended.

Same story with the asteroid bonus, and with a distance table rounded to four digits, which gave Mars and its moon Phobos the exact same number and dropped your speed to zero. Strictly speaking the game was right: if you cover zero distance, you do indeed cover it at zero speed.

The nice part is that the AI found all three itself, by doing the math after building. The less nice part is that they were in there in the first place.

What I did

The invisible part, mostly. None of it was strictly necessary: double-clicking the file on my laptop would have worked just as well for the boys. But I wanted it online, so the game runs on my own server, behind a reverse proxy that handles its own certificates. There’s a deploy.sh that builds a clean public/ directory, uses node --check to verify all the JavaScript is valid, rsyncs it to the server, and then fetches https://donut.taizer.net itself to confirm it actually works. All of that for a single HTML file. I know. Visitors are counted with Umami, which I run anyway, and the stats are public if you want to look along. The boys never saw any of that, which is fine. For them it was: “dad, is it online yet?”

I was also the interpreter and the brakes. Interpreter, because I’m the one who knows what a kid actually means: when they said you should be able to get “2x more every time”, that didn’t mean “add another upgrade”, it meant “every upgrade should halve what it costs”. That kind of translation goes faster with a parent sitting there.

Brakes, because at some point a proposal came up to build an export-and-import function so you could take your save to another device. Fine idea, but not today: that would have cost us an hour on something no kid had asked for.

The tech, briefly

One HTML file with KAPLAY.js in it, a small JavaScript game library that used to be called Kaboom. No build step, no framework, no node_modules. You double-click index.html and it plays.

That last bit matters more than it sounds. If a kid can see a change working within thirty seconds, the thing stays his.

At the top of the file there’s a block labelled “you’re allowed to turn these knobs”: every number that governs the game, in plain Dutch.

const ZWAARDER = 0.3;   // how much heavier the rocket pulls per stop higher
const DUURDER  = 1.6;   // how much more expensive it gets if you buy another

Everything they read is in Dutch: buttons, messages, variables, comments. Saving goes through localStorage, so no accounts and no database. You type your name into one of five save slots, so the whole family fits on one computer.

The planets were drawn with DALL·E, from prompts that all share one identical style block.

The sounds aren’t recorded but computed with the Web Audio API: a plop is a sine wave whose pitch drops away over a tenth of a second.

So did they actually make it themselves?

It’s the obvious question when an AI typed all the code. I think they did, and not because I’m being generous.

They made every decision that mattered. What the game is about. How you make progress. That there are ingredients that run out. That stop 75 is called Frikandelbroodje and that anyone passing through gets double donuts for two minutes. That there had to be a super-super-donut, the boss of all the super-donuts. The radar in the bottom left where you see your whole route as a spiral around the sun: their idea, right down to wanting it to slowly zoom out as you get further.

A director doesn’t operate the camera and doesn’t write the music. It’s still his film.

What they learned, by the way, isn’t programming. It’s something else and maybe more useful: that you can turn a vague idea into something that works, by cutting it up, making choices, and seeing what happens. And that the first version is always broken.

If you want to do this yourself

You don’t need a server. A browser and a Sunday is enough.

  1. Pick the framework yourself, before the kid sits down. Leave that call to the AI and there’s a good chance your Sunday goes into an engine install.
  2. Set up grill-me and let the AI do nothing but ask questions for an hour. No building yet.
  3. Hand the AI the current KAPLAY docs up front. Without them it will build on the old Kaboom API and you’ll both be staring at a black screen.
  4. One HTML file, no build step. Double-click and play.

One more thing

Among the 151 stops are seventy-six real exoplanets, carrying the names astronomers have officially given them. Draugr, Poltergeist, Dulcinea, Rocinante.

And stop 51 is called Janssen. After Zacharias Janssen, the spectacle maker from Middelburg who may well have built the first telescope around 1590. A real planet orbiting the star 55 Cancri.

Our family name is on stop 51. They still don’t entirely believe it.


The game is at donut.taizer.net, on a tablet or laptop. Click the donut, and don’t forget to stock up on supplies before you launch.