Most roguelikes hide their generator. The dungeon arrives as a fait accompli: you walked into a forest, here are the rooms, good luck. The seed exists, but it's a number, somewhere in a save file, immaterial.
Promptrunner puts the seed in your hand. You type a phrase before every run — a cathedral made of teeth, a kitchen at the bottom of the sea, the post office at the end of time — and the level builds from it.
The mechanic sounds gimmicky on paper. It almost was. What rescued it is that Jun Tanaka treated the prompt not as flavor text but as a design document: a contract between the player and the generator that the player gets to draft, fresh, every time.
What the generator actually sees
The seed enters a Claude Sonnet call with a strict output schema — 10×10 tile grid, five tile types, at least one exit, at most six enemies, fully traversable. The phrase isn't free to do anything; it's free within those rails. A "cathedral" run might come back with long parallel walls and a long central spine; a "kitchen at the bottom of the sea" leans into narrow chokepoints and slow-moving threats.
The interesting choice was the second call: another short prompt asks Claude to write eight one-line enemy taunts that fit the run's tone, which get voiced by ElevenLabs and dropped in as procedural barks. Eight lines, five seconds of audio each, tied to a fresh seed. It's nothing you'd ever hand-author. It's also exactly the kind of throwaway atmosphere that glues a 5-minute run together.
What broke
The original loop generated levels that were interesting and not beatable. Claude would propose elegant tile patterns that, on inspection, walled the player into a corner with no path to the exit. Two thirds of runs were dead on arrival.
Jun's fix was a small one: an A* pass after generation that rejects any grid where no path exists from start to exit. If the check fails, the generator retries with a softening instruction appended to the prompt. "Interesting AND beatable" became a constraint enforced by code, not a hope expressed in English.
That's the part of the workflow that didn't show up in any of the brainstorming. The prompt + schema + verifier triad is doing the real work; the model is a fast, lossy proposal engine in the middle.
The pattern underneath
Promptrunner isn't just "use AI for procedural content." It's a specific version of a pattern that's quietly showing up everywhere AI-touched games are landing well:
- A schema that constrains what the model can return.
- A prompt the model fills the schema with, parameterized by player input or game state.
- A verifier that throws away outputs the model got wrong.
It's the same shape as a Stable Diffusion pipeline that retries until a sprite passes a style classifier, or a Suno generation that gets regenerated until the BPM matches. The model is a member of the team, but it doesn't get to skip code review.
The thing Promptrunner makes legible is that, when this pattern works, the player can drive the prompt. Generation becomes a public knob. The seed isn't a number anymore. It's the part of the design document the player gets to fill in.
Play it: the build is a 320×320 demo. Hash your phrase, find the exit in the corner, type a new phrase, run again.