47 lines
2.8 KiB
Markdown
47 lines
2.8 KiB
Markdown
# LANE F — INTEGRATION & QA (run after A–E land)
|
||
|
||
> **Prompt for Opus 4.8.** You are working in `/Users/jing/Documents/PROCITY`. Read
|
||
> `docs/CITY_SPEC.md`, then every `docs/LANES/LANE_*_NOTES.md` the other lanes left. You may
|
||
> touch any file, but prefer surgical wiring changes over rewrites — each lane's internals are
|
||
> its own. This lane turns five verified parts into one game.
|
||
|
||
## Mission
|
||
|
||
One URL, one seed, a whole town: `web/index.html?seed=N` → map → walk the streets → open any
|
||
door → themed interior with a keeper → back out — 60fps, no seams, no leaks.
|
||
|
||
## Wiring checklist
|
||
|
||
1. Swap Lane B's `fixture_plan.js` for Lane A's `generatePlan(seed)`; seed from URL param,
|
||
surfaced in HUD; `web/map.html` linked from an in-game map key (M) using the same plan.
|
||
2. Wire `procity:enterShop` → Lane C `buildInterior` (mode switch, street scene paused not
|
||
disposed, player restored on exit at the door, interior disposed on exit).
|
||
3. Wire Lane D: citizens stream with Lane B's chunks (roster per chunk key); keepers spawn from
|
||
Lane C's counter `places`; day-segment events drive density.
|
||
4. Point Lanes B/C at Lane E's `manifest.json` (skin→type mapping replaces any hardcoded pools;
|
||
GLB upgrades appear; primitive fallbacks still exercised via a `?noassets=1` param).
|
||
5. Hours: closed shops (CityPlan `hours` vs day segment) get dark windows, CLOSED plate, locked
|
||
door toast. One late-night shop per town stays open (Lane A seeds it) — verify it exists.
|
||
|
||
## QA gates (all must pass before calling it v1)
|
||
|
||
- **Determinism**: seed 1234 on two machines → identical map PNG, identical first-interior
|
||
placement list.
|
||
- **Soak**: scripted 10-minute walk (record a waypoint path, drive the camera) crossing ≥30
|
||
chunks, entering ≥15 shops: `renderer.info.memory` geometries/textures return to baseline
|
||
after each interior; JS heap stable; zero console errors.
|
||
- **Budget**: HUD numbers within CITY_SPEC limits at the busiest intersection at midday.
|
||
- **Asset-free run**: `?noassets=1` full playthrough — placeholder town, zero crashes.
|
||
- **Selfchecks**: `node web/js/citygen/selfcheck.js` + `python3 pipeline/validate_manifest.py`
|
||
green; add `tools/qa.sh` that runs both.
|
||
- **Shots**: refresh all `docs/shots/*` reference images; add a contact-sheet
|
||
`docs/shots/v1_tour/` (10 beauty shots: main street noon, arcade, market square, milkbar
|
||
dusk, record-shop interior, night neon, etc.) — these are the Vuntra-style devlog material.
|
||
|
||
## Then write `docs/V2_IDEAS.md`
|
||
|
||
Park everything discovered but not built: dig.js wiring + BaseGod real-item stock, interior
|
||
window shader, real-OSM plan import (thriftgod `build_city()` route), trams/bus loop, weather,
|
||
multiplayer presence, the in-game layout editor (thriftgod E1–E4 override tables), venue
|
||
district + gig system crossover with 90sDJsim.
|