Files
skate-3-rust-engine/tools/regression-checks/smoke_maps.sh
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

28 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Muted crash smoke test: run the game on each map for N seconds (windowed, --mute), then grep the log.
# usage: tools/regression-checks/smoke_maps.sh [seconds] [map ...]
# default 25 s; default maps: StartPark University DownTown MegaPark
# Environment: SKATE_EXE (default bin/skate3rust.exe), SMOKE_OUT (default .local/smoke).
# Output: <SMOKE_OUT>/<stamp>/<map>.log and one summary line per map (also in summary.txt).
# Runs from Git Bash on Windows (uses taskkill to make sure the game is gone between maps).
set -u
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
EXE="${SKATE_EXE:-$ROOT/bin/skate3rust.exe}"
SECS="${1:-25}"; shift || true
MAPS=("$@"); [ ${#MAPS[@]} -eq 0 ] && MAPS=(StartPark University DownTown MegaPark)
INST=$(ls -d "$ROOT"/data/installations/*/ 2>/dev/null | head -1)
if [ -z "$INST" ] || [ ! -x "$EXE" ]; then echo "need an installation under data/installations and $EXE"; exit 2; fi
OUT="${SMOKE_OUT:-$ROOT/.local/smoke}/$(date +%Y%m%d_%H%M%S)"; mkdir -p "$OUT"
for m in "${MAPS[@]}"; do
log="$OUT/$m.log"
SKATE_REPORT_CHILD=1 SKATE3_MODS="$ROOT/mods" timeout "$SECS" "$EXE" --assets "$ROOT/assets" --map "$INST/maps/$m.skate" --mute >"$log" 2>&1
code=$?
taskkill //F //IM "$(basename "$EXE")" >/dev/null 2>&1
clean=$(sed 's/\x1b\[[0-9;]*m//g' "$log")
panics=$(grep -ciE "panicked|panic" <<<"$clean"); errors=$(grep -c " ERROR " <<<"$clean")
nonfinite=$(grep -cE "NONFINITE|Non-finite|physics_failed:true" <<<"$clean")
ready=$(grep -c "SKATE_RENDER_READY" <<<"$clean"); native=$(grep -c "Game audio: native" <<<"$clean")
echo "$m exit=$code panics=$panics errors=$errors nonfinite=$nonfinite render_ready=$ready native_lines=$native" | tee -a "$OUT/summary.txt"
done
echo "logs: $OUT"