Owner decision: prioritise realism, keep the performance target but put it last.
Re-applied on a branch after the first attempt landed directly on main (reverted
there; see b8209ce).
- Quality goals (01 + combined architecture.md): 1 visual realism, 2 geographic
fidelity, 3 walkability/usability, 4 reproducibility/portability, 5 provenance,
6 performance efficiency.
- Quality requirements (10 + combined) reordered to match, with two realism
requirements added (a façade reads like the photographs; placement within ~1 m)
and the scenarios renumbered so QS-1 is the reference comparison, QS-9 the frame
rate.
- Guard on both documents so the order cannot become an excuse: performance is a
floor, not a preference - 60 FPS at 1440p without frame generation must be met at
every release; if realism cannot fit, cut the realism scope deliberately and
record it, never the frame rate. Walkability outranks realism in one direction: a
block you fall through is not a demo.
- Solution strategy and 'quality achievement' lead with realism and describe
performance as a budget, not a driver.
- Docs/release-checks.md: the performance check is the last section and the per-
version check list now opens with realism and closes with performance.
- ROADMAP gains a 'Quality priority' section; AGENTS.md gains the tie-break rule
beside the existing scope-cutting rule.
36 lines
3.1 KiB
Markdown
36 lines
3.1 KiB
Markdown
# Quality Requirements
|
||
|
||
## Quality Requirements Overview
|
||
|
||
Ordered by priority: realism first, performance last. The order decides design trade-offs; it does not license dropping a lower item silently (see the trade-off rule below the table).
|
||
|
||
| Priority | Category | Requirement |
|
||
| --- | --- | --- |
|
||
| 1 | Realism / Fidelity | Façade identity, proportion, material and lighting read like the reference photographs when compared side by side |
|
||
| 2 | Realism / Fidelity | Building placement matches the measured footprints and the photographs (within ~1 m) |
|
||
| 2 | Realism / Fidelity | Street scale (lane width, sidewalk width) within ~10 cm of the measured profile |
|
||
| 3 | Reliability / Terrain | Zero raycast holes across sidewalks and carriageway (84-sample transect) |
|
||
| 3 | Usability | WASD + mouse look, jump, reset (R), pause (Escape) — no tutorial needed |
|
||
| 4 | Maintainability | Fresh checkout builds with the documented engine installation |
|
||
| 4 | Portability | Linux build packages and runs; Windows build ships |
|
||
| 5 | Provenance | Every committed asset has a recorded source and licence |
|
||
| 6 | Performance efficiency | 60 FPS at 2560×1440, documented preset, no frame generation |
|
||
|
||
**Trade-off rule.** Realism leads: when a realism improvement costs frame time, the improvement wins. Performance is still a **floor, not a preference** — 60 FPS at 1440p without frame generation must be met at every release. If realism cannot fit inside that budget, reduce the realism scope deliberately and record the reduction in `CHANGELOG.md`; never ship below the floor without the owner's explicit approval. Walkability outranks realism in one direction: a block the player falls through is not a demo, whatever it looks like.
|
||
|
||
## Quality Scenarios
|
||
|
||
| ID | Source/Stimulus | Response | Metric |
|
||
| --- | --- | --- | --- |
|
||
| QS-1 | Screenshot is compared against its reference photograph | The render reads as the same building | Similarity score and visual match confirmed by the owner; `Tools/visual_loop.py` reports the deltas |
|
||
| QS-2 | A façade is placed from measured data | It sits on its verified footprint | World span probed against `Geo/verification/` within ~1 m |
|
||
| QS-3 | Player walks both sides of the demo | No fall-through, character stays at ground Z | 0 raycast holes in 84-sample transect |
|
||
| QS-4 | Player holds W for 2 s on flat road | Character moves forward | ≥ 200 cm displacement, Z constant within ±5 cm |
|
||
| QS-5 | Player presses R | Character teleports to spawn | < 100 cm from `StartLocation` |
|
||
| QS-6 | Player presses Escape | Game pauses, cursor appears | `IsGamePaused()` = true |
|
||
| QS-7 | Player presses Escape while paused | Game unpauses, cursor hides | `IsGamePaused()` = false |
|
||
| QS-8 | Fresh checkout + engine install | Build succeeds | Exit code 0, runnable binary produced |
|
||
| QS-9 | Game runs on dev workstation at 1440p | Frame rate holds the floor | ≥ 60 FPS, 99th percentile ≥ 55 FPS |
|
||
|
||
> QS-9 is last on purpose. Performance is a floor that every release must meet, not the goal that shapes the content: realism decides what gets built, the frame budget decides how much of it.
|