← Devblog

Rooms get a workbench

Every room in this game is a text file: a grid of characters that is its own floor plan, plus a little metadata around the edges. The whole episodic model rests on that file being something a person can sit down and write in an evening, no tools required. We’d never actually tested that claim against a fresh set of eyes, so today we ran the experiment.

Good news: the format held up. Three new rooms, hand-typed straight from the spec, each picking a corner case no existing room used – a three-kid pack from one spawn instead of the usual one or two, two separate threats that both have to end up sealed away before the door opens, one threat split across two rooms behind two different doors. All three parsed, validated, and solved on the first attempt.

The bad news is what the experiment proved instead: typing a room is easy. Knowing whether it works is not. Every room ships with a proof that it’s solvable, and until today that proof meant writing a small program that walks a simulated person through the room and asserts they come out alive on the other side. That’s programming, not authoring, and it’s exactly the kind of gap that quietly kills a plan to ship new content “whenever it’s ready” – ready has to include someone other than a programmer being able to tell.

So we spent the rest of the day building the thing that closes it: a small program, separate from the game itself, that opens a room, lets you paint its floor plan and set its rules, and then – the actual point – lets you press one key and play it, live, against the exact simulation the shipped game runs. Not a preview. The real thing, with the real zombies doing the real zombie thing, in the room you painted a minute ago.

Notes from the build, since this devlog can’t resist confessing what its own tools caught:

What exists now, from one sitting: paint a room and its cosmetic dressing, set its objective and its threats, undo any of it, save it back out as the same format the game already reads, and prove it works by playing it instead of writing a program that swears it does.

What we haven’t done: looked at it. Every check above is a machine confirming the thing runs without falling over – nobody has sat down, played a room in it, and confirmed the sitter looks like the sitter is supposed to. That’s the honest next step, and a much easier one to take now than it was this morning.