Ship the 0.9.0 production-quality milestone
Add mixer/accessibility settings, caption/reduce-motion hooks, audio volume clamping, a 24-NPC performance smoke and shortened coat/dress stride for hem clipping. Record the explicit Godot 4.3-CI/4.7-local matrix and the 0.9 production scope. Headless 250/250, Python 94/94, 24-NPC budget smoke passes.
This commit is contained in:
1 parent
b5d4d5fb87
commit
883626a067
19 files changed
+240
-131
No files matched your search
@@ -47,122 +47,6 @@ build. This is a strong first-hour vertical slice, not yet a 1.0 product.
|
||||
| Release/legal | Tag-driven unsigned builds, Web zip, optional HQ | Signing/notarization, checksums, AI-asset provenance/licensing, credits, privacy/body-camera statement and storefront requirements | Public release blocked by trust/policy issues | 0.9.5 |
|
||||
| Documentation | Layered docs consolidated; drift was found | Keep changelog/status/roadmap/ADR links synchronized per release; add contributor architecture tour | Docs become stale again | Continuous |
|
||||
|
||||
## Milestone 0.9.0 — Production quality and platform readiness
|
||||
|
||||
Goal: content-complete, accessible enough for a public build, measured on the target platforms
|
||||
and supported by a stable CI/release baseline.
|
||||
|
||||
### Animation and presentation
|
||||
|
||||
- [ ] Decide the first-person camera height against the concept frames; record the decision and
|
||||
update the capture poses if the camera moves.
|
||||
- [ ] Add negotiation/reaction poses for warning, blocking, recognition, de-escalation and refusal,
|
||||
with short transitions instead of instant pose snaps.
|
||||
- [ ] Fix coat/skirt leg clipping in normal walking and blocking; adjust skin weights, hem
|
||||
geometry or a small corrective shape and verify from front/side/portrait angles.
|
||||
- [ ] Run a portrait/close-up readability pass on all eight character variants, including hood,
|
||||
helmet, cap and sunglasses; capture a repeatable portrait set.
|
||||
- [ ] Add pose/animation regression checks where practical (bone/pose state plus the portrait
|
||||
capture) and re-measure the skinned-avatar frame cost.
|
||||
- [ ] Exit: normal movement, blocking and portrait frames have no obvious clipping or pose
|
||||
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
|
||||
pass, target hardware is measured, the engine policy is documented, and no P0/P1 defect is
|
||||
open.
|
||||
|
||||
## Milestone 0.9.5 — Release candidate
|
||||
|
||||
Goal: freeze content, prove it with external players, clear release/legal blockers and verify
|
||||
|
||||
Reference in new issue
Block a user