PROCITY/docs/V2_IDEAS.md
m3ultra aa4ed4fdca Lane F: integration — interiors + keepers + street peds + QA harness
interior_mode.js bridges Lane B's enterShop seam to Lane C buildInterior and Lane D
keepers (spawn at counter keeperStand, greet, leak-free over 5 cycles). CitizenSim
wired into the street loop (pop 140, ~96 active midday, worst ~191 draws). tools/:
qa.sh gate runner (all 4 landed gates GREEN --strict), scaffold/consistency checks,
shots.py + soak.py browser harnesses. docs/shots/ reference tree, LANE_F_NOTES
runbook, V2_IDEAS parking lot.

(F's inline seam edits to index.html/skins.js landed with the Lane B commit.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 14:29:03 +10:00

5.4 KiB
Raw Blame History

PROCITY — V2 IDEAS (the parking lot)

Written by Lane F. Everything discovered during v1 but deliberately not built, so v1 stays "the system: plan → streets → doors that open → themed interiors → NPCs." Each item notes where the seam already exists so v2 is wiring, not rework. Ordered roughly by leverage.


Content firehose (the reason the system exists)

  • dig.js wiring + BaseGod real-item stock. v1 interiors show visual stock only (canvas cardboard sleeves/spines via Lane C's stock.js). The seam is Lane C's stockAdapter(shop, slotKind) => texture/mesh hook — leave it, then in v2 feed it from GODVERSE (recordgod/toygod/ bookgod/mediagod: 44k solid-object 3D candidates, 185k vinyl w/ images — ~/Documents/dealgod/GODVERSE.md). Port 90sDJsim/web/world/dig.js (self-contained crate-riffle, onBuy/getCash/spawnClerk/spawnFittings callback API, already ported across 3 games) into a shop when you walk to a bin. Real economy = thriftgod mint() (server.py:792) — per-shop-type profiles, gem bands, CBD-distance curation, TABLESAMPLE over real listings.

  • Real-OSM plan import (thriftgod build_city() route). Swap the synthetic generatePlan(seed) for real geography: thriftgod server.py:433 runs an Overpass query for AU secondhand/charity/music/book/toy shops → city_source.json cache → dedupe → nearest-capital → suburb inference → parody names → seeded hours (~2,918 real shops). PROCITY's Layer-1 schema was built to accept this — generatePlan becomes one of two plan sources behind the same CityPlan contract, so Lanes BF never change.

Authoring / override layer (the thriftgod "big idea")

  • In-game layout editor + override tables. Every interior is deterministic from shop.seed; thriftgod's Postgres layout_shop/layout_area/layout_asset tables hold optional hand-authored overrides (NULL = procedural). The E1E4 in-game editor writes them (thriftgod/EDITOR_PLAN.md). v2: add an override store (localStorage → later a tiny backend) and a ?edit=1 mode. The seeded-everything law (CITY_SPEC) is exactly what makes this possible — don't break it.

World depth

  • Interior-mapping window shader. v1 fakes shop windows two ways: Lane B tints glass + warm emissive at night; Lane C puts a backdrop plane inside. v2: the real Vuntra trick — a parallax interior-mapping shader so a passing pedestrian sees a plausible room through the glass without building it. Stretch goal already flagged in CITY_SPEC §Layer 3.

  • Weather + seasons. Sky dome already seed-picks from sky-*.jpg (summer storm, monsoon, grey drizzle, heat haze already in web/assets/gen/). v2: rain particles + wet-ground roughness, wind on awnings/trees, seasonal palette shift. Cheap, high vibe-per-byte.

  • Trams / buses on a loop. A scripted vehicle following main-street edges from the CityPlan graph; a bus-stop shelter prop is already on Lane E's MeshGod shortlist. Instanced, one path, no traffic sim in v2 — just life on the street.

  • Venue district + gig system (90sDJsim crossover). The warehouse fringe (Lane A seeds it as future flea-market/venue territory) becomes a live-music block; port 90sDJsim buildVenue() (~line 1094) + its rigged-front-row/bobbing-box crowd. Natural bridge back to the parent game.

Simulation & NPCs

  • Deeper citizen sim. v1 is layered LOD (rigged near / impostor mid / culled far) walking footpath lanes with seeded identity. v2: needs/schedules (home→shop→square by time of day), shop patronage that reads hours, queues at the open late-night shop, buskers in the arcade. Vuntra's million-NPC layering at hamlet scale — the tier machinery is already there to lean on.

  • Multiplayer presence. Other players as citizens (the fleet impostor path already renders cheap remote avatars). Presence-only first (see who's in town / same shop), no shared economy — that rides on the content/override backend above.

Assets & polish

  • Corner-building second facade. Lane E flags the -side variant question; v2 gives corner lots a proper second face + wrap-around verandah instead of reusing the front skin.

  • GLB depot expansion. v1 ships the audit-normalized shortlist + primitive fallbacks. v2: the full ~/Documents/3D=models/ library normalized to house GLB law, MeshGod hero props batch (listening booth, till, VHS rewinder, spinner rack, milkshake mixer, arcade cabinet, band-poster easel, giant novelty record, bus shelter — pipeline/MESHGOD_BATCH.md, John's go required).

  • Audio. Street ambience by district, muffled shop music that swells through an open door, the milk-bar bell. No audio in v1 at all — greenfield.

Tech / QA carryover

  • GFX tiers. 90sDJsim's era-tiered GFX_TIERS (~line 167) — adopt only if a real device misses budget; CITY_SPEC says don't gold-plate now.
  • Determinism across engines. If real-OSM or an authored backend enters, extend Lane F's determinism gate to pin plan + first-interior hashes per seed in CI.
  • Shadow/GI. v1 = one 2048 directional map following the player (or none — measured). v2: cascaded shadows or baked/faked GI for the arcade + interiors.

Seam summary: stockAdapter (Lane C), plan-source behind the CityPlan contract (Lane A), the shop.seed determinism law (core), and Lane B's mode state machine are the four hinges every item above swings on. They exist in v1 specifically so none of this is a rewrite.