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

93 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.*