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).
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.exeforcheck_maps.py(--exefor another build) andsmoke_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).