Birdoggydog's Builds

Reshaping props and painting dungeon walls by theme

1,262 props now change shape with the theme of the room, and the dungeon's walls and floors have painted sets for each theme, ready but switched off.

Props in the game now take the look of the place they stand in, and I’ve painted wall, floor and ceiling sets for each theme. The props are installed. The painted walls are built and tested, but the switch is off for now, so the game still looks the way it did.

40 seconds in the Breakout Site: floor 1 in the house look, floor 3 in the eldritch forms, and a chest with its one indicator light.

Why should a chair change shape between themes?

I want each theme to look different in form, not only in color. On a set of six crates I said that, and that cyberpunk should be sleeker, with Warhammer 40k Eldar as the reference. After the first pilots I also said a fantasy office wouldn’t have a roller chair, it would have a four-legged chair with a cushion. So there’s a rule now: ask what the job of the object is, and whether it would exist in that world. If it would, the theme reshapes it. If not, the theme swaps in what does the job there.

I built it as prop_form.py in the Blender kit. After a prop’s maker builds it, the form step finds the parts by casting rays onto the mesh: the feet, the frame, bands, a top’s edge, a crown, attachments and a glowing indicator. Then it warps every part and every attachment point with a proportion, a taper, a bulge, a sag, a lean, a twist and a rounded plan, and holds the result to the original footprint so the room dresser can still place it. What to do is data in themes/form/<theme>.json, per class: case, cabinet, table, seat, device or clutter.

Every member was built in the house look and the themes, which is 1,560 variants. The 1,262 that a place uses are installed, each built twice to the same bytes. Triangles went up on average, cabinets from 519 to 817 and cases from 206 to 794. The biggest variants are 1,626 and 1,642.

What happened to the lights and the shelf tops?

I wanted every themed prop to have a glowing indicator, but then I changed my mind and said only the interactive ones need a light. In the game that means the chest, and a prop’s lit parts, like a desk’s lit strip or a gauge, keep theirs.

The room dresser lays things on the tops of furniture, from a list of surfaces per piece. A themed form can move or cover a top, so the list is now per theme, and 16 of the 18 host pieces differ. A crown that covers a top, like a crate’s shell, removes it. Floor 1 now lays 128 things on surfaces instead of 144, and floor 3 lays 55 instead of 67. I could have rebuilt the crowns to keep a top. I chose not to, so crowned tops stay bare.

How are the walls painted?

Two columns of three views of the same room. The left column is rust-streaked brown metal walls and a diamond-plate floor. The right column is dark brass riveted panels over a dark plinth, with a floor of dark red brick pavers.

Steampunk in a plain room under one warm lamp. Left: today’s rusty photographic metal. Right: the painted set.

Each theme gets four pictures (wall, upper course, ceiling, floor) at 64 texels per meter, with four values each and no shine. style_trial_paint.py has a table per theme that picks the painters. Steampunk is riveted brass plate in 1.5 by 1 meter panels, with rivets every 4 texels (I picked large panels with dense rivets). Eldritch is a purple void with long teal veins. Fantasy is gray stone in courses over a darker plinth, with oak boards overhead.

In the game, the dungeon importer builds floors, corridors, roofs and walls itself, so PaintedSurface.face() hands each face a shader material for its floor’s theme. A new "paint" field on a floor says which one, and a floor without it gets the house set. A wall face taller than 4 meters gets the theme’s upper picture. Caves and dug rock get a painted rubble. The Breakout Site’s floors 2, 3 and 4 are steampunk, eldritch and fantasy.

59 seconds: each floor with today’s photographic metal first, then the painted set.

Under one warm lamp, the eldritch void turned dark red, so I let its lamps glow purple, which breaks my one-warm-light rule for that theme only. The floors are mostly lit by cool strip lamps, and under them the brass of floor 2 looks olive and the stone of floor 4 looks gray. That’s the main reason the switch is still off. Relighting each room with one warm pool of light is the next step, then flattening the wall pieces whose modeled seams double the painted ones, then turning it on.

Also done

  • A place with no theme now uses the house look of a prop, not cyberpunk.
  • tests/painted_faces runs 60 checks, and the suite on the props and dungeons ran 28 tests with none failing.