The facade work started as a patch (0.1.4) and the 0.1.6 retail pass showed what that costs: a patch has no release gate of its own, so a first pass that does not yet read as the building can sit inside a done patch series. Realism is also the leading quality goal, which a patch cannot carry. New 0.9.0 - Realistic buildings, before the feature freeze: facade system with more than one order, a profile library, storefront types, signage as decals, per-building photo-matched models, a measured material library with a texel-density rule, and LODs plus collision proxies. Former 0.9.0 freeze/beta/audit becomes 0.10.0 with patches 0.10.1-0.10.3; 1.0.0 moves to weeks 39-44. Recorded as ADR-8 (append-only) with a measurable gate BR-1..BR-5 in the quality requirements, mirrored into the combined architecture.md. The 0.1.6 item now says which of its gaps move to 0.9.0 and why more geometry cannot close them.
46 lines
3.8 KiB
Markdown
46 lines
3.8 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.
|
||
|
||
### Building realism gate (0.9.0)
|
||
|
||
| ID | Check | Metric |
|
||
| --- | --- | --- |
|
||
| BR-1 | A building with a reference photograph has a review shot compared against it | Silhouette and proportion deltas recorded per building in `Screenshots/README.md`; owner approval per shot |
|
||
| BR-2 | Every building is either photo-matched or explicitly recorded as an unfounded blockout | List in `TODO.md`; no building in an in-between state |
|
||
| BR-3 | Every building has a collision proxy and at least one LOD | Count of buildings missing either = 0 |
|
||
| BR-4 | No surface carries a placeholder material | Material audit in `Tools/ue_audit_scene.py` reports 0 placeholder slots |
|
||
| BR-5 | The realism pass does not break the floor | QS-9 still holds at 1440p, with the measured cost of the pass recorded |
|