Water is retail collision surface type 12 (ID 1591); only DownTown and
University have it. The skater's water flag and height (Collision+3481/+28
-> Processed2488 bit30 / 2924) were never written, so the wipeout state's
water path (special surface, buoyancy, IsInWater) could never start.
- publish_water: body contact (SkeletonCollision material 12) or board
contact (collision flag bit 25) sets the flag and water height
- No recovered retail check bails on water: touching it now requests an
ordinary bail (request slot 33, logged WATER_BAIL); project choice
- water_surfaces example lists collision surface types and water per map
Confirmed in play: bails on University fountain/reservoir and DownTown.
See docs/hails-additions/09-water.md.
One skate3rust process validates TEST_WORLD and every converted map over
stdin/stdout (SKATE_MAP_CHECK lines). Existing checks still fail a map;
new spawn-support / neutral-startup / invisible-collision checks report
warnings. Setup falls back to per-map --check-assets with an older exe.
See docs/hails-additions/06-map-validator.md (PR F).
Note: install.py also carries PR G's customiser-overlap hunks
(available_memory, overlap_customiser, Background); they are interleaved
with the validator wiring in _install and are documented in doc 08.
Collections are looked up through a lazily built OnceLock<HashMap> index
with first-match semantics, identical to the linear scan on 145,807 real
lookups. See docs/hails-additions/07-collections-index.md (PR E).
Retail collision includes clustered meshes in which no unit carries a
surface ID (unit flag 0x80 unset). Across every shipped district these
are only 12-triangle boxes: zone, trigger and level-bounds volumes. The
loader made them solid, creating invisible walls (SkateSchool spawn
area, DownTown's Kube Tower plaza, MegaPark's stadium entrance, Maloof).
Authored player positions lie inside some of them, so they are not solid
in the original game.
visit_clusters now decodes and validates each mesh fully and skips it
when no unit has a surface ID. Meshes mixing surfaced and surfaceless
units are ordinary geometry and stay whole. RetailTriangle records
has_surface.
Collision triangles loaded: SkateSchool -84, DownTown -24, Maloof -24,
MegaPark -12, all other maps unchanged. Confirmed in play.
See docs/hails-additions/05-collision-volumes.md.
Implements issue #14. A dedicated thread owns SDL3 (3.4.16, statically
linked via sdl3 =0.20.0) and publishes per-slot snapshots re-expressed as
the XInput-shaped XboxState, so the TU3 conversion in skate-core is
unchanged. Conversions are exact for XInput-backed pads (stick Y via
bitwise NOT, trigger round-to-nearest). SKATE3_INPUT=xinput selects the
original transport, which is also the fallback if SDL fails to start.
Optional settings/controller.json maps paddles to XInput buttons.
Build: scripts/Ensure-CMake.ps1 locates CMake (PATH or Visual Studio's
copy) for the SDL source build. sdl3-sys is vendored with a build.rs
patch setting CMAKE_MSVC_RUNTIME_LIBRARY from crt-static, because SDL's
CMake (policy CMP0091) ignores cmake-rs' -MT and the static-CRT release
build failed with unresolved __imp_* symbols.
See docs/hails-additions/03-sdl3-gamepad-input.md and vendor/README.md.
Add generalized engine access and challenge mods, repair SKATE turn handling, and improve collision prediction and physics transitions. Reduce mod snapshot and material update overhead, preserve authored GLB materials with lighting and shadows, and improve CPU profiling.
Reset biped controller on checkpoint teleport and fall back to identity when skeleton root orthonormalization sees a degenerate axis, preventing poisoned COM frames and deck torque before the shared solve.
Co-authored-by: Cursor <[email protected]>
Apply probe SH to online customiser characters after remote bind, restore received sun shadows, and ship Skyline driving, fullscreen, and renderer improvements on the branch.
Co-authored-by: Cursor <[email protected]>
Respawn the chassis when a session starts so solid-bridge replication publishes a fresh body, and show local publish counts in replication status.
Co-authored-by: Cursor <[email protected]>
Expose append-only mesh buffers for mod skid/smoke rendering, sync rear-wheel VFX over multiplayer, rebuild Skyline audio assets, and let the updater install from any CI branch.
Co-authored-by: Cursor <[email protected]>
Sanitize non-finite SIMD lanes in offboard air selection, add solid dynamics and mod replication APIs, improve setup refresh without re-extracting assets, and harden Build-Release.ps1 for older PowerShell hosts.
Co-authored-by: Cursor <[email protected]>