SteonMod
Rust rewriteSource only

Skate 3 Cleanroom (web)

The Skate 3 Rust/Bevy engine running on the web (WebGPU) with a clean-room asset pack: every texture regenerated, no retail pixels.

Source Follow

Skate 3 Rust/Bevy engine on the web (WebGPU) with a clean-room asset pack: every texture regenerated, no retail pixels See the README below for details.

Skate 3 clean room (web)

Play: https://andrewnakas.github.io/skate3-cleanroom/ (Chrome or Edge 113+ with WebGPU)

This is the Skate 3 Rust/Bevy engine rewrite (skate-3-rust-engine, branch cleanroom-web) compiled to WebAssembly + WebGPU. It runs on a clean asset pack. Every image in the pack was regenerated from coarse facts, so no retail pixels are shipped.

What the pack contains

KindTreatment
Textures (maps, props, backdrops, skies, HUD, skater model): 7681 in totalRegenerated. Each one is rebuilt from its size, a 4x4 or 16x16 colour grid and a 2-bit alpha outline, plus our own detail noise and dither.
Map geometry, collision, grind rails, spawns/teleportsKept (facts)
Skater skeleton, skin weights, meshKept (facts)
Animations, state graphs, physics/VLT tuning, input/camera configsKept (facts)
HUD / sky layout data, lighting parameters, irradiance probesKept (facts)
Player sound effects (27: rolling per surface, grinds, powerslide, pops, landings, bails, footsteps, pushes, flips, a menu cue)Regenerated. Each is synthesised from a coarse outline of a retail sample (per-frame pitch, harmonicity, 16-band loudness envelope) with new noise and partials; audio_clean.py.
Music, speechNot shipped.
Everything else from the discDropped
dmjumpline mapThe author's own map (converted from a Descenders mod with their own tool); shipped as-is and taint-scanned like everything else.
Freestyle MX bike modEngine SDK example; the Lua script runs as a built-in Rust port on the web. Model: "KTM 450 EXC" by mx-3d (Sketchfab), CC BY 4.0.

Taint scan: all regenerated textures (7692 incl. dmjumpline) and all 27 sounds are compared with the retail ones. The result is 0 failing: no shared byte run of 32 bytes or more, no texture sharing 4+ sampled windows with any single retail texture, and no regenerated file identical to a retail one.

Pipeline (games/skate3/)

  1. The engine's tools/prepare_assets.py converts your own disc into a private pack. This stays private and is never published.
  2. python -m games.skate3.generate copies the kept facts and regenerates every texture (skate14.py rewrites SKATE14 map texture payloads).
  3. python -m games.skate3.taint_report runs the taint scan.
  4. python -m games.skate3.audio_clean describe (dirty: outlines only), build /assets, taint /assets. The dump comes from the engine example dump_player_pcm.
  5. In the engine repo, tools/build_web.ps1 -Pack -Out builds the wasm, the page and the packed assets.

Controls

See docs/web.md in the engine repo. Keyboard and browser gamepads are supported. Change maps with the picker, or add ?map=Name to the URL.

Known limits

  • The three big districts (DownTown, University, Industrial) are not on the web build yet: University loads but never draws a frame in the browser.
  • Web audio is a simple clean-room driver, not the desktop build's retail-exact audio runtime (that emulates the retail guest and needs the disc's banks).
  • The first load takes a few seconds for loading plus shader compilation.

From the project's repository, fetched . Images load from GitHub.

Releases

Feed

No releases yet. Follow the project to hear when the first one comes out.

Works for me

Did it work on your PC? A quick report tells other players which versions are safe to try.

Sign in to add a report

Forks & ports

Built on Skate 3 Rust Engine.

Also built on Skate 3 Rust Engine

Discussion

No posts yet. Ask a question, share your setup or post a clip.

Sign in to post