mirror of
https://github.com/SK8-ENGINE/skate-3-rust-engine.git
synced 2026-10-26 19:47:44 +00:00
Review fixes: - The audio host takes each physics step exactly once (one-step pulses latched, nothing while paused or silenced, at most 4 steps per frame), so pushes and other one-frame events are never dropped or doubled. e2e at 60 fps and above is byte-identical; 30 / 45 fps change only by the latch and the step pair. - Removed the emitter PROFILES fallback, the stray trace dump and the audition script; data-gated tests are #[ignore = "needs the private install data"] and fail loudly when run without it; per-post log lines behind SKATE_AUDIO_TRACE; checked bank parsing, finite output, camera-cut Doppler reset, fewer render allocations. - The 15 verdict-settled A/B switches are removed; their "on" behaviour is the only one (byte-identical). World / NPC audio, hookable by engine systems and mods: - Map-change fix: world and NPC hosts reset when the map's banks are unloaded, so surviving objects sound again. - Engine surface (skate-game::world_audio): TrafficAudio / PedAudio / NpcSkaterAudio components, horn / alarm / speech messages, read-back of who is audible; retail limits (4 cars within 40 m, 15 peds within 50 m with footsteps for the nearest 3, one NPC skater within 30 m), measured in the recompilation. - Mod surface (Lua API 2, `sdk.world_audio.*`); test mod `mods/world-audio-test/` (cars, peds, a ghost skater). - Per-skater audio state builder (local player output identical); remote players take the NPC skater slot; an opt-in non-retail "more audible" setting. - Docs: doc 15 "Hooking up world audio", doc 11 sections, PR plan.
Hails' additions
Changes made in the Hailey-Ross fork of SK8-ENGINE/skate-3-rust-engine, documented so upstream maintainers have the full context when reviewing a pull request: what broke, why, what changed, how it was verified, and what is still open.
Each document stands alone. File paths are relative to the repository root.
| # | Change | Area | Status |
|---|---|---|---|
| 1 | ISO extraction argument order | Setup (Python) | Superseded: upstream fixed it the same way (713fe70, 7ae67f2, 2026-10-02); dropped from PR A |
| 2 | Windows long paths during setup | Setup (Python) | Done; UAC prompt and frozen relaunch tested end to end (2026-10-02) |
| 3 | SDL3 gamepad input | Game (Rust), build scripts, vendored sdl3-sys |
Done, verified in play with an Xbox Elite Series 2 |
| 4 | Authored map spawns | Asset pipeline (Python) | Done, all 10 maps confirmed in play |
| 5 | Invisible collision volumes | Game data loader (Rust) | Done, all four affected maps confirmed in play |
| 9 | Water | Game physics, camera and rendering (Rust), setup, diagnostics | Matched to retail footage (RPCS3): shallow water solid, deep water floats, board floats, water camera + vignette, entry splash, canal water look matched, small bodies calmer |
| 10 | Sky shader validation test | Game tests (Rust) | Done; all six shader validation tests pass |
| 11 | Game audio | Setup (Python, vgmstream), game audio (Rust) | Work in progress (draft #32). Native port of Skate 3's retail audio runtime (crates/skate-audio): AEMS evaluator, voice graph, MixMap, granular rolling bed, Splice, buses, every player component; the only audio path since 2026-10-03 (interim cue tables removed). Retail world audio: .ems emitters, location-set one-shots, zone ambience. User: "basically retail". |
| 12 | Board solver: 50 constraint iterations | Game physics (Rust) | Done; maps identical, water traces as expected; one asset-gated customiser test fails (open question) |
| 13 | Research hooks for the recompilation | Research tooling (external: skate3recomp research-hooks branch) |
Published; reference and information gathering only (the recompilation is not a perfect copy of the console game) |
| 14 | Published development and research tools | Tooling (tools/<name>/, Python and shell) |
Done (uncommitted); scripts compile and print their usage; the two recomp-* folders are for the recomp's research hooks, reference only |
| 15 | Hooking up world audio | Game audio (Rust), mod API (Lua) | Part of #32 (uncommitted). Engine-facing components (TrafficAudio, PedAudio, NpcSkaterAudio) and sdk.world_audio for mods feed the ported retail traffic / ped / NPC-skater audio with retail's limits; the map-change bug fixed; a dev test mod (cars, peds, a ghost skater) makes it audible now |
Environment used for verification
- Windows 11, Intel i7-14700KF, NVIDIA RTX 4080 SUPER (Vulkan).
- Rust 1.98.1 (MSVC), Visual Studio 2026 C++ tools, Windows SDK 10.0.26100, LLVM 23.1.2, Python 3.13.15.
- Skate 3 Xbox 360 disc image (103 files, 6,404,940,920 bytes).
- Xbox Elite Series 2 controller over Bluetooth LE.
Conventions
- Upstream behaviour is preserved unless a document says otherwise; where a behaviour changes on purpose (for example, a map's default spawn), the document lists the old and new values.
- Project choices that are not dictated by retail data are called out as such, so maintainers can overrule them.