PLAN3D.md: locked stack (vendored three.js r175 + stdlib server, DJsim house style), verified asset inventory on the M1 Ultra, module contracts, five parallel lanes (world/sail/weather/player/assets) with acceptance criteria and integration order. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
80 lines
4.5 KiB
Markdown
80 lines
4.5 KiB
Markdown
# Lane launch prompts (Opus 4.8, run on the M1 Ultra)
|
||
|
||
Per lane: clone `git@gitea.partly.party:monster/shades.git` to
|
||
`~/Documents/shades-lane<X>`, branch `lane/<x>`, paste the prompt.
|
||
Lane A starts first; B/C/D/E can start immediately after in parallel
|
||
(they develop against contracts + selftest mocks until A's M0 merges).
|
||
|
||
---
|
||
|
||
## Lane A — world, shell & integration
|
||
|
||
> You are Lane A on SHADES 3D. Read PLAN3D.md fully (you own §5 Lane A), then
|
||
> DESIGN.md, then play prototype/ (`python3 -m http.server 8642 --directory
|
||
> prototype`). Build the M0 skeleton exactly per PLAN3D §3/§4/§5-A: vendored
|
||
> three.js copied from ~/Documents/90sDJsim/web/world/vendor/, stdlib server.py
|
||
> on 8801, contracts.js, graybox 30×20 m yard with house edge/trees/posts/garden
|
||
> bed, third-person camera, sun lighting, selftest.html harness. Merge M0 to
|
||
> main as fast as possible — every other lane rebases on you. Then build the HUD
|
||
> against mock data, and act as merge shepherd per PLAN3D §6. Log every landing
|
||
> in THREADS.md.
|
||
|
||
## Lane B — sail simulation & rigging
|
||
|
||
> You are Lane B on SHADES 3D. Read PLAN3D.md fully (you own sail.js +
|
||
> rigging.js, §5 Lane B), DESIGN.md §geometry/§hardware, and prototype/game.js —
|
||
> your job is the faithful 3D port of its cloth/load/failure behavior. Build the
|
||
> 3D verlet cloth with per-FACE wind pressure (F ∝ area·dot(wind,normal)²) so
|
||
> hypar twist genuinely sheds load — prove it with the selftest assert (twisted
|
||
> rig peak load < flat rig peak load in the same storm). Corner load = smoothed
|
||
> incident-spring stretch; break after 0.4 s sustained overload; flogging must
|
||
> be emergent from the freed node. Then the prep-phase rigging UI with the
|
||
> prototype's economy. Until Lane A's M0 merges, develop inside selftest.html
|
||
> with a stub wind function; keep every module deterministic (dt,t in — no
|
||
> Date.now, no rAF in sim code). Log in THREADS.md.
|
||
|
||
## Lane C — weather, sky & debris
|
||
|
||
> You are Lane C on SHADES 3D. Read PLAN3D.md fully (you own weather.js,
|
||
> skyfx.js, debris.js, data/storms/, §5 Lane C) and prototype/game.js's gust
|
||
> scheduler — port its telegraph/ramp/hold/fade shape. Implement
|
||
> wind.sample(pos,t) per contracts.js: base curve + gusts + direction change +
|
||
> spatial noise + tree wind-shadow. Storms are data (JSON, PLAN3D §4) — author
|
||
> storm_01_gentle and storm_02_wildnight. Then instanced rain following local
|
||
> wind, storm sky + lightning flash, WebAudio layers (wind bed, gust whoosh,
|
||
> rope creak keyed to max corner load, flog when broken), and hand-rolled
|
||
> debris (crates/tubs from models/debris/) with player knockdown + sail impulse.
|
||
> No physics engine, no deps. Selftest: telegraph lead ≥1.2 s, wind continuity,
|
||
> storm JSON validator. Log in THREADS.md.
|
||
|
||
## Lane D — player character & interaction
|
||
|
||
> You are Lane D on SHADES 3D. Read PLAN3D.md fully (you own player.js +
|
||
> interact.js, §5 Lane D) and 90sDJsim's DEVMANUAL rigged-characters section
|
||
> (~/Documents/90sDJsim/DEVMANUAL.md) — its loading rules are law
|
||
> (SkeletonUtils.clone, head-bone height normalize, never blind setScalar).
|
||
> Copy a ped from ~/Documents/90sDJsim/web/world/models/peds/ into models/
|
||
> (copies rule), merge Walk/Running/Happy Idle clips via ~/Documents/
|
||
> character_kit/ pipeline; queue Climbing Ladder / crank / dig on the
|
||
> ~/Documents/mixamo-fetch wishlist for M3. Camera-relative WASD + anim state
|
||
> machine, wind slow/shove/knockdown per PLAN3D, and hold-E interactions via
|
||
> interact.register (re-rig with spare 2.5 s, per-corner turnbuckle trim 1.2 s,
|
||
> carry-one-item from shed table). Selftest: state machine table test. Log in
|
||
> THREADS.md.
|
||
|
||
## Lane E — nature & hardware assets (Blender)
|
||
|
||
> You are Lane E on SHADES 3D. Read PLAN3D.md fully (you own tools/blender/ +
|
||
> models/, §5 Lane E). Study the house Blender-scripting idiom in
|
||
> ~/Documents/3D-STORE/build_booth_room_v23.py and racks_to_glb.py, then write
|
||
> ONE deterministic tools/blender/build_yard_assets.py that generates every
|
||
> deliverable in PLAN3D §5-E (gum trees with named canopy/branch_anchor nodes,
|
||
> fence set, house_yardside with fascia_anchor empties, shed + table, garden
|
||
> bed with 3 damage states, raked sail post, ladder, close-up shackle/
|
||
> carabiner/turnbuckle, ref_capsule) and exports meter-scale Y-up GLBs, <15 k
|
||
> tris, low-poly stylized to sit beside the 90sDJsim ped fleet. Also copy +
|
||
> scale-check the debris set from ~/Documents/3D-STORE/clean_glbs/ into
|
||
> models/debris/. Verify every export by rendering a contact sheet against the
|
||
> 1.7 m ref capsule (the 3D=models/_thumbnails pattern). Commit script AND
|
||
> GLBs. Log in THREADS.md.
|