For years, MSTS and ORTS users have struggled with filename collisions, missing assets, conflicting add‑ons, and content overwriting other content. These problems aren’t unique to train simulators — they appear in every long‑lived game ecosystem that relies on loose files and community add‑ons. The good news is that other communities have already solved this, and the solution is well understood.
To explain how MSTS/ORTS can move forward, it helps to look at a system that faced the same issues and built a robust solution: Bethesda’s modding ecosystem.
1. The Core Problem: Filenames as Identity
MSTS (and therefore ORTS) treat filenames as global, unique identifiers:
tree01.s means “the tree01 shape”texture.ace means “the texture named texture.ace”- the simulator assumes these names are unique and correct
But in real life:
- different creators reuse the same filenames
- different routes ship different assets with identical names
- repaints rely on payware shapes they cannot include
- users install content in unpredictable orders
- one add‑on overwrites another without warning
The simulator has no way to know:
- which file is correct
- whether two files with the same name are identical
- whether a mismatch is a mistake or intentional
- where an asset originally came from
This is not a runtime problem.
This is a content‑management problem.
And MSTS/ORTS have no content‑management layer.
2. Why ORTS Cannot Solve This at Runtime
By the time ORTS loads a route:
- filenames are already fixed
- world files already reference those filenames
- shapes already reference their texture filenames
- the simulator has no access to the original sources
- the simulator cannot rename files or rewrite content safely
Trying to fix collisions inside the simulator would:
- break MSTS compatibility
- break saved games
- break multiplayer determinism
- produce different results for different users
- make debugging impossible
A simulator cannot rewrite its own data files while loading them.
This is the wrong layer for the problem.
3. How Bethesda Faced the Same Problem
Bethesda’s games (Oblivion, Skyrim, Fallout, Starfield) had the exact same issues:
- mods overwrote each other
- assets with identical filenames conflicted
- load order determined which files “won”
- users had broken installs and missing assets
- the game engine could not fix any of it
The engine was old, compatibility‑locked, and could not be changed.
So the community built a packaging and identity layer above the runtime:
Mod Organizer / Vortex / LOOT
These tools:
- compute hashes for every asset
- detect conflicts
- track provenance
- reorder assets
- create virtual filesystems
- isolate mods from each other
- ensure deterministic installs
- rewrite references when needed
The game engine itself does nothing.
It simply loads the final resolved files.
This is the exact pattern MSTS/ORTS need.
4. How the Same Solution Applies to MSTS/ORTS
The correct place to solve asset identity is:
A. During packaging
A packaging tool can:
- compute hashes for shapes and textures
- detect filename collisions
- rename aliases safely
- rewrite shapes to reference renamed textures
- generate a metadata file (like a
.ref) that records identity
This produces a clean, collision‑free, MSTS‑compatible route.
B. During installation
An installer can:
- read the hash identities
- fetch the correct assets from the user’s system
- detect mismatches
- rename assets deterministically
- rewrite shapes and config files
- ensure the installed route is self‑contained
This is exactly what Bethesda mod managers do.
C. During runtime
MSTS/ORTS simply:
- load the files that exist
- trust the filenames
- behave deterministically
No hashing.
No guessing.
No rewriting.
No conflict resolution.
The simulator stays simple and compatible.
5. Why This Works for Repaints Too
Repaints often depend on payware shapes that cannot be redistributed.
The repaint can include:
- textures
- a modified
.eng/.wag - a hash of the required shape
The installer then:
- finds the correct shape
- renames it if needed
- rewrites the
.eng/.wag - rewrites the
.S file to use the repaint textures
This makes repaints legal, deterministic, and collision‑free.
6. The Pattern Is Universal
Whenever a runtime:
- is old
- is compatibility‑locked
- cannot resolve identity
- cannot rewrite content safely
…the ecosystem eventually builds a packaging + installer identity layer above it.
Linux did it.
Python did it.
Node.js did it.
Bethesda games did it.
Android did it.
Docker did it.
MSTS/ORTS are simply next in line.
7. The Bottom Line
MSTS/ORTS do not need to change.
The simulator should remain a deterministic runtime.
What the ecosystem needs is:
- a packaging tool that computes hashes and resolves collisions
- an installer that uses those hashes to fetch and prepare assets
- stable filenames at runtime
This is the same solution that saved Bethesda’s modding ecosystem — and it will work just as well for MSTS/ORTS.