Rail Logistics Daemon (RLD)
Automatic train logistics that stays fast at megabase scale. Tag train stops as
providers, requesters, or depots, set thresholds, and RLD dispatches trains
to move cargo from where it's produced to where it's needed. Items, fluids, and
item quality are all first-class; multiple independent networks via ID masks.
Why RLD
UPS above all. Every design decision defers to performance:
- Event-driven engine — no per-tick polling of trains, stops, or deliveries.
- Dirty-flagged scanning with an adaptive slice: per-tick cost stays flat as the
base grows, and stops where nothing is happening are re-read less often. - No pathfinding in the match loop — candidates rank by cheap straight-line
distance; real pathfinding only builds a committed route. - Native chain deliveries — a freed train goes straight to its next delivery
instead of returning to a depot (unless low on fuel; default gate 30%). Higher train
utilization = fewer trains = more UPS.
Features
- Full per-stop control: provide/request thresholds (stack-based or absolute),
priorities, train-length limits, locked slots, max trains. - Classic depots with depot-only refueling; closest-free-depot return routing.
- RLD Manager — a tabbed dashboard (Stations, Depots, Trains, Deliveries, History,
Alerts, Help). Costs nothing while closed; snapshots, never polls. - Status lamps on every stop, event-driven.
- Delivery timeout, duplicate-name detection, no-path handling with automatic depot
failover, and a full alert system.
Moving off LTN? Migrate in place
RLD includes a guided, one-command in-place migration for bases built on
LTN (Logistic Train Network) — made for megabases where rebuilding isn't an option:
- Disable the LTN dispatcher (LTN's own mod setting).
/convertLTN-to-RLD— dry run: reports every stop, role, and warning. No changes./convertLTN-to-RLD run— swaps each LTN stop for the RLD equivalent at the same
position, preserving all circuit wiring, translating thresholds, priorities,
network IDs, and requester setpoints.- Verify (a full report lands in
script-output/rld-migration-report.txt), then
remove LTN.
The migration reads each stop's stored combinator configuration directly — thresholds
and roles survive even for stops that are idle mid-conversion.
Commands
| Command | What it does |
|---|---|
/convertLTN-to-RLD [run] [collapse] |
Dry-run / perform the LTN migration |
/rld-check-duplicate-names |
List stops sharing a name within a network |
/rld-set <setting> <value> |
Change any RLD runtime setting from console/RCON |
/rld-release |
Release trains held after a delivery timeout |
Notes
- Single-surface dispatch (deliveries don't cross surfaces).
- Factorio 2.0+.