Train 'Push' Priority
Posted: Wed Aug 19, 2026 1:52 am
TL;DR
The current priority system lets us set 'pull' priority, i.e. when a train departs, if there are multiple open stations, which one it will head to. We also need a way to set 'push' priority, i.e. when a station opens up, if there are multiple waiting trains, which one will come to it.What?
- The current 'Priority' slider gets renamed to 'Pull priority' or 'Incoming priority'
- A new slider just below it as added, labelled 'Push priority' or 'Outgoing priority'
- The push priority can be set via circuit network, just like the existing one
- When a station is enabled or a slot opens up in a stations train limit, if there are multiple trains waiting to path to that station, the one with the highest push priority goes first. In case of a tie, the closest one wins, same as now.
- When a train is at a station, it records the station's push priority as of the moment it meets its departure conditions; this is the push priority is uses while trying to path to the next station on its schedule, or if it is on the way but considering repathing.
- A train which is not departing from a station (either because it has just been constructed or because the player manually hit the 'go to this station' button on the schedule), or which loses its current destination while on the way and is forced to pick a new one (i.e. because the station it was heading to was destroyed or became unreachable), is assumed to have maximum priority, higher than any station. (This is because such trains are likely currently on the main line and thus getting them moving is critical.)
Why?
Currently, when using trains, you can prioritize where resources go, but not where they come from. For example, if you have some item which is produced in one part of your factory, but which is also created in smaller amounts as a by-product somewhere else, you want to 'byproduct' stuff to be used before the freshly-produced stuff. Currently there's no way to do that at the train-network level; you have to either route the byproduct to the main production area or else route both of them to a combined buffer area where you can prioritize consumption using splitters or circuit logic. This adds the additional complication that you now have two different trains carrying the same item but which need to be routed to different destinations, so they can't both use the same interrupt-driven schedule.Allowing us to set a priority for which trains are dispatched first would solve this: just give the 'byproduct' station a higher priority than the main one, and it will automatically get used first when available.