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

56 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).