Docs/controls.md documented the 0.1.0 bindings only, so the camera toggle added with 0.2.0 was undocumented for the player-facing set and the review switches were undocumented everywhere. Adds the V row, a changes-since-0.1.0 note that first person stays the default, and a table for -thirdperson / -walk / -qaselftest with the note that the walking capture is driven per shot rather than by the switch. The in-game HUD line gains 'V view' so the packaged build documents it too.
20 KiB
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.
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.mdentry, 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.2.0 — MPFB player body, third-person camera, basic animation (weeks 7–9)
Character setup - active - session-5598ce7e-27e3-4c64-bb49-c04a4a31ee58 (branch anim-body-0.2.0)
- 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+ warmmake_diffuse). - Import character into Unreal; validate skeleton, scale, and materials. Done:
/Game/Test/Character—SkeletalMesh(138 bones),Skeleton, warmM_Character_Exportmaterial with bakedT_Character_Diffuse. - 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.0reuses it as the pedestrian base. - Create basic idle/walk animation set. Done 2026-11-09:
Tools/character_anim_build.pyauthorsGigLine_Idle(60 f) andGigLine_Walk(30 f) at 30 fps from parametric cycles, andTools/ue_character_anim_import.pyimports them. Both AnimSequences verified in/Game/Test/Character: Idle 1.967 s, Walk 0.967 s. Limb axes were measured on the rig, not assumed — the probe rotatedupperleg01.L0.5 rad per axis and readfoot.L, which showed X is the fore/aft swing (Y twists, Z abducts). - Verify animation plays correctly on the imported rig. Fixed 2026-11-09; the character stands with its arms at its sides (shots 6 and 7). Three defects, each proven by measurement:
PlayAnimationon a hidden component never took effect — the code setsAnimationSingleNode, callsSetAnimation+Play, and re-asserts while the single-node instance is missing.- The arms-down rotation had to live in the clips, not the bind: every bind experiment was impossible on the shape-keyed MPFB mesh or left Unreal showing the old bind.
- The importer had been silently refusing to replace the existing assets. Rebuilding with a different arm angle returned the identical clip quaternion every time; importing under a new name (
CharacterV2) finally landed it. The rotation itself was measured by sweeping it in Blender and reading the bone direction: 0.55 rad gives arms down and clear of the body, 0.75 rad drives them into the torso. Remaining polish, for0.2.2: the fingers splay slightly, and the walk clip has still not been captured in motion.
- Capture the body from a second angle so a front-facing pose defect is visible.
demo-third-person-frontadded to the shot list and toScreenshots/README.md; the third-person shot alone only showed the pawn's back.
Camera and controls
- Add third-person camera following the player body. Done 2026-11-09:
USpringArmComponent+ camera on the capsule, boom 340 cm, lag 8, and the body is the animated skeletal mesh with the skin material. Review shot 5 (demo-third-person,Screenshots/README.md) shows the rig; the shipped default view stays first person. - Add first/third-person toggle. V, via
IA_ToggleCamera; the toggle swaps the active camera and the body's visibility.-thirdpersonon the command line starts in third person so the review is reproducible. - Add camera collision to prevent clipping through geometry. The spring arm's collision test (
bDoCollisionTest, probe 12 cm onECC_Camera) shortens the boom instead of letting the camera pass through a wall. Not yet exercised against a wall in a shot — the spawn point has open space behind it, so this is implemented but unproven. - Document any input changes.
Docs/controls.mdgains the V first/third-person toggle (first person stays the default), a "changes since 0.1.0" note, and a table of the review harness switches (-thirdperson,-walk,-qaselftest). The in-game HUD line now readsWASD move · Mouse look · Space jump · V view · R reset · Esc pause.
Release checks
- Third-person traversal works end-to-end in the demo area. Walking is captured and verified 2026-11-09:
demo-third-person-walkshows the body mid-stride in profile (legs apart, arms counter-swinging), and the run logswalk=1 speed=28 clip=GigLine_Walk. Getting there needed two harness fixes, both found by probing rather than guessing: the camera must track the pawn (ShotFollow), and the call that enables walking had to move out of the sequencer'sBeginPlay— it ran before the player pawn existed, so the cast silently found nothing andspeedstayed 0 while the probe reportedclip=Idleevery frame. - No blocking animation or rig defects.
- Performance target still met at 1440p.
- Tag
v0.2.0and writeCHANGELOG.mdentry; then remove this section.
0.2.1 — Rig fixes (patch)
Patch tasks
- Fix skeletal/rigging defects reported after
0.2.0. - Tag
v0.2.1and writeCHANGELOG.mdentry; 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.2and writeCHANGELOG.mdentry; 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.3and writeCHANGELOG.mdentry; 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.0and writeCHANGELOG.mdentry; then remove this section.
0.3.1 — Handling tuning (patch)
Patch tasks
- Refine vehicle handling feel based on
0.3.0feedback. - Tag
v0.3.1and writeCHANGELOG.mdentry; then remove this section.
0.3.2 — Vehicle collision fixes (patch)
Patch tasks
- Fix vehicle collision defects (mesh/physics mismatches).
- Tag
v0.3.2and writeCHANGELOG.mdentry; then remove this section.
0.3.3 — Input fixes (patch)
Patch tasks
- Fix vehicle/character input issues in
0.3.x. - Tag
v0.3.3and writeCHANGELOG.mdentry; 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.0and writeCHANGELOG.mdentry; then remove this section.
0.4.1 — Seam fixes (patch)
Patch tasks
- Fix visible seams between streamed cells.
- Tag
v0.4.1and writeCHANGELOG.mdentry; then remove this section.
0.4.2 — Streaming corrections (patch)
Patch tasks
- Correct streaming/loading issues found in
0.4.x. - Tag
v0.4.2and writeCHANGELOG.mdentry; then remove this section.
0.4.3 — HLOD tuning (patch)
Patch tasks
- Tune HLOD quality and distance settings.
- Tag
v0.4.3and writeCHANGELOG.mdentry; 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.0and writeCHANGELOG.mdentry; then remove this section.
0.5.1 — Navigation fixes (patch)
Patch tasks
- Fix pedestrian navigation issues.
- Tag
v0.5.1and writeCHANGELOG.mdentry; then remove this section.
0.5.2 — Crossing fixes (patch)
Patch tasks
- Fix crosswalk behavior defects.
- Tag
v0.5.2and writeCHANGELOG.mdentry; then remove this section.
0.5.3 — Simulation optimization (patch)
Patch tasks
- Optimize pedestrian/traffic simulation cost.
- Tag
v0.5.3and writeCHANGELOG.mdentry; 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.
- Model the pavement between kerb and building line; today that strip is the terrain mesh, which reads as bare ground under the shopfronts (
Screenshots/README.md). Carried over 2026-11-09. - 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.0and writeCHANGELOG.mdentry; then remove this section.
0.6.1 — Lighting fixes (patch)
Patch tasks
- Fix lighting defects in day/evening presets.
- Tag
v0.6.1and writeCHANGELOG.mdentry; then remove this section.
0.6.2 — Material corrections (patch)
Patch tasks
- Fix material errors found in
0.6.x. - Tag
v0.6.2and writeCHANGELOG.mdentry; then remove this section.
0.6.3 — Audio balancing (patch)
Patch tasks
- Balance audio levels across the scene.
- Tag
v0.6.3and writeCHANGELOG.mdentry; 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.0and writeCHANGELOG.mdentry; then remove this section.
0.7.1 — Save fixes (patch)
Patch tasks
- Fix save/load defects.
- Tag
v0.7.1and writeCHANGELOG.mdentry; then remove this section.
0.7.2 — UI fixes (patch)
Patch tasks
- Fix UI issues in
0.7.x. - Tag
v0.7.2and writeCHANGELOG.mdentry; then remove this section.
0.7.3 — Input persistence fixes (patch)
Patch tasks
- Fix rebinding persistence issues.
- Tag
v0.7.3and writeCHANGELOG.mdentry; 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.0and writeCHANGELOG.mdentry; then remove this section.
0.8.1 — VRAM reductions (patch)
Patch tasks
- Reduce VRAM usage where profiling shows excess.
- Tag
v0.8.1and writeCHANGELOG.mdentry; 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.2and writeCHANGELOG.mdentry; then remove this section.
0.8.3 — Compatibility fixes (patch)
Patch tasks
- Fix compatibility issues from the hardware testing matrix.
- Tag
v0.8.3and writeCHANGELOG.mdentry; then remove this section.
0.9.0 — Realistic buildings (weeks 31–34)
Suggested blender skills: archviz (real-world scale, façade composition, elevation read), references (reference-image-match and visual-match checklists — every building is judged against its own photograph), procedural-modeling + geometry-nodes (the façades system: bay module, cornice and coping profiles, storefront types as reusable node groups), materials (measured albedo and roughness per surface type), texture-workflow (baked AO/curvature/normal, decals for painted lettering and signs), uv-workflow (texel density and modular UVs), lod-pipeline (LOD chain per building), collision-proxy (UCX proxies so detail geometry is not the collider), lookdev (screenshot comparison loop), camera-cinematography (reproducing each building's reference angle), asset-optimization + unreal-export (pre-export validation, ue_metric_v1), qa-review (the gate before every review shot).
Façade system
- Extend the module kit beyond one order. Art Deco, neoclassical and streamline-moderne variants on the shared 4.96 m bay: alternate window proportions, spandrel and transom bands, and the way each order terminates at the roof.
- Build a profile library for cornices, copings, string courses, sills and storefront surrounds, so a building is assembled from named profiles rather than ad-hoc boxes.
- Storefront types: recessed entry, bulkhead and kickplate, mullion spacing, transom, awning/canopy brackets, and grille/shutter variants.
- Signage and lettering as decals. Painted wall lettering, blade signs and fascia panels become texture and decal work with a documented projection;
0.1.6proved that lettering built as geometry plates cannot resolve at review distance. - Document the system in
Art/blender/README.mdand the arc42 building block view.
Per-building models
Each building needs its own reference set; where none exists the blockout stays and the item says so.
- Hero façade (6840): raise to this pass's detail level — capitals and fluting, window rhythm behind the colonnade, parapet motto band and medallions.
- Hero façade (6840), entrance: doors at street level left and right of the central bay, as the photographs show, and correct positioning of the central-bay elements (column bases, entrance stairs, set-back entrance, door frames, banners and signage). Nothing may stand in front of the façade that blocks it — no awning, no temporary structure. Carried over from
Screenshots/README.md, 2026-11-09. - El Capitan Theatre (6838): marquee, blade sign, entrance and the theatre's own elevation from its 18-frame set.
- 6800 Lee Drug and 6806–6820: second pass on the
0.1.6trim. Moved here from that patch because geometry cannot close them: wall lettering as a decal (a plate at 0.10 m still vanishes at 40 m), a moulded parapet profile instead of a two-tier box, richer corner-tower stepping, and the portrait panels reworked as textures rather than framed plates. - Photography gap — 6822 Budget (deferred out of
0.1.6, blocked): no photograph exists; the single-storey 6.0 × 5.5 m volume cannot be read from the neighbour shot, so it stays a bare blockout until references are acquired. Record the sources checked inGeo/. Also re-shoot 6806–6820 and 6800 from the south sidewalk: the only reference is one oblique with a bus across Lee Drug's shopfront and a car across 6806's. - 6902, 6922 and the remaining south frontage.
- North side: TCL Chinese Theatre and Madame Tussaud's façades from their reference sets.
- Reconcile every modelled height against
Geo/tools/block_height_report.pyand record the source per building.
Materials, UVs and performance
- Measured material library, including the hero's stone, which currently renders pale because it is a procedural graph and a generated texture set rather than a measured surface: stucco, painted render, ashlar, brick, terrazzo, glazing, bronze and steel trim, with albedo and roughness taken from the photographs rather than guessed; one Unreal material instance per surface type.
- Texel-density rule per building class, applied through modular UVs; lightmap UVs where required.
- LOD chain and collision proxies per building: UCX proxies for blocking volume, detail geometry non-colliding.
- Re-validate the 60 FPS floor at 1440p once the detail lands, and record the cost of the pass.
Release checks
- Every building with a photograph has a review shot measured against it, with silhouette and proportion deltas recorded in
Screenshots/README.md. - No building carries an unverified façade; blockouts without references are listed as such in
TODO.md. - Every building has a collision proxy and at least one LOD.
- No surface left on a placeholder material.
THIRD_PARTY_NOTICES.mdcovers every photographic reference used in this pass.- Performance target still met at 1440p.
- Tag
v0.9.0and writeCHANGELOG.mdentry; then remove this section.
0.10.0 — Feature freeze, public beta, license and build audit (weeks 35–38)
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.10.x. - Tag
v0.10.0and writeCHANGELOG.mdentry; then remove this section.
0.10.1 — Blocker fixes (patch)
Patch tasks
- Fix blockers reported during the public beta.
- Tag
v0.10.1and writeCHANGELOG.mdentry; then remove this section.
0.10.2 — Regression fixes (patch)
Patch tasks
- Fix regressions introduced by
0.9.xfixes. - Tag
v0.10.2and writeCHANGELOG.mdentry; then remove this section.
0.10.3 — Documentation fixes (patch)
Patch tasks
- Update all
Docs/for accuracy before1.0.0. - Tag
v0.10.3and writeCHANGELOG.mdentry; 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.xfeatures. - Confirm the stable, agreed game scope is met (neighborhood-scale walking and driving).
- Final build, documentation, and licensing verification.
- Tag
v1.0.0and writeCHANGELOG.mdentry; then remove this section.