TURNCRAFT/docs/briefs/SIDEB_WORLDS.md
type-two 758e9dc4d3 SIDE B briefs + contracts: crate worlds, per-world quests, stamps
Contract: src/core/worlds.ts (three pocket worlds above the booth walls,
portal/entry/exit anchors, stamp count) + additive world/stamp bus events.
Briefs: SIDEB overview + WORLDS / MACHINES / SOCIAL(ambience) / AUDIO lanes,
rescoped around the already-shipped SOCIAL_RESET (emotes, reset ritual,
avatars) and first-five-minutes (heartbeat, beacons, flythrough) phases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 14:55:12 +10:00

3.1 KiB
Raw Permalink Blame History

SIDE B — Lane W: the three pockets (worldgen)

Read docs/briefs/SIDEB.md first. You own src/worldgen/worlds/** (new) plus small additive edits in src/worldgen/buildBooth.ts (portal dressing + calling your builders). Do not move any existing anchor or LAYOUT position.

W1. Portal dressing at the crate (buildBooth additive)

The three portal discs (WORLD_DEFS[k].portalDisc, r=12, already built by buildCrate) get: a 1-voxel led_* ring inlay on the crate floor around portalStand (accent-coloured: acid=led_green, dub=led_amber, disco=led_blue — approximate accents with existing led blocks), and a small marquee of 23 accent led voxels on the disc rim. Subtle — the crate stays dim; the rings are the "these three are special" tell.

W2. Three pocket rooms (src/worldgen/worlds/)

One module per world + an index that exposes buildWorlds(w: IVoxelWorld) called once from buildBooth (after everything else; same seed discipline — use mulberry32, never Math.random). Each pocket: fully enclosed shell at pocketMin..pocketMax (outer skin matte_black so undersides read as shadow from the booth; NO light leaks — every interior emissive fully enclosed), floor/walls/ceiling themed inside, interior height ~14.

  • ACID WAREHOUSE (x 20..84): raw concrete feel — steel_grey/brushed_alu floor slab variants, breeze-block wall rhythm from ply_edge, pillars, led_green cable runs snaking wall→floor→three knob pedestals (Lane M places machines AT entry-relative positions listed in their brief — you build the pedestals: three 3×3×3 matte_black plinths at z 44 / 52 / 60 along x=52, 1-voxel green pip on each). A strobe rail of strobe_dot on the ceiling.
  • DUB CHAMBER (x 192..256): deep space — vinyl_black walls with sparse led_amber embers, a central chasm (floor drops 4 at x 210..238) crossed by a 3-wide wobbling spring-tank bridge footprint: you lay the STATIC deck (chrome 3×24 along z at x 224); Lane M overlays the moving collider. A big horn-speaker cone of stacked speaker_mesh rings on the far wall.
  • DISCO LOFT (x 364..428): warm parquet — plywood/ply_edge herringbone floor with a 4×4 grid of 5×5 dance tiles (flush, alternating label_cream/rubber borders, centre voxel led_* per tile — Lane M lights them; you place the tile grid centred on [396, 143, 52..76]), a mirrorball of chrome+glass voxels hanging centre-ceiling, led_red/led_blue wall wash strips.

Exit pads: 3×3 rca_gold pad flush at each exitPad, one accent led pip.

W3. Budgets & proof

Deterministic (two builds byte-identical); booth build < 900 ms total; chunk meshes < 700; zero visibility from inside the booth (fly the cine camera around the booth at night — no glow leaks) AND from the first-visit flythrough path (commit caac3da rides the cine override high over the booth — run it and confirm the pocket shells read as, at most, faint black slabs in the dark). Update worldgenDemo validation with pocket assertions (shell sealed, entry/exit air, pedestals present). Handoff: docs/SIDEB_W_handoff.md. Dev port: use launch config turncraft-laneC-verify (5212).