-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
A Unity Mod Manager modding layer for Railroader. It loads FUSE data packages — route extensions, asset packs, audio packs, track graph changes, world scenery, operations, and progression data — and provides drop-in compatibility for legacy Railloader, Strange Customs, ConfusingSupplements, For Your Convenience, and Alina's Map Mod packages.
The 2025.1.x line. FUSE logs its version report at startup in FUSE.log.
No. FUSE replaces it. Running both means two loaders are live at once, and FUSE
warns when it finds a leftover Railloader.dll, Railloader.Injector.dll, or
Railloader.Interchange.dll.
Yes, under the GNU Affero General Public License v3.0. See LICENSE.
Railroader/Mods, alongside FUSE itself. Package folders end in .FUSE.
Yes — uncheck it in Unity Mod Manager. FUSE respects UMM's enabled checkbox for any package folder UMM can see, and skips its track and data files.
Run /fuse.loaded. If the package is not listed at all, FUSE never discovered it —
check that it is in Railroader/Mods and enabled in UMM. If it is listed as
faulted, it was found but failed to apply; FUSE.log names the package and the
phase that failed.
Usually a missing asset pack. Run /fuse.assets to see which packs FUSE actually
found, and install the one the package expects.
Do not work around it by pointing the package at a different asset name. If the correct pack exists, install it.
No. A package that faults is reported and skipped; unrelated packages still load.
RailLoader JSON data mods can convert. Run them through the converter to produce
a *.FUSE package — see
MIGRATION_FROM_LEGACY.md. Asset packs and Alina
map-tile packages install directly because FUSE loads their supported legacy
formats; converting them would only create a misleading empty wrapper.
Script mods that ship .dll logic do not convert. Neither do rolling stock,
locomotive, and car mods, except audio definitions FUSE can import.
No — not for normal play. Both claim the same object ids and you get duplicated
track, industries, or buildings. /fuse.conflicts reports it. Loading both is
supported only as a deliberate conflict test.
Reconvert when the converter version changes, the schema version changes, a converter repair became an actual runtime fix, or the legacy package itself was updated.
In compatibility mode only. FUSE does not sync package contents over the network. Every host and client applies its own local package stack — the same expectation legacy Railloader had, where everyone installs the same mods.
The same FUSE build, the same enabled package list, and the same load order, installed locally on each machine.
FUSE does not negotiate the mismatch. A mismatched client can desync visually or operationally. Non-host clients log a warning the first time they apply runtime world changes.
A server that would rather refuse a mismatched client than let it desync can set
BlockNonHostMultiplayerClientWorldApply to true. It is off by default so
private tests behave like RailLoader. See SETTINGS.md.
Back them up before installing, updating, or changing your package list. A save made with packages loaded depends on the world those packages created — removing a package that a save relies on changes what that save can load.
Yes. Remove your *.FUSE packages first, then FUSE itself, then restore your
previous mods and save backup. Order matters — see
GETTING_STARTED.md.
/fuse.reapply and /fuse.restore are for testing and recovery, not normal play.
Both refuse to run while a map is loaded unless you pass --force, because
re-applying mid-session can destabilize a running save. Back up first. Restarting
the game is the safer option in every case where you are not specifically testing
reload behavior.
Turn on EnableFrameSpikeDiagnostics to log frames over the threshold, then check
FUSE.log for what is spiking. It is a measurement tool — it identifies the cause
rather than fixing it. See SETTINGS.md.
Note that load time scales with how much your packages actually change: track segments, scenery, and industries all cost time to apply.
Current builds also name the slowest measured FUSE runtime-pump phase on a
logged spike. fusePumpWorstPhase='none measured' means the detector did not
find expensive work in FUSE's own per-frame pump; correlate that timestamp with
the surrounding game and third-party logs instead. Equipment warm-up completion
lines include the slowest asset store and how many stores crossed the slow-store
threshold, which is the useful evidence for a buy-menu delay report.
For a release-quality before/after run, follow Performance Acceptance Testing.
No. The track, scenery, and world-label overlays draw every frame and exist for authoring and debugging. Leave them off during normal play.
Start with PACKAGE_AUTHOR_GUIDE.md, then the schema at
schemas/FUSE_JSON_SCHEMA.md.
The standalone desktop editor ships as its own download — see EXTERNAL_EDITOR.md. The full in-game editor workflow is not part of this release.
/fuse.validate <modId> re-runs the validator against a loaded package and prints
errors and warnings with the offending field. The fuse-convert CLI also validates
as part of conversion and can fail a build on errors, which is the better fit for
CI.
-
FUSE.logandPlayer.log - The output of
/fuse.report json -
/fuse.loadedwhen package state matters -
/fuse.conflictswhen conflicts are reported -
conversion-report.jsonandconversion-report.mdfor the affected package - Screenshots and your exact mod and package list
Turning on VerboseApplyReportDetails before reproducing usually identifies the
offending object without a second attempt.
GitHub Issues. Issues reproducible with a minimal converted package, or against a documented legacy route the converter covers, get priority.
Mirrored from docs/FAQ.md — edit there, not here.