ReRAC Mods & Asset Export

What works today in ReRAC (v0.3.9-alpha) for asset extraction (PNG, WAV, glTF, JSON) and RC_* debug switches, plus how the planned Stage 3 composable mod loader works.

  • 60,000-file PNG/WAV/glTF exporter
  • 35+ RC_* runtime switches
  • F3 / F4 / F8 debug HUD
  • Stage 3 mod.toml VFS design
Metal workshop case holding twin reversible ratcheting socket wrenches and hexagonal steel sockets
Reversible ratcheting socket wrenches and hexagonal bolt drivers

Current status of ReRAC mods

Players searching for ReRAC mods should know the exact two-part picture documented in docs/plan/mods.md and the ReRAC website:

  • Full mod loader (Stage 3 roadmap): Dedicated mod installation (mod.toml packages, ordered mod profiles in ReRAC Launcher, keyed JSON gameplay patches, and sandboxed scripting) is designed as Stage 3 of the project once the base 2002 campaign reaches full 1.0 parity across Windows, Linux and macOS.
  • Available right now in v0.3.1-alpha & v0.3.9-alpha: Complete Tier 2 asset extraction (exporting every texture, WAV sound/track, glTF 3D model, collision mesh and JSON entity table from your disc in ~10 seconds), plus 35+ RC_* runtime and debug environment switches and open Rust source code for custom forks.

Exporting PNG, WAV, glTF & JSON assets today

In ReRAC Launcher, click the ⋯ button beside Play and select Export assets… (or run rerac-extract export --out <data_dir> --to <export_dir> --what all). Exporting the entire SCUS-97199 disc produces roughly 60,000 files (~3.5 GB) in about 10 seconds on an SSD without modifying games/rac1/data/:

Exported Relative PathFile FormatContents & Modding Metadata
textures/levels/NN/<table>/<key>.pngIndexed or RGBA PNG + CLUT/TEX0 sidecarLevel terrain (tfrag), props (tie/shrub), mobys and HUD sprites. Preserves PS2 CSM1 palette & mip metadata.
audio/levels/NN/sound_bank/NNN.wavStandard PCM WAV + sound_bank.jsonWeapon, gadget, footstep and enemy sound effects with sample rate and loop points.
audio/levels/NN/{music,speech}/*.wavStandard PCM WAV + music.jsonPlanet soundtrack stems and cutscene/help-desk voice streams.
models/levels/NN/mobys/CCCC.gltfglTF 2.0 (.gltf)Animated character, enemy, weapon and gadget meshes with joint palettes and sequence extras.
levels/NN/level.gltf & collision.gltfglTF 2.0 (.gltf)Full planet tfrag/tie/shrub geometry (with _PS2_* vertex attributes) and 4-unit surface collision mesh.
levels/NN/*.json & text/**/<lang>.jsonStructured JSONPlaced moby instances, pvars, splines/paths, camera volumes, item tables, and localized strings across 5 languages.

You can also export a single planet quickly from the CLI with rerac-extract export --out games/rac1/data --to ./novalis-dump --what models,textures --level 01, then open level.gltf or mobys/*.gltf directly in Blender.

How the Stage 3 ReRAC mod architecture works (vs OpenGOAL)

ReRAC’s design document compares OpenGOAL’s whole-repository fork model (where two gameplay mods cannot be combined) against a layered virtual file system (rc-data) designed so multiple ReRAC mods compose cleanly:

  1. Stage 3a – Asset override profiles (mod.toml): A mod ships replacement PNGs, WAVs or glTF meshes at the exact same relative path produced by Export assets… (for example textures/levels/01/tfrag/0123.png). Enabling or reordering mods in the launcher bakes a per-profile Tier 1 overlay cache in seconds without touching your clean disc cache or requiring your ISO again.
  2. Stage 3b – Keyed JSON data patches: Instead of replacing whole level binaries (which breaks when two mods touch the same planet), mods patch moby instances, pvars, vendor prices or dialogue strings by uid / message id, allowing the launcher to merge non-overlapping edits and report exact conflicts.
  3. Stage 3c – Sandboxed Luau scripting (rc-mods): The upstream architecture favors Luau (via Rust’s mlua crate) running deterministically inside the 60 Hz gameplay tick with hooks into moby_update classes, item definitions, spawn rules and HUD strings, plus per-profile save isolation.

Developer & runtime environment switches (RC_*)

Both prebuilt rerac binaries and cargo dev honor environment variables for level select, item grants, camera placement and live moby inspection:

Environment VariableEffect in ReRAC
RC_LEVEL=<0..18>Boot straight into planet index NN (for example RC_LEVEL=13 for Gemlik Base), skipping the front-end menu unless RC_FRONTEND=1.
RC_HERO_AT=x,y,z[,yaw]Spawn Ratchet at exact world coordinates on level load for testing jumps, rails or boss arenas.
RC_GIVE_ITEMS=2,12,29Grant specific item/gadget IDs at startup (e.g. 2 Heli-Pack, 3 Thruster-Pack, 4 Hydro-Pack, 12 Swingshot, 28 Magneboots, 29 Grindboots).
RC_GIVE_BOLTS=50000 / RC_GIVE_GOLD_BOLTS=40Start with custom bolt or Gold Bolt counts to test Gadgetron vendors and Novalis gold weapon rooms.
RC_COMPLETES=1Boot directly with Challenge Mode completion count set (enables the Novalis gold-weapon teleporter pad and gold offers; added in PR #54).
RC_DEBUG_HUD=1Enable the live inspect overlay: F3 toggles visibility, F4 cycles Player / Mobys / Sound pages, and F8 copies a full RC_LEVEL=... repro command to your clipboard.
RC_ASPECT=fill / RC_RESOLUTION=2160Override Port Options aspect ratio (4:3, 16:10, 16:9, fill) or internal vertical resolution from the command line.
RC_LOD_TINT=1 / RC_FOG=0 / RC_SEA=0 Diagnostic shader toggles to inspect tfrag LOD transitions, disable distance fog, or hide liquid draw callbacks.

ReRAC maps PlayStation 2 face buttons, bumpers, triggers and twin analog sticks by physical position across connected gamepads, with multi-controller detection and Linux 8BitDo mapping fixes in v0.3.8-alpha:

ControllerBest For in ReRACHardware AdvantageLink
Sony DualSenseAuthentic PlayStation button layoutSymmetrical twin sticks matching DualShock 2 muscle memory + crisp D-padView on Amazon
8BitDo Ultimate 2 WirelessLinux, SteamOS & Windows desktopZero-drift TMR sticks, charging dock, verified Linux button mapping in v0.3.8-alphaView on Amazon
GameSir Cyclone 2Precision 3D platforming & strafingTMR sticks, hair-trigger locks for L2/R2 Thruster-Pack strafing, 1000 Hz wirelessView on Amazon
Xbox Wireless ControllerPlug-and-play Windows 10/11Native Windows XInput standard with positional face-button mappingView on Amazon

As an Amazon Associate, this site earns from qualifying purchases.

Macro view of interlocking bronze and steel mechanical gearwheels on a machined frame
Precision mechanical gearwork echoing the OmniWrench and Gadgetron machinery
Desktop gaming PC workstation with dual monitors and tempered glass chassis
Native Rust and Bevy desktop target with 416p-2160p scaling and Fill ultrawide view
Macro view of a handheld mainboard PCB and multi-core GPU silicon package
Multi-threaded Bevy wgpu renderer over Vulkan, DirectX 12 and Apple Metal

Common questions

Does editing files in games/rac1/data/exports/ change the game?

No. As noted in ReRAC Launcher, Export assets… is currently a one-way export for inspection, Blender rendering, audio listening, and preparing future asset packs. The runtime only reads games/rac1/data/ and cache/v1/ until Stage 3a VFS overrides ship.

Can I edit WGSL shaders or Rust gameplay code today?

Yes. Because re-rac/rerac is open-source under the ISC License and loads assets/shaders/*.wgsl from its version directory, developers can modify shaders or clone the repository, edit crates/rc-game, and register their build folder in ReRAC Launcher via Version Management → Development → Add build folder….

Can OpenRAC / Wrench level mods load directly in ReRAC?

Not directly. OpenRAC/OpenRAC targets the PAL PS2 release (SCES-50916) with a C decompilation workflow, whereas ReRAC is a native Rust/Bevy engine reading NTSC-U (SCUS-97199) data. Compare both architectures on PS2 & PS3 PC Ports.