Merge local map tasks into the 3D review track
This commit is contained in:
1 parent
b79e30e9df
commit
8fac1b47cf
9 files changed
+213
-215
No files matched your search
@@ -3,7 +3,7 @@
|
||||
Work is grouped by theme. Each item should be small enough to complete and verify on its own;
|
||||
see `AGENTS.md` for the workflow and `MEMORY.md` for the decisions behind these plans.
|
||||
|
||||
**Priority order:** 3D model re-evaluation → character development → local map development →
|
||||
**Priority order:** 3D model and local map re-evaluation → character development →
|
||||
versioned release milestones (0.10.0) → future/deferred work. See `AGENTS.md` §Priority and
|
||||
Versioning and §Local Blender skills.
|
||||
|
||||
@@ -212,9 +212,6 @@ and never ship a generated or downloaded image without provenance.
|
||||
used; the public-domain frames cover the same evidence. (`docs/screens/refs/joke-shop/`.)
|
||||
**Removed 2026-11-03:** the committed Comedy Store photo board was replaced by the local-only
|
||||
`tmp/research/comedy-store/` research set (owner override; see §3D model re-evaluation → A).
|
||||
- [ ] Find more pictures from the Comedy Store, the Sunset Boulevard block, collect at least five additional shots for reference; do not care about licensing, these images are only stored locally for reference and inference during development. Find pictures from the neighboring hotel building and the street surroundings.
|
||||
- [ ] Fill the Joke Shop gaps: better visual representation of actual facade, parking lot to the side, neighboring hotel parking ramp and building, night canopy/sign, entrance recess, south-side neighbours, buildings across the street, hillside behind the building, hill detail.
|
||||
house detail, neighbouring buildings, and any relevant street-level context.
|
||||
- [x] TV Studio: no separate board — the venue is the same El Capitan Entertainment Centre block as
|
||||
the Hollywood day shift, restaged for a late-night arrival. The Hollywood board covers both
|
||||
venues and the premiere-staging photo is the arrival evidence; the reuse is now stated in
|
||||
@@ -224,11 +221,6 @@ and never ship a generated or downloaded image without provenance.
|
||||
Walk of Fame terrazzo band, star close-up, and a night street-lighting context frame (cropped
|
||||
to remove people and a plate). The board now has nine photos. (CC BY-SA night frame is
|
||||
redistributed unmodified for study only; the review is recorded in the sidecar.)
|
||||
- [ ] Remaining Hollywood gap: a licensed **night photograph of the hero facade and blade sign**
|
||||
(the night frame on the board is a different block, near Vine), plus a sidewalk-level shot of
|
||||
the steps/door recess and the east retail neighbour. For the committed board the licence gate
|
||||
stays (no unlicensed Street View or scraped social media); local-only copies of the same
|
||||
viewpoints go through section A instead.
|
||||
- [ ] Generate one concept board per venue with `tools/scene_concepts.py generate` (palette, facade
|
||||
rhythm, lighting), keep raw output gitignored, commit only the selected board, and record the
|
||||
model, prompt and spend in the sidecar.
|
||||
@@ -267,6 +259,193 @@ and never ship a generated or downloaded image without provenance.
|
||||
`docs/architecture.md` and `AGENTS.md` with the skill routes and the new gates.
|
||||
- [ ] Record accepted limits and deferred rebuilds in `docs/known-limitations.md` and `MEMORY.md`.
|
||||
|
||||
**Local map workstreams (H–M).** Build a local, data-backed map pipeline that can replace or
|
||||
supplement the stylized venue geometry with licensed OpenStreetMap footprints, 3D building
|
||||
massing, reference-derived photoreal facades and AI-assisted composition. This remains part of
|
||||
the same unversioned track, not a release gate. The shared reference/provenance gates in A/F
|
||||
still apply; the map pipeline has its own exit in M.
|
||||
|
||||
*Local-map skill route: `environment-artist`, `archviz`, `hard-surface`, `geometry-nodes`,
|
||||
`procedural-modeling`, `vegetation-artist`, `set-dressing`, `lighting`, `materials`,
|
||||
`texture-workflow`, `lookdev`, `scene-assembly`, `qa-review`.*
|
||||
|
||||
### H. Local map data, licensing and scope
|
||||
|
||||
- [ ] Define the first target block and whether the result replaces, supplements or only informs
|
||||
the current stylized venue specs (`docs/hollywood-boulevard-map.md`,
|
||||
`docs/joke-shop-map.md`).
|
||||
- [ ] Audit OpenStreetMap's ODbL attribution/share-alike obligations and decide whether derived
|
||||
geometry ships, stays development-only, or needs a separate data layer.
|
||||
- [ ] Choose an offline OSM extract workflow (Overpass/Geofabrik) and pin the extract date and
|
||||
query so the map build is reproducible.
|
||||
- [ ] Evaluate licence-compatible 3D building datasets (OSM Buildings, Overture, CityGML/LOD1–2
|
||||
or local authority data); record coverage, accuracy, format and redistribution terms.
|
||||
- [ ] Add a provenance sidecar for every map source and derived asset, including source URL,
|
||||
licence, capture/extract date and attribution text.
|
||||
|
||||
### I. Local map reference imagery
|
||||
|
||||
**Recent-photo research (2026-11-03):** Commons geosearch around 34.10118/-118.34009 (500 m) plus
|
||||
category/date sorting shows usable imagery from the last 12 months: Dolby Theatre billboards
|
||||
(2026-09-30, CC0, 6 frames), Dolby street level and a fresh Walk of Fame star (2026-07-17, CC0),
|
||||
a Michael Jackson impersonator at the El Capitan frontage (2026-02-25, CC BY-SA 4.0), the Celia
|
||||
Cruz Square marker and a 2025-09-28 star series (CC0), and a Thunderbolts premiere (2025-04-28,
|
||||
CC BY-SA 2.0). No recent frame shoots the El Capitan facade straight-on in daylight; the best
|
||||
facade evidence is still the 2009 CC BY frame. The 8 downloaded candidates are in
|
||||
`tmp/research/elcapitan-2026/` (gitignored) with `meta.json`; nothing was committed.
|
||||
|
||||
- [x] Wire `tools/refboard.py` (standalone, stdlib-only): `search --source search|geo|category`
|
||||
lists candidates with ISO date, age-in-months and a commit/review/skip licence gate
|
||||
(`--allow-ccbysa` after a recorded review); `fetch` downloads usable rows into `tmp/` with
|
||||
spaced requests and writes `meta.json`; `rows` emits SIDECAR + README table rows from the
|
||||
manifest. Six recent CC0 photos of the block were re-fetched into
|
||||
`tmp/research/elcapitan-2026-tool/`. Tests in `tools/test_refboard.py` (licence gate, recent
|
||||
filter, review-row exclusion, row emission).
|
||||
- [ ] Add a `--max-age-months` filter (default 12) and a `--must-reuse` mode that matches the
|
||||
folder's existing sidecar entries so a refresh only reports what changed.
|
||||
- [ ] Research-diff step: keep the last-12-months board as the "current reality" evidence and the
|
||||
older photos as the geometry evidence, labelled per photo; no sidecar date field needs to
|
||||
change, only the purpose column.
|
||||
- [ ] Write a reference shot list per block: facade materials, windows, signage, rooflines,
|
||||
street furniture, curb cuts and lighting.
|
||||
- [ ] Download and catalogue **committed** reference images from Wikimedia Commons, local/own
|
||||
photography or other clearly licensed sources; record author, licence and attribution with
|
||||
the §F sidecar template. Local-only research that ignores licence limits (DuckDuckGo,
|
||||
street-view frames, neighbours, across-street buildings) is collected under §A into
|
||||
`tmp/research/` and is never committed.
|
||||
- [ ] Separate development-only references from shipped textures; commit only images with clear
|
||||
redistribution rights and keep the rest under `tmp/` or the ignored reference folders.
|
||||
- [ ] Build the per-block real-photo board under `docs/screens/refs/<block>/` using the sidecar
|
||||
template from the 3D review §E, and link it from the venue map documents.
|
||||
- [ ] Define the photoreal target and a material-derivation workflow (albedo/normal/roughness,
|
||||
AO, weathering) that matches the existing Compatibility renderer (`texture-workflow`,
|
||||
`materials`, `lookdev`), with the recent 2026 street frames as the current-reality reference
|
||||
and the 2009 facade frame as the geometry reference.
|
||||
|
||||
- [ ] Remaining Hollywood gap: a licensed **night photograph of the hero facade and blade sign**
|
||||
(the night frame on the board is a different block, near Vine), plus a sidewalk-level shot of
|
||||
the steps/door recess and the east retail neighbour. For the committed board the licence gate
|
||||
stays (no unlicensed Street View or scraped social media); local-only copies of the same
|
||||
viewpoints go through section A instead.
|
||||
|
||||
### J. Local map geometry and AI-assisted composing
|
||||
|
||||
- [ ] Prototype OSM footprint import into Blender at game scale and orientation, then compare it
|
||||
against the current venue footprint/collider layout.
|
||||
- [ ] Import 3D building massing for the target block, clean the topology and assign LOD bands;
|
||||
do not import unbounded city-scale meshes into the runtime (`scene-assembly`,
|
||||
`asset-optimization`, `lod-pipeline`).
|
||||
- [ ] Build a reusable photoreal facade kit (window bays, cornices, storefronts, awnings, signage)
|
||||
with `environment-artist`/`hard-surface`/`geometry-nodes` so buildings share materials and
|
||||
stay inside the venue triangle/material budgets.
|
||||
- [ ] Run the assisted Blender pipeline end to end on the first block (OSM import → `inspect` →
|
||||
retopo/UV assist → atlas → `audit`), and document the exact commands in
|
||||
`docs/asset-tooling.md`.
|
||||
- [x] Joke Shop building-appearance pass: `dark_stucco` tile (1024 px) promoted via the picks
|
||||
pipeline and wired into `_build_comedy_store_building`, replacing the grey paver tile so the
|
||||
hall reads as flat matte charcoal instead of masonry; photo-anchored day concept generated
|
||||
from the hillside PD frame (the branded frontage photo trips the model's image-recitation
|
||||
filter — recorded in the concept README); day capture promoted and the three-up board rebuilt.
|
||||
Test asserts the hall wall carries `dark_stucco`.
|
||||
- [x] Building-appearance realism pass, measured against the reference set: bring the masonic
|
||||
facade's material response (limestone value/roughness, joint lines, weathering streaks),
|
||||
the banner/canopy and marquee materials, and the night emissive balance to the level of the
|
||||
2009 facade photo and the 2026 street frames; capture before/after and record each delta.
|
||||
(Ashlar field: `limestone_ashlar` tile, reference-anchored on the facade photo, 768 px over
|
||||
~4.6 m of wall = ~167 px/m, promoted via the picks pipeline, warm-shifted tint behind
|
||||
`VENUE_SPECS`. Banner cloth: warm self-light registered with `_marquee_emissive` (0.14 base;
|
||||
0.28 night / 0.028 day). Marquee sign face + bulbs: warm-incandescent already in the prop
|
||||
PALETTE, now test-verified to brighten at night via `_marquee_emissive`. Day and night
|
||||
captures promoted, both three-up boards rebuilt.)
|
||||
- [ ] Upgrade the facade from flat material bands to photoreal detail: either texture-projected
|
||||
detail (Path B below) or AI-generated material tiles derived from the facade photo (with
|
||||
provenance), then verify texel density, tiling and the night look.
|
||||
- [ ] Integrate the result behind `WorldBuilder.VENUE_SPECS` with colliders, navigation obstacles,
|
||||
occlusion and the existing day/night materials.
|
||||
|
||||
### K. Comedy Store map recreation
|
||||
|
||||
*Plan (2026-11-03): rebuild the Joke Shop venue geometry from the new local-only reference set
|
||||
(`tmp/research/comedy-store/`, gitignored) and the four photo-anchored scene pairs now in
|
||||
`docs/screens/concepts/joke_shop/`. Evidence wins for shape; the concepts win for material/mood.
|
||||
Nothing is committed until the licence gate on any promoted reference and the map-budget tests
|
||||
pass. The current `_build_comedy_store_building()` stays as the fallback.*
|
||||
|
||||
- [ ] Extract the real proportions from the local frames (facade width/height, canopy depth and
|
||||
slope, blade-sign diameter and pole height, red curtain bay count, entrance recess, kerb
|
||||
setback, hillside rise) and reconcile them against the current 27 m / 8.4 m / 12.2 m spec
|
||||
in `WorldBuilder.VENUE_SPECS["joke_shop"]` and `docs/joke-shop-map.md`.
|
||||
- [ ] Rank the shape-language gaps between the current procedural building and the four scene
|
||||
pairs: canopy fascia depth, blade-sign shape/position, curtain-bay rhythm, entrance recess,
|
||||
hillside silhouette and the neighbouring hotel/parking mass. Write the top-five fix list
|
||||
with measurements.
|
||||
- [ ] Rebuild the canopy + blade sign as library props or procedural geometry through the assisted
|
||||
pipeline (`blender_assets.py inspect` → scripted edits → `audit`/`fit`), keeping the 4,000
|
||||
prop-triangle budget; verify against the street/strip concept pairs before committing.
|
||||
- [ ] Add the neighbouring hotel/parking ramp as a low-detail blocker mass (no interior) so the
|
||||
block silhouette matches the hotel reference frame, inside the venue mesh budget.
|
||||
- [ ] Re-work the facade field from flat boxes to the reference's actual banding: black stucco
|
||||
field (`dark_stucco`), deep canopy shadow, fascia band, red curtain bays and the recessed
|
||||
entrance, using the four concept pairs for value/mood targets.
|
||||
- [ ] Re-run the map-budget, navigation, collider and day/night capture gates after the rebuild
|
||||
(`godot --headless --path . --script res://src/test/test_runner.gd`,
|
||||
`tools/check_screenshots.sh`), and refresh the Joke Shop three-up board and
|
||||
`docs/joke-shop-map.md`.
|
||||
- [ ] Update `docs/development-status.md`, `docs/asset-tooling.md` and `CHANGELOG.md` when the
|
||||
rebuild lands; record any accepted deviations from the reference.
|
||||
|
||||
### L. Generated location imagery
|
||||
|
||||
*Skill route: `lookdev`, `lighting`, `environment-artist`, `texture-workflow`; tooling:
|
||||
`tools/scene_concepts.py`, `tools/asset_pipeline.py`, `tools/screen_designs.py`.*
|
||||
|
||||
**Tool plan for reference-anchored generation (plan first, implement after this section's review):**
|
||||
|
||||
- [x] Add `scene_concepts.py generate --reference <photo.png>`: attach a licence-cleared real photo
|
||||
as a source image to the OpenRouter image request (multimodal chat endpoint with a base64
|
||||
data URL), with a prompt suffix that preserves the photographed facade geometry. Record the
|
||||
reference file, its licence and page in the `.refgen.json` provenance sidecar next to the
|
||||
generated frame.
|
||||
- [x] Extend `generate_textures.generate_image()` with an optional `reference_path` argument
|
||||
(base64 data URL of the photo); existing call signatures unchanged, and the path is gated by
|
||||
`scene_concepts._reference_source` requiring a refs-board `SIDECAR.md` row (or an explicit
|
||||
`--reference-unchecked`). Verified live on the El Capitan day concept anchored on the CC BY
|
||||
2.0 2009 facade photo; tests in `ReferenceGateTests`.
|
||||
- [x] Add a sidecar-driven variant pass: `scene_concepts.py anchor --reference <photo>
|
||||
--treatments day,night,weathered` generates same-framing variants with treatment clauses,
|
||||
one `.refgen.json` provenance sidecar per frame. Verified live on the facade photo (night +
|
||||
overcast frames committed; the weathered treatment reads as mild overcast — noted on the
|
||||
board). Tests in `AnchorTests`.
|
||||
- [-] Generate facade, street and signage concept frames for the target block
|
||||
(`scene_concepts.py generate --reference ...`), commit only the selected frames, and record
|
||||
model, prompt, spend **and source photo** in the block sidecar. (First frame done:
|
||||
`hollywood_boulevard_entrance_day-v2`, anchored on the facade photo; remaining framings
|
||||
pending.)
|
||||
- [ ] Derive palette, lighting and material targets from the real-photo board and the generated
|
||||
concepts, and record the deltas the facade kit has to close.
|
||||
- [ ] Generate signage, awning and poster texture candidates with `asset_pipeline.py`; run the
|
||||
role audit and the `CREDITS.md` provenance check before anything is used in the kit.
|
||||
- [ ] Compare generated concepts against the licensed photos: where they disagree, the photos win
|
||||
for shape and the generated board only informs colour, mood and detail density. Human review
|
||||
stays the acceptance gate, and AI output is never treated as licensed map data.
|
||||
|
||||
### M. Local map QA and exit
|
||||
|
||||
- [ ] Compare the data-backed block against the existing screenshots and map documentation; keep
|
||||
the stylized fallback available.
|
||||
- [ ] Run the venue triangle/mesh budget, navigation and collider checks, plus day/night capture
|
||||
comparisons.
|
||||
- [ ] Capture day/night gallery frames of the new block and add before/after rows to `README.md`
|
||||
and the venue map documents.
|
||||
- [ ] Re-run `tools/check_screenshots.sh` after the map swap so the 21-shot gallery reflects the
|
||||
new geometry, and refresh the `docs/screens/refs/` three-up sheets.
|
||||
- [ ] Update `docs/architecture.md`, the venue map documents, `docs/asset-tooling.md`,
|
||||
`docs/development-status.md` and `CHANGELOG.md` when the pipeline ships or a source is
|
||||
rejected.
|
||||
- [ ] Exit: one local block is reconstructed from licensed data with reference-derived photoreal
|
||||
facades, passes performance/navigation/visual QA and has complete provenance; or the
|
||||
pipeline is rejected with the findings recorded.
|
||||
|
||||
## Character development
|
||||
|
||||
Goal: break the eight-character clone effect with four licence-cleared crowd-variety looks while
|
||||
@@ -374,187 +553,6 @@ must inherit the reviewed face/hand/gear baseline instead of multiplying whateve
|
||||
yes, prototype the local MPFB/MakeHuman pipeline outside the repo and commit only the final
|
||||
CC0-derived assets with provenance.
|
||||
|
||||
## Local map development
|
||||
|
||||
Goal: build a local, data-backed map pipeline that can replace or supplement the stylized venue
|
||||
geometry with licensed OpenStreetMap footprints, 3D building massing, reference-derived photoreal
|
||||
facades and AI-assisted composition. This is an unversioned development track, not a release gate.
|
||||
|
||||
*Skill route: `environment-artist`, `archviz`, `hard-surface`, `geometry-nodes`,
|
||||
`procedural-modeling`, `vegetation-artist`, `set-dressing`, `lighting`, `materials`,
|
||||
`texture-workflow`, `lookdev`, `scene-assembly`, `qa-review`.*
|
||||
|
||||
### Data, licensing and scope
|
||||
|
||||
- [ ] Define the first target block and whether the result replaces, supplements or only informs
|
||||
the current stylized venue specs (`docs/hollywood-boulevard-map.md`,
|
||||
`docs/joke-shop-map.md`).
|
||||
- [ ] Audit OpenStreetMap's ODbL attribution/share-alike obligations and decide whether derived
|
||||
geometry ships, stays development-only, or needs a separate data layer.
|
||||
- [ ] Choose an offline OSM extract workflow (Overpass/Geofabrik) and pin the extract date and
|
||||
query so the map build is reproducible.
|
||||
- [ ] Evaluate licence-compatible 3D building datasets (OSM Buildings, Overture, CityGML/LOD1–2
|
||||
or local authority data); record coverage, accuracy, format and redistribution terms.
|
||||
- [ ] Add a provenance sidecar for every map source and derived asset, including source URL,
|
||||
licence, capture/extract date and attribution text.
|
||||
|
||||
### Reference imagery
|
||||
|
||||
**Recent-photo research (2026-11-03):** Commons geosearch around 34.10118/-118.34009 (500 m) plus
|
||||
category/date sorting shows usable imagery from the last 12 months: Dolby Theatre billboards
|
||||
(2026-09-30, CC0, 6 frames), Dolby street level and a fresh Walk of Fame star (2026-07-17, CC0),
|
||||
a Michael Jackson impersonator at the El Capitan frontage (2026-02-25, CC BY-SA 4.0), the Celia
|
||||
Cruz Square marker and a 2025-09-28 star series (CC0), and a Thunderbolts premiere (2025-04-28,
|
||||
CC BY-SA 2.0). No recent frame shoots the El Capitan facade straight-on in daylight; the best
|
||||
facade evidence is still the 2009 CC BY frame. The 8 downloaded candidates are in
|
||||
`tmp/research/elcapitan-2026/` (gitignored) with `meta.json`; nothing was committed.
|
||||
|
||||
- [x] Wire `tools/refboard.py` (standalone, stdlib-only): `search --source search|geo|category`
|
||||
lists candidates with ISO date, age-in-months and a commit/review/skip licence gate
|
||||
(`--allow-ccbysa` after a recorded review); `fetch` downloads usable rows into `tmp/` with
|
||||
spaced requests and writes `meta.json`; `rows` emits SIDECAR + README table rows from the
|
||||
manifest. Six recent CC0 photos of the block were re-fetched into
|
||||
`tmp/research/elcapitan-2026-tool/`. Tests in `tools/test_refboard.py` (licence gate, recent
|
||||
filter, review-row exclusion, row emission).
|
||||
- [ ] Add a `--max-age-months` filter (default 12) and a `--must-reuse` mode that matches the
|
||||
folder's existing sidecar entries so a refresh only reports what changed.
|
||||
- [ ] Research-diff step: keep the last-12-months board as the "current reality" evidence and the
|
||||
older photos as the geometry evidence, labelled per photo; no sidecar date field needs to
|
||||
change, only the purpose column.
|
||||
- [ ] Write a reference shot list per block: facade materials, windows, signage, rooflines,
|
||||
street furniture, curb cuts and lighting.
|
||||
- [ ] Download and catalogue **committed** reference images from Wikimedia Commons, local/own
|
||||
photography or other clearly licensed sources; record author, licence and attribution with
|
||||
the §F sidecar template. Local-only research that ignores licence limits (DuckDuckGo,
|
||||
street-view frames, neighbours, across-street buildings) is collected under §A into
|
||||
`tmp/research/` and is never committed.
|
||||
- [ ] Separate development-only references from shipped textures; commit only images with clear
|
||||
redistribution rights and keep the rest under `tmp/` or the ignored reference folders.
|
||||
- [ ] Build the per-block real-photo board under `docs/screens/refs/<block>/` using the sidecar
|
||||
template from the 3D review §E, and link it from the venue map documents.
|
||||
- [ ] Define the photoreal target and a material-derivation workflow (albedo/normal/roughness,
|
||||
AO, weathering) that matches the existing Compatibility renderer (`texture-workflow`,
|
||||
`materials`, `lookdev`), with the recent 2026 street frames as the current-reality reference
|
||||
and the 2009 facade frame as the geometry reference.
|
||||
|
||||
### Geometry and AI-assisted composing
|
||||
|
||||
- [ ] Prototype OSM footprint import into Blender at game scale and orientation, then compare it
|
||||
against the current venue footprint/collider layout.
|
||||
- [ ] Import 3D building massing for the target block, clean the topology and assign LOD bands;
|
||||
do not import unbounded city-scale meshes into the runtime (`scene-assembly`,
|
||||
`asset-optimization`, `lod-pipeline`).
|
||||
- [ ] Build a reusable photoreal facade kit (window bays, cornices, storefronts, awnings, signage)
|
||||
with `environment-artist`/`hard-surface`/`geometry-nodes` so buildings share materials and
|
||||
stay inside the venue triangle/material budgets.
|
||||
- [ ] Run the assisted Blender pipeline end to end on the first block (OSM import → `inspect` →
|
||||
retopo/UV assist → atlas → `audit`), and document the exact commands in
|
||||
`docs/asset-tooling.md`.
|
||||
- [x] Joke Shop building-appearance pass: `dark_stucco` tile (1024 px) promoted via the picks
|
||||
pipeline and wired into `_build_comedy_store_building`, replacing the grey paver tile so the
|
||||
hall reads as flat matte charcoal instead of masonry; photo-anchored day concept generated
|
||||
from the hillside PD frame (the branded frontage photo trips the model's image-recitation
|
||||
filter — recorded in the concept README); day capture promoted and the three-up board rebuilt.
|
||||
Test asserts the hall wall carries `dark_stucco`.
|
||||
- [x] Building-appearance realism pass, measured against the reference set: bring the masonic
|
||||
facade's material response (limestone value/roughness, joint lines, weathering streaks),
|
||||
the banner/canopy and marquee materials, and the night emissive balance to the level of the
|
||||
2009 facade photo and the 2026 street frames; capture before/after and record each delta.
|
||||
(Ashlar field: `limestone_ashlar` tile, reference-anchored on the facade photo, 768 px over
|
||||
~4.6 m of wall = ~167 px/m, promoted via the picks pipeline, warm-shifted tint behind
|
||||
`VENUE_SPECS`. Banner cloth: warm self-light registered with `_marquee_emissive` (0.14 base;
|
||||
0.28 night / 0.028 day). Marquee sign face + bulbs: warm-incandescent already in the prop
|
||||
PALETTE, now test-verified to brighten at night via `_marquee_emissive`. Day and night
|
||||
captures promoted, both three-up boards rebuilt.)
|
||||
- [ ] Upgrade the facade from flat material bands to photoreal detail: either texture-projected
|
||||
detail (Path B below) or AI-generated material tiles derived from the facade photo (with
|
||||
provenance), then verify texel density, tiling and the night look.
|
||||
- [ ] Integrate the result behind `WorldBuilder.VENUE_SPECS` with colliders, navigation obstacles,
|
||||
occlusion and the existing day/night materials.
|
||||
|
||||
### Comedy Store map recreation
|
||||
|
||||
*Plan (2026-11-03): rebuild the Joke Shop venue geometry from the new local-only reference set
|
||||
(`tmp/research/comedy-store/`, gitignored) and the four photo-anchored scene pairs now in
|
||||
`docs/screens/concepts/joke_shop/`. Evidence wins for shape; the concepts win for material/mood.
|
||||
Nothing is committed until the licence gate on any promoted reference and the map-budget tests
|
||||
pass. The current `_build_comedy_store_building()` stays as the fallback.*
|
||||
|
||||
- [ ] Extract the real proportions from the local frames (facade width/height, canopy depth and
|
||||
slope, blade-sign diameter and pole height, red curtain bay count, entrance recess, kerb
|
||||
setback, hillside rise) and reconcile them against the current 27 m / 8.4 m / 12.2 m spec
|
||||
in `WorldBuilder.VENUE_SPECS["joke_shop"]` and `docs/joke-shop-map.md`.
|
||||
- [ ] Rank the shape-language gaps between the current procedural building and the four scene
|
||||
pairs: canopy fascia depth, blade-sign shape/position, curtain-bay rhythm, entrance recess,
|
||||
hillside silhouette and the neighbouring hotel/parking mass. Write the top-five fix list
|
||||
with measurements.
|
||||
- [ ] Rebuild the canopy + blade sign as library props or procedural geometry through the assisted
|
||||
pipeline (`blender_assets.py inspect` → scripted edits → `audit`/`fit`), keeping the 4,000
|
||||
prop-triangle budget; verify against the street/strip concept pairs before committing.
|
||||
- [ ] Add the neighbouring hotel/parking ramp as a low-detail blocker mass (no interior) so the
|
||||
block silhouette matches the hotel reference frame, inside the venue mesh budget.
|
||||
- [ ] Re-work the facade field from flat boxes to the reference's actual banding: black stucco
|
||||
field (`dark_stucco`), deep canopy shadow, fascia band, red curtain bays and the recessed
|
||||
entrance, using the four concept pairs for value/mood targets.
|
||||
- [ ] Re-run the map-budget, navigation, collider and day/night capture gates after the rebuild
|
||||
(`godot --headless --path . --script res://src/test/test_runner.gd`,
|
||||
`tools/check_screenshots.sh`), and refresh the Joke Shop three-up board and
|
||||
`docs/joke-shop-map.md`.
|
||||
- [ ] Update `docs/development-status.md`, `docs/asset-tooling.md` and `CHANGELOG.md` when the
|
||||
rebuild lands; record any accepted deviations from the reference.
|
||||
|
||||
### Generated location imagery
|
||||
|
||||
*Skill route: `lookdev`, `lighting`, `environment-artist`, `texture-workflow`; tooling:
|
||||
`tools/scene_concepts.py`, `tools/asset_pipeline.py`, `tools/screen_designs.py`.*
|
||||
|
||||
**Tool plan for reference-anchored generation (plan first, implement after this section's review):**
|
||||
|
||||
- [x] Add `scene_concepts.py generate --reference <photo.png>`: attach a licence-cleared real photo
|
||||
as a source image to the OpenRouter image request (multimodal chat endpoint with a base64
|
||||
data URL), with a prompt suffix that preserves the photographed facade geometry. Record the
|
||||
reference file, its licence and page in the `.refgen.json` provenance sidecar next to the
|
||||
generated frame.
|
||||
- [x] Extend `generate_textures.generate_image()` with an optional `reference_path` argument
|
||||
(base64 data URL of the photo); existing call signatures unchanged, and the path is gated by
|
||||
`scene_concepts._reference_source` requiring a refs-board `SIDECAR.md` row (or an explicit
|
||||
`--reference-unchecked`). Verified live on the El Capitan day concept anchored on the CC BY
|
||||
2.0 2009 facade photo; tests in `ReferenceGateTests`.
|
||||
- [x] Add a sidecar-driven variant pass: `scene_concepts.py anchor --reference <photo>
|
||||
--treatments day,night,weathered` generates same-framing variants with treatment clauses,
|
||||
one `.refgen.json` provenance sidecar per frame. Verified live on the facade photo (night +
|
||||
overcast frames committed; the weathered treatment reads as mild overcast — noted on the
|
||||
board). Tests in `AnchorTests`.
|
||||
- [-] Generate facade, street and signage concept frames for the target block
|
||||
(`scene_concepts.py generate --reference ...`), commit only the selected frames, and record
|
||||
model, prompt, spend **and source photo** in the block sidecar. (First frame done:
|
||||
`hollywood_boulevard_entrance_day-v2`, anchored on the facade photo; remaining framings
|
||||
pending.)
|
||||
- [ ] Derive palette, lighting and material targets from the real-photo board and the generated
|
||||
concepts, and record the deltas the facade kit has to close.
|
||||
- [ ] Generate signage, awning and poster texture candidates with `asset_pipeline.py`; run the
|
||||
role audit and the `CREDITS.md` provenance check before anything is used in the kit.
|
||||
- [ ] Compare generated concepts against the licensed photos: where they disagree, the photos win
|
||||
for shape and the generated board only informs colour, mood and detail density. Human review
|
||||
stays the acceptance gate, and AI output is never treated as licensed map data.
|
||||
|
||||
### QA and exit
|
||||
|
||||
- [ ] Compare the data-backed block against the existing screenshots and map documentation; keep
|
||||
the stylized fallback available.
|
||||
- [ ] Run the venue triangle/mesh budget, navigation and collider checks, plus day/night capture
|
||||
comparisons.
|
||||
- [ ] Capture day/night gallery frames of the new block and add before/after rows to `README.md`
|
||||
and the venue map documents.
|
||||
- [ ] Re-run `tools/check_screenshots.sh` after the map swap so the 21-shot gallery reflects the
|
||||
new geometry, and refresh the `docs/screens/refs/` three-up sheets.
|
||||
- [ ] Update `docs/architecture.md`, the venue map documents, `docs/asset-tooling.md`,
|
||||
`docs/development-status.md` and `CHANGELOG.md` when the pipeline ships or a source is
|
||||
rejected.
|
||||
- [ ] Exit: one local block is reconstructed from licensed data with reference-derived photoreal
|
||||
facades, passes performance/navigation/visual QA and has complete provenance; or the
|
||||
pipeline is rejected with the findings recorded.
|
||||
|
||||
## Maintenance and documentation hygiene
|
||||
|
||||
Unversioned housekeeping that keeps the planning sources trustworthy. Do these when they block a
|
||||
@@ -640,9 +638,8 @@ baseline; 0.10.0-rc.1 is the current candidate source, with release approvals st
|
||||
|
||||
| Area | Current baseline | Remaining gap | Risk | Milestone |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 3D model re-evaluation | 8 characters, 18 gear, 20+6 props audited against budgets/proportions; no skill-guided scorecard yet | Scorecard, ranked P0/P1 fixes, texel/weight/collider measurements and accept decisions | Unmeasured drift stays in the shipped library | Unversioned |
|
||||
| 3D model and local map re-evaluation | 8 characters, 18 gear, 20+6 props and stylized venues audited against budgets/proportions; no skill-guided scorecard yet | Asset scorecard/repairs plus OSM/3D data, photoreal references, AI-assisted composition and map QA | Unmeasured drift, licensing/provenance or performance failure | Unversioned |
|
||||
| Character development | 8-variant library; source/licence review and Quaternius/MakeHuman evaluation complete | Four crowd variants, role pools, gear fit and runtime integration | Repetition remains or external assets break the contract | Unversioned |
|
||||
| Local map development | Stylized venue geometry and reference maps | OSM/3D data, photoreal references, AI-assisted composition and splat evaluation | Licensing/provenance or performance failure | Unversioned |
|
||||
| Content and balance | 3 venues with validated 12+ event matrices, recovery events and contextual dialogue | External playtest evidence, balance/fairness pass, event-weight tuning and final content lock | Repetition or unfair outcomes survive into the release candidate | 0.10.0 |
|
||||
| Dialog/UI | Audited terminology, copy, button states, focus/navigation, modal close, long strings and all 21 screen captures | Keep the capture/compare/judge gate current as content changes | Low; the remaining risk is drift after new UI is added | Complete (0.9.3) |
|
||||
| Animation/presentation | Procedural pose layers, portrait captures, reduced hem clipping, 8,000/8,000 NPC cap | Thorough NPC silhouette/face/gear/pose/LOD optimization before visual QA | Close-up jank reduces perceived quality | Complete (0.9.4) |
|
||||
@@ -655,8 +652,8 @@ baseline; 0.10.0-rc.1 is the current candidate source, with release approvals st
|
||||
| Documentation | Architecture/ADR/status/roadmap ownership established | Final README/changelog/status/TODO/smoke-checklist sign-off and known-limitations page | Docs drift at launch | 0.9.6 / 0.10.0 |
|
||||
| Future 0.x | Stable 0.x feature set | Live replay, more venues, VO/music, image-to-mesh props and seasonal content | Scope creep before release | Unscheduled |
|
||||
|
||||
**Current priority:** the unversioned **3D model re-evaluation** runs first because its findings
|
||||
gate the crowd-variant roster; **Character development** and **Local map development** follow.
|
||||
**Current priority:** the unversioned **3D model and local map re-evaluation** runs first because its findings
|
||||
gate the crowd-variant roster; **Character development** follows.
|
||||
The **0.10.0 release candidate** is the next versioned release; content lock, external playtest,
|
||||
balance, save migration and release/legal sign-off remain tracked there. The source version is
|
||||
0.10.0-rc.1; the v0.9.6 release is published. Earlier map/NPC/UI/texture/integration passes are
|
||||
|
||||
Reference in new issue
Block a user