Files
skate-3-rust-engine/tools/regression-checks/README.md
T
Hails 418dcecd41 Audio: interim cue tables retired, native water splash, published tools
- The interim cue tables and their opt-outs are gone; the native runtime is the only audio path. Old
  settings/audio.json files still load ("interim" / "native" ignored). Missing native data logs an error
  instead of falling back.
- Water splash from retail's mechanism (SFXObj_OffBoard start / update): Skate_Collisions 1187 / 1197 once
  per water stay, 1198 when the board is in water.
- The random interim riding bed is removed; riding collision and cloth sounds compared with the recomp
  (doc 11). Native output otherwise byte-identical (13 scenarios + 5 sessions).
- Published tools under tools/ (one folder per tool with a README; the recomp ones labelled for use with the
  research hooks), doc 14 and PR plan bucket L.
- Docs: doc 11 (retirement, bail density measured against the recomp, collision posts), doc 13 (usage guide).
2026-10-03 10:20:08 -06:00

65 lines
2.9 KiB
Markdown

# Regression checks
Checks to run after changing the asset pipeline, the converter, input, native dependencies, build
scripts or game code, before calling a change done. Each one compares the current install or build
against a baseline you record yourself on a known-good state.
| Script | What it checks |
|---|---|
| `check_maps.py` | Loads every installed map in one game process (`skate3rust --validate-maps`) and compares each map's loaded collision triangle count with the baseline. Fails on any map error or warning (spawn support, startup, invisible floor). Falls back to one `--check-assets` launch per map on builds without `--validate-maps`. |
| `check_spawns.py` | Reads the spawn baked into every installed `.skate` map and compares it with the baseline (0.01 m tolerance). |
| `check_customiser.py` | Snapshots the character customiser outputs (every stage receipt: path, size, SHA-256 of each file) and compares a later install with it. Ignores differences that are only the random set id embedded in JSON paths. |
| `smoke_maps.sh` | Muted crash smoke test: launches the game on each map for N seconds (windowed, `--mute`) and counts panics, `ERROR` lines, non-finite physics and render-ready lines in the log. |
## Inputs
- An installation set up by `tools/setup.py` (`data/installation.json`, `data/installations/<id>/`).
- `bin/skate3rust.exe` for `check_maps.py` (`--exe` for another build) and `smoke_maps.sh` (`SKATE_EXE`).
- Baselines live in `.local/regression/` (gitignored) unless you pass `--baseline`; the customiser
snapshot in `.local/customiser-baseline/` (`--snapshot`).
## Usage
From the repository root:
```
# once, on a known-good build / install
py -3.13 tools/regression-checks/check_maps.py --update
py -3.13 tools/regression-checks/check_spawns.py --update
py -3.13 tools/regression-checks/check_customiser.py --save
# after a change
py -3.13 tools/regression-checks/check_maps.py
py -3.13 tools/regression-checks/check_spawns.py
py -3.13 tools/regression-checks/check_customiser.py
# smoke test (Git Bash): 25 s per map, default maps StartPark University DownTown MegaPark
bash tools/regression-checks/smoke_maps.sh 25 StartPark Industrial
```
Every check exits 1 on a difference. The smoke test opens a game window per map; don't run it while
someone is playing on the same machine.
## Example output
`check_maps.py` (made-up numbers):
```
TEST_WORLD ...
MapA 12345 ok (0.41s)
MapB 67890 CHANGED (baseline 67880, delta 10)
```
`smoke_maps.sh` (from a real run; exit 124 = stopped by the timeout, as intended):
```
StartPark exit=124 panics=0 errors=0 nonfinite=0 render_ready=1 native_lines=7
University exit=124 panics=0 errors=0 nonfinite=0 render_ready=1 native_lines=7
logs: <repo>/.local/smoke/20261003_090413
```
## Requirements
- Windows, Python 3.13 (standard library only).
- `smoke_maps.sh`: Git Bash (`timeout`, `taskkill`).