Plan the 0.10.0 minor and thorough NPC visual pass
Renumber the pre-release patches after shipped 0.9.1, promote the next release candidate to 0.10.0, and expand NPC work into reference/acceptance, proportions, face/hair, hands/clothing, gear fit, pose/performance and visual verification. Sync the README status and remaining-gap references.
This commit is contained in:
1 parent
49bfccc808
commit
64590fe797
2 files changed
+114
-60
No files matched your search
@@ -38,9 +38,8 @@ precision walk, the Joke Shop alley, the TV Studio arrival, and the prop lineup.
|
||||
> Downloads are public (no sign-in required) since the host's instance-wide
|
||||
> `REQUIRE_SIGNIN_VIEW` was disabled on 2026-10-31.
|
||||
>
|
||||
> **Latest: v0.9.1** — unified Godot 4.7.2 CI/release environment with cached
|
||||
> Godot binaries/templates, plus v0.9.0's production-quality and v0.8
|
||||
> tutorial/campaign/resume work.
|
||||
> **Latest: v0.9.1** — unified Godot 4.7.2 CI/release environment, plus
|
||||
> v0.9.0's production-quality and v0.8 tutorial/campaign/resume work.
|
||||
> Releases are built automatically when a `vX.Y.Z` tag is pushed
|
||||
> (see [`docs/RELEASING.md`](docs/RELEASING.md)); manual builds use
|
||||
> `./tools/build_releases.sh`. Installer/AppImage packaging runs in the same pipeline
|
||||
@@ -120,9 +119,9 @@ Full setup, every run/test/smoke command, and the controls table are in
|
||||
|
||||
## Development Status
|
||||
|
||||
v0.9.0 adds the production-quality baseline: mixer/accessibility settings, a
|
||||
24-NPC performance budget and the unified Godot 4.7.2 toolchain, on
|
||||
top of v0.8's tutorial, campaign, checkpoint resume, difficulty and Help. See
|
||||
v0.9.1 unifies the project, local tooling and CI/release environment on Godot
|
||||
4.7.2. It builds on v0.9.0's production-quality and audio/accessibility pass,
|
||||
v0.8's tutorial/campaign/resume work and the v0.7.x venue/gear/judge work. See
|
||||
[`docs/development-status.md`](docs/development-status.md) for the implemented
|
||||
list and [`TODO.md`](TODO.md) for the v1.0.0 roadmap. Manual verification uses
|
||||
the [`docs/smoke-checklist.md`](docs/smoke-checklist.md).
|
||||
|
||||
@@ -5,9 +5,9 @@ see `AGENTS.md` for the workflow and `MEMORY.md` for the decisions behind these
|
||||
|
||||
## Gap Analysis and v1.0.0 Roadmap
|
||||
|
||||
Baseline: **v0.9.0** (2026-11-01). Three playable venues, tutorial/campaign/checkpoint resume,
|
||||
Baseline: **v0.9.1** (2026-11-02). 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, 250 headless + 94 Python
|
||||
escalation/access/radio loop, shift review, the Blender asset library, 250 headless + 97 Python
|
||||
tests, a clean screen-design judge and an optional Forward+ Desktop HQ build. This is a strong
|
||||
release-candidate foundation, not yet a 1.0 product.
|
||||
|
||||
@@ -32,19 +32,19 @@ release-candidate foundation, not yet a 1.0 product.
|
||||
|
||||
| Area | Current baseline | Remaining gap | Risk | Milestone |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 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 1.0 | 0.9.5 |
|
||||
| Dialog/UI | Complete screens and panel art, but copy/button behavior has not had a dedicated audit | Terminology, button states, long-string layout and full screen coverage need a focused pass | Inconsistent UI undermines first-hour clarity | 0.9.1 |
|
||||
| Animation/presentation | Procedural pose layers, portrait captures, reduced hem clipping | Final model/pose/facial readability and gear-fit acceptance before visual QA | Close-up jank reduces perceived quality | 0.9.2 |
|
||||
| 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 1.0 cannot claim accessible play | 0.9.1 / 0.9.5 |
|
||||
| Localization | English JSON table, validation and input-generated Help | Pseudo-locale/layout audit and translator workflow sign-off | Text expansion/clipping at release | 0.9.1 / 0.9.5 |
|
||||
| Performance/platform | 24-NPC headless budget (6.9 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.4 / 0.9.5 |
|
||||
| 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.9.5 |
|
||||
| QA/CI | Headless suite, smokes, screenshot compare, optional judge | Full visual judge gate, release-candidate smoke matrix, final gallery and release dry run | Regressions escape the release gate | 0.9.4 / 0.9.5 |
|
||||
| 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.9.5 |
|
||||
| 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.4 / 0.9.5 |
|
||||
| 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 1.0 | 0.10.0 |
|
||||
| Dialog/UI | Complete screens and panel art, but copy/button behavior has not had a dedicated audit | Terminology, button states, long-string layout and full screen coverage need a focused pass | Inconsistent UI undermines first-hour clarity | 0.9.2 |
|
||||
| Animation/presentation | Procedural pose layers, portrait captures, reduced hem clipping | Thorough NPC silhouette/face/gear/pose/LOD optimization before visual QA | Close-up jank reduces perceived quality | 0.9.3 |
|
||||
| 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 1.0 cannot claim accessible play | 0.9.2 / 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.9.2 / 0.10.0 |
|
||||
| Performance/platform | 24-NPC headless budget (6.9 ms), Compatibility/Web/HQ paths | Target hardware matrix, Web/HQ manual profiling, frame-time/memory evidence | Platform-specific drops or startup failures | 0.9.5 / 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, optional judge | Full visual judge gate, release-candidate smoke matrix, final gallery and release dry run | Regressions escape the release gate | 0.9.5 / 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.5 / 0.10.0 |
|
||||
| Post-launch | Stable 0.9 feature set | Live replay, more venues, VO/music, image-to-mesh props and seasonal content | Scope creep before launch | Post-1.0 |
|
||||
|
||||
## Patch 0.9.1 — Dialog, button and UI polish
|
||||
## Patch 0.9.2 — Dialog, button and UI polish
|
||||
|
||||
Goal: make every player-facing screen read consistently and pass the Python
|
||||
screen-design judge before any model/texture changes. No gameplay rules change.
|
||||
@@ -97,48 +97,103 @@ screen-design judge before any model/texture changes. No gameplay rules change.
|
||||
strings/scale pass, and the Python compare/judge gate has no unexplained
|
||||
diff.
|
||||
|
||||
## Patch 0.9.2 — NPC model refinement
|
||||
## Patch 0.9.3 — NPC visual optimization
|
||||
|
||||
Goal: make the eight character variants and their gear hold up in portraits and
|
||||
normal play without changing the `npc_base`/`Rig/Head` contract.
|
||||
Goal: make the eight character variants hold up in portrait, conversation and crowd
|
||||
views without changing the `npc_base`/`Rig/Head` contract or the skinned/procedural
|
||||
fallback behavior.
|
||||
|
||||
### Model and rig audit
|
||||
### Reference and acceptance criteria
|
||||
|
||||
- [ ] Render all eight variants from front, profile, back and portrait angles;
|
||||
compare faces, hair, ears, hands, shoes, proportions and gear fit.
|
||||
- [ ] Audit head/face readability (brow, eyes, lips, nose, hairline) at portrait
|
||||
distance; fix the highest-impact silhouette/face issues.
|
||||
- [ ] Audit gear fit and clipping: caps/beanie/hood/helmet/sunglasses, shoulder bag,
|
||||
backpack, SCBA tank, lanyard, hand items and the new coat/dress stride.
|
||||
- [ ] Audit coat/dress/skirt hems during walk, blocking, sitting and turning; fix
|
||||
remaining leg/hem intersections with weights, geometry or stride limits.
|
||||
- [ ] Re-check the frozen contract: mesh `npc_base`, bone names, five tint slots,
|
||||
front direction, attach points, triangle/vertex budgets and grounding.
|
||||
- [ ] Rebuild affected GLBs, bake AO, run `godot --headless --path . --import`, and
|
||||
run `blender_assets.py audit` plus fit/portrait checks.
|
||||
- [ ] Establish a portrait/contact-sheet baseline for all eight variants: front, three-quarter,
|
||||
profile, back, full body and a crowd-distance silhouette.
|
||||
- [ ] Define acceptance criteria for proportions, face readability, hair, hands, shoes, clothing
|
||||
silhouette, gear fit and animation at the gameplay camera height (1.7 m).
|
||||
- [ ] Record the camera/lighting/background used for comparison so model changes can be judged
|
||||
consistently; keep the existing portrait capture path deterministic.
|
||||
- [ ] Identify the highest-impact gaps from the current portraits (e.g. face depth, hair mass,
|
||||
neck/shoulder transition, hand/foot shape, coat/dress hem) and rank them by player visibility.
|
||||
- [ ] Publish a before/after NPC comparison sheet for review before changing the library.
|
||||
|
||||
### Pose and animation polish
|
||||
### Body proportions and silhouette
|
||||
|
||||
- [ ] Review idle, walk, warning, blocking, recognition, refusal, phone, clipboard,
|
||||
photo, film, sit and responder poses for pops or floating props.
|
||||
- [ ] Add/adjust short transitions for negotiation/reaction poses without breaking
|
||||
the seeded pose helpers or head-turn behavior.
|
||||
- [ ] Verify LOD tiers and the impostor at 16/24-NPC distances; re-run the budget
|
||||
smoke and record any triangle/draw-call changes.
|
||||
- [ ] Refresh the Blender review sheets and character portraits; keep per-asset
|
||||
previews local if gitignored.
|
||||
- [ ] Audit all variants against a shared human proportion guide (head height, shoulder width,
|
||||
torso length, hip width, limb length, foot length) and correct the worst outliers.
|
||||
- [ ] Improve neck, shoulder, torso and hip transitions so the silhouette reads as one body rather
|
||||
than stacked primitives; preserve the existing broad/slim/average build variations.
|
||||
- [ ] Add subtle body-shape variation between variants beyond uniform scaling (shoulder slope,
|
||||
torso taper, hip width, limb thickness) while staying inside the triangle/vertex budget.
|
||||
- [ ] Check the procedural fallback and `npc_base` silhouette against the library so the fallback
|
||||
remains a credible offline substitute.
|
||||
- [ ] Re-measure LOD 0/1/2 silhouettes and ensure the impostor still matches each variant at distance.
|
||||
|
||||
### Verification
|
||||
### Head, face and hair
|
||||
|
||||
- [ ] Add/update headless tests for any new pose/model contract behavior.
|
||||
- [ ] Capture the portrait and character gallery; compare against the design
|
||||
references and run the Python judge.
|
||||
- [ ] Update `docs/blender-assets.md`, architecture/status and `MEMORY.md` with the
|
||||
revised budgets, limitations and rebuild commands.
|
||||
- [ ] Exit: portrait/readability and gear fit pass, no obvious P0/P1 clipping remains,
|
||||
and the 24-NPC budget/full test suite are green.
|
||||
- [ ] Refine the head volume and jaw/cheek/chin proportions against the portrait concept; keep the
|
||||
face front direction unambiguous for the focus cone and head-turn.
|
||||
- [ ] Improve brow/eye-socket depth, eyelid/iris readability, nose bridge/tip, lips and ear shape
|
||||
without turning the low-poly face into a noisy mesh.
|
||||
- [ ] Audit hair caps, fringes, side locks, buns and beard silhouettes for gaps, intersections and
|
||||
obvious scalp seams; keep hair color in the tintable slot.
|
||||
- [ ] Verify hats/hoods/sunglasses/helmets still clear the refined brow, ears and hair; update gear
|
||||
fit measurements and rebuild any affected gear.
|
||||
- [ ] Check face readability under day, evening and LATE lighting and at the portrait capture’s
|
||||
shallow depth of field.
|
||||
|
||||
## Patch 0.9.3 — Texture and material refinement
|
||||
### Hands, feet and clothing
|
||||
|
||||
- [ ] Refine hands and fingers enough to read at conversation distance without exceeding the
|
||||
character triangle budget; check grip alignment for phone, cup, clipboard, camera, sign,
|
||||
flashlight, wand and radio.
|
||||
- [ ] Audit shoes/boots for silhouette, grounding and contact with the floor; preserve the
|
||||
responder and firefighter footwear language.
|
||||
- [ ] Improve clothing layer transitions at collars, cuffs, plackets, waistbands, pockets, badges
|
||||
and reflective bands; remove obvious z-fighting or floating detail.
|
||||
- [ ] Add believable fabric folds/wrinkles at elbows, knees, waist and hems where the extra
|
||||
geometry pays off in portraits; keep the fixed detail materials and five tint slots intact.
|
||||
- [ ] Re-check coat/dress/skirt hems during walking, blocking, sitting and turning; eliminate
|
||||
visible leg-through-hem clipping and floating hems.
|
||||
- [ ] Verify outfit tinting on all five contract slots and fixed-colour details (hi-vis, leather,
|
||||
steel, patches, plastic, rubber) remains unchanged.
|
||||
|
||||
### Gear and equipment fit
|
||||
|
||||
- [ ] Run the Blender `fit` report for every character and all head/back/chest/hand gear; record
|
||||
head-band, skirt/hip clearance and inner-face clearances.
|
||||
- [ ] Re-fit caps, beanie, hood, sunglasses and firefighter helmet against the refined face/hair;
|
||||
ensure eyebrow/ear clearance and a readable face with the hood up.
|
||||
- [ ] Re-fit backpack, shoulder bag and SCBA tank against the revised torso/hips; fix strap and
|
||||
tank intersections and keep attachments outside the body silhouette.
|
||||
- [ ] Verify lanyards, radios, phones, cups, clipboards, umbrellas, cameras, protest signs,
|
||||
flashlights and wands sit correctly in the hand/grip and do not float.
|
||||
- [ ] Add regression checks for gear attach parents, head/back silhouette clearance and hand-item
|
||||
grip; rebuild affected GLBs, bake AO and re-import.
|
||||
|
||||
### Poses, animation and performance
|
||||
|
||||
- [ ] Review idle, walk, warning, blocking, recognition, refusal, phone, clipboard, photo, film,
|
||||
sit, panic/flee and responder poses for pops, foot sliding, floating props and head-turn
|
||||
overshoot.
|
||||
- [ ] Add or refine short negotiation/reaction transitions (comply, argue, leave, recognize,
|
||||
block) without changing the seeded pose/outfit determinism.
|
||||
- [ ] Re-measure the skinned-avatar frame cost at 16/24 NPCs and the LOD/impostor thresholds;
|
||||
record triangle, mesh and draw-call changes before raising any cap.
|
||||
- [ ] Ensure the procedural fallback still passes the pose, target and crowd behavior tests after
|
||||
the model changes.
|
||||
|
||||
### Verification and handoff
|
||||
|
||||
- [ ] Rebuild the affected Blender assets, AO maps, manifest and review sheets; run
|
||||
`blender_assets.py audit`, `fit`, character imports and the full Godot test suite.
|
||||
- [ ] Recapture the portrait, character gallery and crowd-distance shots; compare old/new and run
|
||||
the Python screen-design judge.
|
||||
- [ ] Update `docs/blender-assets.md`, architecture/status, `MEMORY.md` and the changelog with the
|
||||
new budgets, limitations and rebuild commands.
|
||||
- [ ] Exit: all eight variants pass the portrait/readability criteria, gear and hems no longer
|
||||
clip in normal play, the 24-NPC budget remains green, and the visual judge has no unexplained
|
||||
regressions.
|
||||
|
||||
## Patch 0.9.4 — Texture and material refinement
|
||||
|
||||
Goal: improve close-range surface and character texture quality while keeping GL
|
||||
Compatibility/Web parity, deterministic assets and offline CI.
|
||||
@@ -176,7 +231,7 @@ Compatibility/Web parity, deterministic assets and offline CI.
|
||||
and skyline; document accepted trade-offs.
|
||||
- [ ] Update asset docs and the changelog/status with the promoted texture versions.
|
||||
|
||||
## Patch 0.9.4 — Integration, performance and judge gate
|
||||
## Patch 0.9.5 — Integration, performance and judge gate
|
||||
|
||||
Goal: integrate the UI/model/texture patches, prove the combined build on the
|
||||
target paths and leave a clean release-candidate handoff.
|
||||
@@ -209,18 +264,18 @@ target paths and leave a clean release-candidate handoff.
|
||||
- [ ] Update README, architecture, development status, changelog and TODO with the
|
||||
final patch-level results and any remaining gaps.
|
||||
- [ ] Tag/version or otherwise freeze `0.9.4` as the integration checkpoint before
|
||||
the `0.9.5` release candidate.
|
||||
the `0.10.0` release candidate.
|
||||
- [ ] Exit: combined build is functionally green, visually reviewed, performance
|
||||
measured and ready for the 0.9.5 content-lock/playtest phase.
|
||||
measured and ready for the 0.10.0 content-lock/playtest phase.
|
||||
|
||||
## Milestone 0.9.5 — Release candidate
|
||||
## 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 is the next shipped version before 1.0.
|
||||
|
||||
### Content lock and external playtest
|
||||
|
||||
- [ ] Declare a content/feature freeze for 0.9.5; only release-blocking fixes and balance changes
|
||||
- [ ] Declare a content/feature freeze for 0.10.0; only release-blocking fixes and balance changes
|
||||
may land after the freeze.
|
||||
- [ ] Produce a release-candidate build with the tutorial, campaign, all three venues, Help,
|
||||
accessibility settings and checkpoint/resume enabled.
|
||||
@@ -267,7 +322,7 @@ verify every distribution path. This is the next shipped version before 1.0.
|
||||
Gitea host cannot leave a partially uploaded release.
|
||||
- [ ] Verify release metadata, tag/version consistency, asset counts and download links; retain
|
||||
at least the latest 0.8/0.9 releases and document older-asset pruning.
|
||||
- [ ] Decide and document whether macOS signing/notarization is required for 0.9.5 or explicitly
|
||||
- [ ] Decide and document whether macOS signing/notarization is required for 0.10.0 or explicitly
|
||||
remains a 1.0 blocker; record the quarantine instructions either way.
|
||||
|
||||
### Legal, credits and platform policy
|
||||
@@ -299,7 +354,7 @@ verify every distribution path. This is the next shipped version before 1.0.
|
||||
settings, pause/resume, all venues and Desktop HQ fallback.
|
||||
- [ ] Confirm no P0/P1 defects remain; P2 items must be documented as known limitations or
|
||||
post-1.0 work.
|
||||
- [ ] Create the `v0.9.5` version bump, changelog entry and tag; build/publish the release and
|
||||
- [ ] Create the `v0.10.0` version bump, changelog entry and tag; build/publish the release and
|
||||
verify all assets and download links.
|
||||
- [ ] Exit: the release candidate is content-locked, externally played, legally reviewed,
|
||||
documented, reproducibly built, and approved as the final stepping stone to 1.0.0.
|
||||
|
||||
Reference in new issue
Block a user