PROCITY/docs/LANES/LANE_F_INTEGRATION.md
2026-07-14 10:46:40 +10:00

2.8 KiB
Raw Permalink Blame History

LANE F — INTEGRATION & QA (run after AE 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 E1E4 override tables), venue district + gig system crossover with 90sDJsim.