railroader-setons-special-s.../README.md
seton a1fcf01125 Initial commit: S3 - Seton's Special Sauce v0.2.0
Consolidates two standalone Railroader mods into one UMM "everything mod"
with an optional-module framework. Modules are disabled by default and
toggled per-module from the S3 settings page.

Core framework:
- IModule contract plus ModuleRegistry, with each module owning a Harmony
  instance scoped by its id so only enabled modules patch the game
- Per-module flat JSON settings (SettingsStore). On this Mono runtime
  JsonUtility silently drops nested custom-class fields, so settings stay flat
- Foldout-per-module settings panel plus a detector that offers to disable the
  old standalone mods if they are still installed

Modules (moved over to parity, verified in-game):
- Physics Optimizer (was RailroaderPhysicsOverhaul): LOD fast-path and
  auto-freeze, profiler overlay, debug car tinting, /rpf console commands
- Map Popout (was RRPopout): native map detach window. Pure-UMM install that
  drops the winhttp proxy and LoadLibrary's RRPopout.dll from the mod folder.
  Native Win32 + D3D11 + Dear ImGui engine included. Fixes a latent break where
  the now-private MapBuilder.UpdateForZoom() is reached via Traverse.

Build: dotnet for the managed assembly (netstandard2.1) and CMake for the
native DLL. build-local.ps1 installs into the game, build-release.ps1 packages
the UMM drag-install zip.
2026-06-17 14:17:41 -04:00

2.4 KiB

S³ - Seton's Special Sauce

An umbrella "everything mod" for Railroader, built on Unity Mod Manager.

S³ is a thin core that hosts independent, optional modules, each disabled by default. Open the S³ settings page in the UMM in-game menu and expand a module's foldout to enable and configure it. Module enable/disable applies on the next game launch.

I originally planned on releasing individual mods, but considering my workflow of just making what I want when I want it, I figured a unified platform for all my tweaks and additions would be more convenient for myself (one repo to manage) and the community.

Modules

Module What it does
Physics Optimizer Cuts CPU spent on train physics (LOD fast-path + auto-freeze), with a profiler overlay and debug car tinting. Console: /rpf
Map Popout Detaches the in-game map into a separate resizable window for a second monitor. Optional MapEnhancer integration.

Both are disabled by default - You must enable them per-module from the S³ settings page, a game restart is required for this to take effect. More modules will follow - S³ is designed to grow.

Migrating from the standalone mods

S³ replaces the separate Physics Optimizer (RailroaderPhysicsOverhaul) and PopOut Windows (RRPopout) mods. Uninstall those before installing S³. Settings do not carry over, so re-configure each module from the S³ settings page.

If these mods are detected you will be prompted to disable them in the S³ settings page.

Building

Requires the .NET SDK (dotnet). The native module additionally needs CMake + the MSVC toolchain.

  • Local test install: .\dist\build-local.ps1 builds and copies into the game's Mods\S3\ folder.
  • Release zip: .\dist\build-release.ps1 produces dist\SetonsSpecialSauce-<version>.zip for upload.

The game install path is set once in Directory.Build.props (GameDir); override per-build with /p:GameDir=... or the build script's -GameDir parameter.

Layout

src/            single managed assembly (S3.dll, netstandard2.1)
  Main.cs       UMM entry point
  Core/         module framework: IModule, registry, settings, settings panel
  Modules/      one folder per module
native/         shared Win32 + D3D11 + Dear ImGui external-window UI engine
dist/           build + packaging scripts