mirror of
https://github.com/SK8-ENGINE/skate-3-rust-engine.git
synced 2026-10-26 19:47:44 +00:00
- 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).
65 lines
2.9 KiB
Markdown
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`).
|