Rebuilding the theme tour to show every generator element
The five tour dungeons were generated again with their own dungeon kinds, and a table now proves that ducts, vents, galleries, spirals and curves all show up.
I rebuilt the theme tour, the five themed dungeons joined by transit pads, on top of everything the generator learned this week. Each dungeon now has its own dungeon kind, together they make all 19 room kinds, and the build prints a table of every element the generator lays. If one is missing from all five dungeons, the build fails.

The film’s frames, in order, with captions.
Why rebuild it now?
I’d said I wanted no more tour builds until three things were finished: the generator’s gaps, the rising fix, and furniture in every room of every type in every theme. All three landed this morning. I also asked whether the generator would produce dungeons with all the elements I’d built, including the ducts between rooms, and whether the tour had every spiral and curve. I wanted an answer I could count, not a feeling.
How does the build prove every element is there?
tools/tour_build.py holds a list of countable elements and a function that counts each one on a built dungeon. After the five dungeons are written it prints the table below, and it exits with an error when a row is empty in all five.
| Element | Cyberpunk | Steampunk | Eldritch | Fantasy | House |
|---|---|---|---|---|---|
| flat duct between rooms | 2 | 1 | 2 | 1 | 1 |
| climbing duct | 1 | 1 | 2 | 1 | 1 |
| ceiling vent | 1 | - | - | 1 | - |
| vent with meat sacks | - | - | - | 1 | - |
| room between floors | 1 | - | 1 | 1 | 1 |
| raised gallery | 1 | - | - | - | - |
| spiral within a floor | 1 | 1 | - | 1 | 1 |
| spiral between floors | 2 | 1 | 3 | 2 | 2 |
| one-way door | - | 1 | - | - | - |
| curved corners | 24 | 30 | 34 | 23 | 24 |
That’s ten of the 22 rows. The rest cover rooms sunk, raised or graded, rooms sunk or raised by their kind, the dug store, corridor bends, turning stairs, ramps and the three ends a duct can have (a grate, a door or a secret door).
Each dungeon is a generator dungeon with a theme on top. Its spec lists 16 seeds, the build tries them in turn, and it keeps the first one that makes every floor and lays everything the spec wants. That always includes a flat and a climbing duct and a room of every kind in the dungeon kind’s mix. The rare elements are listed per dungeon. The cyberpunk one wants a ceiling vent, a gallery and a room between floors. The steampunk one wants the one-way door. The eldritch one wants a room sunk by its kind and the dug store, and the fantasy one wants the vent with an ambush.
The search was short. Cyberpunk seed 11 had no spiral within a floor, no ceiling vent, no gallery and no bathroom, so seed 12 won. Steampunk seeds 21 to 30 each lacked something, so 31 won. Eldritch needed seed 35 and fantasy needed 43. House passed with its first seed, 51.
What changed in the build script?
The first round of this work was done before the generator’s writers took over light, meat and theme. When I merged, the tour’s builder had its own copies of the theme tables, and it only wrote an interior on floor 1. I settled that on the generator’s side. The builder now calls the same writer the generator uses, so every floor of a themed dungeon carries its interior and paint, and the copies are gone.
The old fix passes are still there. The build moves a door that could be walked around, moves a pack of monsters into a room it fits in, and adds a pack of one where the stocking left a room kind empty, like a meat beast in a cyberpunk office. The eldritch dungeon’s meat is painted by the meat painter. It lowered two doorways on floor 1 from full growth to 0.8, so the party’s way stays open. 391 squares there carry meat, with a mean growth of 0.912.
What’s still wrong?
I filed three things and didn’t fix them, because the generator isn’t part of this task.
- The fill audit’s 20 fixture dungeons are out of date since the ducts landed, so they need to be made again.
- A pack of several can crowd a 3 by 3 room so that the furniture has nowhere to go. In the tour that’s a cell on the cyberpunk dungeon’s third floor.
- The generator sets a plain door at a bend into a flooded way. The builder can’t move it, so it takes that door away.
The tour test passes 102 checks and the fill audit for the tour passes 13. Of the 244 tests I ran on the changed code, three failed. Two of those, the editor test and the world frames test, fail on main as well. The third was a stale registry that passed once I exported it again.