Plan detailed 0.9.0 production-quality steps
Expand the next milestone into animation, audio, localization, accessibility, performance/platform, QA/visual baselines, Godot-version policy and exit criteria, with concrete verification work per workstream.
This commit is contained in:
1 parent
fac9b002c3
commit
b5d4d5fb87
1 file changed
+113
-19
@@ -5,10 +5,10 @@ see `AGENTS.md` for the workflow and `MEMORY.md` for the decisions behind these
|
|||||||
|
|
||||||
## Gap Analysis and v1.0.0 Roadmap
|
## Gap Analysis and v1.0.0 Roadmap
|
||||||
|
|
||||||
Baseline: **v0.7.2** (2026-11-01). Three playable venues, a complete escalation/access/radio
|
Baseline: **v0.8.1** (2026-11-01). Three playable venues, tutorial/campaign/checkpoint resume,
|
||||||
loop, shift review, a Blender character/gear/prop library, 231 headless + 94 Python tests, a
|
difficulty/help, a complete escalation/access/radio loop, shift review, the Blender asset library,
|
||||||
13/13 clean screen-design judge and an optional Forward+ Desktop HQ build. This is a strong
|
249 headless + 94 Python tests, a clean screen-design judge and an optional Forward+ Desktop HQ
|
||||||
vertical slice, not yet a 1.0 product.
|
build. This is a strong first-hour vertical slice, not yet a 1.0 product.
|
||||||
|
|
||||||
### Documentation audit (completed 2026-11-01)
|
### Documentation audit (completed 2026-11-01)
|
||||||
|
|
||||||
@@ -52,22 +52,116 @@ vertical slice, not yet a 1.0 product.
|
|||||||
Goal: content-complete, accessible enough for a public build, measured on the target platforms
|
Goal: content-complete, accessible enough for a public build, measured on the target platforms
|
||||||
and supported by a stable CI/release baseline.
|
and supported by a stable CI/release baseline.
|
||||||
|
|
||||||
- [ ] Animation/presentation pass: negotiation/reaction poses and transitions, readable faces in
|
### Animation and presentation
|
||||||
portrait, resolved camera height, and no coat/skirt leg clipping in normal movement.
|
|
||||||
- [ ] Audio pass: music/ambience direction, event SFX, radio/crowd mix, caption hooks and a VO
|
- [ ] Decide the first-person camera height against the concept frames; record the decision and
|
||||||
decision with production scope.
|
update the capture poses if the camera moves.
|
||||||
- [ ] Localization pass: all player-facing strings externalized, pseudo-locale layout test, font
|
- [ ] Add negotiation/reaction poses for warning, blocking, recognition, de-escalation and refusal,
|
||||||
fallback and a contributor translation workflow.
|
with short transitions instead of instant pose snaps.
|
||||||
- [ ] Accessibility pass: subtitles/captions, colour-independent access/escalation cues, motion
|
- [ ] Fix coat/skirt leg clipping in normal walking and blocking; adjust skin weights, hem
|
||||||
and flash options, full keyboard/gamepad parity and documented assist options.
|
geometry or a small corrective shape and verify from front/side/portrait angles.
|
||||||
- [ ] Performance pass: profile 24 live NPCs, all venues, Web and Desktop HQ; record frame-time,
|
- [ ] Run a portrait/close-up readability pass on all eight character variants, including hood,
|
||||||
draw-call and memory budgets; add regression checks where automation is possible.
|
helmet, cap and sunglasses; capture a repeatable portrait set.
|
||||||
- [ ] QA pass: automated end-to-end shift for each venue, full smoke matrix, screenshot/judge
|
- [ ] Add pose/animation regression checks where practical (bone/pose state plus the portrait
|
||||||
baselines, and a documented manual judge budget/model pin.
|
capture) and re-measure the skinned-avatar frame cost.
|
||||||
- [ ] Resolve the Godot baseline: choose one supported version (or an explicit 4.3-CI/4.7-local
|
- [ ] Exit: normal movement, blocking and portrait frames have no obvious clipping or pose
|
||||||
matrix), align export templates and visual smoke results, and document the policy.
|
pops; the camera decision is documented and visual baselines are refreshed.
|
||||||
|
|
||||||
|
### Audio
|
||||||
|
|
||||||
|
- [ ] Write the audio direction: crowd ambience, venue mood, UI/radio ticks, footsteps, warning
|
||||||
|
and escalation cues, and whether music is needed.
|
||||||
|
- [ ] Map every gameplay event to an SFX/ambience hook, including tutorial prompts, campaign
|
||||||
|
transitions, radio send/failure, door lock and responder arrival.
|
||||||
|
- [ ] Add Music, SFX and Ambience volume controls to Settings and persist them; keep the dummy
|
||||||
|
audio server safe for headless tests.
|
||||||
|
- [ ] Add caption metadata to audio cues and tie it to the accessibility captions.
|
||||||
|
- [ ] Make the VO decision: text-only for 0.9, or a scoped voice pipeline with content list,
|
||||||
|
recording/casting plan, licensing and fallback text.
|
||||||
|
- [ ] Add audio smoke coverage for the new hooks and mix levels; document the final mix targets.
|
||||||
|
|
||||||
|
### Localization
|
||||||
|
|
||||||
|
- [ ] Audit hardcoded player-facing text, starting with Help, campaign/status screens, tutorial
|
||||||
|
overlay, review labels and new dialogue; move everything into `strings.en.json`.
|
||||||
|
- [ ] Add a pseudo-locale or long-string expansion test that runs the UI at 1.5–2× text length and
|
||||||
|
flags clipped buttons, labels and HUD rows.
|
||||||
|
- [ ] Verify font coverage for punctuation, arrows, accented characters and non-Latin sample
|
||||||
|
glyphs; document the fallback font policy.
|
||||||
|
- [ ] Write the translator workflow: key naming, source-of-truth file, placeholders, review and
|
||||||
|
screenshot checks, and how to add a locale without code changes.
|
||||||
|
- [ ] Add localization coverage tests for every named input action and every new 0.9 UI surface.
|
||||||
|
- [ ] Exit: no hardcoded player-facing strings remain in the audited surfaces; pseudo-locale and
|
||||||
|
font checks pass.
|
||||||
|
|
||||||
|
### Accessibility
|
||||||
|
|
||||||
|
- [ ] Add subtitles/captions for tutorial prompts, radio/phone dialogue and key audio cues, with
|
||||||
|
a Settings toggle and readable defaults.
|
||||||
|
- [ ] Audit all colour-dependent cues (access, escalation, crowd, door, flashlight) and add a
|
||||||
|
colour-independent shape/text/icon alternative where missing.
|
||||||
|
- [ ] Add motion/flash options: disable camera bob/shake, reduce rapid flashes, and verify the
|
||||||
|
precision-walk/HUD transitions remain usable.
|
||||||
|
- [ ] Verify complete keyboard-only and gamepad-only paths for menus, tutorial, inspection, wheel,
|
||||||
|
radio (including hold timing), review and Help.
|
||||||
|
- [ ] Test HUD/font scaling at minimum and maximum settings, including long localized strings and
|
||||||
|
the body-camera overlay.
|
||||||
|
- [ ] Write an accessibility statement and a manual accessibility checklist; add automated coverage
|
||||||
|
for input parity and caption/hint availability.
|
||||||
|
- [ ] Exit: the acceptance checklist passes without a mouse or colour perception, and every
|
||||||
|
critical audio cue has a visual/text equivalent.
|
||||||
|
|
||||||
|
### Performance and platform
|
||||||
|
|
||||||
|
- [ ] Define the target hardware matrix (minimum/recommended desktop, Web browser and Desktop HQ
|
||||||
|
Vulkan) and record baseline frame-time, draw calls and memory per venue.
|
||||||
|
- [ ] Add a repeatable 24-NPC performance smoke across all venues, including crowd panic and the
|
||||||
|
studio arrival; keep the 16-NPC result as the regression floor.
|
||||||
|
- [ ] Profile Web and Desktop HQ separately; investigate LOD/impostor thresholds, prop draw calls,
|
||||||
|
shadow cost and skinning CPU before adding more avatars.
|
||||||
|
- [ ] Add frame-time/memory regression gates where automation is possible and document manual
|
||||||
|
capture steps for the rest.
|
||||||
|
- [ ] Verify the Compatibility/Web fallback and HQ Vulkan fallback on the target matrix; record
|
||||||
|
startup failures and GPU-driver requirements.
|
||||||
|
- [ ] Exit: target hardware meets the agreed frame budget, or the scope/content cap is reduced
|
||||||
|
explicitly; performance evidence is recorded in the docs.
|
||||||
|
|
||||||
|
### QA automation and visual baselines
|
||||||
|
|
||||||
|
- [ ] Add an automated end-to-end shift for each venue that covers spawn, access, escalation,
|
||||||
|
radio, review and campaign advancement.
|
||||||
|
- [ ] Consolidate the smoke matrix into one documented command/checklist; include tutorial,
|
||||||
|
checkpoint resume, campaign transition, Help, radio and all venue paths.
|
||||||
|
- [ ] Refresh the screenshot gallery and realism baselines; run `compare` and the pinned judge,
|
||||||
|
recording the model, spend and any accepted review verdicts.
|
||||||
|
- [ ] Keep the vision judge optional and cost-capped; document the manual judge budget/model pin
|
||||||
|
and never make an external API a CI release gate.
|
||||||
|
- [ ] Add a release-candidate dry run that builds every artifact, verifies installers/Web/HQ and
|
||||||
|
records checksums.
|
||||||
|
- [ ] Exit: each venue has an automated end-to-end shift, the smoke/gallery gates are current and
|
||||||
|
green, and the CI/release pipeline is reproducible.
|
||||||
|
|
||||||
|
### Godot baseline and version policy
|
||||||
|
|
||||||
|
- [ ] Choose the supported engine policy: one pinned version, or an explicit CI/local matrix
|
||||||
|
(currently 4.3 CI vs 4.7.2 local).
|
||||||
|
- [ ] If upgrading, run import/headless/screenshot/HQ checks, remove temporary version-specific
|
||||||
|
light-falloff branches where possible, and align export templates, `.uid` policy and CI.
|
||||||
|
- [ ] Document the upgrade/rollback procedure and the visual-smoke requirements for engine bumps.
|
||||||
|
- [ ] Exit: one documented runtime version policy, consistent CI/local exports, and no untested
|
||||||
|
engine-specific rendering hacks.
|
||||||
|
|
||||||
|
### Verification and exit criteria
|
||||||
|
|
||||||
|
- [ ] Add/verify headless tests for every new 0.9 system, plus localization, accessibility and
|
||||||
|
performance checks that can run without a display.
|
||||||
|
- [ ] Run the full smoke matrix and capture/label a clean 0.9 screenshot set.
|
||||||
|
- [ ] Run a manual accessibility/localization review and record findings; fix P0/P1 blockers.
|
||||||
|
- [ ] Update architecture, ADRs, status, README, changelog and roadmap in the same change as the
|
||||||
|
implementation.
|
||||||
- [ ] Exit: production content is feature-complete, accessibility/localization acceptance criteria
|
- [ ] Exit: production content is feature-complete, accessibility/localization acceptance criteria
|
||||||
pass, target hardware matrix is measured, and no P0/P1 defect remains open.
|
pass, target hardware is measured, the engine policy is documented, and no P0/P1 defect is
|
||||||
|
open.
|
||||||
|
|
||||||
## Milestone 0.9.5 — Release candidate
|
## Milestone 0.9.5 — Release candidate
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user