☠ PIT LAYOUT LAB

design-branch tool — drives layout-core.js (the same code the server and game run); tweak, read the derived gameplay math, push to the live server, export a .glb · LAB v8 — clean surface (no grass loot / shrine) (stale tab if you don't see this tag)

Pit

Style knobs

Treasure spawns

Powerup spawns

Shaft

Movement (metrics only)

Fog

+8 = shipped (a band above the floor). NEGATIVE = the fog starts far BELOW the floor and must climb before it even enters the pit. Pushable; abs start shown in metrics.

Overlays

uncheck them all for bare platforms / bridges / islands — the 3D preview, view shots, and .glb export all follow these.

GLB skins

defaults auto-load from models/platforms/ (dirt→dirt · wood→ice · rock/bridge→stone · island→dirt); drop a .glb on a slot to override for this session. ✕ = back to the default, ✕ again = bare primitive. STRETCH fills w×1.2×d exactly; off = uniform fit to the footprint (native proportions, top stays at walk height). Skins ride the preview, the view shots, AND the .glb export (own materials/textures baked in).

Treasure models

models only, no placeholder primitives: defaults auto-load from models/treasures/ per kind; drop a .glb on a slot to override for this session, ✕ returns to the default. Kinds with no file yet (screamer/radio/boulder) don't render in 3D or export — the 2D maps still dot them. Sized by gold value (deep loot reads bigger), floated a touch above the ledge. Rides preview + shots + .glb export.

Live server

SAVED LAYOUTS
 
 
scale multiplies the .glb and the .json geometry (params stay raw game units). The pack = layout .json + a zip of top / down / left / right / side / perspective renders.
push applies everything except the movement/fog metric knobs and RESETS the live world. The controls echo whatever the server actually accepted (it clamps). Empty server reverts to the shipped layout.

3D preview — drag to orbit · wheel to zoom · shift-drag to pan

FOG
 

Export — LAYOUT_DEFAULTS for layout-core.js (makes this layout the shipped one)

Paste over LAYOUT_DEFAULTS in public/layout-core.js — the one file the server, client, and this lab all share. Deterministic only; the seeded styles use LAYOUT.seed, never Math.random.

Top-down

Side view (build order →, depth ↓)