Merged PR #13: no-blocking-collision release check Co-authored-by: Zwitschi <zwitschi82@gmail.com>
8.6 KiB
Release checks
Every version in TODO.md ends with release checks, and the scope and goal of each version are in ROADMAP.md. A version is not tagged until all of its checks pass. If a check fails, do not tag; open a patch task in TODO.md and report the failing check in CHANGELOG.md.
Record results in the table at the end of this file, with the date, the exact build under test, and the evidence (screenshot, log, or command output). A check without recorded evidence counts as failed.
General checks (every release)
-
Blender pre-check (before the engine pass).
Art/blender/site/site_assembly.pyraycasts both sidewalks and the designated crossing on a 1 m grid and reports holes and step heights. It is evidence, not the check: the engine traversal below is still required. -
Fresh checkout builds. Clone into a clean directory,
git lfs pull, build and package using only the documented external engine installation. No machine-specific paths, no uncommitted steps. -
No packaging errors. The packaged build launches, reaches gameplay, and quits cleanly. Logs contain no missing-asset, missing-map, or shader-compile errors.
-
Licensing. Every new asset has provenance in
THIRD_PARTY_NOTICES.md, or is recorded as unresolved and kept out of the build. -
Version discipline. Patch releases contain fixes, optimisation, docs, or tuning only — no new scope.
Performance check
Measured at 1440p on the development workstation: Bazzite, Ryzen 7 7700X, 64 GB RAM, RTX 5070 Ti 16 GB.
- Record the quality preset, the exact upscaling state (off, DLSS/TSR/FXAA and mode), and the engine version.
- Report frame rate without frame generation and with frame generation, separately.
- Target: 60 FPS at 1440p without frame generation.
- Capture a frame-time graph over a fixed traversal route, not a single sample. State the route.
0.1.0 checks
- Player traverses both the south-side frontage and the north-side frontage of the demo without falling through geometry, including the designated crossing. Walk the route twice: once normally, once with collision debug visualisation enabled.
- Building placement, street width, sidewalk depth, and site identity match the reference photography. Compare side by side and note every deliberate deviation. "Looks right" is not evidence.
- No blocking collision, no invisible walls, no gaps at sidewalk/road seams.
- 60 FPS at 1440p per the performance check above.
- Fresh checkout builds against the documented external engine installation.
- Linux build packaged and launched; controls documented in
Docs/and shown in-game. - Tag
v0.1.0, write theCHANGELOG.mdentry, then remove the completed section fromTODO.md(its goal stays inROADMAP.md).
Check-record template
| Version | Check | Result | Evidence | Date |
|---|---|---|---|---|
0.1.0 |
Traversal, both sides | — | — | — |
0.1.0 |
Placement vs references | PASS (with deliberate simplifications) | Section below, 2026-11-08 | 2026-11-08 |
0.1.0 |
Collision and packaging | PASS — no blocking collision, no invisible walls, no seam gaps (see audit note) | -qaselftest on the packaged build, 2026-11-08 |
2026-11-08 |
0.1.0 |
60 FPS at 1440p | — | — | — |
0.1.0 |
Fresh checkout build | — | — | — |
0.1.0 |
Packaged Linux build | — | — | — |
0.1.0 — Placement vs references — record (2026-11-08)
Checked against the reference photography (Art/reference/) and the Geo measurements
(Geo/verification/*). Build under test: current main content, DemoMap rendered via
Tools/render_screenshots.sh (2026-11-08, Vulkan SM5, 1920×1080); engine positions
probed from the DemoMap (commandlet, 2026-11-08).
Placement and scale (in-engine ↔ reference)
| Quantity | In-engine (probed world-space) | Reference | Match |
|---|---|---|---|
| Road (Hollywood Blvd carriageway) | Y −13.82..+10.47 m → 24.3 m | crossing ways 20.9–25.9 m | ✓ within range |
| South sidewalk strip | 7.3 m (bbox incl. kerb apron); built walkable strip 4.0 m per Art/blender/README.md |
12.6 m centreline offset; strip width from setback arithmetic | ✓ offset 12.5 m ≈ ref 12.6 m |
| North sidewalk strip | 8.6 m (bbox); built strip 5.3 m | 13.6 m centreline offset | ✓ offset 13.2 m ≈ ref 13.6 m |
| Kerbs | 3.3 m apron face to 0.13 m upstand | 0.15 m assumption; photo check pending (0.1.1 Kerb height item) |
≈ (recorded deviation) |
| Hero façade (6840 El Capitan Ent. Ctr.) | X −146.38..−120.34 m (26.0 m frontage), Y +13.0..+25.6 m from road centre (13.0 m deep) | 6840 setback 14.5 m; 25.75 m frontage (resolved) | ✓ frontage; setback ~1.5 m deeper than ref (recorded) |
| El Capitan Theatre (6838) | X −120.82..−82.10 m, Y +13.4..+68.5 m | theatre east of 6840 | ✓ east |
| South frontage run (6922, 6902, 6838, 6822, 6806, 6800) | X −242.76..−14.37 m, all Y +12..+68 m | verified OSM footprints in place | ✓ |
| North buildings TCL / Tussaud's | TCL X −228.9..−184.4, Y −94.3..−18.0; Tussaud's X −270.7..−228.0, Y −75.9..−18.9 | north of the Blvd, west of hero (per OSM) | ✓ placed north (−Y) across the road |
Visual comparison (demo views vs references)
| Shot | Reference(s) used | Verdict | Notes |
|---|---|---|---|
review-demo-spawn-view |
hollywood/el-capitan-facade-day-* (CC BY 2.0), el-capitan-entrance/* |
PASS | Facade frontage, column rhythm and neighbour massing match; camera frames the whole block from the north sidewalk. |
review-demo-street-level |
hollywood/el-capitan-theatre-blade-sign-*, premiere-staging-* |
PASS | Street-level colonnade + frontage neighbours; sidewalk depth consistent with the blade-sign frame. |
review-demo-crossing |
street-profile crossing s=130.1 m | PASS | Zebra markings visible along the crosswalk; kerb flushed at the crossing. |
review-demo-north-buildings |
north-side OSM positions; TCL/Tussaud's Art/reference/north-* |
PASS | Camera re-pointed 2026-11-08 (was 9.5 km west → 85% sky); buildings now framed. Flat blockout surfaces are the 0.1.4 scope. |
Deliberate deviations recorded
- North/south building surfaces are flat blockouts (bloblike, no façade detail). Detail texturing/façade style is the planned
0.1.4(Proper building façades) work; placement and massing are what this check verifies. - Kerb upstand 0.13 m as built vs 0.15 m assumed; the DEM cannot resolve a kerb — tracked in
0.1.1(Kerb height assumption). - Sidewalk surface detail (railings, pavers, domes) not modelled — outside
0.1.0scope. - Crossing ramps are kerb flushes, not graded ramps — the
0.1.1Crossing ramp gradient item. - Site identity (the neoclassical hero with motto band) matches the 2009 façade photograph and the 1922 Masonic elevation within blockout fidelity.
Pre-check method: Tools/judge_screenshot.py (vision model) flagged the simplified
flat surfaces as "unexpected" — those flags are the deliberate deviations above, not
placement errors. Final verdict is by human review of the shots in Screenshots/demo/.
0.1.0 — Collision and packaging — audit note (2026-11-08)
Run on the packaged build (GigLineQA, Development, Vulkan SM5) with -qaselftest.
- Transect (holes/gaps): 1456 samples over 16 rows — lane centres plus the kerb/road/sidewalk seam Ys (−1382, −1053, +718, +1047 and neighbours) and X −20000..−2000. Result 0 holes. (The old 84-sample check covered only 3 lane centres; the seam rows are what this check adds.)
- Invisible-wall probe: horizontal traces 30 m long, grounded at 160 cm above the local ground, along the road and both seam rows. Result 0/35 blocking hits inside 21 m — no invisible walls or misplaced blockers in the street envelope. (First pass used a fixed Z 160 start; the street is at Z ~366, so the probe started inside the earth and reported every row as a dist-0 blocker. Grounding the probe fixed that measurement bug.)
- Walk / reset / pause: 761 cm in 2 s (Z steady 456), reset 0 cm, pause
IsGamePaused()=1, unpause 0 — all PASS. - Packaging: the packaged build launches, reaches gameplay, and the QA run quits
cleanly. The
GigLineShotActorscreenshot rounds are suppressed under-qaselftestso they cannot quit the run before the audit phases. - Caveat recorded: ground Z extremes (−12 m / 3000 cm) are trace-start/terrain-edge artifacts of the widened extent, not walkable holes — the walkable corridor is continuous (walk + transect both PASS).