Skip to content
You're reading the docs for Railroader 0.6 (the MoW Update), currently available on the Experimental branch.

Building Asset Packs

If your mod contains binary assets such as models, textures, materials, or sound, you will need to build the asset pack using the Railroader Asset Development Kit (ADK). The ADK is a standalone Unity project with editor tools and shared assets needed to compile your content into a Unity asset bundle that the game can load.

If your mod only modifies data on existing objects or uses Relay scripts, you do not need the ADK, however you may find its workflow features helpful.

  • Unity 6000.3 (LTS) — install via Unity Hub. A Unity license is required; the free Personal license is appropriate for most modders — check Unity’s license terms for eligibility.
  • Railroader 0.6.0+ for testing your mod. This version is currently only available on the Experimental branch in Steam.
  1. Download the ADK. Clone or download the Railroader ADK repository.

  2. Open the project in Unity Hub. Click “Add project from disk” and select the ADK root folder. Open the project.

  3. Open the Asset Packs window. From the Unity menu bar, choose Railroader > Asset Packs. This window is where you create, edit, build, and store your asset packs.

  4. Create a new asset pack. Click + New, then enter your Domain (your unique author name, e.g. myhandle) and Pack Name (e.g. my-freight-car). These combine to form the pack identifier (myhandle/my-freight-car). Click Create to generate a folder under Assets/AssetPacks/ with a starter Info.json that includes an rr/game >= requirement (for example rr/game >=0.6.0).

  5. Add your content. Place models, textures, materials, and audio at the root of your asset pack folder. See Asset Packs for details on what can be included.

  6. Set your ModDev path. Click Paths in the toolbar and set ModDev to Documents/Railroader/ModDev/. Built packs are copied here so Railroader can load them during development.

  7. Build and test. Select your pack and click Build. Launch Railroader and your pack will be loaded from ModDev automatically. You will need to enable the mod when creating a new game.

Assets/
AssetPacks/ # Local copy of your asset packs (this is where you work)
SharedPacks/ # Reference assets from the base game (do not modify)
Scripts/
AssetPack/
Common/ # Runtime C# for the asset pack system
Editor/ # Editor tooling (Asset Packs window, build pipeline)
Scenes/
Scene.unity # Preview scene
Settings/ # URP and rendering settings
URP/ # Universal Render Pipeline assets

The Assets/SharedPacks/shared/ directory contains shaders, materials, and textures from the base game. These are included so that Unity can resolve asset references during builds. At runtime, the game loads its own copies of these assets — your built bundle will not include duplicates. Assets from other mods don’t work this way; see Using assets from other packs.

We strongly recommend using the provided shared shaders rather than URP/Lit. The shared shaders keep asset pack sizes and memory usage low and allow the game to batch draw calls. We cannot guarantee support for custom shaders.

Shared shaders in the ADK are simplified versions of the ones used in-game (for example, wear effects are removed from the Standard Car Shader). Textures are also sized down to keep the project small. At runtime, the full-featured shaders and full-resolution textures are used.

The ADK tooling works with three filesystem locations, and every action in the Asset Packs window moves a pack between them:

ModDev <-> ADK <-> Storage
(runs) (edit) (keep)
  • Storage — A directory outside the ADK where the source of your asset pack lives, usually under source control. Set it under Paths in the toolbar.
  • ADK — Assets/AssetPacks/ within the ADK project. Packs must be here so Unity can resolve asset references during builds. This is the only place a pack is editable.
  • ModDev — The ModDev directory. Railroader loads development mods from here. The in-game definition editor also saves to this location.

The window’s verbs map directly onto that diagram:

ActionMovesUse it to
Load from StorageStorage → ADKStart editing a pack you keep in Storage
BuildADK → ModDevCompile the asset bundle and install it for testing. Reproduces the ADK copy exactly, so it overwrites ModDev files and removes data files the ADK does not have — it asks first when that would lose in-game work
Push TextADK → ModDevSend Info.json, Definitions.json and the pack’s data files without a full rebuild
PullModDev → ADKBring changes made in-game — definition editor edits, and maps and terrain saved by the map editor — back into the project
SaveADK → StorageKeep finished work in your library
Discarddeletes the ADK copy, the ModDev build, or bothClean up a pack you are no longer editing

When building an asset pack the ADK copies data files by extension — .json, .riff, .rrhorn, .rrwhistle and .rl — from anywhere under the pack root, keeping their directory structure. Different systems in Railroader load data files from specific places; the ADK does not validate this.

When building, data files are mirrored, not merely added: matching files the ADK does not have are deleted.

A typical workflow:

  1. Create a pack, or Load from Storage to pick up an existing one.
  2. Build to compile the asset bundle into ModDev.
  3. Test in-game; use the definition editor to refine Definitions.json.
  4. Pull to bring those changes back into the ADK.
  5. Save to push your changes to your Storage directory.
  6. Commit your Storage copy to source control.

There is also a Build ADK Packs button that builds everything currently loaded into the ADK, in dependency order.

Keep your ModDev and ADK directories clean — save finished work to Storage and discard ADK copies you are not actively editing.

Distribute the built output folder. Players install mods by placing them in Documents/Railroader/Mods/. We recommend naming the folder after the identifier and version, e.g. pedro-ps1-1.2 for identifier pedro/ps1 version 1.2.

Important: Players should install mods in Documents/Railroader/Mods/, not ModDev/.

With your pack building and loading in-game, use the Definition Editor to define new objects.