Birdoggydog's Builds

Building wall models for three themes and the spiral stair

Steampunk, eldritch and fantasy dungeons now build from their own wall, floor and ceiling models, and the spiral stair wears every theme and grows meat.

Steampunk, eldritch and fantasy dungeons now build their walls, floors and ceilings from models made for each theme, new and decayed, with meat growing on them. The spiral stair and the other rising pieces now look right in all five themes too, and I caught a lamp hanging through the middle of a spiral on the way.

Why did only one theme have real walls?

I asked whether all the new walls worked in all states and themes, and the test that answered it showed that only cyberpunk had wall models. In the other three themes every wall was the importer’s flat faces in a painted set, so there was no lip on a ledge and new and decayed looked the same. So I asked for all the tile sets in all states with meat generation, and I got it in two chunks.

How do you build 126 models that match a shader?

Each theme needs 21 members in two states: walls of every height, crowns, stubs, heads, floors, ceilings, kerbs, the light and the lift. That’s 126 models, each from 4 to 204 triangles.

56 seconds: steampunk new at 0:03, decayed at 0:10, full meat at 0:17. Eldritch new at 0:24, meat at 0:31. Fantasy new at 0:38, decayed at 0:45, meat at 0:52.

The game paints every wall with the floor’s painted set, and its shader recognizes a pilaster by one size only: a rib 0.24 m wide standing 0.05 m proud of panels set 0.10 m back, over a skirting about 0.30 m tall. So every model carries that same pilaster, and the theme shows in what’s left. In the Blender kit, FLAT_BASE holds the defaults and a small FLAT row per theme overrides them:

"steampunk": {"panels": 2, "plates": 2, "ceil": "band"},
"eldritch":  {"panels": 1, "plates": 1, "ceil": "body"},
"fantasy":   {"panels": 2, "plates": 2, "ceil": "cap", "skirt": (0.45, 0.06)},

Steampunk keeps a copper waist rail, eldritch a deep cornice, and fantasy a stone plinth 0.45 m tall. The plinth’s front is only 0.06 m proud, so it stays out of the pilaster’s plane and the shader leaves it alone. Doors never take this table.

A grid of first-person views of dungeon walls: riveted brass plates, a purple veined void, gray ashlar with oak boards overhead, and the same rooms covered in red meat growths.

Eight frames from the film: new, decayed and full meat in each theme.

Steampunk was rejected in the first round for two reasons. With three courses of panels, a worn wall loses a third of its panels at random, and across a hall that looks like a chessboard of holes. The ceiling plates also used the theme’s dark color, which bakes to near black under the upward light. Both fixes went into the kit’s defaults before I built the next theme: one course of panels, no more than two plates per side, and ceiling plates never in the dark color. Eldritch passed in round 1. Fantasy still got rejected, for four floor plates a side, and passed in round 2. Every model went through the whole pipeline, and I approved the sets on the review page.

Rebuilding the existing cyberpunk models gave identical files and pictures. The theme wall test had 376 checks passing, 0 failed. The layout check does find holes where a ray meets a face from behind at some outside corners, in cyberpunk’s installed pieces too. I haven’t fixed that, so it’s on the work list.

Why was there a lamp through the spiral?

The spiral stair is a round shaft one square wide, with a steel column in the middle and treads winding round it. Its wall was drawn from plain faces in every theme. Now DungeonSpiral.lay() lays the theme’s own wall pieces bent around the circle, in the same 4 m courses a straight wall uses, cut around the two doorways. A theme with no wall pieces gets its painted set, bent and worn by state. The column and treads wear the floor’s theme, but they aren’t their own models yet.

46 seconds: the turning stair and the inside of the spiral looking up, in five themes at peak then decayed, then cyberpunk at full meat.

Meat grows on the shaft wall, but I capped it at 0.6, which is at most 0.3 m out, because the walking line around the shaft is 0.55 m from the wall. Nothing blocks the way with boxes.

The film showed the bug. A corridor ceiling lamp on the spiral’s square hung across the shaft as a flat glowing slab through the column. DungeonPlan._lamps_off_shafts() now drops those lamps, and the shaft’s own lamps hang 2.05 m over the treads, clear of the wall pieces. I also made the edging strip at a round wall’s foot break at a ledge instead of sloping across it, and added a double ceiling over the turning stair.

The theme test now asks any theme that gains pieces for them, so a new set needs no work on the rising pieces. It’s at 636 checks passing, 0 failed, and the meat test at 155. Models of their own for the column and treads are still on the work list.

Also done

  • Filed the outside corner holes in the layout check as a work item.