Reorder TODO and docs around character and map priorities
This commit is contained in:
1 parent
08e9044593
commit
51f537720f
8 files changed
+330
-220
No files matched your search
@@ -14,6 +14,23 @@ The game is about **judgment, communication, access verification, and proportion
|
|||||||
- **Emergency help is a last resort.** Responders handle crises the guard cannot safely manage; calling them has costs.
|
- **Emergency help is a last resort.** Responders handle crises the guard cannot safely manage; calling them has costs.
|
||||||
- **Readability beats raw fidelity.** The GL Compatibility renderer, clear silhouettes, the focus ring, and the HUD stay legible.
|
- **Readability beats raw fidelity.** The GL Compatibility renderer, clear silhouettes, the focus ring, and the HUD stay legible.
|
||||||
|
|
||||||
|
## Development Priorities
|
||||||
|
|
||||||
|
The active planning order is set in [`TODO.md`](TODO.md) and in `AGENTS.md`:
|
||||||
|
|
||||||
|
1. **Character development (unversioned).** Expand the owned procedural character library with
|
||||||
|
crowd, age, build, hair and outfit variety. Keep the frozen bone/tint/gear contract; see
|
||||||
|
[ADR-0015](docs/adr/0015-npc-model-variety-sourcing.md) and
|
||||||
|
[`docs/npc-model-sourcing.md`](docs/npc-model-sourcing.md). Quaternius is a reference;
|
||||||
|
MakeHuman is deferred to a separate local pipeline.
|
||||||
|
2. **Local map development (unversioned).** Move beyond stylized venue reconstruction with
|
||||||
|
licensed OpenStreetMap and 3D building data, downloaded reference imagery for photoreal
|
||||||
|
facades, AI-assisted composition, and a Gaussian-splatting evaluation that stays in the
|
||||||
|
development pipeline unless it proves runtime-safe.
|
||||||
|
3. **Versioned release hardening.** The 0.10.0 release candidate and later semantic versions come
|
||||||
|
after the unversioned development tracks in planning order. Versions are assigned only when a
|
||||||
|
track's scope is accepted into a release.
|
||||||
|
|
||||||
## Core Gameplay Loop
|
## Core Gameplay Loop
|
||||||
|
|
||||||
1. Watch the entrance, steps, queue, and sidewalk.
|
1. Watch the entrance, steps, queue, and sidewalk.
|
||||||
@@ -152,14 +169,15 @@ The action wheel prioritizes de-escalation: Stop, Look, Point, No, Ask, Inspect,
|
|||||||
|
|
||||||
The visual direction is readable stylized realism:
|
The visual direction is readable stylized realism:
|
||||||
|
|
||||||
- **Blender library:** 8 skinned NPC variants, 18 gear pieces, and 20 street/venue props, with baked albedo/normal/AO/ORM maps, a manifest, and procedural fallbacks. `Rig/Head` stays the focus anchor.
|
- **Character direction:** 8 skinned NPC variants, 18 gear pieces and 20 street/venue props, with four crowd-variety variants prototyped. The generator-first expansion is the active character track ([ADR-0015](docs/adr/0015-npc-model-variety-sourcing.md)); Quaternius is a reference and MakeHuman is deferred to a local pipeline.
|
||||||
- **Realism pass:** AI-assisted per-phase skyline panoramas, v2 surface tiles with normal maps, wet asphalt at night, a warm day haze, phase-specific sun/exposure/fog, a visible flashlight beam, and denser foliage.
|
- **Realism pass:** AI-assisted per-phase skyline panoramas, v2 surface tiles with normal maps, wet asphalt at night, a warm day haze, phase-specific sun/exposure/fog, a visible flashlight beam, and denser foliage.
|
||||||
|
- **Local map direction:** the venues are currently stylized reconstructions. The local-map track evaluates licensed OpenStreetMap/3D building data, licensed reference photography, AI-assisted composition and Gaussian splatting as a development tool; online data and splat rendering are not runtime dependencies.
|
||||||
- **References and QA:** runtime UI art lives in `assets/images/ui/`; reference/art-direction sets live in `docs/screens/designs/` and `docs/screens/concepts/`; captures live in `docs/screenshots/`; realism runs live in `docs/screens/realism/`. `screen_designs.py compare/judge` and `tools/check_screenshots.sh` guard drift.
|
- **References and QA:** runtime UI art lives in `assets/images/ui/`; reference/art-direction sets live in `docs/screens/designs/` and `docs/screens/concepts/`; captures live in `docs/screenshots/`; realism runs live in `docs/screens/realism/`. `screen_designs.py compare/judge` and `tools/check_screenshots.sh` guard drift.
|
||||||
- **Storage convention:** see [ADR-0014](docs/adr/0014-runtime-image-root.md). Never overwrite an existing image; new outputs get a new path or `-vN` suffix.
|
- **Storage convention:** see [ADR-0014](docs/adr/0014-runtime-image-root.md). Never overwrite an existing image; new outputs get a new path or `-vN` suffix.
|
||||||
|
|
||||||
The path from the current vertical slice to the 0.10.0 release candidate — content depth, onboarding, accessibility, platform QA and release readiness — is tracked in [`TODO.md`](TODO.md); this plan stays at the product/design level.
|
The active planning order — unversioned character and local-map development first, then the versioned 0.10.0 release-candidate hardening and later releases — is tracked in [`TODO.md`](TODO.md); this plan stays at the product/design level.
|
||||||
|
|
||||||
Primary decisions: [ADR-0007](docs/adr/0007-locomotion-and-input-layers.md), [ADR-0008](docs/adr/0008-cone-focus-and-head-ring.md), [ADR-0009](docs/adr/0009-radial-action-menu.md), [ADR-0010](docs/adr/0010-procedural-npc-presentation.md), [ADR-0011](docs/adr/0011-aim-free-selection-and-precision-walk.md), [ADR-0012](docs/adr/0012-surface-materials-and-generated-props.md), [ADR-0013](docs/adr/0013-blender-authored-npc-characters.md).
|
Primary decisions: [ADR-0007](docs/adr/0007-locomotion-and-input-layers.md), [ADR-0008](docs/adr/0008-cone-focus-and-head-ring.md), [ADR-0009](docs/adr/0009-radial-action-menu.md), [ADR-0010](docs/adr/0010-procedural-npc-presentation.md), [ADR-0011](docs/adr/0011-aim-free-selection-and-precision-walk.md), [ADR-0012](docs/adr/0012-surface-materials-and-generated-props.md), [ADR-0013](docs/adr/0013-blender-authored-npc-characters.md), [ADR-0015](docs/adr/0015-npc-model-variety-sourcing.md).
|
||||||
|
|
||||||
## Tech Stack
|
## Tech Stack
|
||||||
|
|
||||||
@@ -176,7 +194,7 @@ Primary decisions: [ADR-0007](docs/adr/0007-locomotion-and-input-layers.md), [AD
|
|||||||
|
|
||||||
## Versioning and Delivery
|
## Versioning and Delivery
|
||||||
|
|
||||||
`config/version` in `project.godot` is the single version source (currently `0.10.0-rc.1`). Releases are tagged `v<version>`; the CI pipeline builds and publishes the standard artifacts plus the optional Desktop HQ zip. Version bumps follow [Semantic Versioning](https://semver.org/). See [`docs/RELEASING.md`](docs/RELEASING.md) and [`README.md`](README.md) for commands.
|
`config/version` in `project.godot` is the single version source (currently `0.10.0-rc.1`). Releases are tagged `v<version>`; the CI pipeline builds and publishes the standard artifacts plus the optional Desktop HQ zip. Version bumps follow [Semantic Versioning](https://semver.org/): every major, minor and patch increment needs a changelog entry, a local `tools/build_releases.sh` build, and artifact/checksum verification before tagging. Unversioned development tracks do not receive a version until their scope enters a release. See [`docs/RELEASING.md`](docs/RELEASING.md) and [`README.md`](README.md) for commands.
|
||||||
|
|
||||||
## Design Direction
|
## Design Direction
|
||||||
|
|
||||||
@@ -189,4 +207,3 @@ The game should feel like a tense workplace simulation with occasional crisis mo
|
|||||||
- A rare Bob Dobbs cameo (Easter-egg appearance; placement note in `MEMORY.md`).
|
- A rare Bob Dobbs cameo (Easter-egg appearance; placement note in `MEMORY.md`).
|
||||||
- Specific unusual NPC behaviors, such as slapping their own face, using hands as scissors, or interacting with props unexpectedly.
|
- Specific unusual NPC behaviors, such as slapping their own face, using hands as scissors, or interacting with props unexpectedly.
|
||||||
- Live 3D body-camera replay; additional venues or seasonal events; real voice/dialogue audio; an image-to-mesh prop pipeline.
|
- Live 3D body-camera replay; additional venues or seasonal events; real voice/dialogue audio; an image-to-mesh prop pipeline.
|
||||||
- More varied NPC silhouettes (age, build, hair and outfit), using either an extended procedural character generator or a reviewed CC0/CC-BY source; the evaluation and pending decision are in `docs/npc-model-sourcing.md`.
|
|
||||||
@@ -6,6 +6,16 @@ The central design goal is simple:
|
|||||||
|
|
||||||
> The player wins by choosing the lowest level of escalation that keeps everyone safe.
|
> The player wins by choosing the lowest level of escalation that keeps everyone safe.
|
||||||
|
|
||||||
|
## Development Priorities
|
||||||
|
|
||||||
|
The active planning order lives in [`TODO.md`](TODO.md) and [`AGENTS.md`](AGENTS.md):
|
||||||
|
|
||||||
|
1. **Character development** — crowd, age, build, hair and outfit variety on the owned procedural library, keeping the frozen NPC contract. Source evaluation and the licence decision are in [`docs/npc-model-sourcing.md`](docs/npc-model-sourcing.md).
|
||||||
|
2. **Local map development** — licensed OpenStreetMap/3D data, reference-derived photoreal facades, AI-assisted composition and a Gaussian-splatting development evaluation.
|
||||||
|
3. **Versioned release hardening** — the 0.10.0 release candidate and later semantic versions follow the unversioned development tracks.
|
||||||
|
|
||||||
|
Versions are assigned only when a track's scope is accepted into a release. Every major, minor and patch version requires a changelog entry, a local release build and artifact verification before tagging.
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
@@ -107,12 +117,14 @@ Full setup, every run/test/smoke command, and the controls table are in
|
|||||||
|
|
||||||
## Project Documentation
|
## Project Documentation
|
||||||
|
|
||||||
- [`PLAN.md`](PLAN.md) — Game design plan and scenario details.
|
- [`PLAN.md`](PLAN.md) — Game design plan, development priorities and scenario details.
|
||||||
- [`AGENTS.md`](AGENTS.md) — Development and collaboration workflow.
|
- [`TODO.md`](TODO.md) — Priority-ordered tasks: character and local-map development, release milestones, and future work.
|
||||||
|
- [`docs/README.md`](docs/README.md) — Documentation index, current priorities and visual previews.
|
||||||
|
- [`docs/npc-model-sourcing.md`](docs/npc-model-sourcing.md) — Character-source evaluation, licence rules and the character-development plan.
|
||||||
|
- [`AGENTS.md`](AGENTS.md) — Development, commit, build and collaboration workflow.
|
||||||
- [`DONE.md`](DONE.md) — Completed task sections.
|
- [`DONE.md`](DONE.md) — Completed task sections.
|
||||||
- [`MEMORY.md`](MEMORY.md) — Persistent session notes.
|
- [`MEMORY.md`](MEMORY.md) — Persistent session notes.
|
||||||
- [`CHANGELOG.md`](CHANGELOG.md) — User-facing changes by version.
|
- [`CHANGELOG.md`](CHANGELOG.md) — User-facing changes by version.
|
||||||
- [`docs/README.md`](docs/README.md) — Documentation index and visual previews.
|
|
||||||
- [`docs/architecture.md`](docs/architecture.md) — arc42-style architecture documentation.
|
- [`docs/architecture.md`](docs/architecture.md) — arc42-style architecture documentation.
|
||||||
- [`docs/gameplay.md`](docs/gameplay.md) — Gameplay systems, venues, and the escalation model.
|
- [`docs/gameplay.md`](docs/gameplay.md) — Gameplay systems, venues, and the escalation model.
|
||||||
- [`docs/hollywood-boulevard-map.md`](docs/hollywood-boulevard-map.md) — Real-site references, game mapping and limitations for the Hollywood venue.
|
- [`docs/hollywood-boulevard-map.md`](docs/hollywood-boulevard-map.md) — Real-site references, game mapping and limitations for the Hollywood venue.
|
||||||
@@ -130,7 +142,6 @@ Full setup, every run/test/smoke command, and the controls table are in
|
|||||||
- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in [`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`](docs/blender_previews/sheet_texture_refinement_0.9.5.jpg).
|
- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in [`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`](docs/blender_previews/sheet_texture_refinement_0.9.5.jpg).
|
||||||
- [`docs/npc-proportion-audit.md`](docs/npc-proportion-audit.md) — NPC proportion measurements against the shared stylized guide.
|
- [`docs/npc-proportion-audit.md`](docs/npc-proportion-audit.md) — NPC proportion measurements against the shared stylized guide.
|
||||||
- [`docs/adr/`](docs/adr/) — Architecture Decision Records.
|
- [`docs/adr/`](docs/adr/) — Architecture Decision Records.
|
||||||
- [`TODO.md`](TODO.md) — Active tasks plus the 0.x gap analysis and milestone roadmap.
|
|
||||||
|
|
||||||
## Development Status
|
## Development Status
|
||||||
|
|
||||||
@@ -141,9 +152,12 @@ Walk of Fame/awning surfaces and per-phase skyline haze), on top of the v0.9.4
|
|||||||
NPC visual optimization and the v0.9.3 UI/accessibility polish pass. It builds on
|
NPC visual optimization and the v0.9.3 UI/accessibility polish pass. It builds on
|
||||||
v0.9.2's Hollywood/Joke Shop map rebuilds, v0.9.1's Godot 4.7.2 baseline,
|
v0.9.2's Hollywood/Joke Shop map rebuilds, v0.9.1's Godot 4.7.2 baseline,
|
||||||
v0.9.0's production-quality pass, v0.8's
|
v0.9.0's production-quality 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)
|
tutorial/campaign/resume work and the v0.7.x venue/gear/judge work. The active
|
||||||
for the implemented list and [`TODO.md`](TODO.md) for the 0.x roadmap. Manual
|
planning priorities are the unversioned character and local-map development tracks;
|
||||||
verification uses the [`docs/smoke-checklist.md`](docs/smoke-checklist.md).
|
the 0.10.0 release candidate is the next versioned release. See
|
||||||
|
[`docs/development-status.md`](docs/development-status.md) for the implemented list
|
||||||
|
and [`TODO.md`](TODO.md) for the priority-ordered roadmap. Manual verification uses
|
||||||
|
the [`docs/smoke-checklist.md`](docs/smoke-checklist.md).
|
||||||
|
|
||||||
## Credits, Privacy and Accessibility
|
## Credits, Privacy and Accessibility
|
||||||
|
|
||||||
|
|||||||
@@ -3,210 +3,16 @@
|
|||||||
Work is grouped by theme. Each item should be small enough to complete and verify on its own;
|
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.
|
see `AGENTS.md` for the workflow and `MEMORY.md` for the decisions behind these plans.
|
||||||
|
|
||||||
## Gap Analysis and 0.x Roadmap
|
**Priority order:** Character development → Local map development → versioned release milestones →
|
||||||
|
future/deferred work. See `AGENTS.md` §Priority and Versioning.
|
||||||
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 a strong
|
|
||||||
release-candidate foundation, not yet a 0.10.0 release candidate.
|
|
||||||
|
|
||||||
### 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 |
|
|
||||||
| --- | --- | --- | --- | --- |
|
|
||||||
| 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:** map optimization, the **pre-build NPC revisit**, the
|
|
||||||
**0.9.3 UI polish**, **0.9.4 NPC visual optimization**, **0.9.5 texture
|
|
||||||
refinement** and **0.9.6 integration** passes are complete (all moved to
|
|
||||||
`DONE.md`). The **0.10.0 release candidate** is next: content lock, external
|
|
||||||
playtest, balance, save migration and release/legal sign-off. The source version
|
|
||||||
is 0.10.0-rc.1; the v0.9.6 release is published.
|
|
||||||
|
|
||||||
## 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 minor release after the 0.9.x patch line.
|
|
||||||
|
|
||||||
### Content lock and external playtest
|
|
||||||
|
|
||||||
- [x] Declare a content/feature freeze for 0.10.0; only release-blocking fixes and balance changes
|
|
||||||
may land after the freeze. (Frozen 2026-11-03 after the 0.9.6 integration
|
|
||||||
checkpoint; this pass is limited to release reliability, accessibility,
|
|
||||||
balance evidence and packaging.)
|
|
||||||
- [x] Produce a release-candidate build with the tutorial, campaign, all three venues, Help,
|
|
||||||
accessibility settings and checkpoint/resume enabled. (Clean worktree
|
|
||||||
`a9658ec` built `0.10.0-rc.1`: Linux 161.5 MB, Windows 197.2 MB, macOS
|
|
||||||
148.0 MB, Web 97.8 MB and HQ 241.6 MB. The Web/HQ archives include the
|
|
||||||
credits, privacy, accessibility and known-limitations pages; SHA-256
|
|
||||||
manifests were written; the Linux and HQ binaries launched headless and the
|
|
||||||
Web index/wasm/pck/docs returned HTTP 200. Not published because external
|
|
||||||
playtest and legal approval remain open.)
|
|
||||||
- [ ] Run at least five first-time-player sessions covering the tutorial and one full venue shift;
|
|
||||||
record where players get stuck, misunderstand evidence or choose disproportionate escalation.
|
|
||||||
- [ ] Triage findings by severity (P0/P1/P2) and fix every P0/P1 onboarding/accessibility issue;
|
|
||||||
keep the rest as explicit known limitations or post-0.10 items.
|
|
||||||
- [ ] Re-run the affected tutorial/campaign smokes after each fix and capture a fresh first-hour
|
|
||||||
walkthrough for the release notes.
|
|
||||||
|
|
||||||
### Balance and fairness pass
|
|
||||||
|
|
||||||
- [x] Define measurable targets for routine compliance, access-decision accuracy, peaceful
|
|
||||||
resolution, justified emergency calls and false-positive/false-negative rates.
|
|
||||||
(`docs/balance-acceptance.md` defines cohorts, denominators, 36 matrix cells,
|
|
||||||
seeds, thresholds and matched emergency-first comparisons. Documentation verified;
|
|
||||||
targets are not measured results.)
|
|
||||||
- [ ] Run scripted venue sweeps across easy/normal/hard and all four phases; compare outcomes and
|
|
||||||
tune event weights, reaction tables, compliance and report strictness where targets fail.
|
|
||||||
- [ ] Review emergency calls against actual danger: no routine behavior should make emergency the
|
|
||||||
dominant winning move, and genuine threats must remain answerable. Include the
|
|
||||||
type-derived `_read_npc_truth()` mismatch with observed threats/forced entry;
|
|
||||||
use independently labelled behavior evidence, not the helper as its own oracle.
|
|
||||||
- [ ] Verify the reputation grades, debrief explanations and campaign progression still communicate
|
|
||||||
the de-escalation-first design after tuning.
|
|
||||||
- [ ] Record the balance evidence and any deliberate exceptions in `docs/development-status.md`
|
|
||||||
or `MEMORY.md`.
|
|
||||||
|
|
||||||
### Save migration and session reliability
|
|
||||||
|
|
||||||
- [x] Add fixtures for a 0.8-era settings/campaign/history save and a 0.9.0 checkpoint; verify
|
|
||||||
migration/default-filling and a clean first launch with no files. (Committed
|
|
||||||
fixtures under `src/test/fixtures/saves/`; 9 migration/failure tests cover
|
|
||||||
old settings/campaign/history, the 0.9.0 checkpoint, all three venue
|
|
||||||
checkpoint round-trips, clean install, corrupt JSON and a blocked atomic
|
|
||||||
replace. Suite is now 272 tests.)
|
|
||||||
- [x] Test fresh install → tutorial → campaign → pause → quit → resume → review → next venue on
|
|
||||||
an isolated user-data directory. (Tutorial and campaign smokes shared one
|
|
||||||
isolated `XDG_DATA_HOME`; tutorial completion/replay/skip then campaign
|
|
||||||
resume/review-continue/help both passed. Pause/menu behavior is covered by
|
|
||||||
`smoke_session_shell.gd`.)
|
|
||||||
- [x] Test corrupt JSON, partial temp files, missing optional fields and a failed atomic rename;
|
|
||||||
confirm fallback behavior never destroys a valid save. (Corrupt/partial files
|
|
||||||
fall back to defaults; a blocked temp path reports an error and leaves the
|
|
||||||
prior valid settings intact. `_load_json` now uses the non-logging JSON
|
|
||||||
instance parser.)
|
|
||||||
- [x] Verify checkpoint resume after all three venues, after an incident, with NPCs at the door and
|
|
||||||
with flashlight/body-camera/door state set. (The migration suite round-trips a
|
|
||||||
checkpoint for Hollywood, the Joke Shop and the TV Studio with an open
|
|
||||||
incident, one NPC row, flashlight/body-camera/door flags; the campaign smoke
|
|
||||||
resumes a live checkpoint through the real `GameManager`.)
|
|
||||||
- [x] Document save locations, schema versions, reset behavior and rollback/export instructions in
|
|
||||||
`docs/getting-started.md` and the release notes. (`getting-started.md` now
|
|
||||||
documents the four files, version-1 checkpoint, atomic write/fallback,
|
|
||||||
clean install, reset and backup/rollback.)
|
|
||||||
|
|
||||||
### Release engineering and distribution
|
|
||||||
|
|
||||||
- [x] Run `tools/build_releases.sh` from a clean checkout and verify Linux/Windows/macOS/Web/HQ
|
|
||||||
artifact names, sizes and checksums. (Clean worktree `a9658ec` built the
|
|
||||||
five artifacts listed above; `PUBLISH_DRY_RUN=1` produced and printed
|
|
||||||
`build/SHA256SUMS-0.10.0-rc.1.txt` without touching the API.)
|
|
||||||
- [ ] Smoke-test fresh Linux portable/AppImage, Windows portable/installer, macOS unzip/launch,
|
|
||||||
Web static hosting and Desktop HQ Vulkan fallback on the target matrix.
|
|
||||||
(Linux portable and Desktop HQ launched headless; Web files served over a
|
|
||||||
local static server with HTTP 200. AppImage/installer were not built locally
|
|
||||||
and Windows/macOS launch testing still needs the target matrix.)
|
|
||||||
- [x] Add a disk-space preflight and retention policy to the release/publish scripts so a full
|
|
||||||
Gitea host cannot leave a partially uploaded release. (`publish_release.sh`
|
|
||||||
checks artifact size/free space, writes SHA-256 checksums, supports
|
|
||||||
`PUBLISH_DRY_RUN`, rolls back uploaded assets/new releases on failure, and
|
|
||||||
offers opt-in `RETAIN_RELEASES` pruning; dry-run verified.)
|
|
||||||
- [x] 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.
|
|
||||||
(Source/version and tag are both 0.9.6; all seven published releases carry
|
|
||||||
5–7 assets, including the retained v0.8.0/v0.8.1/v0.9.0/v0.9.1 line.
|
|
||||||
`publish_release.sh` documents opt-in `RETAIN_RELEASES` pruning and
|
|
||||||
`RELEASING.md` describes the seven-release policy.)
|
|
||||||
- [x] Decide and document whether macOS signing/notarization is required for 0.10.0 or explicitly
|
|
||||||
remains a future release blocker; record the quarantine instructions either way.
|
|
||||||
(0.10.0 ships unsigned with quarantine instructions; signing/notarization
|
|
||||||
remains an explicit public-release blocker in `RELEASING.md` and
|
|
||||||
`known-limitations.md`.)
|
|
||||||
|
|
||||||
### Legal, credits and platform policy
|
|
||||||
|
|
||||||
- [x] Audit AI-assisted asset provenance and licenses; record source/model usage and any
|
|
||||||
redistribution constraints for textures, characters, props and UI art.
|
|
||||||
(`CREDITS.md` records the Blender/OpenRouter toolchain, default model slugs,
|
|
||||||
missing per-file generation metadata and the commercial-rights review as an
|
|
||||||
explicit release blocker.)
|
|
||||||
- [x] Audit audio/SFX/music licensing (or confirm everything is procedural) and add a credits file.
|
|
||||||
(All runtime audio is procedural; no external music/SFX files are bundled.
|
|
||||||
`CREDITS.md` records this.)
|
|
||||||
- [x] Review body-camera/privacy language, mental-health-crisis representation, age/content rating
|
|
||||||
and storefront requirements; fix any release-blocking copy or content.
|
|
||||||
(`PRIVACY.md` clarifies the simulated body camera/local-only data; the
|
|
||||||
accessibility and known-limitations pages record the remaining
|
|
||||||
mental-health/rating/storefront review as a release blocker rather than
|
|
||||||
claiming approval.)
|
|
||||||
- [x] Add the player-facing credits, known limitations, accessibility statement and privacy note to
|
|
||||||
the release package/README. (`README.md` links `CREDITS.md`, `PRIVACY.md`,
|
|
||||||
`docs/accessibility.md` and `docs/known-limitations.md`; the Web and Desktop
|
|
||||||
HQ package builders copy those documents into the shipped archives.)
|
|
||||||
- [ ] Mark external legal/storefront approval as complete or explicitly block the 0.10.0 release on it.
|
|
||||||
|
|
||||||
### Documentation and visual sign-off
|
|
||||||
|
|
||||||
- [ ] Update `README.md`, `PLAN.md`, `docs/architecture.md`, ADRs, `docs/development-status.md`,
|
|
||||||
`docs/getting-started.md`, `docs/smoke-checklist.md`, `CHANGELOG.md` and this roadmap.
|
|
||||||
- [ ] Regenerate the full screenshot gallery and realism baselines after content lock; run
|
|
||||||
`check_screenshots.sh` and the pinned vision judge, recording model/spend/verdicts.
|
|
||||||
- [ ] Run the manual smoke checklist on every target and attach/link the release-candidate evidence.
|
|
||||||
- [ ] Verify the tutorial/campaign/help text at maximum font scale and with the longest strings.
|
|
||||||
- [x] Remove or archive stale plans/notes and confirm no contradictory version/status claims remain.
|
|
||||||
- [x] Document the character development toolchain in `docs/architecture.md`: base vs library
|
|
||||||
sources, tool/artifact/gate table, runtime attach/animation contracts and rebuild discipline.
|
|
||||||
(Added §5 "Character development tooling" plus risk and ownership-map updates;
|
|
||||||
documentation check passed.)
|
|
||||||
|
|
||||||
### Release-candidate QA and exit
|
|
||||||
|
|
||||||
- [ ] Run the complete headless suite, Python tooling, tutorial/campaign/session/scenario smokes,
|
|
||||||
24-NPC budget smoke and release build from a clean checkout.
|
|
||||||
- [ ] Run the manual QA matrix: fresh install, upgrade, offline launch, gamepad, accessibility
|
|
||||||
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-0.10 work.
|
|
||||||
- [ ] 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 0.10.0 release candidate.
|
|
||||||
|
|
||||||
## Character development
|
## Character development
|
||||||
|
|
||||||
Goal: break the eight-character clone effect with four licence-cleared crowd-variety looks while
|
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
|
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
|
the primary path; Quaternius is a reviewed reference and MakeHuman is deferred to a separate local
|
||||||
development pipeline. Start only after the current release candidate is published; this work must
|
development pipeline. This is the current development priority; keep it out of the frozen
|
||||||
not delay the release.
|
0.10.0 release candidate and assign a release version only when its scope is accepted.
|
||||||
|
|
||||||
### Source review and decision
|
### Source review and decision
|
||||||
|
|
||||||
@@ -432,6 +238,206 @@ reference-image licence and privacy gates above rather than replacing them.
|
|||||||
facades, passes performance/navigation/visual QA and has complete provenance; or the
|
facades, passes performance/navigation/visual QA and has complete provenance; or the
|
||||||
pipeline is rejected with the findings recorded.
|
pipeline is rejected with the findings recorded.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
### Content lock and external playtest
|
||||||
|
|
||||||
|
- [x] Declare a content/feature freeze for 0.10.0; only release-blocking fixes and balance changes
|
||||||
|
may land after the freeze. (Frozen 2026-11-03 after the 0.9.6 integration
|
||||||
|
checkpoint; this pass is limited to release reliability, accessibility,
|
||||||
|
balance evidence and packaging.)
|
||||||
|
- [x] Produce a release-candidate build with the tutorial, campaign, all three venues, Help,
|
||||||
|
accessibility settings and checkpoint/resume enabled. (Clean worktree
|
||||||
|
`a9658ec` built `0.10.0-rc.1`: Linux 161.5 MB, Windows 197.2 MB, macOS
|
||||||
|
148.0 MB, Web 97.8 MB and HQ 241.6 MB. The Web/HQ archives include the
|
||||||
|
credits, privacy, accessibility and known-limitations pages; SHA-256
|
||||||
|
manifests were written; the Linux and HQ binaries launched headless and the
|
||||||
|
Web index/wasm/pck/docs returned HTTP 200. Not published because external
|
||||||
|
playtest and legal approval remain open.)
|
||||||
|
- [ ] Run at least five first-time-player sessions covering the tutorial and one full venue shift;
|
||||||
|
record where players get stuck, misunderstand evidence or choose disproportionate escalation.
|
||||||
|
- [ ] Triage findings by severity (P0/P1/P2) and fix every P0/P1 onboarding/accessibility issue;
|
||||||
|
keep the rest as explicit known limitations or post-0.10 items.
|
||||||
|
- [ ] Re-run the affected tutorial/campaign smokes after each fix and capture a fresh first-hour
|
||||||
|
walkthrough for the release notes.
|
||||||
|
|
||||||
|
### Balance and fairness pass
|
||||||
|
|
||||||
|
- [x] Define measurable targets for routine compliance, access-decision accuracy, peaceful
|
||||||
|
resolution, justified emergency calls and false-positive/false-negative rates.
|
||||||
|
(`docs/balance-acceptance.md` defines cohorts, denominators, 36 matrix cells,
|
||||||
|
seeds, thresholds and matched emergency-first comparisons. Documentation verified;
|
||||||
|
targets are not measured results.)
|
||||||
|
- [ ] Run scripted venue sweeps across easy/normal/hard and all four phases; compare outcomes and
|
||||||
|
tune event weights, reaction tables, compliance and report strictness where targets fail.
|
||||||
|
- [ ] Review emergency calls against actual danger: no routine behavior should make emergency the
|
||||||
|
dominant winning move, and genuine threats must remain answerable. Include the
|
||||||
|
type-derived `_read_npc_truth()` mismatch with observed threats/forced entry;
|
||||||
|
use independently labelled behavior evidence, not the helper as its own oracle.
|
||||||
|
- [ ] Verify the reputation grades, debrief explanations and campaign progression still communicate
|
||||||
|
the de-escalation-first design after tuning.
|
||||||
|
- [ ] Record the balance evidence and any deliberate exceptions in `docs/development-status.md`
|
||||||
|
or `MEMORY.md`.
|
||||||
|
|
||||||
|
### Save migration and session reliability
|
||||||
|
|
||||||
|
- [x] Add fixtures for a 0.8-era settings/campaign/history save and a 0.9.0 checkpoint; verify
|
||||||
|
migration/default-filling and a clean first launch with no files. (Committed
|
||||||
|
fixtures under `src/test/fixtures/saves/`; 9 migration/failure tests cover
|
||||||
|
old settings/campaign/history, the 0.9.0 checkpoint, all three venue
|
||||||
|
checkpoint round-trips, clean install, corrupt JSON and a blocked atomic
|
||||||
|
replace. Suite is now 272 tests.)
|
||||||
|
- [x] Test fresh install → tutorial → campaign → pause → quit → resume → review → next venue on
|
||||||
|
an isolated user-data directory. (Tutorial and campaign smokes shared one
|
||||||
|
isolated `XDG_DATA_HOME`; tutorial completion/replay/skip then campaign
|
||||||
|
resume/review-continue/help both passed. Pause/menu behavior is covered by
|
||||||
|
`smoke_session_shell.gd`.)
|
||||||
|
- [x] Test corrupt JSON, partial temp files, missing optional fields and a failed atomic rename;
|
||||||
|
confirm fallback behavior never destroys a valid save. (Corrupt/partial files
|
||||||
|
fall back to defaults; a blocked temp path reports an error and leaves the
|
||||||
|
prior valid settings intact. `_load_json` now uses the non-logging JSON
|
||||||
|
instance parser.)
|
||||||
|
- [x] Verify checkpoint resume after all three venues, after an incident, with NPCs at the door and
|
||||||
|
with flashlight/body-camera/door state set. (The migration suite round-trips a
|
||||||
|
checkpoint for Hollywood, the Joke Shop and the TV Studio with an open
|
||||||
|
incident, one NPC row, flashlight/body-camera/door flags; the campaign smoke
|
||||||
|
resumes a live checkpoint through the real `GameManager`.)
|
||||||
|
- [x] Document save locations, schema versions, reset behavior and rollback/export instructions in
|
||||||
|
`docs/getting-started.md` and the release notes. (`getting-started.md` now
|
||||||
|
documents the four files, version-1 checkpoint, atomic write/fallback,
|
||||||
|
clean install, reset and backup/rollback.)
|
||||||
|
|
||||||
|
### Release engineering and distribution
|
||||||
|
|
||||||
|
- [x] Run `tools/build_releases.sh` from a clean checkout and verify Linux/Windows/macOS/Web/HQ
|
||||||
|
artifact names, sizes and checksums. (Clean worktree `a9658ec` built the
|
||||||
|
five artifacts listed above; `PUBLISH_DRY_RUN=1` produced and printed
|
||||||
|
`build/SHA256SUMS-0.10.0-rc.1.txt` without touching the API.)
|
||||||
|
- [ ] Smoke-test fresh Linux portable/AppImage, Windows portable/installer, macOS unzip/launch,
|
||||||
|
Web static hosting and Desktop HQ Vulkan fallback on the target matrix.
|
||||||
|
(Linux portable and Desktop HQ launched headless; Web files served over a
|
||||||
|
local static server with HTTP 200. AppImage/installer were not built locally
|
||||||
|
and Windows/macOS launch testing still needs the target matrix.)
|
||||||
|
- [x] Add a disk-space preflight and retention policy to the release/publish scripts so a full
|
||||||
|
Gitea host cannot leave a partially uploaded release. (`publish_release.sh`
|
||||||
|
checks artifact size/free space, writes SHA-256 checksums, supports
|
||||||
|
`PUBLISH_DRY_RUN`, rolls back uploaded assets/new releases on failure, and
|
||||||
|
offers opt-in `RETAIN_RELEASES` pruning; dry-run verified.)
|
||||||
|
- [x] 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.
|
||||||
|
(Source/version and tag are both 0.9.6; all seven published releases carry
|
||||||
|
5–7 assets, including the retained v0.8.0/v0.8.1/v0.9.0/v0.9.1 line.
|
||||||
|
`publish_release.sh` documents opt-in `RETAIN_RELEASES` pruning and
|
||||||
|
`RELEASING.md` describes the seven-release policy.)
|
||||||
|
- [x] Decide and document whether macOS signing/notarization is required for 0.10.0 or explicitly
|
||||||
|
remains a future release blocker; record the quarantine instructions either way.
|
||||||
|
(0.10.0 ships unsigned with quarantine instructions; signing/notarization
|
||||||
|
remains an explicit public-release blocker in `RELEASING.md` and
|
||||||
|
`known-limitations.md`.)
|
||||||
|
|
||||||
|
### Legal, credits and platform policy
|
||||||
|
|
||||||
|
- [x] Audit AI-assisted asset provenance and licenses; record source/model usage and any
|
||||||
|
redistribution constraints for textures, characters, props and UI art.
|
||||||
|
(`CREDITS.md` records the Blender/OpenRouter toolchain, default model slugs,
|
||||||
|
missing per-file generation metadata and the commercial-rights review as an
|
||||||
|
explicit release blocker.)
|
||||||
|
- [x] Audit audio/SFX/music licensing (or confirm everything is procedural) and add a credits file.
|
||||||
|
(All runtime audio is procedural; no external music/SFX files are bundled.
|
||||||
|
`CREDITS.md` records this.)
|
||||||
|
- [x] Review body-camera/privacy language, mental-health-crisis representation, age/content rating
|
||||||
|
and storefront requirements; fix any release-blocking copy or content.
|
||||||
|
(`PRIVACY.md` clarifies the simulated body camera/local-only data; the
|
||||||
|
accessibility and known-limitations pages record the remaining
|
||||||
|
mental-health/rating/storefront review as a release blocker rather than
|
||||||
|
claiming approval.)
|
||||||
|
- [x] Add the player-facing credits, known limitations, accessibility statement and privacy note to
|
||||||
|
the release package/README. (`README.md` links `CREDITS.md`, `PRIVACY.md`,
|
||||||
|
`docs/accessibility.md` and `docs/known-limitations.md`; the Web and Desktop
|
||||||
|
HQ package builders copy those documents into the shipped archives.)
|
||||||
|
- [ ] Mark external legal/storefront approval as complete or explicitly block the 0.10.0 release on it.
|
||||||
|
|
||||||
|
### Documentation and visual sign-off
|
||||||
|
|
||||||
|
- [ ] Update `README.md`, `PLAN.md`, `docs/architecture.md`, ADRs, `docs/development-status.md`,
|
||||||
|
`docs/getting-started.md`, `docs/smoke-checklist.md`, `CHANGELOG.md` and this roadmap.
|
||||||
|
- [ ] Regenerate the full screenshot gallery and realism baselines after content lock; run
|
||||||
|
`check_screenshots.sh` and the pinned vision judge, recording model/spend/verdicts.
|
||||||
|
- [ ] Run the manual smoke checklist on every target and attach/link the release-candidate evidence.
|
||||||
|
- [ ] Verify the tutorial/campaign/help text at maximum font scale and with the longest strings.
|
||||||
|
- [x] Remove or archive stale plans/notes and confirm no contradictory version/status claims remain.
|
||||||
|
- [x] Document the character development toolchain in `docs/architecture.md`: base vs library
|
||||||
|
sources, tool/artifact/gate table, runtime attach/animation contracts and rebuild discipline.
|
||||||
|
(Added §5 "Character development tooling" plus risk and ownership-map updates;
|
||||||
|
documentation check passed.)
|
||||||
|
|
||||||
|
### Release-candidate QA and exit
|
||||||
|
|
||||||
|
- [ ] Run the complete headless suite, Python tooling, tutorial/campaign/session/scenario smokes,
|
||||||
|
24-NPC budget smoke and release build from a clean checkout.
|
||||||
|
- [ ] Run the manual QA matrix: fresh install, upgrade, offline launch, gamepad, accessibility
|
||||||
|
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-0.10 work.
|
||||||
|
- [ ] 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 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
|
## Future 0.x / non-blocking candidates
|
||||||
|
|
||||||
- [ ] Live 3D body-camera replay.
|
- [ ] Live 3D body-camera replay.
|
||||||
|
|||||||
+13
-6
@@ -2,19 +2,26 @@
|
|||||||
|
|
||||||
This folder holds the project documentation, visual references and generated QA evidence.
|
This folder holds the project documentation, visual references and generated QA evidence.
|
||||||
|
|
||||||
|
## Current priorities
|
||||||
|
|
||||||
|
1. [Character development](../TODO.md#character-development) — crowd, age, build, hair and outfit variety; generator-first, with the frozen NPC contract.
|
||||||
|
2. [Local map development](../TODO.md#local-map-development) — OpenStreetMap/3D data, licensed reference imagery, photoreal facades, AI-assisted composition and Gaussian-splatting evaluation.
|
||||||
|
3. [0.10.0 release candidate](../TODO.md#milestone-0100--release-candidate) — versioned release hardening after the unversioned development tracks.
|
||||||
|
|
||||||
## Start here
|
## Start here
|
||||||
|
|
||||||
- [`../PLAN.md`](../PLAN.md) — product and game-design plan
|
- [`../PLAN.md`](../PLAN.md) — product, design intent and development priorities
|
||||||
- [`gameplay.md`](gameplay.md) — controls, venues and escalation
|
- [`../TODO.md`](../TODO.md) — priority-ordered active tasks and roadmap
|
||||||
- [`joke-shop-map.md`](joke-shop-map.md) — Sunset Strip real-site mapping
|
- [`npc-model-sourcing.md`](npc-model-sourcing.md) — character-source evaluation, licence rules and the character-development plan
|
||||||
- [`tutorial.md`](tutorial.md) — first-shift tutorial beats
|
|
||||||
- [`architecture.md`](architecture.md) — arc42 system architecture
|
- [`architecture.md`](architecture.md) — arc42 system architecture
|
||||||
- [`getting-started.md`](getting-started.md) — setup, run/test commands and controls
|
- [`getting-started.md`](getting-started.md) — setup, run/test commands and controls
|
||||||
- [`asset-tooling.md`](asset-tooling.md) — image/model pipelines and screenshot gates
|
- [`asset-tooling.md`](asset-tooling.md) — image/model pipelines and screenshot gates
|
||||||
|
- [`gameplay.md`](gameplay.md) — controls, venues and escalation
|
||||||
|
- [`joke-shop-map.md`](joke-shop-map.md) — Sunset Strip real-site mapping
|
||||||
|
- [`tutorial.md`](tutorial.md) — first-shift tutorial beats
|
||||||
- [`npc-visual-review.md`](npc-visual-review.md) — NPC visual baseline, acceptance criteria and ranked gaps
|
- [`npc-visual-review.md`](npc-visual-review.md) — NPC visual baseline, acceptance criteria and ranked gaps
|
||||||
- [`npc-proportion-audit.md`](npc-proportion-audit.md) — NPC proportion ratios and stylized guide results
|
- [`npc-proportion-audit.md`](npc-proportion-audit.md) — NPC proportion ratios and stylized guide results
|
||||||
- [`npc-model-sourcing.md`](npc-model-sourcing.md) — free/open-source character sources, contract evaluation and the character-development plan
|
- [`development-status.md`](development-status.md) — implemented features, current gaps and active planning
|
||||||
- [`development-status.md`](development-status.md) — implemented features and current gaps
|
|
||||||
- [`accessibility.md`](accessibility.md) — accessibility statement and known gaps
|
- [`accessibility.md`](accessibility.md) — accessibility statement and known gaps
|
||||||
- [`known-limitations.md`](known-limitations.md) — release-candidate blockers and accepted limits
|
- [`known-limitations.md`](known-limitations.md) — release-candidate blockers and accepted limits
|
||||||
- [`smoke-checklist.md`](smoke-checklist.md) — manual verification
|
- [`smoke-checklist.md`](smoke-checklist.md) — manual verification
|
||||||
|
|||||||
@@ -27,6 +27,12 @@ godot --headless --export-release "Linux" build/gig-line-smoke.x86_64
|
|||||||
`project.godot` sets `config/version`. Keep it in sync with the release tag
|
`project.godot` sets `config/version`. Keep it in sync with the release tag
|
||||||
(e.g. `v0.3.0` → `config/version="0.3.0"`, plus a git tag `v0.3.0`).
|
(e.g. `v0.3.0` → `config/version="0.3.0"`, plus a git tag `v0.3.0`).
|
||||||
|
|
||||||
|
Every major, minor and patch increment is a version in its own right: add the
|
||||||
|
`CHANGELOG.md` entry, run the local build (`tools/build_releases.sh`), verify the
|
||||||
|
artifact names/sizes/checksums, and only then commit and tag. A changelog entry
|
||||||
|
without a matching build is not a completed version. Unversioned development tracks
|
||||||
|
do not get a placeholder version; assign one when the scope enters a release.
|
||||||
|
|
||||||
## 3. CI (Gitea Actions)
|
## 3. CI (Gitea Actions)
|
||||||
|
|
||||||
The repository ships a Gitea Actions workflow (`.gitea/workflows/build.yml`):
|
The repository ships a Gitea Actions workflow (`.gitea/workflows/build.yml`):
|
||||||
|
|||||||
+39
-4
@@ -117,6 +117,7 @@ The asset/content pipeline is part of the architecture, not an external build de
|
|||||||
| Gear/props | Blender flatpak + tool + bake | `npc_gear/*.glb`, `props/*.glb`, `*_ao.png` | `NpcAvatar`, `WorldBuilder` | primitive assets / generated props |
|
| Gear/props | Blender flatpak + tool + bake | `npc_gear/*.glb`, `props/*.glb`, `*_ao.png` | `NpcAvatar`, `WorldBuilder` | primitive assets / generated props |
|
||||||
| Surface/UI art | Python pipelines / AI-assisted references | `assets/textures/ai/game_ready/`, `assets/images/` | `SurfaceMaterials`, `UiArt` | neutral material / procedural UI |
|
| Surface/UI art | Python pipelines / AI-assisted references | `assets/textures/ai/game_ready/`, `assets/images/` | `SurfaceMaterials`, `UiArt` | neutral material / procedural UI |
|
||||||
| Screenshots/QA | capture scripts + `scene_concepts`/`screen_designs` | `docs/screenshots/`, `docs/screens/realism/` | reviewers and CI gates | regenerate; never runtime input |
|
| Screenshots/QA | capture scripts + `scene_concepts`/`screen_designs` | `docs/screenshots/`, `docs/screens/realism/` | reviewers and CI gates | regenerate; never runtime input |
|
||||||
|
| Local map data (planned) | OSM/3D building extract + licensed reference photos + AI/splat evaluation | derived map assets with provenance sidecars | `WorldBuilder` venue specs | current stylized venue geometry |
|
||||||
| Release | Gitea workflow + build/publish scripts | platform binaries, Web zip, Desktop HQ zip | players | source build |
|
| Release | Gitea workflow + build/publish scripts | platform binaries, Web zip, Desktop HQ zip | players | source build |
|
||||||
|
|
||||||
Contracts that keep the pipeline replaceable:
|
Contracts that keep the pipeline replaceable:
|
||||||
@@ -133,8 +134,10 @@ Characters have two authored sources and one procedural fallback. The eight-vari
|
|||||||
Blender library (`assets/models/blender/npc/`) is the normal presentation path; the
|
Blender library (`assets/models/blender/npc/`) is the normal presentation path; the
|
||||||
older skinned `npc_base` (`assets/models/generated/npc_base.glb`) remains a frozen
|
older skinned `npc_base` (`assets/models/generated/npc_base.glb`) remains a frozen
|
||||||
contract and fallback; `NpcAvatar`'s procedural rig is the offline last resort.
|
contract and fallback; `NpcAvatar`'s procedural rig is the offline last resort.
|
||||||
Blender is a developer tool only — runtime, tests and CI consume committed GLBs and
|
Four crowd-variety prototypes have been built and audited locally but are not yet in
|
||||||
maps.
|
the shipped catalogue; generator-first expansion is the active character track
|
||||||
|
(ADR-0015). Blender is a developer tool only — runtime, tests and CI consume committed
|
||||||
|
GLBs and maps.
|
||||||
|
|
||||||
| Tool | Role | Committed artifact | Verification gate |
|
| Tool | Role | Committed artifact | Verification gate |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
@@ -169,6 +172,36 @@ Evidence and detailed contracts live in [`blender-assets.md`](blender-assets.md)
|
|||||||
[`npc-proportion-audit.md`](npc-proportion-audit.md); command-level usage is in
|
[`npc-proportion-audit.md`](npc-proportion-audit.md); command-level usage is in
|
||||||
[`asset-tooling.md`](asset-tooling.md).
|
[`asset-tooling.md`](asset-tooling.md).
|
||||||
|
|
||||||
|
### Local map development tooling (planned)
|
||||||
|
|
||||||
|
The current venues are hand-authored procedural reconstructions in
|
||||||
|
`src/game/world_builder.gd`. The **Local map development** track in
|
||||||
|
[`TODO.md`](../TODO.md#local-map-development) is unversioned and planned: it will
|
||||||
|
test whether licensed data and reference photography can replace or supplement the
|
||||||
|
stylized geometry without moving map data, AI composition or splat rendering into
|
||||||
|
the runtime.
|
||||||
|
|
||||||
|
Planned stages and gates:
|
||||||
|
|
||||||
|
| Stage | Source | Output | Gate |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Footprints and massing | Offline OpenStreetMap extract + licence-compatible 3D building data (OSM Buildings, Overture, CityGML/LOD1–2) | Local footprint/massing scenes, extract date and query pinned | ODbL attribution/share-alike review; scale/orientation and venue-footprint comparison |
|
||||||
|
| Reference imagery | Wikimedia Commons, own/team photos or other clearly licensed images | Reference boards and material candidates | Written author/licence/attribution, privacy redaction, no unlicensed Street View or scraped commercial imagery |
|
||||||
|
| AI-assisted composition | Project image tooling | Palette/facade-rhythm boards and material candidates | Model/prompt/output recorded; human review; never treated as licensed map data |
|
||||||
|
| Photoreal facade kit | Project-authored geometry and derived materials | Committed facade modules and PBR maps | WorldBuilder budget, collider/nav coverage, Compatibility-readability and screenshot review |
|
||||||
|
| Gaussian splatting | Licensed/permissioned photo sets + pinned offline toolchain | Development-only splat, texture or proxy experiments | Per-path ADR; runtime only if performance, collision/navigation and provenance are proven |
|
||||||
|
|
||||||
|
Contracts for any future map source:
|
||||||
|
|
||||||
|
- Runtime consumes committed, derived assets only; no online OSM, photo or splat
|
||||||
|
service is a build or play dependency.
|
||||||
|
- OSM ODbL, photo licences, capture permissions and privacy redaction are recorded
|
||||||
|
in a provenance sidecar before an asset enters the repository.
|
||||||
|
- Collision and navigation stay mesh-based; a splat may never become the playable
|
||||||
|
floor or the access/occlusion authority.
|
||||||
|
- The stylized venue geometry remains the fallback until a data-backed block passes
|
||||||
|
the venue budget, navigation, visual and provenance gates.
|
||||||
|
|
||||||
### Content authoring and runtime data flow
|
### Content authoring and runtime data flow
|
||||||
|
|
||||||
`ScenarioFactory` is the source of truth for the three authored venues. `tools/export_venues.gd`
|
`ScenarioFactory` is the source of truth for the three authored venues. `tools/export_venues.gd`
|
||||||
@@ -315,6 +348,7 @@ Architecture decisions are recorded as ADRs:
|
|||||||
- Unsigned macOS builds, AI asset provenance and any storefront/legal requirements are release blockers for a public release.
|
- Unsigned macOS builds, AI asset provenance and any storefront/legal requirements are release blockers for a public release.
|
||||||
- Documentation drift has already occurred (release version, implemented status and obsolete plan docs); the ownership map and roadmap must be kept current in the same change as the implementation.
|
- Documentation drift has already occurred (release version, implemented status and obsolete plan docs); the ownership map and roadmap must be kept current in the same change as the implementation.
|
||||||
- Character quality is only partly automatable: proportions, budgets and gear fit are measured, but face realism and venue-lighting readability still need the baseline/review sheets and human sign-off after any mesh, map or material change.
|
- Character quality is only partly automatable: proportions, budgets and gear fit are measured, but face realism and venue-lighting readability still need the baseline/review sheets and human sign-off after any mesh, map or material change.
|
||||||
|
- Local-map data and photo-derived assets add a second provenance and privacy risk: OSM share-alike, photo rights, faces/plates, property permission and rapidly churning splat tooling must be resolved before any derived asset ships.
|
||||||
|
|
||||||
## 12. Documentation Consolidation and Ownership
|
## 12. Documentation Consolidation and Ownership
|
||||||
|
|
||||||
@@ -332,11 +366,12 @@ architecture document.
|
|||||||
| [`docs/blender-assets.md`](blender-assets.md) | Blender character/gear/prop contracts and attach points | Detailed asset contract appendix |
|
| [`docs/blender-assets.md`](blender-assets.md) | Blender character/gear/prop contracts and attach points | Detailed asset contract appendix |
|
||||||
| [`docs/npc-visual-review.md`](npc-visual-review.md) | NPC baseline views, acceptance criteria and ranked visual gaps | Visual-QA appendix to the character tooling section |
|
| [`docs/npc-visual-review.md`](npc-visual-review.md) | NPC baseline views, acceptance criteria and ranked visual gaps | Visual-QA appendix to the character tooling section |
|
||||||
| [`docs/npc-proportion-audit.md`](npc-proportion-audit.md) | Measured proportions against the stylized guide | Measurement appendix to the character tooling section |
|
| [`docs/npc-proportion-audit.md`](npc-proportion-audit.md) | Measured proportions against the stylized guide | Measurement appendix to the character tooling section |
|
||||||
|
| [`docs/npc-model-sourcing.md`](npc-model-sourcing.md) | Character-source evaluation, licence rules and the character-development plan | Supports the character tooling section and ADR-0015 |
|
||||||
| [`docs/getting-started.md`](getting-started.md) | Setup, commands, controls | Developer onboarding |
|
| [`docs/getting-started.md`](getting-started.md) | Setup, commands, controls | Developer onboarding |
|
||||||
| [`docs/RELEASING.md`](RELEASING.md) | Release checklist and CI/publishing steps | Deployment appendix to §7 |
|
| [`docs/RELEASING.md`](RELEASING.md) | Release checklist and CI/publishing steps | Deployment appendix to §7 |
|
||||||
| [`docs/smoke-checklist.md`](smoke-checklist.md) | Manual verification script | QA appendix to §10 |
|
| [`docs/smoke-checklist.md`](smoke-checklist.md) | Manual verification script | QA appendix to §10 |
|
||||||
| [`docs/development-status.md`](development-status.md) | Implemented features and current gaps | Status companion to the roadmap |
|
| [`docs/development-status.md`](development-status.md) | Implemented features and current gaps | Status companion to the roadmap |
|
||||||
| [`TODO.md`](../TODO.md) | Active tasks and 0.x roadmap | Planning source; no architecture duplication |
|
| [`TODO.md`](../TODO.md) | Priority-ordered active tasks, unversioned development tracks and versioned roadmap | Planning source; no architecture duplication |
|
||||||
| [`CHANGELOG.md`](../CHANGELOG.md) | User-facing release history | Release/version companion |
|
| [`CHANGELOG.md`](../CHANGELOG.md) | User-facing release history | Release/version companion |
|
||||||
|
|
||||||
Consolidation decisions:
|
Consolidation decisions:
|
||||||
@@ -344,7 +379,7 @@ Consolidation decisions:
|
|||||||
- **Architecture owns the "how"** (components, contracts, data flow, constraints, quality gates); **PLAN/gameplay own the "what"**; **ADRs own the "why"**. Links replace duplicated prose.
|
- **Architecture owns the "how"** (components, contracts, data flow, constraints, quality gates); **PLAN/gameplay own the "what"**; **ADRs own the "why"**. Links replace duplicated prose.
|
||||||
- **Asset and release documents remain separate** because they are command-heavy operational procedures; their architecture-relevant contracts and failure modes are summarized in §5 and §7.
|
- **Asset and release documents remain separate** because they are command-heavy operational procedures; their architecture-relevant contracts and failure modes are summarized in §5 and §7.
|
||||||
- **Completed plans are removed, not kept as competing roadmaps.** Historical graphics work is summarized by ADR-0013, the asset pipeline section and the v0.6.0 changelog; new work belongs in TODO.
|
- **Completed plans are removed, not kept as competing roadmaps.** Historical graphics work is summarized by ADR-0013, the asset pipeline section and the v0.6.0 changelog; new work belongs in TODO.
|
||||||
- **Status and roadmap are separate from architecture.** `docs/development-status.md` records what exists; `TODO.md` records what remains, including the 0.x gap analysis and milestone exit criteria.
|
- **Status and roadmap are separate from architecture.** `docs/development-status.md` records what exists; `TODO.md` records what remains, ordered as unversioned development tracks, versioned milestones and deferred work.
|
||||||
- **Documentation drift is a tracked risk:** release/version, test counts, renderer status, and stale plans must be corrected in the same commit as the change that invalidates them.
|
- **Documentation drift is a tracked risk:** release/version, test counts, renderer status, and stale plans must be corrected in the same commit as the change that invalidates them.
|
||||||
|
|
||||||
## 13. Glossary
|
## 13. Glossary
|
||||||
|
|||||||
@@ -146,6 +146,27 @@ python3 tools/blender_assets.py audit # no Blender needed
|
|||||||
godot --headless --path . --import
|
godot --headless --path . --import
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Local map development (planned)
|
||||||
|
|
||||||
|
The **Local map development** track in [`TODO.md`](../TODO.md#local-map-development)
|
||||||
|
is not implemented yet; there are no map-generation commands to run. The planned
|
||||||
|
pipeline will evaluate:
|
||||||
|
|
||||||
|
- offline OpenStreetMap extracts for footprints and licence-compatible 3D building
|
||||||
|
massing (OSM Buildings, Overture, CityGML/LOD1–2);
|
||||||
|
- downloaded reference imagery from Wikimedia Commons, own/team photography or
|
||||||
|
other clearly licensed sources, with author/licence/attribution and privacy
|
||||||
|
redaction recorded per set;
|
||||||
|
- AI-assisted composition boards for palette, facade rhythm and material study,
|
||||||
|
with model/prompt/output provenance and human acceptance;
|
||||||
|
- Gaussian splatting as a development-only capture/reference/texture/proxy tool,
|
||||||
|
version-pinned offline and outside CI, until an ADR proves runtime safety.
|
||||||
|
|
||||||
|
No online map/photo/splat service is a build or play dependency. Committed map
|
||||||
|
assets will need provenance sidecars, ODbL/photo-licence review and the same
|
||||||
|
`WorldBuilder` venue-budget/navigation/collider gates as the current stylized
|
||||||
|
geometry. The detailed task plan and exit criteria live in `TODO.md`.
|
||||||
|
|
||||||
## Confirmed game assets
|
## Confirmed game assets
|
||||||
|
|
||||||
Everything below is audited and shipped in the game; development-only outputs
|
Everything below is audited and shipped in the game; development-only outputs
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# Development Status
|
# Development Status
|
||||||
|
|
||||||
|
Current planning priorities are the unversioned **Character development** and **Local map
|
||||||
|
development** tracks in [`TODO.md`](../TODO.md); neither is part of the implemented list below
|
||||||
|
yet. The 0.10.0 release candidate remains the next versioned release.
|
||||||
|
|
||||||
Implemented so far:
|
Implemented so far:
|
||||||
|
|
||||||
- Godot 4.7.2 project scaffold, input map, procedural world builder (CI/local/release unified)
|
- Godot 4.7.2 project scaffold, input map, procedural world builder (CI/local/release unified)
|
||||||
|
|||||||
Reference in new issue
Block a user