Files
gig-line/TODO.md
T
zwitschi ec5545b265 feat(theatre): marquee canopy and blade sign; fix two placement bugs
Tools/theatre_trim_build.py builds the El Capitan Theatre's signature features in
world coordinates - projecting marquee (12.0 x 2.60 m canopy, 4.60 m soffit),
illuminated fascia, recessed soffit, vertical blade sign (1.30 x 5.20 m) with frame
and bracket - with a JSON part report. Tools/ue_stage_theatre_trim.py imports and
stages one actor per piece with site materials, clearing a previous run first.

Two bugs, neither visible in a render:
- Axis sign: Blender +Y is Unreal -Y, so the theatre face at Unreal Y +1001 is
  Blender Y -10.01; using +10.01 mirrored the marquee across the boulevard.
- Absolute Z: trim heights ignored the 4.56 m pavement, leaving the canopy 5 cm above
  the ground. GROUND_Z now offsets every height.

QA wall probe: the Y 1000 scan row sat ~1 cm from the building line and grazed the
theatre wall after the kit's proud shopfronts; rows now sample the street envelope
only. Packaged QA back to PASS (transect 0 holes, wall probe 0/35, facade probe 0/9).
Screenshots re-rendered and verified 4/4.
2026-11-08 20:03:34 +01:00

337 lines
16 KiB
Markdown
Raw 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.
# TODO.md
Actionable task list for this project. This file is the single, central place for planned work, claims, and progress marks. Milestone goals, scope, and release gates are in [ROADMAP.md](ROADMAP.md).
## Conventions
- Mark items **open** (`- [ ]`), **active/in progress** (`- [A]`, **deferred** `- [D]`), or **done** (`- [x]`). Keep the marks accurate.
- A level-three (`###`) section being worked on carries `- active - <sessionId>` (and optionally the branch name) in its heading. Remove the suffix when you stop.
- When all steps in a version section are done: write a `CHANGELOG.md` entry, then remove the version section from this file.
- Release gate: a version is tagged only on the owner's explicit go-ahead once its release checks pass, not automatically when the checkboxes close.
## 0.1.4 — Proper building façades (patch)
Suggested blender skills: **procedural-modeling** + **geometry-nodes** (the façade module kit — bay, pilaster, cornice, parapet, window, shopfront, door — as reusable node groups), **archviz** (real-world scale and façade composition), **materials** (procedural brick, concrete, stone, render, glass — the ported generators), **texture-workflow** (AO/curvature/normal bakes and decals for the motto band and medallions), **uv-workflow** (texel density and modular UV layouts for the kit), **scene-assembly** (assembling kit pieces onto the fifteen block buildings), **lookdev** (screenshot-comparison loop until shading reads correctly), **historical-worlds** or **realistic-style** (1920s Hollywood Blvd neoclassical direction), **asset-optimization** + **unreal-export** (pre-export validation, `ue_metric_v1` preset), **qa-review** (final gate before the `Tools/render_screenshots.sh` review).
### Patch tasks - active - 01a1b26b-3c94-707f-9665-2f6b4a79b564 (branch `facades-0.1.4`)
- [ ] **Finish the Blosm blockout cleaning/detailing (moved from the deferred `0.1.0` item).** Import state: `Art/blender/blockout/blockout-2026-11-06.blend` (86 meshes, EPSG:26911, 0.0 cm affine residual) with cleaning tooling in `Geo/tools/` and `Art/blender/blockout/blosm_blockout.py`. To do here: (a) untextured roofs/facades → **Replace placeholder materials** below; (b) Blosm `setupScript` façade styles → **Give OSM buildings a façade style** below; (c) the 3 of 15 buildings lacking height data are the `0.1.2` placeholder-heights item.
- [x] **Define the façade module.** **Done 2026-11-09.** `Tools/facade_kit_build.py` builds the kit at the measured **4.96 m bay**: pilaster, sill, lintel, window bay (surround + inset glazing), shopfront bay (piers, glass, fascia), door bay (jambs, door, threshold), cornice and parapet + coping — 16 meshes, each exported through the shared `ue_metric_v1` preset with a JSON part report recording dims and evidence. `Tools/ue_import_facade_kit.py` imports to `/Game/Hollywood/Kit`. `Tools/ue_apply_facade_kit.py` assembles it from each building's own bounding box: **638 pieces placed across the six frontage buildings and both north buildings** (6922 = 13 bays × 11 storeys, theatre 8 × 5, TCL and Tussaud's 9 × 4, etc.). First pass put the window bays inside the solid wall (invisible) — the kit now projects the surround 3 cm proud with glazing 6 cm behind it.
- [A] **Replace placeholder materials.** **In progress 2026-11-09.** `ensure_material()` now builds masonry coursing (world-space course height + joint band + tint, corrected for UE's centimetre WorldPosition) and roughness variation; new `M_FacadeStoneShadow`, `M_FacadeGlass` (specular 0.62 ≈ IOR 1.5 without a refraction pass) and `M_FacadeBanner`; assignment is per **slot** keyed on the imported slot name (it was slot-0 only, which on the hero is the banner, so stone/glass/shadow were still flat). Hero: 4/4 slots, frontage and north buildings 2/2. Remaining: bake real texture maps (brick/stone/asphalt generators) rather than graph-only detail, and give the frontage shopfront line its own material.
- [x] **Give OSM buildings a façade style.** **Closed as superseded 2026-11-09.** The Blosm `setupScript` route would build a second, competing façade system next to the module kit defined in the previous task. The kit already gives every staged building a real elevation (shopfront line, window rhythm, pilasters, cornice, parapet) from a single module, so a Blosm style script would duplicate it with a different vocabulary and a different set of assumptions. Revisit only if the kit cannot express a building the photographs demand.
- [ ] **Hero façade detail pass.** Ionic capitals and fluting, the parapet motto band and medallions as geometry or decal, window rhythm behind the colonnade, and the three portal flights at their photographed proportions.
- [A] **El Capitan Theatre (6838) and the retail neighbours.** **Theatre trim done 2026-11-09:** `Tools/theatre_trim_build.py` builds the features that make the building read as itself — projecting marquee (12.0 × 2.60 m canopy at a 4.60 m soffit), illuminated fascia, recessed soffit, and a vertical blade sign (1.30 × 5.20 m) with frame and bracket; `Tools/ue_stage_theatre_trim.py` imports and stages it with site materials. Two bugs fixed en route: the trim was mirrored to the far side of the boulevard (Blender +Y is Unreal −Y) and the marquee sat 5 cm above the pavement (absolute Z where the pavement is 4.56 m above the datum). **Still open:** the retail neighbours modelled from the 18-frame reference set.
- [ ] Review every façade change with `Tools/render_screenshots.sh` before tagging.
- [ ] Tag `v0.1.4` and write `CHANGELOG.md` entry; then remove this section.
## 0.2.0 — MPFB player body, third-person camera, basic animation (weeks 7–9)
### Character setup
- [x] Generate MPFB human base mesh; export baked materials and deform skeleton. Done in bootstrap: idle-pose 19 158-vert human with a 137-bone standard rig, `Tools/mpfb_character_export.py` (now `--pose idle` + warm `make_diffuse`).
- [x] Import character into Unreal; validate skeleton, scale, and materials. Done: `/Game/Test/Character` — `SkeletalMesh` (138 bones), `Skeleton`, warm `M_Character_Export` material with baked `T_Character_Diffuse`.
- [x] Promote the character asset into a reusable NPC prefab (visible body, collision capsule, idle pose) ready for pedestrians (`0.5.0`) once the third-person body lands. Done 2026-11-07: `AGigLineNPCPerson` (see the 0.1.0 Character-development item); `0.5.0` reuses it as the pedestrian base.
- [ ] Create basic idle/walk animation set.
- [ ] Verify animation plays correctly on the imported rig.
### Camera and controls
- [ ] Add third-person camera following the player body.
- [ ] Add first/third-person toggle.
- [ ] Add camera collision to prevent clipping through geometry.
- [ ] Document any input changes.
### Release checks
- [ ] Third-person traversal works end-to-end in the demo area.
- [ ] No blocking animation or rig defects.
- [ ] Performance target still met at 1440p.
- [ ] Tag `v0.2.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.2.1 — Rig fixes (patch)
### Patch tasks
- [ ] Fix skeletal/rigging defects reported after `0.2.0`.
- [ ] Tag `v0.2.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.2.2 — Skin and hair tuning (patch)
### Patch tasks
- [ ] Tune skin shading and hair materials on the player character.
- [ ] Tag `v0.2.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.2.3 — Camera clipping fixes (patch)
### Patch tasks
- [ ] Fix remaining camera clipping cases in `0.2.x`.
- [ ] Tag `v0.2.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.3.0 — Chaos vehicle, enter/exit, closed driving route (weeks 10–13)
### Vehicle production
- [ ] Model one vehicle in Blender with collision meshes; export to Unreal.
- [ ] Set up Chaos Vehicle with wheel and physics configuration.
- [ ] Implement enter/exit interaction.
- [ ] Build a closed driving route with boundaries.
- [ ] Tune basic handling to a drivable state.
### Release checks
- [ ] Player can enter, drive the closed route, and exit without defects.
- [ ] No blocking vehicle collision or packaging defects.
- [ ] Performance target still met at 1440p.
- [ ] Tag `v0.3.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.3.1 — Handling tuning (patch)
### Patch tasks
- [ ] Refine vehicle handling feel based on `0.3.0` feedback.
- [ ] Tag `v0.3.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.3.2 — Vehicle collision fixes (patch)
### Patch tasks
- [ ] Fix vehicle collision defects (mesh/physics mismatches).
- [ ] Tag `v0.3.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.3.3 — Input fixes (patch)
### Patch tasks
- [ ] Fix vehicle/character input issues in `0.3.x`.
- [ ] Tag `v0.3.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.4.0 — Small connected neighborhood and map streaming (weeks 14–17)
### World expansion
- [ ] Extend geo pipeline to a small connected neighborhood beyond the demo block.
- [ ] Produce modular buildings, sidewalks, and roads for the expanded area.
- [ ] Set up World Partition with streaming cells.
- [ ] Configure HLOD for distant buildings.
- [ ] Verify no seams or popping between streamed cells during traversal.
### Release checks
- [ ] Continuous walking (and driving) across the expanded area works.
- [ ] Streaming does not introduce blocking defects.
- [ ] Performance target re-validated at 1440p with streaming active.
- [ ] Tag `v0.4.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.4.1 — Seam fixes (patch)
### Patch tasks
- [ ] Fix visible seams between streamed cells.
- [ ] Tag `v0.4.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.4.2 — Streaming corrections (patch)
### Patch tasks
- [ ] Correct streaming/loading issues found in `0.4.x`.
- [ ] Tag `v0.4.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.4.3 — HLOD tuning (patch)
### Patch tasks
- [ ] Tune HLOD quality and distance settings.
- [ ] Tag `v0.4.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.5.0 — Pedestrians, crosswalk behavior, ambient traffic (weeks 18–21)
### Simulation
- [ ] Add pedestrian characters with navigation, using `AGigLineNPCPerson` (the reusable NPC prefab) as the base, driving it via AI/`AutoPossessAI`.
- [ ] Implement crosswalk behavior (pedestrians use the designated crossing).
- [ ] Add limited ambient traffic on the street network.
- [ ] Optimize simulation cost to stay within frame budget.
### Release checks
- [ ] Pedestrians and traffic behave without blocking defects.
- [ ] Performance target re-validated at 1440p.
- [ ] Tag `v0.5.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.5.1 — Navigation fixes (patch)
### Patch tasks
- [ ] Fix pedestrian navigation issues.
- [ ] Tag `v0.5.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.5.2 — Crossing fixes (patch)
### Patch tasks
- [ ] Fix crosswalk behavior defects.
- [ ] Tag `v0.5.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.5.3 — Simulation optimization (patch)
### Patch tasks
- [ ] Optimize pedestrian/traffic simulation cost.
- [ ] Tag `v0.5.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.6.0 — Visual/audio pass and evening lighting preset (weeks 22–24)
### Look and sound
- [ ] Create an evening lighting preset.
- [ ] Complete a visual polish pass across the neighborhood.
- [ ] Add ambient audio (city ambience, traffic, basic SFX).
- [ ] Verify licenses for all added audio files.
### Release checks
- [ ] Both day and evening presets render without defects.
- [ ] Audio plays without gaps or licensing issues.
- [ ] Performance target re-validated at 1440p.
- [ ] Tag `v0.6.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.6.1 — Lighting fixes (patch)
### Patch tasks
- [ ] Fix lighting defects in day/evening presets.
- [ ] Tag `v0.6.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.6.2 — Material corrections (patch)
### Patch tasks
- [ ] Fix material errors found in `0.6.x`.
- [ ] Tag `v0.6.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.6.3 — Audio balancing (patch)
### Patch tasks
- [ ] Balance audio levels across the scene.
- [ ] Tag `v0.6.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.7.0 — Settings, control rebinding, save/load, accessibility (weeks 25–27)
### Systems
- [ ] Build settings menu (graphics and audio options).
- [ ] Implement control rebinding with persistence.
- [ ] Implement save/load for player state.
- [ ] Add accessibility basics (e.g. FOV, subtitle, colorblind options as applicable).
### Release checks
- [ ] Settings, rebinding, and save/load all persist across restarts.
- [ ] No blocking UI defects.
- [ ] Tag `v0.7.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.7.1 — Save fixes (patch)
### Patch tasks
- [ ] Fix save/load defects.
- [ ] Tag `v0.7.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.7.2 — UI fixes (patch)
### Patch tasks
- [ ] Fix UI issues in `0.7.x`.
- [ ] Tag `v0.7.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.7.3 — Input persistence fixes (patch)
### Patch tasks
- [ ] Fix rebinding persistence issues.
- [ ] Tag `v0.7.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.8.0 — Performance budgets and broader Linux hardware testing (weeks 28–30)
### Performance
- [ ] Define performance budgets (frame time, VRAM) and document them.
- [ ] Profile the full neighborhood; fix budget violations.
- [ ] Test on broader Linux hardware and VRAM configurations; document results.
- [ ] Re-validate the 1440p quality preset with upscaling state recorded.
### Release checks
- [ ] Performance budgets met on documented hardware matrix.
- [ ] No blocking compatibility defects.
- [ ] Tag `v0.8.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.8.1 — VRAM reductions (patch)
### Patch tasks
- [ ] Reduce VRAM usage where profiling shows excess.
- [ ] Tag `v0.8.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.8.2 — Frame-time fixes (patch)
### Patch tasks
- [ ] Fix frame-time spikes found in `0.8.x`.
- [ ] Tag `v0.8.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.8.3 — Compatibility fixes (patch)
### Patch tasks
- [ ] Fix compatibility issues from the hardware testing matrix.
- [ ] Tag `v0.8.3` and write `CHANGELOG.md` entry; then remove this section.
## 0.9.0 — Feature freeze, public beta, license and build audit (weeks 31–34)
### Freeze and audit
- [ ] Freeze features; document the freeze in `CHANGELOG.md`.
- [ ] Produce a public beta build for testers.
- [ ] Complete license audit: `THIRD_PARTY_NOTICES.md`, all MPFB assets, textures, animations, vehicles, audio.
- [ ] Review Epic distribution requirements before publishing.
- [ ] Verify a fresh checkout builds and packages reproducibly.
### Release checks
- [ ] Beta feedback triaged; blockers logged for `0.9.x`.
- [ ] Tag `v0.9.0` and write `CHANGELOG.md` entry; then remove this section.
## 0.9.1 — Blocker fixes (patch)
### Patch tasks
- [ ] Fix blockers reported during the public beta.
- [ ] Tag `v0.9.1` and write `CHANGELOG.md` entry; then remove this section.
## 0.9.2 — Regression fixes (patch)
### Patch tasks
- [ ] Fix regressions introduced by `0.9.x` fixes.
- [ ] Tag `v0.9.2` and write `CHANGELOG.md` entry; then remove this section.
## 0.9.3 — Documentation fixes (patch)
### Patch tasks
- [ ] Update all `Docs/` for accuracy before `1.0.0`.
- [ ] Tag `v0.9.3` and write `CHANGELOG.md` entry; then remove this section.
## 1.0.0 — Stable neighborhood-scale walking/driving release (weeks 35–40)
### Final release
- [ ] Complete final acceptance sweep across all `0.x` features.
- [ ] Confirm the stable, agreed game scope is met (neighborhood-scale walking and driving).
- [ ] Final build, documentation, and licensing verification.
- [ ] Tag `v1.0.0` and write `CHANGELOG.md` entry; then remove this section.