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>
5.4 KiB
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'sstockAdapter(shop, slotKind) => texture/meshhook — 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). Port90sDJsim/web/world/dig.js(self-contained crate-riffle,onBuy/getCash/spawnClerk/spawnFittingscallback API, already ported across 3 games) into a shop when you walk to a bin. Real economy = thriftgodmint()(server.py:792) — per-shop-type profiles, gem bands, CBD-distance curation,TABLESAMPLEover real listings. -
Real-OSM plan import (thriftgod
build_city()route). Swap the syntheticgeneratePlan(seed)for real geography: thriftgodserver.py:433runs an Overpass query for AU secondhand/charity/music/book/toy shops →city_source.jsoncache → dedupe → nearest-capital → suburb inference → parody names → seeded hours (~2,918 real shops). PROCITY's Layer-1 schema was built to accept this —generatePlanbecomes one of two plan sources behind the same CityPlan contract, so Lanes B–F never change.
Authoring / override layer (the thriftgod "big idea")
- In-game layout editor + override tables. Every interior is deterministic from
shop.seed; thriftgod's Postgreslayout_shop/layout_area/layout_assettables hold optional hand-authored overrides (NULL = procedural). The E1–E4 in-game editor writes them (thriftgod/EDITOR_PLAN.md). v2: add an override store (localStorage → later a tiny backend) and a?edit=1mode. 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 inweb/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
-sidevariant 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.