In other languages: Deutsch Español Français 日本語 Polski Русский Українська Tiếng Việt Nam 简体中文

Railway: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
(Added interrupts, elevated rails, updated images)
 
(85 intermediate revisions by 34 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
{{cleanup|2.0 changes. Train interrupts, overhauled rail placement, and elevated rails.}}
[[File:Railway_from_trailer_2020.png|thumb|right|430px|Railway in the [https://youtu.be/J8SBp4SyvLc official game trailer.]]]
:''For the research see [[Railway (research)]]''


{{cleanup|Lots of outdated info, should be updated to completely reflect V0.13. The large amount of links at the bottom should also be dealt with.}}
'''The Railway''' is one of the main transport methods in Factorio. Although the installation of such a network can be complicated and requires a large amount of resources and space, it is faster and more efficient than [[Belt transport system|belts]] and [[Logistic network|robot logistics]], especially over large distances.


<i>For the research see [[Railway (research)]]</i>
Railway construction, however, is not understood instantly. It takes some time to learn the basics, such as automating transportation. Learning how to manage and maintain the upkeep of a larger train network takes time and experience. Rails can be built on the ground, or can be - with the [[Space Age]] expansion - elevated with the help of a [[rail ramp]] and [[rail support]]s so that trains can travel over obstacles.


The Railway is one of the main transport methods in Factorio. Although the installation of such a network can be complicated, and requires a large amount of resource and space, it is faster and more efficient than [[Belt transport system|belts]] and [[Logistic network|robot logistics]], especially over large distances.
== Infrastructure ==


Railway construction, however, is not understood in an instant. It takes some time to learn the basics, such as automating transportation. Learning how to manage and upkeep a larger train network takes time and experience.
To build a railway, tracks (also called rails) must be built for the train to ride on. Typically, this is done via the [[rail planner]], but can also be done manually. Bear in mind that rails are placed on a two-tile grid, so a rail cannot be moved by only one tile.


; [[Railway/Tutorials]]
=== Minimum manually operated railway ===
: Sometimes a picture/video says more than a thousand words.
As a minimum, a manually operated railway has to consist of:
* [[Rail]]s (tracks)
* [[Locomotive]]s


== Tracks ==
Locomotives can be entered and then manually operated by standing next to them and pressing the {{Key|ENTER}} button.


[[File:rail_planner_starter.jpg|thumb|right|200px|The small green arrow used to start the planner.]]
=== Switches ===
* There is no visual representation of a working switch, however, the rails will appear to merge. Using the rail planner, the player must place a [[rail]] overlapping an existing rail to form a switch. Switches are forks in tracks that allow a train to pick between two directional options.
* The crossing of two straight tracks is not usable as a switch, as trains have a limited turning radius. They do, however, connect [[Rail signal| signal blocks]] which helps prevent collisions.
* Parallel tracks do not interact with each other. However, switching from one track to the other can require extra resources if they are too close together; the track must turn away from the other parallel track and then turn back to it. This can create complicated networks of signals and, as such, one should generally not build parallel tracks unless they are spaced adequately. (Generally, 2 track widths apart works well)
 
[[File:fff-140-controlled-gates_sm.gif|frame|An example of a safe railway crossing.<br />[https://wiki.factorio.com/images/Fff-140-controlled-gates.gif Click here] for the full-sized version of the image.]]
=== Crossing tracks ===


Rails are placed using the rail planner. Place a single rail, then mouse over the rail while still holding rails in hand. A green arrow will appear on the rail indicating the direction the new rail will be placed. Click or shift-click on the triangle to start the manual or ghost planner.
'''Be careful when crossing train tracks! Trains are one of the highest damaging entities in the game, and will kill most players instantly on contact.'''


Bear in mind that rails can rails are placed on a two-tile grid, so you cannot move a rail by only one tile.
A checklist of proper track-crossing etiquette:


[[File:Manual_rail_planner.jpg|thumb|left|200px|The rail planner operating in manual mode.]]
# Zoom out, so that you can see a train coming.
[[File:Ghost_rail_planner.jpg|thumb|200px|right|The rail planner operating in ghost mode.]]
# Look left, then right.
===Manual Planner===
# Check for signals nearby: If a [[rail signal]] suddenly jumps from green to red or green to yellow, a train is coming. Do not cross.
The manual planner can be used to place rails at close range, around 10 rails at a time. The rails will path towards the cursor. Move the cursor until you get the desired path, then left-click to place the rails. This process will repeat until you press <code>Esc</code> to release the planner.
# Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.
# While it is possible to get into/out of a train while it is moving, a miss can cost your life. The sides of the train can still deal damage, as well as the player being able to slip between two rail cars.
# Heavy [[Energy shield|shields]] can be used to reduce the damage taken. In extreme cases, it is possible to stop a train with your body. This will require several shield modules to not be instantly killed and will drain a large amount of the suit's energy.
# All entities with health will take damage getting hit by a train, so take care not to leave a [[car]] or [[tank]] on the tracks. However, this includes hostile forces!
# Trains far from a [[train stop]] will be traveling at (near) max speed, so take extra precaution when crossing and zoom out further. Trains near a [[train stop]] or signal will slow down to stop and will be traveling slower. Trains of different configurations will also move slower or faster.


===Ghost Planner===
A safe railroad crossing like the example shown in the picture can be built. This works by restricting access to the tracks when an oncoming train has the rails reserved. When the player is on the rails, the signals are reserved by the [[circuit network]], and the train must stop and wait until the player leaves the tracks. When a player is inside the area crossing the tracks, the train gates are closed so the player can't get on the tracks outside the crossing. This is to completely ensure a safe crossing and is often used on servers.
The ghost planner can be used to place long stretches of rail at once, by creating ghosts of rails that can be placed by [[construction robots]], either from [[roboport]]s or a [[personal roboport]]. Move the cursor to the position you want the rail to terminate, press <code>R</code> to rotate the last rail to the desired orientation, then left-click to place the ghost rails. The rails will be placed using the shortest route from the origin to the destination avoiding obstacles. You can shift-click to use the shortest route; trees and stone rocks in the way will be marked for destruction. Use <code>Esc</code> or <code>Q</code> to release the planner.


[[File:rail-switch-example-1.png|thumb|left|256px|Composition of rails to form switches, straight and diagonal.]]
{{clear}}
[[File:Railway-parallel-example.png|thumb|right|256px|Switching between rails with and without adequate spacing.]]
=== Switches ===
* There is no visual representation of a working switch. Using the rail planner, the player must place a [[straight rail|rail]] overlapping an existing rail to form a switch.
* The crossing of two straight tracks is not usable as switch, as trains have a limited turning radius. They do, however, connect [[Railway/Signal/Block signal| signal blocks]] which helps prevent collisions.
* Parallel tracks do not interact with each other and generally have no problems. However, switching from one track to the other can require extra resources if they are too close together; the track must turn away from the other parallel track and then turn back to it. This can create complicated networks of signals and, as such, one should generally not build parallel tracks unless they are spaced adequately.


<br style="clear:both" />
== Trains ==
Train components:


=== Crossing tracks ===
{| class="wikitable"
|{{Imagelink|Locomotive}} || {{Imagelink|Cargo wagon}} || {{Imagelink|Fluid wagon}} || {{Imagelink|Artillery wagon}}
|}


[[File:fff-140-controlled-gates.gif|thumb|An example of a safe railway crossing.]]
[[File:Railway-assemble-train.png|thumb|left|300px|Placing a [[Cargo wagon]] so it is attached to the train.]]


'''Be careful when crossing tracks!'''
* A train consists of at least one locomotive.
* Trains can have more than one locomotive and any number of [[wagon]]s.
* Locomotives can be '''manually''' driven forwards or backwards, however, they are generally slower going backwards. The left and right movement keys are used to change direction at switches.
* Trains can only drive forwards automatically. An automatic train can drive forwards and backwards when two locomotives facing different directions are connected to the train.
* A train needs [[fuel]] to drive. Fuel can be added by inserters when the train is in manual mode or parked at a station, not when waiting at a signal or standing in automatic mode.


Trains travel extremely quickly, and deal large amounts of damage when they impact a target. If no precautions are taken, crossing the track can result in a swift death.  
The locomotives' inventory is only used for [[fuel]]. To transport items or fluids [[cargo wagon]]s and/or [[fluid wagon]]s have to be attached to the train. To attach rolling stock, whether a wagon or a locomotive, the player may prepare to place one near an existing train, where a green graphic will show the player that the stock will be attached, showing a connection between the train and the new stock. Alternatively, the player may manually connect rolling stock to trains with the rolling stock connect key, if the cargo wagon is placed far away from a train. Rolling stock can likewise be disconnected with the rolling stock disconnect key.


==== Avoiding unwanted contact with trains ====
{{clear}}


A checklist of proper track crossing etiquette:
== Stations ==
[[File:station-example-1.png|thumb|right|256px|A very minimal train station.]]


# Zoom out, so that you can see a train coming.
Train stations are the only place where trains can be loaded or unloaded when they are in automatic mode. Cargo wagons can be filled or emptied by up to twelve adjacent [[inserters]] (six on each side). Inserters can also be used to insert fuel into locomotives. [[Pump]]s are used to transfer fluid into and out of fluid wagons, only three pumps can attach to one fluid wagon at once.
# Look left, then right.
# Check for signals nearby: If a [[rail signal]] suddenly jumps from <span style="color:#00FF00">green</span> to <span style="color:#FF0000">red</span> or <span style="color:#00FF00">green</span> to <span style="color:#BFBA0A">yellow</span>, a train is coming. Do not cross.
# Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.
# While it is possible to get into/out of a train while it is moving, a miss can cost your life. The sides of the train can still deal damage.
# Heavy [[Energy shield|shields]] can be used to reduce the damage taken. In extreme cases, it is possible to stop a train with your body.  
# All entities with health will take damage getting hit by a train, so take care not to leave a [[Car]] or [[Tank]] on the tracks.
# Trains far from a [[train stop]] will be travelling at (near) max speed, so take extra precaution when crossing and zoom out further. Trains near a [[train stop]] or signal will slow down to stop, and will be travelling slower.


==== Cross the tracks safely ====
Train stations are usually created by placing a [[train stop]]. Train stops must be on the right-hand side of the track. However, it is also possible to create a temporary train station by opening a locomotive's GUI and using {{Keybinding|ctrl|lmb}} near a rail in the minimap in the GUI or by entering a locomotive and using {{Keybinding|ctrl|lmb}} near a rail on the world map. This will create a station without requiring a train stop. The temporary train station has a default wait condition of 5 seconds and is removed from the schedule once the train leaves the station.


Since version 0.13, a safe railroad crossing like the example shown in the picture can be built. This works by restricting access to the tracks when an oncoming train has the rails reserved. When the player is on the rails, the signals are reserved by the [[circuit network]], and the train must stop and wait until the player leaves the tracks. When a player is inside the area crossing the tracks, the train gates are closed so the player can't get on the tracks outside the crossing. This is to completely ensure a safe crossing.
{{clear}}


== Trains ==
== Signals ==
{| class="wikitable"
{| class="wikitable"
|{{imagelink|diesel-locomotive|Diesel locomotive}} || {{imagelink|cargo-wagon|Cargo wagon}} |-
| {{Imagelink|Rail signal}} || {{Imagelink|Rail chain signal}}
|}
|}


[[File:Railway-locomotive-gui.png|thumb|left|256px|Locomotive screen: 1: switch to schedule screen; 2: [[Fuel]] inventory;]]
Rail signals are used to employ multiple trains automatically without the danger of trains crashing into each other. Rail signals split the network into blocks and ensure that only one train can be in every block at any time. Note that driving a train manually ignores all signals, so it is possible for automatic trains to crash into the player if the player ignores red/yellow signals. Always beware of automatic trains and give them the right of way.
[[File:Railway-assemble-train.png|thumb|right|256px|Placing a [[Cargo wagon]] so it is attached to the train.]]
[[File:station-example-1.png|thumb|left|256px|A very minimal station.]]


* A train consists of at least one locomotive, but the player may add additional locomotives to keep the train moving at maximum speed, allow it to move in both directions automatically, or they may add [[Cargo wagon]]s to transport resources with the train.
The [[Tutorial:Train signals|train signals tutorial]] contains an in-depth explanation of rail signals, blocks and deadlocks.
* Locomotives may be '''manually''' driven forwards or backwards, however, locomotives are generally slower going backwards. The left and right movement keys are used to change direction at switches.
* Trains can only drive forwards automatically; there must be a forward path from to the destination station. This can be solved by placing a locomotive at either end of a train (facing opposite directions), or adding a loop in the rail. Note that signals in a loop can misbehave due to detecting trains before they arrive.
* A train needs [[fuel]] to drive. Fuel can be added by inserters.


The locomotives' inventory is only used for [[Fuel]]. To transport items [[Cargo wagon]]s have to be attached to the train. To attach a Cargo wagon, the player may either prepare to place one near an existing train, where a green graphic will show the player that the cargo wagon will be attached, showing a connection between the train and the new wagon. Alternatively, the player may manually connect cargo wagons to trains with the stock connect key, if the cargo wagon was placed far away from a train. The cargo wagons can be filled manually or by adjacent [[Inserters]].
=== Basic signaling rules ===
* There can only be one train in a block at any time. A train spanning multiple blocks occupies them all.
* A red signal means that the following block is occupied by a train.
* A yellow signal means that a train is approaching and already has the approval to enter the following block.
* [[Rail signal]]s separate a new block and reflect its state: green - free, yellow - reserved, red - occupied
* [[Rail chain signal]]s separate a new block and reflect the state of the next signal(s): see above, blue - at least one of the paths is blocked, but not all
* A train can only pass a signal on the right of the track, or if there is a signal on both sides on the same rail segment. Of course, manual driving overrides this.


<br style="clear:both" />
== Automated transport ==
[[File:locomotive_gui.png|thumb|300px|The wait condition tab in the locomotive's GUI.]]


== Stations ==
Trains set on "Automatic" choose their destination stop and route on departure, and after waiting at a chain signal for five seconds, and when their destination stop disables itself by circuit condition. They choose the shortest route using a [[Railway/Train_path_finding|path finding algorithm]] that will get them to an enabled train stop with the right name, taking penalties for any apparent-at-the-time delays into account. If no such train stop exists they will skip the stop and go on to the next.
[[File:Wagon-lengths.png|thumb|400px|[[Railway network/Train station/Positions|Inserter positions]] for the locomotive and first three wagons.]]
 
A '''train station''' is a combination of at least one [[train stop]] plus a [[Storages|storage]] and/or distribution system, used to
This section covers items used to make trains automatically transport items between stations. The player should be familiar with creating a rail system.
* fill or empty [[Cargo wagon]]s, or
 
* [[Vehicle/Train/Refueling|load fuel]] into the [[Diesel Locomotive|locomotive(s)]], or
First, the player has to set up a rail system with at least two train stops, which are placed on the right-hand side of the expected train arrival direction. By hovering over the train stop with the mouse you see the positions of the vehicles for better setting up the train station (including (un)loading machinery, and refueling/repair installations).
* repair trains.
 
[[File:station-example-2.png|thumb|400px|High-performance train station for short trains.  
When you set up the train schedule (see below) and fuel the train, you can start the train on its schedule by switching from manual to automatic driving mode.
Highest possible unload rate, waiting spots, refueling, defended, multi-train capable, modular extendable.]]
 
'''Don't mix up ''train stations'' with ''train stops''.'''
=== Train schedule ===
: A train station is a concept, whereas a [[train stop]] is an item.
The player can set up a list of train stations in the left locomotive's GUI. The train will route to stops in the given order, if it's at the end it will continue with the first. Stations can be added by clicking "Add station" in the GUI. A pop-up appears with a list of all stop names. If one is selected, another button appears which allows selecting a wait condition from a pop-up list. Furthermore, the map in the right part of the GUI can be used to add stations to the schedule by using {{keybinding|shift|lmb}} on a station or using {{keybinding|ctrl|lmb}} near a rail in the map to create a temporary train station. These actions can also be performed on the world map when the player is sitting inside the train.
 
Wait conditions are used to tell the train when to leave the station. There are 15 types of wait conditions:
* '''Circuit condition''' – The train stop is connectable to the [[circuit network]], so the signals can used for wait conditions.
* '''Empty cargo''' – All inventories of the train are empty. Does not include fuel inventories.
* '''Fluid count''' – The train (all fluid wagons summed) contains a specific amount of a certain fluid.
* '''Fuel (all locomotives)''' - All locomotives in the train collectively contain a specific amount of fuel
* '''Fuel (any locomotive)''' - Any one locomotive contains a specific amount of fuel
* '''Full cargo''' - All inventories of the train are full. Does not include fuel inventories
* '''Full fuel''' - All fuel inventories are full. Does not include cargo or fluid inventories
* '''Has cargo''' - Cargo or fluid inventories contain items.  
* '''Inactivity''' – No items were added or removed for the specified amount of seconds.
* '''Item count''' – The train (all cargoes summed) contains a specific amount of a certain item. Does not include fuel inventories.
* '''Passenger present''' - At least one [[player]] is inside any part of the train.
* '''Passenger not present''' - No players are inside any part of the train.
* '''Station is full''' - A specified stop is full, according to its set train limit. If the stop has no train limit set, this condition will ''not'' be met.
* '''Station is not full''' - A specified stop is not full, according to its set train limit. If the stop has no train limit set, this condition ''will'' be met.
* '''Time passed'''


=== Position of the inserters ===
It is also possible to set no wait condition, this causes the train to simply pass by the station without stopping.


[[Inserter]]s placed next to train tracks are used to load/unload trains at train stops. For detailed information on where to place train stop inserters, see [[Railway/Train station/Inserter positions|Inserter positions]].
Hereafter the word "term" is used to describe ''one'' type of wait condition, and the words "wait condition" are used to describe the whole set of terms (it turns a bit into maths).


== Using roboports and logistic bots as station integrated storage ==
If more than one term is added, it is possible to change the connection of those using the logical operators AND and OR. An AND condition will result in true if all terms are true. An OR condition will return true if at least one of the terms is true.


Logistic chests can be used to load or unload from a train, allowing a train station to operate completely within the logistic system. [[Requester chest]]s and [[Provider chest]]s are used for loading and unloading respectively. Note that trains cannot be loaded or unloaded by logistic robots directly: use inserters and logistic chests.
When mixing AND and OR terms, the logic is grouped by the OR terms. When evaluating the wait condition, the first term is evaluated along with all AND terms immediately following up to but excluding the next occurring OR term. If they all evaluate true, the wait condition evaluates true. Otherwise, evaluation continues with that next occurring OR term and all AND terms immediately following it, up to the next OR term. This continues until either an OR group evaluates true and the wait condition is satisfied, or all terms have been checked.


==== Examples ====
==== Examples ====
* [http://www.factorioforums.com/forum/viewtopic.php?f=16&t=1773&start=10#p15125 Example#1]: Second pic.
[[File:Traingroup gui.png|thumb|300px|The train group GUI. There are 2 trains in "Group A" and 1 train in "Group B"]]
* [http://www.factorioforums.com/forum/viewtopic.php?f=8&t=1253#p13691 Example#2]: Last pic on the page.
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
* [http://www.factorioforums.com/forum/viewtopic.php?f=18&t=4511 Trains and robots.]
Expand for examples
<div class="mw-collapsible-content">
Wait until full, up to 30 seconds:
 
<pre>
Full cargo inventory
OR 30 seconds passed
</pre>
 
Wait until cargo full, ''or'' circuit condition Oil > 3000:
 
<pre>
Full cargo inventory
OR Circuit condition - Oil > 3000
</pre>


=== Other ===
Wait until empty, ''and'' 30 seconds passed, ''and'' 5 seconds of inactivity:
* Trains can only be filled or emptied when they are fully stopped.
* In automatic mode, trains will usually stop only at [[train stop]]s.  Exceptions are destruction of the tracks and running out of fuel, both of which will stop the train.
* If you [[Vehicle/Train/Driving|drive the train yourself]], you can stop the train anywhere.
* See [[Railway network/The renaming-of-train-stop-trick]]: Trains find all train stops with the same name.
* If you have multiple unloading stations and want to distribute the trains equally you can use a [http://www.reddit.com/r/factorio/comments/3bz9m8/eli5_train_stations_as_presignals/csqwkd1 stacker station.]


== Signals ==
<pre>
{| class="wikitable"
Empty cargo inventory
| {{imagelink|rail-signal|Rail signal}} || {{imagelink|rail-chain-signal|Rail chain signal}} |-
AND 30 seconds passed
|}
AND 5 seconds of inactivity
[[File:Railway-signals-1.png|thumb|left|256px|Block #1 is occupied, signal into that Block is red. Block #2 is approached, thus showing yellow, other blocks are free, signals showing green.]]
</pre>
[[File:station-example-3.png|thumb|right|256px|Train Station with multiple [[Train stop]]s and [[Rail signal]]s to allow operation of multiple trains on single track.]]
[[File:Railway-signals-2.png|thumb|left|256px|Block #1 occupied, signal red. Block #2 approaching, showing yellow. Chain signal #3 is reflecting block signal #2. The chain signal #4 is showing red, because the block is to be approached from another direction, thus the block is considered occupied.]]
[[File:Railway-test-setup.png|thumb|right|256px|A simple test setup to start with. Containing [[Train stop]]s for schedules, and [[Rail signal]]s to watch their behaviour.]]


Understanding rail signals can be difficult. Several terms critical to understanding them are below:
Wait until iron ore is low, ''or'' copper ore is low ''and'' at least 30 seconds passed:
*Rail segment
: A piece of track (one item).
*Segment
: A single path of continuous track without intersections or switches. This becomes important when signals are employed. The player may mouse over a segment to see its number.
*Block
: A set of segments defined by rail signals. By default every connected segment belongs to one block, no matter whether a train can drive on it or not, and even if it can be driven only in one direction (e.g. at a switch, both segments of the switch belong to the same block). The player can see the current block numbers of a rail piece in the info section on mouseover. '''See also [https://forums.factorio.com/viewtopic.php?f=18&t=3811#p28310 this forum post]''' for a good explanation about blocks.


Rail signals are used to employ multiple trains automatically. Note that driving a train manually ignores most of the rules described here; other automatic trains will follow signaling indicted by the player's movement dynamically, however it will sometimes be not possible to avoid a collision for automatic trains if the player ignores red/yellow signals. Always beware automatic trains and give them the right of way.
<pre>
Cargo: Iron ore < 500
AND 30 seconds passed
OR Cargo: Copper ore < 500
AND 30 seconds passed
</pre>


=== Basic Signalling Rules ===
Factorio's wait condition logic is read as disjunctive normal form ([https://en.wikipedia.org/wiki/Disjunctive_normal_form DNF]), and so this last example is processed as (note the parenthesis):
*There is at most one Train in a block at any time. A train spanning multiple blocks occupies them all.
*A red signal means that the following block is occupied by a train.
*A yellow signal means that a train is approaching and already has the approval to enter the following block.
*[[Rail signal]]s separate a new block and reflect its state: green - free, yellow - reserved, red - occupied
*[[Rail chain signal]]s separate a new block and reflect the state of the next [[Rail signal]]
*A train can only pass a signal on the right of the track, or if there is a signal on both sides on the same rail segment.


<br style="clear:both" />
<pre>((Cargo: Iron ore < 500 AND 30 seconds passed) OR (Cargo: Copper ore < 500 AND 30 seconds passed))</pre>


== Deadlocks ==
Which is the same as this:


A deadlock or gridlock can happen, when every train is locked by another. In nearly every case two or more trains are standing so, that every train blocks by minimum one other train.
<pre>((Cargo: Iron ore < 500 OR Cargo: Copper ore < 500) AND 30 seconds passed)</pre>


=== How can a deadlock happen? ===
Unfortunately, there is no way to write that shorter form in the current UI.
</div></div>


See [http://www.factorioforums.com/forum/viewtopic.php?f=54&t=6984&p=54689#p54689 this article].
=== Train Groups ===
Trains are able to be assigned to a group. Selecting the small edit icon next to "no group assigned" will bring up the existing groups in the current world. One can select a group for the train to join, or create a new one. Editing the schedule of one train will change the schedules of all trains in the same group.


=== Factors that influence the deadlock chance ===
=== Schedule Interrupts ===
[[File:Interrupt gui.png|thumb|300px|The Edit Interrupt GUI.]]


* It depends on train length (shorter trains will have a lower chance with the same rail/signal layout)
Schedule interrupts allow a locomotive to override its current schedule when a certain condition is met. Selecting "Add interrupt" in the locomotive's GUI will bring up a list of existing interrupts in the current world. One can be selected from the list, or typing in a name will create a new one. Creating one will add it to the locomotive and all locomotives in the current locomotive group.
* Depends also on size of the blocks: More space for the blocks means lower chance of deadlock.
* Depends on track layout: Some layouts have a higher chance of locking, than others.
* The more trains you have, the bigger the chance.
* The chance is also much higher, if the trains need to wait often in areas with rail-crossings.


=== A deadlock can happen only by chance ===
To work, an interrupt requires two parts: a condition and a target station. When a condition is met, the interrupt will activate and insert the target station as a temporary stop in the locomotive's schedule. The locomotive will route to the target station and wait there until the specified wait condition is met, at which point it will leave and resume its original schedule.


Deadlocks will happen by chance only!
An interrupt can be triggered on many of the same conditions as waiting at a stop, along with some new conditions:
* '''At specified station''' -  The train is waiting at a specific stop
* '''Destination full or no path''' - The train's next stop is full, according to its train limit; or the train cannot physically reach its next station
* '''Not at specified station'''' - The train is stopped somewhere other than the specific stop


It is possible, that you use a quite volunerable layout, but with short trains and low traffic you never achive a deadlock in a game. The same can happen the other way around.
Multiple trains can have the same interrupt regardless if they are in the same locomotive group or not. Editing an interrupt will change it for all trains which have the interrupt in their system.


There is no simple mechanism to forecast, if and when a deadlock can happen, but with some experience and using the above ideas and the links below, this is a easy manageable problem.
Interrupts can be reordered within the locomotive's GUI like normal stops. If a train has multiple interrupt conditions true at the same time, it will prioritize interrupts that are higher on the list. This is important if one wishes a train to behave a certain way when working with a particular suite of interrupts.


=== Parameterized Interrupts ===
This is an advanced feature.
When specifying an "Item Count" as a condition for a schedule interrupt, one has access to a new "Item Parameter" wildcard signal. This acts similarly to the [[circuit network#Anything|"Anything"]] logic signal from the circuit network and can be used to create a generic train system. Whichever item is first loaded into the train will replace the wildcard signal with that item. This can be used to create a train system which dynamically creates schedules based on whatever is loaded.


=== How to reduce the chance for gridlock? ===
=== Troubleshooting ===


* Don't use 4-way junctions or circles to create junctions.
Below are some things to verify if a rail system or train is not working.
* Use better 3-way junctions. See [http://www.factorioforums.com/forum/viewtopic.php?f=18&t=9044 A Detailed Look at a Bidirectional Three-way Train Intersection]
* Use circles only for changing direction of train
* Build more tracks around junctions. try to avoid jams around junctions. If that doesn't help, use more tracks. :)


== Railway Safety ==
* Is the train fueled? Ensure that the locomotive has [[fuel]] of some kind.
[[File:fff-140-controlled-gates.gif|thumb|An example of a safe railway crossing.]]
* Misplaced or non-functional switches? Ensure that the train can plan a path through the switches.
Trains travel very quickly and deal great damage upon impact. Without proper railway safety, crossing an active track can result in a swift death.
* Another train on the same [[Railway#Block|block]]? Make sure the path of the train is unobstructed.
* Train stops placed correctly? Make sure that the yellow arrows when hovering on the stop point towards the end or exit of the stop.
* Is the train allowed to enter signals from the right direction? Are the signals set correctly?
* If a track is supposed to be two-way, the rail signals should be opposite each other. You can verify they match up by hovering the cursor over one. For a matched pair, it will show the other.


Some tips for avoiding unwanted contact with trains:
==== No path ====
*Zoom out before crossing so you can see trains coming.
When trains cannot reach the target, a "no path" symbol pops up over the locomotive. Check:
*Check for nearby signals; if a signal changes from green to yellow or red, this means a train is approaching.
* Can the train reach its current destination by '''only driving forward'''? Build turning slopes or place a locomotive at both ends of a train!
*Avoid walking near tracks; you can be hit even if you are not fully on the track.
* Are the train stops standing in the right direction? Train stops must be on the right-hand side of the track (from the forward-facing locomotive's perspective).  If the train is traveling south, the stop must be on the west side of the track.
*Do not try to enter/exit a train while it is moving.
* If you use rail signals, check that the signals are all allowing traffic in the correct direction.
* Check for interruptions in the train tracks, drive to the station manually to check there are no rail parts missing. Especially near junctions, these can be hard to spot if missing.


=== Crossing Safely ===
If you are still having problems, consider:
A safe railway crossing can be created by never allowing a train and the player on the track at the same time. When a train has the segment reserved, the gates close to the player, restricting access to tracks. When the player is on the tracks, the signals are reserved by the [[circuit network]], and trains must wait for the player to clear the tracks before continuing. The gates onto the rest of the track also close, preventing the player from getting to the tracks outside the crossing.
* Driving the train manually, and as you pass each switch, try switching to automatic. When it works, you will know the rough area of the problem.
[http://imgur.com/a/Nq2Yk A pictorial summary of typical problems].


== Defence of rail systems ==
== Elevated Rails ==
As trains are a priority target of [[Enemies]], any place where trains can stop should be (more or less) [[Defense|defended]]. This is of course more important at train stops/stations. When a train moves it is more or less invincible and destroys nearly everything in the way, especially Enemies and players.
[[File:Elevated intersection example.png|thumb|350px|A simple bridge using elevated rails.]]
{{About/Space age}}
Elevated rails come in a separate mod which can be enabled independently of Space Age. They come as two new buildings: [[rail ramp]] and [[rail support]]. Ramps and supports are the only items in the game able to be built in the oceans of [[Nauvis]]. When playing with Space Age itself, elevated rails become an important part of the game, as they are critical to bridging the oil oceans of [[Fulgora]]{{SA}} and the lava rivers of [[Vulcanus]]{{SA}}.  


== Relationship to [http://www.openttd.org/ OpenTTD] ==
Elevated rails can be built using the [[rail planner]]. Pressing {{Key|G}} will switch levels, and attempt to build a ramp up or down, if the player has one in their inventory. While holding {{Key|SHIFT}} and targeting a section of rail on the opposite level, the rail planner will automatically place any ramps and/or supports necessary to reach that destination. A rail support must be placed every 16 straight tiles. Disassembling a support or ramp will automatically disassemble any rails which rely on that support.
Factorio's railway system works basically exactly like [http://wiki.openttd.org/Signals#Block_signals≈ the block signals in Open Traffic Tycoon Deluxe]. Players who have ever played that game will find some elements of it in Factorio. If not, they can learn from the OpenTTD documentation.


== User tips and tricks ==
Players and [[enemies]] cannot walk on elevated rail. A player can enter and exit the train if it is elevated as normal, and will be teleported to the ground. If the player attempts to exit while over water or lava, nothing will happen. Both types of rail signals can be placed on elevated rail, but not train stops.  
This section contains further links to in-depth knowledge. As a general advisory, tips given in this section detail the more intricate mechanics in the game and can be dangerous to the experience of players who wish to discover better methods on their own. '''''Be warned that much of the info below could be outdated/incorrect.'''''


=== About Trains ===
Certain buildings are too tall to be placed underneath elevated rails:
* [[Vehicle/Train]] - the handling of loco and wagon
* [[Big electric pole]]
* [[Railway/Train path finding]] - how the trains find their path.
* [[Cargo landing pad]]
* [[Oil refinery]]
* [[Roboport]]
* [[Rocket silo]]
* [[Agricultural tower]]{{SA}}
* [[Cargo bay]]{{SA}}
* [[Lightning rod]]{{SA}}
* [[Lightning collector]]{{SA}}


=== About train stations and stops ===
== Achievements ==
* [[Railway/Train station]]s - about the loading/unloading of trains
{{Achievement|getting-on-track}}
* [[Railway/Automated transport]] - all about automated transport.
{{Achievement|trans-factorio-express}}
{{Achievement|watch-your-step}}
{{Achievement|getting-on-track-like-a-pro}}


=== About Signalling ===
== See also ==
* [[Railway/Signal/Tutorial]]
* [[Tutorial:Train signals]]
* [[Railway/Deadlocks]]
* [[Railway/Train path finding]]
* [http://www.factorioforums.com/forum/viewtopic.php?f=30&t=6936&p=54469#p54469 train signal behavior]
* [[Locomotive]]
* [[Cargo wagon]]
* [[Fluid wagon]]
* [[Artillery wagon]]


=== Misc tips ===
{{C|Logistics{{!}}#Railway}} {{C|Railway{{!}}#Railway}}
* When supply trains follow the player: http://www.factorioforums.com/forum/viewtopic.php?f=5&t=6203
* The player may lay rails by sitting inside of the train.

Latest revision as of 07:08, 21 November 2024

Not-enough-repair-packs-icon.png
Page "Railway" has been recommended for clean-up. Reason: 2.0 changes. Train interrupts, overhauled rail placement, and elevated rails.
This may mean fixing grammar or broken links, providing better explanations, or removing incorrect/outdated info.
Further recommendations for this page's clean-up can be made at Talk:Railway.
Railway in the official game trailer.
For the research see Railway (research)

The Railway is one of the main transport methods in Factorio. Although the installation of such a network can be complicated and requires a large amount of resources and space, it is faster and more efficient than belts and robot logistics, especially over large distances.

Railway construction, however, is not understood instantly. It takes some time to learn the basics, such as automating transportation. Learning how to manage and maintain the upkeep of a larger train network takes time and experience. Rails can be built on the ground, or can be - with the Space Age expansion - elevated with the help of a rail ramp and rail supports so that trains can travel over obstacles.

Infrastructure

To build a railway, tracks (also called rails) must be built for the train to ride on. Typically, this is done via the rail planner, but can also be done manually. Bear in mind that rails are placed on a two-tile grid, so a rail cannot be moved by only one tile.

Minimum manually operated railway

As a minimum, a manually operated railway has to consist of:

Locomotives can be entered and then manually operated by standing next to them and pressing the ENTER button.

Switches

  • There is no visual representation of a working switch, however, the rails will appear to merge. Using the rail planner, the player must place a rail overlapping an existing rail to form a switch. Switches are forks in tracks that allow a train to pick between two directional options.
  • The crossing of two straight tracks is not usable as a switch, as trains have a limited turning radius. They do, however, connect signal blocks which helps prevent collisions.
  • Parallel tracks do not interact with each other. However, switching from one track to the other can require extra resources if they are too close together; the track must turn away from the other parallel track and then turn back to it. This can create complicated networks of signals and, as such, one should generally not build parallel tracks unless they are spaced adequately. (Generally, 2 track widths apart works well)
An example of a safe railway crossing.
Click here for the full-sized version of the image.

Crossing tracks

Be careful when crossing train tracks! Trains are one of the highest damaging entities in the game, and will kill most players instantly on contact.

A checklist of proper track-crossing etiquette:

  1. Zoom out, so that you can see a train coming.
  2. Look left, then right.
  3. Check for signals nearby: If a rail signal suddenly jumps from green to red or green to yellow, a train is coming. Do not cross.
  4. Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.
  5. While it is possible to get into/out of a train while it is moving, a miss can cost your life. The sides of the train can still deal damage, as well as the player being able to slip between two rail cars.
  6. Heavy shields can be used to reduce the damage taken. In extreme cases, it is possible to stop a train with your body. This will require several shield modules to not be instantly killed and will drain a large amount of the suit's energy.
  7. All entities with health will take damage getting hit by a train, so take care not to leave a car or tank on the tracks. However, this includes hostile forces!
  8. Trains far from a train stop will be traveling at (near) max speed, so take extra precaution when crossing and zoom out further. Trains near a train stop or signal will slow down to stop and will be traveling slower. Trains of different configurations will also move slower or faster.

A safe railroad crossing like the example shown in the picture can be built. This works by restricting access to the tracks when an oncoming train has the rails reserved. When the player is on the rails, the signals are reserved by the circuit network, and the train must stop and wait until the player leaves the tracks. When a player is inside the area crossing the tracks, the train gates are closed so the player can't get on the tracks outside the crossing. This is to completely ensure a safe crossing and is often used on servers.

Trains

Train components:

Locomotive.png
Locomotive
Cargo wagon.png
Cargo wagon
Fluid wagon.png
Fluid wagon
Artillery wagon.png
Artillery wagon
Placing a Cargo wagon so it is attached to the train.
  • A train consists of at least one locomotive.
  • Trains can have more than one locomotive and any number of wagons.
  • Locomotives can be manually driven forwards or backwards, however, they are generally slower going backwards. The left and right movement keys are used to change direction at switches.
  • Trains can only drive forwards automatically. An automatic train can drive forwards and backwards when two locomotives facing different directions are connected to the train.
  • A train needs fuel to drive. Fuel can be added by inserters when the train is in manual mode or parked at a station, not when waiting at a signal or standing in automatic mode.

The locomotives' inventory is only used for fuel. To transport items or fluids cargo wagons and/or fluid wagons have to be attached to the train. To attach rolling stock, whether a wagon or a locomotive, the player may prepare to place one near an existing train, where a green graphic will show the player that the stock will be attached, showing a connection between the train and the new stock. Alternatively, the player may manually connect rolling stock to trains with the rolling stock connect key, if the cargo wagon is placed far away from a train. Rolling stock can likewise be disconnected with the rolling stock disconnect key.

Stations

A very minimal train station.

Train stations are the only place where trains can be loaded or unloaded when they are in automatic mode. Cargo wagons can be filled or emptied by up to twelve adjacent inserters (six on each side). Inserters can also be used to insert fuel into locomotives. Pumps are used to transfer fluid into and out of fluid wagons, only three pumps can attach to one fluid wagon at once.

Train stations are usually created by placing a train stop. Train stops must be on the right-hand side of the track. However, it is also possible to create a temporary train station by opening a locomotive's GUI and using CTRL + Left mouse button near a rail in the minimap in the GUI or by entering a locomotive and using CTRL + Left mouse button near a rail on the world map. This will create a station without requiring a train stop. The temporary train station has a default wait condition of 5 seconds and is removed from the schedule once the train leaves the station.

Signals

Rail signal.png
Rail signal
Rail chain signal.png
Rail chain signal

Rail signals are used to employ multiple trains automatically without the danger of trains crashing into each other. Rail signals split the network into blocks and ensure that only one train can be in every block at any time. Note that driving a train manually ignores all signals, so it is possible for automatic trains to crash into the player if the player ignores red/yellow signals. Always beware of automatic trains and give them the right of way.

The train signals tutorial contains an in-depth explanation of rail signals, blocks and deadlocks.

Basic signaling rules

  • There can only be one train in a block at any time. A train spanning multiple blocks occupies them all.
  • A red signal means that the following block is occupied by a train.
  • A yellow signal means that a train is approaching and already has the approval to enter the following block.
  • Rail signals separate a new block and reflect its state: green - free, yellow - reserved, red - occupied
  • Rail chain signals separate a new block and reflect the state of the next signal(s): see above, blue - at least one of the paths is blocked, but not all
  • A train can only pass a signal on the right of the track, or if there is a signal on both sides on the same rail segment. Of course, manual driving overrides this.

Automated transport

The wait condition tab in the locomotive's GUI.

Trains set on "Automatic" choose their destination stop and route on departure, and after waiting at a chain signal for five seconds, and when their destination stop disables itself by circuit condition. They choose the shortest route using a path finding algorithm that will get them to an enabled train stop with the right name, taking penalties for any apparent-at-the-time delays into account. If no such train stop exists they will skip the stop and go on to the next.

This section covers items used to make trains automatically transport items between stations. The player should be familiar with creating a rail system.

First, the player has to set up a rail system with at least two train stops, which are placed on the right-hand side of the expected train arrival direction. By hovering over the train stop with the mouse you see the positions of the vehicles for better setting up the train station (including (un)loading machinery, and refueling/repair installations).

When you set up the train schedule (see below) and fuel the train, you can start the train on its schedule by switching from manual to automatic driving mode.

Train schedule

The player can set up a list of train stations in the left locomotive's GUI. The train will route to stops in the given order, if it's at the end it will continue with the first. Stations can be added by clicking "Add station" in the GUI. A pop-up appears with a list of all stop names. If one is selected, another button appears which allows selecting a wait condition from a pop-up list. Furthermore, the map in the right part of the GUI can be used to add stations to the schedule by using SHIFT + Left mouse button on a station or using CTRL + Left mouse button near a rail in the map to create a temporary train station. These actions can also be performed on the world map when the player is sitting inside the train.

Wait conditions are used to tell the train when to leave the station. There are 15 types of wait conditions:

  • Circuit condition – The train stop is connectable to the circuit network, so the signals can used for wait conditions.
  • Empty cargo – All inventories of the train are empty. Does not include fuel inventories.
  • Fluid count – The train (all fluid wagons summed) contains a specific amount of a certain fluid.
  • Fuel (all locomotives) - All locomotives in the train collectively contain a specific amount of fuel
  • Fuel (any locomotive) - Any one locomotive contains a specific amount of fuel
  • Full cargo - All inventories of the train are full. Does not include fuel inventories
  • Full fuel - All fuel inventories are full. Does not include cargo or fluid inventories
  • Has cargo - Cargo or fluid inventories contain items.
  • Inactivity – No items were added or removed for the specified amount of seconds.
  • Item count – The train (all cargoes summed) contains a specific amount of a certain item. Does not include fuel inventories.
  • Passenger present - At least one player is inside any part of the train.
  • Passenger not present - No players are inside any part of the train.
  • Station is full - A specified stop is full, according to its set train limit. If the stop has no train limit set, this condition will not be met.
  • Station is not full - A specified stop is not full, according to its set train limit. If the stop has no train limit set, this condition will be met.
  • Time passed

It is also possible to set no wait condition, this causes the train to simply pass by the station without stopping.

Hereafter the word "term" is used to describe one type of wait condition, and the words "wait condition" are used to describe the whole set of terms (it turns a bit into maths).

If more than one term is added, it is possible to change the connection of those using the logical operators AND and OR. An AND condition will result in true if all terms are true. An OR condition will return true if at least one of the terms is true.

When mixing AND and OR terms, the logic is grouped by the OR terms. When evaluating the wait condition, the first term is evaluated along with all AND terms immediately following up to but excluding the next occurring OR term. If they all evaluate true, the wait condition evaluates true. Otherwise, evaluation continues with that next occurring OR term and all AND terms immediately following it, up to the next OR term. This continues until either an OR group evaluates true and the wait condition is satisfied, or all terms have been checked.

Examples

The train group GUI. There are 2 trains in "Group A" and 1 train in "Group B"

Expand for examples

Wait until full, up to 30 seconds:

Full cargo inventory
OR 30 seconds passed

Wait until cargo full, or circuit condition Oil > 3000:

Full cargo inventory
OR Circuit condition - Oil > 3000

Wait until empty, and 30 seconds passed, and 5 seconds of inactivity:

Empty cargo inventory
AND 30 seconds passed
AND 5 seconds of inactivity

Wait until iron ore is low, or copper ore is low and at least 30 seconds passed:

Cargo: Iron ore < 500
AND 30 seconds passed
OR Cargo: Copper ore < 500
AND 30 seconds passed

Factorio's wait condition logic is read as disjunctive normal form (DNF), and so this last example is processed as (note the parenthesis):

((Cargo: Iron ore < 500 AND 30 seconds passed) OR (Cargo: Copper ore < 500 AND 30 seconds passed))

Which is the same as this:

((Cargo: Iron ore < 500 OR Cargo: Copper ore < 500) AND 30 seconds passed)

Unfortunately, there is no way to write that shorter form in the current UI.

Train Groups

Trains are able to be assigned to a group. Selecting the small edit icon next to "no group assigned" will bring up the existing groups in the current world. One can select a group for the train to join, or create a new one. Editing the schedule of one train will change the schedules of all trains in the same group.

Schedule Interrupts

The Edit Interrupt GUI.

Schedule interrupts allow a locomotive to override its current schedule when a certain condition is met. Selecting "Add interrupt" in the locomotive's GUI will bring up a list of existing interrupts in the current world. One can be selected from the list, or typing in a name will create a new one. Creating one will add it to the locomotive and all locomotives in the current locomotive group.

To work, an interrupt requires two parts: a condition and a target station. When a condition is met, the interrupt will activate and insert the target station as a temporary stop in the locomotive's schedule. The locomotive will route to the target station and wait there until the specified wait condition is met, at which point it will leave and resume its original schedule.

An interrupt can be triggered on many of the same conditions as waiting at a stop, along with some new conditions:

  • At specified station - The train is waiting at a specific stop
  • Destination full or no path - The train's next stop is full, according to its train limit; or the train cannot physically reach its next station
  • Not at specified station' - The train is stopped somewhere other than the specific stop

Multiple trains can have the same interrupt regardless if they are in the same locomotive group or not. Editing an interrupt will change it for all trains which have the interrupt in their system.

Interrupts can be reordered within the locomotive's GUI like normal stops. If a train has multiple interrupt conditions true at the same time, it will prioritize interrupts that are higher on the list. This is important if one wishes a train to behave a certain way when working with a particular suite of interrupts.

Parameterized Interrupts

This is an advanced feature. When specifying an "Item Count" as a condition for a schedule interrupt, one has access to a new "Item Parameter" wildcard signal. This acts similarly to the "Anything" logic signal from the circuit network and can be used to create a generic train system. Whichever item is first loaded into the train will replace the wildcard signal with that item. This can be used to create a train system which dynamically creates schedules based on whatever is loaded.

Troubleshooting

Below are some things to verify if a rail system or train is not working.

  • Is the train fueled? Ensure that the locomotive has fuel of some kind.
  • Misplaced or non-functional switches? Ensure that the train can plan a path through the switches.
  • Another train on the same block? Make sure the path of the train is unobstructed.
  • Train stops placed correctly? Make sure that the yellow arrows when hovering on the stop point towards the end or exit of the stop.
  • Is the train allowed to enter signals from the right direction? Are the signals set correctly?
  • If a track is supposed to be two-way, the rail signals should be opposite each other. You can verify they match up by hovering the cursor over one. For a matched pair, it will show the other.

No path

When trains cannot reach the target, a "no path" symbol pops up over the locomotive. Check:

  • Can the train reach its current destination by only driving forward? Build turning slopes or place a locomotive at both ends of a train!
  • Are the train stops standing in the right direction? Train stops must be on the right-hand side of the track (from the forward-facing locomotive's perspective). If the train is traveling south, the stop must be on the west side of the track.
  • If you use rail signals, check that the signals are all allowing traffic in the correct direction.
  • Check for interruptions in the train tracks, drive to the station manually to check there are no rail parts missing. Especially near junctions, these can be hard to spot if missing.

If you are still having problems, consider:

  • Driving the train manually, and as you pass each switch, try switching to automatic. When it works, you will know the rough area of the problem.

A pictorial summary of typical problems.

Elevated Rails

A simple bridge using elevated rails.

Space Age expansion exclusive feature.

Elevated rails come in a separate mod which can be enabled independently of Space Age. They come as two new buildings: rail ramp and rail support. Ramps and supports are the only items in the game able to be built in the oceans of Nauvis. When playing with Space Age itself, elevated rails become an important part of the game, as they are critical to bridging the oil oceans of Fulgora and the lava rivers of Vulcanus.

Elevated rails can be built using the rail planner. Pressing G will switch levels, and attempt to build a ramp up or down, if the player has one in their inventory. While holding SHIFT and targeting a section of rail on the opposite level, the rail planner will automatically place any ramps and/or supports necessary to reach that destination. A rail support must be placed every 16 straight tiles. Disassembling a support or ramp will automatically disassemble any rails which rely on that support.

Players and enemies cannot walk on elevated rail. A player can enter and exit the train if it is elevated as normal, and will be teleported to the ground. If the player attempts to exit while over water or lava, nothing will happen. Both types of rail signals can be placed on elevated rail, but not train stops.

Certain buildings are too tall to be placed underneath elevated rails:

Achievements

Getting-on-track-achievement.png Getting on track

Build a locomotive.

Trans-factorio-express-achievement.png Trans-Factorio express

Have a train plan a path 1,000 tiles or longer.

Watch-your-step-achievement.png Watch your step

Get killed by a moving locomotive.

Getting-on-track-like-a-pro-achievement.png Getting on track like a pro

Build a locomotive within the first 90 minutes of the game.

See also