Re-plan the Blender tracks around the local skills and a 3D model review
This commit is contained in:
1 parent
84bc4137cb
commit
3e41cda591
5 files changed
+312
-110
No files matched your search
@@ -3,16 +3,119 @@
|
||||
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:** Character development → Local map development → versioned release milestones →
|
||||
future/deferred work. See `AGENTS.md` §Priority and Versioning.
|
||||
**Priority order:** 3D model re-evaluation → character development → local map development →
|
||||
versioned release milestones (0.10.0) → future/deferred work. See `AGENTS.md` §Priority and
|
||||
Versioning and §Local Blender skills.
|
||||
|
||||
The MIT Blender skill pack lives locally at `.agents/skills/blender-skills/` (gitignored). Every
|
||||
3D workstream below names the skills to load; they are guidance only, and the project contract,
|
||||
`blender_assets.py audit`/`fit`/`inspect` and the capture gates stay authoritative.
|
||||
|
||||
## 3D model re-evaluation
|
||||
|
||||
Goal: re-judge every shipped 3D asset against the newly available Blender skill guidance, rank
|
||||
the real gaps, and fix only what the rankings justify. This is an unversioned development track:
|
||||
it must not change the `npc_base` contract, the renderer or the 0.10.0 release candidate.
|
||||
|
||||
Scope: 8 library characters (`npc_casual`, `npc_jacket`, `npc_coat`, `npc_vest`, `npc_dress`,
|
||||
`npc_hoodie`, `npc_firefighter`, `npc_guard`), the frozen `npc_base` fallback, 18 gear pieces,
|
||||
20 library props, 6 generated props, and the three venue families.
|
||||
|
||||
**Exit:** `docs/3d-model-review.md` scores every catalogue asset; every P0/P1 is fixed or
|
||||
explicitly accepted with a measurement; `inspect`/`audit`/`fit`/proportions, the 24-NPC budget
|
||||
and the capture gates are green; no runtime contract, dependency or release artifact changed
|
||||
except the rebuilt assets themselves.
|
||||
|
||||
### A. Baseline, scorecard and routing
|
||||
|
||||
- [ ] Load `blender-director` plus the per-family specialists before touching geometry, and
|
||||
record the skill stack and the advice that changed a decision in `docs/3d-model-review.md`.
|
||||
- [ ] Re-run the neutral NPC baseline (48 frames), the final-context review (96 frames), the
|
||||
prop gallery and the 24-NPC budget on the current build; keep raw frames in `tmp/` and do
|
||||
not replace committed sheets until a fix lands.
|
||||
- [ ] Create `docs/3d-model-review.md` with a per-asset scorecard: silhouette, anatomy/proportion,
|
||||
topology/edge flow, UV/texel density, textures/materials, rig/weights, LOD/impostor,
|
||||
collision/grounding, export contract, provenance, skill route, verdict (P0/P1/P2/accept).
|
||||
- [ ] Collect the baseline measurements in one table: `blender_assets.py inspect`, `audit`, `fit`,
|
||||
`npc_proportions.py`, texel density, triangles/meshes, 24-NPC frame time.
|
||||
- [ ] Review the scorecard with the project owner, rank the P0/P1 gaps and decide fix vs accept
|
||||
per item; record the decision and the reason in the review document.
|
||||
|
||||
### B. Character re-evaluation (8 variants + fallback)
|
||||
|
||||
*Skill route: `character-artist`, `retopology`, `rigging`, `uv-workflow`, `texture-workflow`,
|
||||
`materials`, `hair-groom`, `asset-optimization`, `lookdev`, `qa-review`.*
|
||||
|
||||
- [ ] Face/head: review eye/mouth loops, cheek/brow/chin transitions and faceting at the 2 m
|
||||
portrait distance against `character-artist` and `retopology`; write the concrete edits.
|
||||
- [ ] Hands/grip: re-check palm, finger segments, thumb and gear contact; decide between a
|
||||
finger-curl rig or the current open hand plus `HAND_ITEM_FORWARD`, and record the limit.
|
||||
- [ ] Weights/pose: capture idle, walk, sit and wave; inspect shoulder, hip and neck collapse;
|
||||
fix the worst offenders using `rigging` practice without changing the 13-bone contract.
|
||||
- [ ] UV/texel density: measure the 256² slot maps; decide whether atlas, UDIM or a resolution
|
||||
change is justified. Do not change `CHAR_MAX_TRIS`/`CHAR_MAX_VERTS` without re-running the
|
||||
budget smoke and the Web/Compatibility path.
|
||||
- [ ] Cloth and hair: re-check coat/dress hem clipping and the hair/beard/headgear meshes against
|
||||
`hair-groom` guidance; decide explicitly whether cloth simulation stays out of scope.
|
||||
- [ ] Fix only the ranked P0/P1s, one asset family per commit; refresh the comparison sheet and
|
||||
re-run `inspect`, `audit`, `fit` and `npc_proportions.py` after each fix.
|
||||
- [ ] `qa-review` sign-off: a ship/no-ship verdict per variant with accepted limits recorded.
|
||||
|
||||
### C. Gear and prop re-evaluation
|
||||
|
||||
*Skill route: `prop-artist`, `hard-surface`, `vegetation-artist`, `materials`, `collision-proxy`,
|
||||
`lod-pipeline`, `qa-review`.*
|
||||
|
||||
- [ ] Gear: review the 18 pieces for silhouette, straps/buckles, helmet and lanyard readability;
|
||||
verify attach space and body clearance with `fit`; rebuild only what fails the scorecard.
|
||||
- [ ] Props: review the 20 library props plus the 6 generated props for bevels, chamfers,
|
||||
silhouette, ground contact and shared material language (`prop-artist`, `hard-surface`);
|
||||
list the rebuilds that are actually worth the triangle budget.
|
||||
- [ ] Foliage: replace the flat-shaded `_shrub()`/`_tree()` clumps with `vegetation-artist`-style
|
||||
carded clusters; measure triangles and keep the 60k `LIBRARY_TRIANGLE_BUDGET`.
|
||||
- [ ] Materials and emissives: `lookdev` pass on bulbs, signs, lanterns, the marquee and the
|
||||
sedan at day and late; confirm the flashlight stays a tight spot with no beam geometry.
|
||||
- [ ] Collision: verify every prop collider and navigation obstacle matches its silhouette and
|
||||
add the missing `collision-proxy` shapes where walking is blocked.
|
||||
- [ ] Exit: a prop/gear capture sheet, budgets and collision checks pass with no unreviewed asset.
|
||||
|
||||
### D. Venue and camera re-evaluation
|
||||
|
||||
*Skill route: `environment-artist`, `archviz`, `set-dressing`, `lighting`, `camera-cinematography`,
|
||||
`lookdev`, `rendering`, `qa-review`.*
|
||||
|
||||
- [ ] Facade/venue review: rank the top five shape-language fixes for Hollywood, the Joke Shop and
|
||||
the TV Studio (`environment-artist`, `archviz`) and check them against the map-budget tests.
|
||||
- [ ] Lighting: `lighting`/`lookdev` pass on sconces, canopy, marquee and street lamps with
|
||||
day/late captures; verify local attenuation stays at 1.0 and no constant-falloff light returns.
|
||||
- [ ] Set dressing: review entrance and sidewalk prop clusters (`set-dressing`) for occlusion,
|
||||
navigation obstacles and readable storytelling clusters.
|
||||
- [ ] Camera height: decide 1.7 m gameplay framing vs the ~1.55 m concept frames using
|
||||
`camera-cinematography`, and record the decision instead of leaving the mismatch open.
|
||||
- [ ] Hooded/winter portrait: close the deferred close-up by staging a types 5–7 capture
|
||||
(`--portrait-type`) or adding a scenario spawn that provides one.
|
||||
|
||||
### E. Gates and documentation
|
||||
|
||||
- [ ] Add the measurable checks the review needs (texel density, weight/pose sanity, collider
|
||||
coverage, LOD/impostor check) as stdlib or GDScript gates where possible; CI stays offline.
|
||||
- [ ] Add a coverage test so every catalogue asset has a scorecard row and verdict.
|
||||
- [ ] Update `docs/blender-assets.md`, `docs/npc-visual-review.md`, `docs/3d-model-review.md`,
|
||||
`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`.
|
||||
|
||||
## Character development
|
||||
|
||||
Goal: break the eight-character clone effect with four licence-cleared crowd-variety looks while
|
||||
keeping the frozen `npc_base` bone, tint-slot and gear-attach contract. The procedural generator is
|
||||
the primary path; Quaternius is a reviewed reference and MakeHuman is deferred to a separate local
|
||||
development pipeline. This is the current development priority; keep it out of the frozen
|
||||
0.10.0 release candidate and assign a release version only when its scope is accepted.
|
||||
development pipeline.
|
||||
|
||||
The roster build is deliberately sequenced **after** the 3D model re-evaluation: the new variants
|
||||
must inherit the reviewed face/hand/gear baseline instead of multiplying whatever it finds.
|
||||
|
||||
*Skill route: `character-artist`, `retopology`, `rigging`, `uv-workflow`, `materials`,
|
||||
`asset-optimization`, `lowpoly-style`, `godot-export`, `qa-review`.*
|
||||
|
||||
### Source review and decision
|
||||
|
||||
@@ -41,13 +144,13 @@ development pipeline. This is the current development priority; keep it out of t
|
||||
(`blender_assets.py inspect --file ...` applies parent/object transforms, converts to
|
||||
Godot Y-up, ignores the importer's bone-shape helper and prints budgets, bones, slots,
|
||||
UVs, skinning and animations with issues/warnings; `--json` and `--category` supported.
|
||||
Seven synthetic contract tests added (Python 108/108); all 46 library GLBs inspect clean,
|
||||
and a wrapped 2x fixture correctly reported a 0.975 m local/world delta. Blender-side only;
|
||||
`audit` remains the final gate.)
|
||||
Seven synthetic contract tests added; all 46 library GLBs inspect clean. `audit` remains
|
||||
the final gate.)
|
||||
- [ ] Add an `adapt` path for future external assets: scale/ground, weld seams, decimate, map the
|
||||
five tint slots, and either rebuild the contract armature or record an explicit second-rig
|
||||
contract. The Quaternius prototype showed that a contract rebuild needs a proportion warp,
|
||||
so this is not on the character-development critical path.
|
||||
contract. Use `retopology`/`rigging`/`uv-workflow` guidance for the manual steps, but keep
|
||||
the Quaternius no-go: a contract rebuild needs a proportion warp, so this is not on the
|
||||
character critical path.
|
||||
- [ ] Keep `tools/blender_assets.py audit` as the single final gate; add a regression test for the
|
||||
intake report/adaptation using a deterministic synthetic or licence-cleared fixture.
|
||||
- [ ] Document the adapter commands and the go/no-go checks in `docs/asset-tooling.md`.
|
||||
@@ -71,13 +174,16 @@ development pipeline. This is the current development priority; keep it out of t
|
||||
accessory; no clothing that labels the NPC's behaviour). (`npc_crowd_a` bun/slim/sunglasses,
|
||||
`npc_crowd_b` bald/broad/beard/shoulder bag, `npc_crowd_c` coat/umbrella, `npc_crowd_d`
|
||||
hood/cup; prototype sheet committed.)
|
||||
- [ ] Re-derive the four approved specs against the re-evaluated character baseline (face, hands,
|
||||
proportions, gear offsets) so the new variants do not reintroduce the gaps the review found.
|
||||
- [ ] Add the four approved specs to `CHARACTERS`, build and commit their GLBs/AO maps, and
|
||||
update the manifest with roles and tint data. (Prototype assets are local under `tmp/`;
|
||||
do not add them to the current release candidate.)
|
||||
update the manifest with roles and tint data. Build only the new assets, never a no-op full
|
||||
rebuild, and remember that `export_filter="all_resources"` packs committed GLBs into the
|
||||
next release build: keep this off `main` until after the 0.10.0 tag or accept the size.
|
||||
- [ ] Replace the fixed `character_model_for()` mapping with deterministic per-role pools and add
|
||||
tests for repeatability and duplicate avoidance.
|
||||
tests for repeatability and duplicate avoidance (`godot-export` contract check included).
|
||||
- [ ] Rebuild and verify gear fit for every new variant (`blender_assets.py fit` plus the runtime
|
||||
gear checks).
|
||||
gear checks) and re-run `inspect` on the four new GLBs.
|
||||
|
||||
### QA and release
|
||||
|
||||
@@ -104,6 +210,10 @@ Goal: build a local, data-backed map pipeline that can replace or supplement the
|
||||
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
|
||||
@@ -128,16 +238,19 @@ facades and AI-assisted composition. This is an unversioned development track, n
|
||||
- [ ] 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.
|
||||
- [ ] Define the photoreal target and a material-derivation workflow (albedo/normal/roughness,
|
||||
AO, weathering) that matches the existing Compatibility renderer.
|
||||
AO, weathering) that matches the existing Compatibility renderer (`texture-workflow`,
|
||||
`materials`, `lookdev`).
|
||||
|
||||
### 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.
|
||||
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)
|
||||
so buildings share materials and stay inside the venue triangle/material budgets.
|
||||
with `environment-artist`/`hard-surface`/`geometry-nodes` so buildings share materials and
|
||||
stay inside the venue triangle/material budgets.
|
||||
- [ ] Add an AI-assisted composition step for palette, facade rhythm and reference boards; record
|
||||
the model, prompt and output, and keep human review as the acceptance gate. AI output must
|
||||
not be treated as licensed map data or shipped without provenance.
|
||||
@@ -188,9 +301,10 @@ reference-image licence and privacy gates above rather than replacing them.
|
||||
erase facade edges, signage or window detail, and keep the redacted input variant.
|
||||
- [ ] Align the splat to game coordinates from the OSM footprint plus surveyed points (door
|
||||
width, column spacing, step rise, storefront height) and record alignment residuals in a
|
||||
Blender scene containing both the splat and the current venue geometry.
|
||||
- [ ] Judge quality from held-out views and a render from the game’s day/night camera poses,
|
||||
not from training views alone; reject splats that only look correct from the capture path.
|
||||
Blender scene containing both the splat and the current venue geometry (`scene-assembly`).
|
||||
- [ ] Judge quality from held-out views and a render from the game's day/night camera poses
|
||||
(`camera-cinematography`, `lookdev`, `qa-review`), not from training views alone; reject
|
||||
splats that only look correct from the capture path.
|
||||
- [ ] Maintain a coverage map per block: which facades, corners and rooflines have usable views,
|
||||
and which areas must fall back to the facade kit or stylized geometry.
|
||||
|
||||
@@ -200,11 +314,11 @@ reference-image licence and privacy gates above rather than replacing them.
|
||||
compare it with the realism captures; derive dimensions, signage placement, facade rhythm
|
||||
and material colours. No splat data reaches the runtime.
|
||||
- [ ] **Path B — Texture derivation:** project splat renders onto the facade kit to produce
|
||||
albedo, normal, roughness and AO candidates; de-light and bake them, then verify UV scale,
|
||||
tiling and readability under the Compatibility renderer.
|
||||
albedo, normal, roughness and AO candidates; de-light and bake them (`texture-workflow`),
|
||||
then verify UV scale, tiling and readability under the Compatibility renderer.
|
||||
- [ ] **Path C — Mesh proxy:** extract a mesh from the splat or dense reconstruction, retopo and
|
||||
dress it in Blender, assign LODs, and keep it inside the venue triangle/material budgets
|
||||
with mesh-based colliders and navigation.
|
||||
dress it in Blender (`retopology`, `prop-artist`), assign LODs (`lod-pipeline`), and keep it
|
||||
inside the venue triangle/material budgets with mesh-based colliders (`collision-proxy`).
|
||||
- [ ] **Path D — Distant backdrop:** test a baked panorama, impostor or billboard generated from
|
||||
the splat for skyline and opposite-street depth where the player cannot walk; measure file
|
||||
size, loading and visible pop at the venue boundary.
|
||||
@@ -244,11 +358,87 @@ reference-image licence and privacy gates above rather than replacing them.
|
||||
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
|
||||
task, not on a schedule.
|
||||
|
||||
### Memory and status accuracy
|
||||
|
||||
- [ ] Trim `MEMORY.md` from ~970 lines to the durable set: drop the pre-0.8 host/disk/NSIS/release
|
||||
anecdotes, superseded v0.2.x handoff status and duplicated release notes, keep the gotchas
|
||||
that still bite (async/event wiring, import order, colliders, RNG, contracts), and keep the
|
||||
easter-egg note.
|
||||
- [ ] Re-check the remaining memory claims against code before deleting them; `MAX_LIVE_NPCS` is
|
||||
still 16 for gameplay while the separate budget smoke spawns 24, so do not "fix" that.
|
||||
- [ ] Fix stale status claims as they are found (the step-collider and flashlight-beam claims were
|
||||
corrected on 2026-11-03); add a documentation check or grep note only if the same class of
|
||||
drift returns.
|
||||
|
||||
### Blender skills upkeep
|
||||
|
||||
- [ ] Re-check the installed Blender pack (`version.json`) when updating it and record the version
|
||||
in `AGENTS.md` if it changes; keep `.agents/` gitignored and `.agents/.gdignore` in place.
|
||||
- [ ] Prune the skill routes in `AGENTS.md` if a skill stops matching the project (for example if
|
||||
a future second-rig path makes `rigging`/`animation` guidance authoritative).
|
||||
|
||||
## Gap Analysis and 0.x Roadmap
|
||||
|
||||
Baseline: **v0.9.6** (2026-11-03). Three playable venues, tutorial/campaign/checkpoint resume,
|
||||
difficulty/help, audio/accessibility settings, a 24-NPC budget baseline, a complete
|
||||
escalation/access/radio loop, shift review, the Blender asset library, 272 headless + 108 Python
|
||||
tests, a 21/21 clean screen-design judge and an optional Forward+ Desktop HQ build. This is the
|
||||
baseline; 0.10.0-rc.1 is the current candidate source, with release approvals still open.
|
||||
|
||||
### Documentation audit (completed 2026-11-01)
|
||||
|
||||
- [x] Make `docs/architecture.md` the single architecture source: asset/content pipeline
|
||||
contracts, runtime venue-switch/fallback flows, deployment/version constraints, quality
|
||||
requirements, risk register and documentation ownership map.
|
||||
- [x] Keep command-heavy operational pages separate but subordinate: `docs/asset-tooling.md`,
|
||||
`docs/blender-assets.md`, `docs/getting-started.md`, `docs/RELEASING.md` and
|
||||
`docs/smoke-checklist.md` link to architecture rather than acting as parallel sources.
|
||||
- [x] Remove the obsolete `docs/plan-graphics-v0.6.md` and its links; completed graphics work is
|
||||
represented by ADR-0013, the asset pipeline section and the changelog.
|
||||
- [x] Resolve stale claims: README release version/download row, development status
|
||||
"Forward+ not implemented", and Blender props "not AO-baked".
|
||||
- [x] Record the documentation ownership rule in `docs/architecture.md` §12: design intent
|
||||
(`PLAN.md`), mechanics (`gameplay.md`), system architecture/contracts (`architecture.md`),
|
||||
decisions (ADRs), status (`development-status.md`), roadmap (`TODO.md`), operations
|
||||
(tooling/release docs).
|
||||
|
||||
### Gap register (remaining roadmap)
|
||||
|
||||
| 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 |
|
||||
| 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) |
|
||||
| Audio/accessibility | Procedural ambience/SFX, volume controls, captions/reduce-motion settings, searchable Help | Full accessibility/localization acceptance review, audio caption coverage and P0/P1 fixes | Public release cannot claim accessible play | 0.10.0 |
|
||||
| Localization | English JSON table, validation and input-generated Help | Pseudo-locale/layout audit and translator workflow sign-off | Text expansion/clipping at release | 0.10.0 |
|
||||
| Performance/platform | 24-NPC headless budget (6.94 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.6 / 0.10.0 |
|
||||
| Save lifecycle | Settings/campaign/history/checkpoint files, atomic writes | Migration fixtures from 0.8/0.9, fresh-install/upgrade verification, rollback instructions | Player progress loss on upgrade | 0.10.0 |
|
||||
| QA/CI | Headless suite, smokes, screenshot compare, 21/21 judge | Release-candidate smoke matrix, final gallery and release dry run | Regressions escape the release gate | 0.9.6 / 0.10.0 |
|
||||
| Release/legal | Unsigned desktop/macOS builds, Web/HQ packages | Signing/notarization decision, checksums, AI-asset provenance, credits, privacy/body-camera and rating review | Public release blocked by trust/policy | 0.10.0 |
|
||||
| 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.
|
||||
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
|
||||
complete and in `DONE.md`.
|
||||
|
||||
## Milestone 0.10.0 — Release candidate
|
||||
|
||||
Goal: freeze the feature set, prove it with external players, clear release/legal blockers and
|
||||
verify every distribution path. This remains the next versioned release after the 0.9.x patch
|
||||
line, but follows the unversioned character and local-map tracks in planning order.
|
||||
line, but follows the unversioned 3D re-evaluation, character and local-map tracks in planning
|
||||
order. Only a release-blocking defect from those tracks may enter this milestone before the tag.
|
||||
|
||||
### Content lock and external playtest
|
||||
|
||||
@@ -394,64 +584,6 @@ line, but follows the unversioned character and local-map tracks in planning ord
|
||||
- [ ] Exit: the release candidate is content-locked, externally played, legally reviewed,
|
||||
documented, reproducibly built, and approved as the 0.10.0 release candidate.
|
||||
|
||||
## Gap Analysis and 0.x Roadmap
|
||||
|
||||
Baseline: **v0.9.6** (2026-11-03). Three playable venues, tutorial/campaign/checkpoint resume,
|
||||
difficulty/help, audio/accessibility settings, a 24-NPC budget baseline, a complete
|
||||
escalation/access/radio loop, shift review, the Blender asset library, 272 headless + 101 Python
|
||||
tests, a 21/21 clean screen-design judge and an optional Forward+ Desktop HQ build. This is the
|
||||
baseline; 0.10.0-rc.1 is the current candidate source, with release approvals still open.
|
||||
|
||||
### Documentation audit (completed 2026-11-01)
|
||||
|
||||
- [x] Make `docs/architecture.md` the single architecture source: asset/content pipeline
|
||||
contracts, runtime venue-switch/fallback flows, deployment/version constraints, quality
|
||||
requirements, risk register and documentation ownership map.
|
||||
- [x] Keep command-heavy operational pages separate but subordinate: `docs/asset-tooling.md`,
|
||||
`docs/blender-assets.md`, `docs/getting-started.md`, `docs/RELEASING.md` and
|
||||
`docs/smoke-checklist.md` link to architecture rather than acting as parallel sources.
|
||||
- [x] Remove the obsolete `docs/plan-graphics-v0.6.md` and its links; completed graphics work is
|
||||
represented by ADR-0013, the asset pipeline section and the changelog.
|
||||
- [x] Resolve stale claims: README release version/download row, development status
|
||||
"Forward+ not implemented", and Blender props "not AO-baked".
|
||||
- [x] Record the documentation ownership rule in `docs/architecture.md` §12: design intent
|
||||
(`PLAN.md`), mechanics (`gameplay.md`), system architecture/contracts (`architecture.md`),
|
||||
decisions (ADRs), status (`development-status.md`), roadmap (`TODO.md`), operations
|
||||
(tooling/release docs).
|
||||
|
||||
### Gap register (remaining roadmap)
|
||||
|
||||
| Area | Current baseline | Remaining gap | Risk | Milestone |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 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) |
|
||||
| Audio/accessibility | Procedural ambience/SFX, volume controls, captions/reduce-motion settings, searchable Help | Full accessibility/localization acceptance review, audio caption coverage and P0/P1 fixes | Public release cannot claim accessible play | 0.10.0 |
|
||||
| Localization | English JSON table, validation and input-generated Help | Pseudo-locale/layout audit and translator workflow sign-off | Text expansion/clipping at release | 0.10.0 |
|
||||
| Performance/platform | 24-NPC headless budget (6.94 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.6 / 0.10.0 |
|
||||
| Save lifecycle | Settings/campaign/history/checkpoint files, atomic writes | Migration fixtures from 0.8/0.9, fresh-install/upgrade verification, rollback instructions | Player progress loss on upgrade | 0.10.0 |
|
||||
| QA/CI | Headless suite, smokes, screenshot compare, 21/21 judge | Release-candidate smoke matrix, final gallery and release dry run | Regressions escape the release gate | 0.9.6 / 0.10.0 |
|
||||
| Release/legal | Unsigned desktop/macOS builds, Web/HQ packages | Signing/notarization decision, checksums, AI-asset provenance, credits, privacy/body-camera and rating review | Public release blocked by trust/policy | 0.10.0 |
|
||||
| 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 **Character development** and **Local map development**
|
||||
tracks are the active planning order. The **0.10.0 release candidate** follows them in this list
|
||||
as 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 complete and in
|
||||
`DONE.md`.
|
||||
|
||||
## Future 0.x / non-blocking candidates
|
||||
|
||||
- [ ] Live 3D body-camera replay.
|
||||
- [ ] Additional venues or seasonal events.
|
||||
- [ ] Real voice/dialogue audio.
|
||||
- [ ] Image-to-mesh prop pipeline.
|
||||
- [ ] Rare easter eggs/cameos (e.g. Bob Dobbs) only after core content and QA are stable.
|
||||
|
||||
## Roadmap dependencies and risks
|
||||
|
||||
- Content volume is the largest schedule risk; tutorial and campaign work must not outrun the
|
||||
@@ -468,23 +600,18 @@ release is published. Earlier map/NPC/UI/texture/integration passes are complete
|
||||
- Keep the de-escalation-first rules and rare-emergency design unchanged while adding progression,
|
||||
difficulty and feedback.
|
||||
|
||||
## Realism follow-ups (deferred)
|
||||
- The Blender skill pack is local, unversioned guidance; it can drift from the project contract or
|
||||
assume Blender MCP. Re-verify every adopted technique with `inspect`/`audit`/`fit` and never
|
||||
make a skill, asset pack or tool version a build or CI dependency.
|
||||
- The 3D re-evaluation can expand without bound (retopo every head, rig every finger). Cap it with
|
||||
the scorecard ranking: P0/P1 only, one asset family per commit, and an explicit accept for
|
||||
everything else.
|
||||
|
||||
- [x] Re-run the screen-design judge for `12-joke-shop`, `13-studio-arrival` and the
|
||||
Forward+ A/B with the valid key: **13/13 match, 0 diff**; the HQ A/B is in the report.
|
||||
- [ ] Capture a hooded/winter NPC close-up once a scenario spawns types 5-7 (the explicit
|
||||
`--portrait-type` override is already in `capture_realism.gd`).
|
||||
- [ ] Human-authored tree/hedge silhouettes: the whole scene now reads well except the foliage,
|
||||
which is still flat-shaded clumps (`_shrub()`/`_tree()` in `tools/blender_assets.py`).
|
||||
Only worth doing if a higher-poly organic builder is added to the library.
|
||||
- [ ] Camera height: the concept frames are shot at ~1.55 m with a slightly wider lens; the game
|
||||
camera sits at 1.7 m. Decide whether the first-person height should match the art direction
|
||||
or stay at the current gameplay value.
|
||||
## Future / deferred (not scheduled)
|
||||
|
||||
## Future ideas (optional, not scheduled)
|
||||
|
||||
- [ ] Live 3D body-camera replay (the timeline is text-only today).
|
||||
- [ ] Additional venues or seasonal events authored from the new `.tres` files.
|
||||
- [ ] Real voice/dialogue audio (the crowd bed and radio crackle are procedural).
|
||||
- [ ] Live 3D body-camera replay; the timeline is text-only today.
|
||||
- [ ] Additional venues or seasonal events authored from the `content/venues/` resources.
|
||||
- [ ] Real voice/dialogue audio; ambience, cues and radio crackle are procedural.
|
||||
- [ ] Swap the primitive prop builder for an image-to-mesh model API behind the same
|
||||
`assets/models/generated/<prop>.glb` contract.
|
||||
- [ ] Rare easter eggs/cameos (e.g. Bob Dobbs) only after core content and QA are stable.
|
||||
Reference in new issue
Block a user