My kid wanted to play a video game. Not one that exists. She wanted new characters. So she started talking and I started typing.
tl;dr — LLMs are extremely good at turning ambiguous ideas into concrete things. That’s powerful and it’s risky. The inference comes from training, not from you. In this case the results were a fun and lighthearted game made with a simple prompt. In other cases, you need to watch every seam. Chop some carrots!
↓ Just let me play this silly game
The prompt
Here’s what she said, more or less verbatim:
Dinosaurs and people running away from the dinosaurs. Run down the hill as fast as they can. They’re gonna jump over the rock and chop carrots when the dinosaur dies. They’re gonna net the dinosaur and the fish and everyone’s gonna know that there’s a dinosaur in the world. Dinosaur can die sometimes but its sad. Also he died a long time ago, but he came back. He sometimes puts a big rock on the city and destroys it. And there was a castle and he didn’t know it wasn’t destroyed. The king could turn the land back into something. The dinosaur used to be a nice dino but became mean because someone took the treasure. The treasure was part of the dinosaur. He behaved badly.
That’s a kid’s game design document. Honestly better narrative structure than many briefs I got in my decades of work.
I added a few practical constraints — browser-based, no backend, arrow keys and clicks, readable code — and fed the whole thing to Claude.
What came out
A single HTML file. No dependencies. No build step. Just open it in a browser.
Five levels, and they follow her story beat for beat:
- Run Down the Hill — side-scrolling runner. People flee downhill, jumping rocks while the mean dinosaur chases them.
- Net the Dinosaur — click to throw nets at the bouncing dino. Catch fish too. Once caught, you announce to the whole world: there’s a dinosaur!
- Chop Carrots — the post-capture cooking celebration. Carrots fall, you chop them with a knife. This was Niko’s idea of what happens after you catch a dinosaur. Obviously.
- The City — dino escapes, throws big rocks on buildings. You play as the king, deflecting rocks to protect the castle. The dino doesn’t know the castle isn’t destroyed.
- Restore the Land — the king walks over dead zones to heal them, finds the treasure (which was part of the dinosaur all along), and returns it. Dino becomes nice again.
The backstory is all there: the dinosaur was once kind, someone stole his treasure — which was literally part of him — and he went mean. He came back after being gone a long time. You give the treasure back and he’s a friend again. Every single thing she described made it in.
Adding Japanese
Niko’s growing up bilingual, so after the first version worked I asked for one more thing: a language chooser at the start. All the Japanese text is hiragana only — no kanji — so she can actually read it herself (soon!). One additional prompt.
Play it
Arrow keys to move, space to jump and act, click to throw nets. Press 1 for English, 2 for Japanese.
How it’s built
About 700 lines of JavaScript in a single HTML file. Canvas rendering, requestAnimationFrame game loop, keyboard and mouse input. Each level has an init, update, and draw function, and a state machine switches between them. Story cards fade in between levels.
The translation is a flat object keyed by string IDs with en and ja values. A t("key") helper picks the right one. Font stack switches between monospace and Hiragino/Noto Sans JP depending on language.
No bundler. No node_modules. No external assets. The dinosaur is a bunch of rectangles with teeth. Two prompts total: one to make the game, one to add Japanese.
Niko tested it and gave it a thumbs up, which is the only QA that matters.
The double-edged sword
Here’s the thing that stuck with me. My kid’s prompt was pure chaos — a stream of consciousness about dinosaurs, carrots, castles, and sadness. No structure, no spec, no user stories. And the model turned it into a coherent five-act game with level progression, a redemption arc, and a cooking minigame.
That’s the real capability on display. LLMs can take the most ambiguous, half-formed idea and give it shape. They fill in the blanks. They impose structure where there was none. They infer what you probably meant.
This is a blessing when your kid is the product manager and the stakes are bedtime fun. She had a blast. Mission accomplished.
But it’s also something to watch carefully. I didn’t ask for a multi arc story. I didn’t ask for score keeping. I didn’t specify that the dinosaur should bounce off screen edges. The model made dozens of small decisions on my behalf, and in this case they were fine — good, even. But every one of those decisions came from the model’s training, not from my intent. It filled the ambiguity with the most likely thing, and most likely isn’t always what you wanted.
The same property that makes this magic — turning a rambling kid’s monologue into a playable game in two prompts — is exactly what makes it dangerous in higher-stakes contexts. The model will always give your idea shape. You have to make sure it’s the right shape.