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>
3.1 KiB
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 2–3
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_alufloor slab variants, breeze-block wall rhythm fromply_edge, pillars,led_greencable runs snaking wall→floor→three knob pedestals (Lane M places machines ATentry-relative positions listed in their brief — you build the pedestals: three 3×3×3matte_blackplinths at z 44 / 52 / 60 along x=52, 1-voxel green pip on each). A strobe rail ofstrobe_doton the ceiling. - DUB CHAMBER (x 192..256): deep space —
vinyl_blackwalls with sparseled_amberembers, 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 (chrome3×24 along z at x 224); Lane M overlays the moving collider. A big horn-speaker cone of stackedspeaker_meshrings on the far wall. - DISCO LOFT (x 364..428): warm parquet —
plywood/ply_edgeherringbone floor with a 4×4 grid of 5×5 dance tiles (flush, alternatinglabel_cream/rubberborders, centre voxelled_*per tile — Lane M lights them; you place the tile grid centred on [396, 143, 52..76]), a mirrorball ofchrome+glassvoxels hanging centre-ceiling,led_red/led_bluewall 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).