<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unique+2</id>
	<title>Official Factorio Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.factorio.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Unique+2"/>
	<link rel="alternate" type="text/html" href="https://wiki.factorio.com/Special:Contributions/Unique_2"/>
	<updated>2026-04-21T20:04:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=190485</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=190485"/>
		<updated>2022-12-02T17:12:59Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Clarify some explanations, change wording in some places&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[Rail signal]]s are necessary to run a functioning rail system in Factorio. This tutorail explains why and how signals are used, how chain signals work, what deadlocks are and how they can be avoided. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent issues and use cases are shown. &lt;br /&gt;
&lt;br /&gt;
This tutorial mostly uses rail systems with two parallel rails, one for each direction. For beginners, using this architecture is suggested instead of a single bidirectional rail line, which can lead to issues when more trains are added to the system.&lt;br /&gt;
&lt;br /&gt;
It is recommended to place radars near intersections to help identify issues quickly. It is also recommended to set up automation for fueling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fueled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. Finally, players should choose a maximum train length before designing a rail system. &lt;br /&gt;
&lt;br /&gt;
== Regular signals and blocks ==&lt;br /&gt;
&lt;br /&gt;
[[File:Why_signals.gif]]&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent this, we place signals along the track and at crossings. Signals split the tracks into different parts called &#039;&#039;&#039;blocks&#039;&#039;&#039;. The signals then ensure that &#039;&#039;&#039;only one train can be in each block&#039;&#039;&#039;. Any signal leading into an already occupied block will display the red color and trains that would enter will wait at the signal instead.&lt;br /&gt;
&lt;br /&gt;
Rail blocks are shown with colors on the rails themselves when a player has a signal in hand. These colors are only for visualization of blocks and are not related to the color of the signal light. The picture shows the block visualization in an example, there are a total of eleven blocks. Rail signals and chain signals break up blocks, train stops do not. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow shortly before turning red to inform that the block is reserved for the incoming train even though there is no train inside it. &lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track and trains are only allowed to go past signals that are on the right hand side from direction of travel. To allow trains to go in both directions one either runs two rail lines in parallel or puts signals on both sides of the track. A train in automatic mode will not drive through a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain signals ==&lt;br /&gt;
&lt;br /&gt;
If a train waits on an intersection, other trains have to wait for it, even trains that are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on crossings and in Factorio, [[Rail chain signal]]s are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If a block is guarded by a chain signal instead of a rail signal, the train will only enter if it can enter the next block as well. So a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, there is a well known rule: &#039;&#039;&#039;Use chain signals in and before crossings and use regular signals at the exits of crossings&#039;&#039;&#039;. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting. &lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
If there are multiple chain signals in a row, a train will only enter if its path is clear all the way into a block behind a regular signal (or up to its destination station, whichever comes first). If the train goes past the first chain signal, it will reserve all blocks on the path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and another is green. In that case the chain signal leading into the block will turn blue and trains are allowed in only if their path doesn&#039;t take them into an occupied block. A driver in a train wouldn&#039;t know from seeing the blue signal wether they have to wait or not, but the game magically makes it work anyways. &lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Splitting rail blocks and increasing throughput ===&lt;br /&gt;
If an intersection is one single block with chain signals at the entrances and rail signals at the exits, then there cannot be multiple trains on the intersection on the same time. The intersection will work, but one can break up the intersection into more blocks with signals to allow multiple trains to go through simultaneously. Long straight tracks can also be broken up with signals to allow multiple trains on them, to also increase throughput.&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. It is suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. It may occur that there is a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_anim.gif]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. A corrected version of this intersection can be found above. The eight signals before and on the intersection should be replaced by chain signals, the ones leading out of the intersection can stay as they are. As stated above, in general chain signals should be used before and on intersections.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. The signals are correct; to fix the deadlock the circle must be removed or less trains need to be routed through this area.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This deadlock also happened because there were too many trains in a too small circle. It shows that a deadlock can happen with as few as two trains. In this case the deadlock could have been avoided by replacing the marked signal with a chain signal, because it would ensure that only one train can enter the offending circle. However this could lead to trains waiting on the main line, which would block other traffic. The station can only have one incoming train without causing issues, so it should have its train limit set to 1 or only one train should be routed to it. An alternative is creating a waiting area for trains heading to the station, see further below. &lt;br /&gt;
&lt;br /&gt;
== Train length and signal spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signaled correctly, however, given the length of trains using them, they are too close to each other. One might argue that they form a single big intersection. Here are three ways to fix this: the regular signals between the two junctions could be turned into chain signals, or the junctions could be moved further away from each other, or all trains could be shortened.&lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
It is recommended that you choose a maximum train length before designing your rail system, and stick to it.  Then rail signal blocks can be spaced according to the maximum length.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line which leads to a traffic jam in the network and can cause deadlocks. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations. Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Talk:Enemies&amp;diff=189684</id>
		<title>Talk:Enemies</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Talk:Enemies&amp;diff=189684"/>
		<updated>2022-08-09T23:09:13Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* The &amp;quot;Advanced: Evolution factor components and computation&amp;quot; box is outdated */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.factorioforums.com/forum/viewtopic.php?f=18&amp;amp;t=2011&lt;br /&gt;
&lt;br /&gt;
== Update required! ==&lt;br /&gt;
&lt;br /&gt;
The new update (.11) added Spitters. Please update :)&lt;br /&gt;
I&#039;ll link here from the Quick Start Guide, so it&#039;s important that this gets updated&lt;br /&gt;
&lt;br /&gt;
== Attack speed ==&lt;br /&gt;
&lt;br /&gt;
What are the the attack speeds of the various enemies?&lt;br /&gt;
:Here are the attack speeds of various enemies. They were measured by using Audacity to record attack sound effects and find the interval between them.&lt;br /&gt;
:* Small Biter - 1.7/s&lt;br /&gt;
:* Medium Biter - 1.7/s&lt;br /&gt;
:* Big Biter - 1.7/s&lt;br /&gt;
:* Behemoth Biter - 1.2/s&lt;br /&gt;
&lt;br /&gt;
:*Small Spitter - 0.46/s&lt;br /&gt;
:*Medium Spitter - 0.46/s&lt;br /&gt;
:*Big Spitter - 0.46/s&lt;br /&gt;
:*Behemoth Spitter - 0.46/s&lt;br /&gt;
&lt;br /&gt;
:*Small Worm - 0.91/s&lt;br /&gt;
:*Medium Worm - 0.65/s&lt;br /&gt;
:*Big Worm - 0.65/s&lt;br /&gt;
&lt;br /&gt;
:I&#039;ll add them into the table now. [[User:Swordstone|Swordstone]] ([[User talk:Swordstone|talk]]) 18:28, 22 September 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== The &amp;quot;Advanced: Evolution factor components and computation&amp;quot; box is outdated ==&lt;br /&gt;
&lt;br /&gt;
The box uses the pre 0.13 formula for the evolution factor, that doesn&#039;t use the squared factor. It contradicts the description above and it can&#039;t be used in the current version. Imo it can be deleted. --[[User:Unique 2|Unique 2]] ([[User talk:Unique 2|talk]]) 23:09, 9 August 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Console&amp;diff=182850</id>
		<title>Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Console&amp;diff=182850"/>
		<updated>2020-10-20T20:34:59Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* World manipulation scripts */ Add resource regeneration command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;&#039;console&#039;&#039;&#039; is Factorio&#039;s in-game command-line interface. See [[command line parameters]] for the command line interface of the Factorio executable.&lt;br /&gt;
&lt;br /&gt;
The in-game console can be used for:&lt;br /&gt;
&lt;br /&gt;
* Chatting with other players&lt;br /&gt;
* Occasional status updates&lt;br /&gt;
* Running commands / scripts / cheats&lt;br /&gt;
&lt;br /&gt;
There are three types of commands:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Normal commands|Normal]]&#039;&#039;&#039; - Display information about the game and customize your experience.&lt;br /&gt;
* &#039;&#039;&#039;[[#Multiplayer commands|Multiplayer]]&#039;&#039;&#039; - Message filtering, banning users, etc.&lt;br /&gt;
* &#039;&#039;&#039;[[#Scripting and cheat commands|Scripting/Cheating]]&#039;&#039;&#039; - Run small Lua scripts (but they &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;disable achievements for the save game&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Using the console ===&lt;br /&gt;
The console display can be toggled with the {{keybinding|/}} (slash) or {{keybinding|~}} (tilde) keys.&lt;br /&gt;
&lt;br /&gt;
You can customize the keys via &#039;&#039;&#039;Options Menu → Keyboard → Toggle Lua console&#039;&#039;&#039;.&lt;br /&gt;
When the console is open, you&#039;ll see a blinking cursor at the bottom of the screen; type your message or command and hit &#039;&#039;&#039;Return&#039;&#039;&#039; to send it (this will also close the console).&lt;br /&gt;
Documentation about message and command prefixes can be found further down this page.&lt;br /&gt;
&lt;br /&gt;
The console supports [[rich text]] tags. These tags are useful for sharing blueprints, marking map locations in chat or adding icons to map markers and train stations. Ctrl + Alt-clicking the map or ground will automatically insert a GPS tag and post it into the console. Shift-clicking most things with the console open will insert a tag for that thing into the console.&lt;br /&gt;
&lt;br /&gt;
When the console is closed, only the most recent messages/commands will be displayed, but they will gradually fade away (opening the console will immediately re-display all recent messages).&lt;br /&gt;
Note that by default, all executed commands are made visible to all users. You can set the fade-out time via &#039;&#039;&#039;Options Menu → Other Settings → Message Delay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to immediately hide the console, open the console and then press &#039;&#039;&#039;Escape&#039;&#039;&#039; key (or press &#039;&#039;&#039;Return&#039;&#039;&#039; without entering any message/command).&lt;br /&gt;
This not only closes the console, but it also hides all the recent messages/commands.&lt;br /&gt;
The console can be cleared with the &#039;&#039;&#039;/clear&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the {{keybinding|&amp;amp;uarr;}} and {{keybinding|&amp;amp;darr;}} keys to scroll through the console history. The {{keybinding|Tab}} key provides intelligent code completion on commands, options and player names.&lt;br /&gt;
&lt;br /&gt;
== Normal commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| /alerts &amp;lt;enable/disable/mute/unmute&amp;gt; &amp;lt;alert&amp;gt;&lt;br /&gt;
| /alerts disable turret_fire&lt;br /&gt;
| Enables, disables, mutes, or unmutes the given  [[alerts|alert]] type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /clear&lt;br /&gt;
| /clear&lt;br /&gt;
| Clears the console.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /color &amp;lt;color&amp;gt;&lt;br /&gt;
| /color 20 255 255 100&lt;br /&gt;
| Changes your color. Can either be one of the pre-defined colors or [[:Wikipedia:RGBA_color_space|RGBA value]] in the format of “# # # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /evolution&lt;br /&gt;
| /evolution&lt;br /&gt;
| Prints info about the alien evolution factor.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /help [command]&lt;br /&gt;
| /help&lt;br /&gt;
| Prints a list of available commands, the optional argument can specify the command that should be described.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /h [command]&lt;br /&gt;
| /h&lt;br /&gt;
| Same as /help.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /mute-programmable-speaker &amp;lt;mute/unmute&amp;gt; &amp;lt;local/everyone&amp;gt;&lt;br /&gt;
| /mute-programmable-speaker mute local&lt;br /&gt;
| Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /perf-avg-frames &amp;lt;number&amp;gt;&lt;br /&gt;
| /perf-avg-frames 100&lt;br /&gt;
| Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /permissions&lt;br /&gt;
| /permissions&lt;br /&gt;
| Opens the permissions GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /permissions &amp;lt;action&amp;gt; &amp;lt;parameters&amp;gt;&lt;br /&gt;
| /permissions add-player DeveloperGroup kovarex&lt;br /&gt;
| Available actions are add-player &amp;lt;group&amp;gt; &amp;lt;player&amp;gt;, create-group &amp;lt;name&amp;gt;, delete-group &amp;lt;group&amp;gt;, edit-group &amp;lt;group&amp;gt; &amp;lt;input_action&amp;gt; &amp;lt;true/false&amp;gt;, get-player-group &amp;lt;player&amp;gt;, remove-player &amp;lt;group&amp;gt; &amp;lt;player&amp;gt;, rename-group &amp;lt;group&amp;gt; &amp;lt;new_name&amp;gt; and reset&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /screenshot [x resolution] [y resolution] [zoom]&lt;br /&gt;
| /screenshot&lt;br /&gt;
| Takes a screenshot with the GUI hidden, centered on the player. It is saved in the &amp;quot;script-output&amp;quot; subfolder of your [[User data directory]].  Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /seed&lt;br /&gt;
| /seed&lt;br /&gt;
| Prints the starting map seed.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /time&lt;br /&gt;
| /time&lt;br /&gt;
| Prints info about how old the map is.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| Used to investigate [[Desynchronization#Using_heavy_mode_command|desyncs]]. Will slow down the game and make multiplayer unplayable.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| Toggles if the rockets sent button is shown in the upper left corner of the screen.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| Unlocks all shortcut bar items.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /version&lt;br /&gt;
| /version&lt;br /&gt;
| Prints the current game version.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multiplayer commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;message&amp;gt;&lt;br /&gt;
| Hello team!&lt;br /&gt;
| Console input that does not start with {{keybinding|/}} is shown as a chat message to your team.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /admin&lt;br /&gt;
| /admin&lt;br /&gt;
| Opens the player management GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /admins&lt;br /&gt;
| /admins&lt;br /&gt;
| Prints a list of game admins.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ban &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /ban xTROLLx Throwing grenades in base&lt;br /&gt;
| Bans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /banlist &amp;lt;add/remove/get/clear&amp;gt; &amp;lt;player&amp;gt;&lt;br /&gt;
| /banlist get&lt;br /&gt;
| Adds or removes a player from the banlist. Same as /ban or /unban.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /config &amp;lt;get/set&amp;gt; &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| /config set password hunter2&lt;br /&gt;
| Gets or sets various multiplayer game settings. Available configs are: afk-auto-kick, allow-commands, allow-debug-settings, autosave-interval, autosave-only-on-server, ignore-player-limit-for-returning-players, max-players, max-upload-speed, only-admins-can-pause, password, require-user-verification, visibility-lan, visibility-public.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /delete-blueprint-library &amp;lt;player&amp;gt;&lt;br /&gt;
| /delete-blueprint-library everybody confirm&lt;br /&gt;
| Deletes the blueprint library storage for the given offline player from the save file. Enter “everybody confirm” to delete the storage of all offline players.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /demote &amp;lt;player&amp;gt;&lt;br /&gt;
| /demote AzureDiamond&lt;br /&gt;
| Demotes the player from admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /ignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /ignore Cthon98&lt;br /&gt;
| Prevents the chat from showing messages from this player. Admin messages are still shown.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ignores&lt;br /&gt;
| /ignores&lt;br /&gt;
| Prints a list of ignored players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /kick &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /kick xTROLLx Throwing grenades in base&lt;br /&gt;
| Kicks the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mute &amp;lt;player&amp;gt;&lt;br /&gt;
| /mute Cthon98&lt;br /&gt;
| Prevents the player from saying anything in chat.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mutes&lt;br /&gt;
| /mutes&lt;br /&gt;
| All players that are muted (can’t talk in chat).&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /open &amp;lt;player&amp;gt;&lt;br /&gt;
| /open AzureDiamond&lt;br /&gt;
| Opens another player’s inventory.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /o &amp;lt;player&amp;gt;&lt;br /&gt;
| /o AzureDiamond&lt;br /&gt;
| Same as /open.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /players [online/o/count/c]&lt;br /&gt;
| /players&lt;br /&gt;
| Prints a list of players in the game. (parameter online/o, it prints only players that are online, count/c prints only count)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /promote &amp;lt;player&amp;gt;&lt;br /&gt;
| /promote AzureDiamond&lt;br /&gt;
| Promotes the player to admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /purge &amp;lt;player&amp;gt;&lt;br /&gt;
| /purge Cthon98&lt;br /&gt;
| Clears all the messages from this player from the chat log.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reply &amp;lt;message&amp;gt;&lt;br /&gt;
| /reply oh, really?&lt;br /&gt;
| Replies to the last player that whispered to you.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /r &amp;lt;message&amp;gt;&lt;br /&gt;
| /r oh, really?&lt;br /&gt;
| Same as /reply.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /server-save&lt;br /&gt;
| /server-save&lt;br /&gt;
| Saves the game on the server in a multiplayer game.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /shout &amp;lt;message&amp;gt;&lt;br /&gt;
| /shout Hello world!&lt;br /&gt;
| Sends a message to all players including other forces.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /s &amp;lt;message&amp;gt;&lt;br /&gt;
| /s Hello world!&lt;br /&gt;
| Same as /shout.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /swap-players &amp;lt;player&amp;gt; [player]&lt;br /&gt;
| /swap-players AzureDiamond&lt;br /&gt;
| Swaps your character with the given player’s character, or if two players are given swaps the two player characters.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unban &amp;lt;player&amp;gt;&lt;br /&gt;
| /unban xTROLLx&lt;br /&gt;
| Unbans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /unignore Cthon98&lt;br /&gt;
| Allows the chat to show messages from this player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unmute &amp;lt;player&amp;gt;&lt;br /&gt;
| /unmute Cthon98&lt;br /&gt;
| Allows the player to talk in chat again.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /whisper &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /whisper AzureDiamond that&#039;s what I see&lt;br /&gt;
| Sends a message to the specified player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /w &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /w AzureDiamond that&#039;s what I see&lt;br /&gt;
| Same as /whisper.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /whitelist &amp;lt;add/remove/get/clear&amp;gt; [player]&lt;br /&gt;
| /whitelist get&lt;br /&gt;
| Adds or removes a player from the whitelist, where only whitelisted players can join the game. Enter nothing for “player” when using “get” to print a list of all whitelisted players. An empty whitelist disables the whitelist functionality allowing anyone to join.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripting and cheat commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /cheat &amp;lt;all&amp;gt;&lt;br /&gt;
| Researches all technologies and enables cheat mode. Using the &#039;&#039;&#039;all&#039;&#039;&#039; option also gives the player some additional items.&lt;br /&gt;
|-&lt;br /&gt;
| /command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /c &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /editor&lt;br /&gt;
| Toggles the map editor.&lt;br /&gt;
|-&lt;br /&gt;
| /measured-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /silent-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) without printing it to the console.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a very powerful feature, which also allows cheating, and as such &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;achievements will be permanently disabled for the save&amp;lt;/span&amp;gt; as soon as you use a script command.&lt;br /&gt;
&lt;br /&gt;
== Basic example scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Use it as calculator ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(1234*5678)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zoom beyond normal bounds ===&lt;br /&gt;
Note that zooming too far out can cause performance hits. Be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.zoom=0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mine faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_mining_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Craft faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_crafting_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unlock and research all technologies ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_all_technologies()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Undo this with the command in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Unresearch all technologies ===&lt;br /&gt;
This does not reset manually applied bonuses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	tech.researched=false&lt;br /&gt;
	game.player.force.set_saved_technology_progress(tech, 0)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reset your force ===&lt;br /&gt;
This resets all data for your force, including kill and production statistics, technologies, bonuses and charting status.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Always show rail block visualization ===&lt;br /&gt;
Permanently show the rail block visualization instead of only when holding a rail signal. Disable by replacing true with false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.game_view_settings.show_rail_block_visualisation = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Cheat mode ===&lt;br /&gt;
Allows for infinite free crafting. Disable by replacing true with false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.cheat_mode=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refill resources (refill oil, iron etc.) ===&lt;br /&gt;
While holding the cursor over a resource tile in-game&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.amount=7500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can refill all resources in the map with the following command. Change ore.amount to the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c surface = game.player.surface&lt;br /&gt;
for _, ore in pairs(surface.find_entities_filtered({type=&amp;quot;resource&amp;quot;})) do&lt;br /&gt;
    ore.amount = 10000&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add items to the player&#039;s inventory ===&lt;br /&gt;
Replace iron-plate with the [[data.raw|internal name]] of the item desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;iron-plate&amp;quot;, count=100}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, here&#039;s a stack of the god-mode energy system interface:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;electric-energy-interface&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a powerful armor with equipment and some tools for construction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c	local player = game.player&lt;br /&gt;
player.insert{name=&amp;quot;power-armor-mk2&amp;quot;, count = 1}&lt;br /&gt;
local p_armor = player.get_inventory(5)[1].grid&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;personal-roboport-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;night-vision-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
player.insert{name=&amp;quot;construction-robot&amp;quot;, count = 25}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase player inventory slots ===&lt;br /&gt;
Gives 100 additional bonus inventory slots to your entire force. Used by the [[Toolbelt]] research.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.character_inventory_slots_bonus=100&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== World manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Reveal the map around the player ===&lt;br /&gt;
&lt;br /&gt;
Reveals the map around the player, similar to a [[radar]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or from start position&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{x = -radius, y = -radius}, {x = radius, y = radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Change 150 to the desired radius, higher values take longer.&lt;br /&gt;
&lt;br /&gt;
=== Hide revealed map ===&lt;br /&gt;
&lt;br /&gt;
Hides all revealed chunks, inverted map revealing.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  force.unchart_chunk({x = chunk.x, y = chunk.y}, surface)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all generated map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the generated map to the player&#039;s team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.chart_all()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete chunks ===&lt;br /&gt;
If much of the map is revealed, it increases the size of the save file. The following command cancels the generation of all chunks that are currently queued for generation and removes chunks outside a 32 chunks radius around 0,0. Note that this will remove player entities if there are any on these chunks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface;&lt;br /&gt;
game.player.force.cancel_charting(surface); &lt;br /&gt;
local chunk_radius = 32;&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if (chunk.x &amp;lt; -chunk_radius or chunk.x &amp;gt; chunk_radius or chunk.y &amp;lt; -chunk_radius or chunk.y &amp;gt; chunk_radius) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off night ===&lt;br /&gt;
Enables eternal day.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.always_day=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change game speed ===&lt;br /&gt;
0.5 is half speed, 1 is default, 2 is double speed, etc. Minimum is 0.01. This can be used for a lot of things like when you know you will have to wait for long periods of time for something to complete. Increasing will decrease performance, be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.speed=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expensive (marathon) or normal mode ===&lt;br /&gt;
To change from normal to expensive mode preset (this changes the research cost and intermediate product cost):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change back to normal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Freeze time ===&lt;br /&gt;
Stops the advancement of the time if you replace &amp;quot;BOOL&amp;quot; with &amp;quot;true&amp;quot; or unfreezes it if you replace it with &amp;quot;false&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.freeze_daytime=BOOL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.clear_pollution()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completely turn off pollution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, surface in pairs(game.surfaces) do&lt;br /&gt;
  surface.clear_pollution()&lt;br /&gt;
end&lt;br /&gt;
game.map_settings.pollution.enabled = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a lot of pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.pollute(game.player.position, 1000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where speakers are, by who ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c speakers = game.player.surface.find_entities_filtered{force = game.player.force, type=&amp;quot;programmable-speaker&amp;quot;}&lt;br /&gt;
for key, speaker in pairs(speakers) do&lt;br /&gt;
    game.player.print(speaker.last_user.name .. &amp;quot; placed a speaker at X=&amp;quot; .. speaker.position.x .. &amp;quot;, Y=&amp;quot; .. speaker.position.y)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable friendly fire for your force ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.friendly_fire = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new resource patch ===&lt;br /&gt;
This creates a new 11×11 patch of resources, centered on the player character, where the ground is not water.&lt;br /&gt;
The patch it creates is perfectly square but it randomizes the amount similar to natural generation, with fewer ore at the edges and more ore in the center.&lt;br /&gt;
The default numbers result in a patch with 2500-3000 ore.&lt;br /&gt;
&lt;br /&gt;
If you want a larger patch, change &amp;quot;local size = 5&amp;quot; to a larger number.&lt;br /&gt;
A larger patch will have exponentially more ore.&lt;br /&gt;
Entering a number above 30 is not recommended.&lt;br /&gt;
&lt;br /&gt;
If you want a richer patch, change &amp;quot;local density = 10&amp;quot; to a larger number.&lt;br /&gt;
Entering a very large number shouldn&#039;t hurt anything but you probably don&#039;t need to go above 100.&lt;br /&gt;
&lt;br /&gt;
To choose which resource is spawned, change &amp;quot;stone&amp;quot; near the bottom to &amp;quot;iron-ore&amp;quot;, &amp;quot;copper-ore&amp;quot;, &amp;quot;coal&amp;quot;, or &amp;quot;uranium-ore&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local ore=nil&lt;br /&gt;
local size=5&lt;br /&gt;
local density=10&lt;br /&gt;
for y=-size, size do&lt;br /&gt;
	for x=-size, size do&lt;br /&gt;
		a=(size+1-math.abs(x))*10&lt;br /&gt;
		b=(size+1-math.abs(y))*10&lt;br /&gt;
		if a&amp;lt;b then&lt;br /&gt;
			ore=math.random(a*density-a*(density-8), a*density+a*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if b&amp;lt;a then&lt;br /&gt;
			ore=math.random(b*density-b*(density-8), b*density+b*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if surface.get_tile(game.player.position.x+x, game.player.position.y+y).collides_with(&amp;quot;ground-tile&amp;quot;) then&lt;br /&gt;
			surface.create_entity({name=&amp;quot;stone&amp;quot;, amount=ore, position={game.player.position.x+x, game.player.position.y+y}})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove resources around the player ===&lt;br /&gt;
Removes all resource patches from the ground in a 50 x 50 area around the player.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local size=50&lt;br /&gt;
local pos=game.player.position&lt;br /&gt;
&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type=&amp;quot;resource&amp;quot;}) &lt;br /&gt;
	do e.destroy() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new oil patch ===&lt;br /&gt;
This creates 9 crude oil patches in a 3×3 square.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for y=0,2 do&lt;br /&gt;
	for x=0,2 do&lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or randomly without any collision:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local position=nil&lt;br /&gt;
for i=1,9 do&lt;br /&gt;
	position=game.player.surface.find_non_colliding_position(&amp;quot;crude-oil&amp;quot;, game.player.position, 0, i/2+1.5)&lt;br /&gt;
	if position then &lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position=position})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regenerate resources ===&lt;br /&gt;
For solid resources like iron, destroy all resource entities and create resource entities as in the original map generation. For fluid resources like oil, just set the yield of all existing resource entities to the original amount. Note that (in version 1.0) calling regenerate_entity with oil will generate the oil wells in slightly different positions, hence this is avoided in the command.&lt;br /&gt;
&lt;br /&gt;
Regenerate in a square of r=20 chunks around the player. Radius can be changed in the first line.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local r = 20&lt;br /&gt;
local surface = game.player.surface&lt;br /&gt;
local p = game.player.position&lt;br /&gt;
local area = {{p.x-r*32, p.y-r*32}, {p.x+r*32, p.y+r*32}}&lt;br /&gt;
local chunks = {}&lt;br /&gt;
for x=-r, r do&lt;br /&gt;
    for y=-r, r do&lt;br /&gt;
        table.insert(chunks, {x, y})&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
for resource, prototype in pairs(game.get_filtered_entity_prototypes{{filter=&amp;quot;type&amp;quot;, type=&amp;quot;resource&amp;quot;}}) do&lt;br /&gt;
    if prototype.resource_category == &amp;quot;basic-solid&amp;quot; then&lt;br /&gt;
        for _, e in pairs(surface.find_entities_filtered{area=area, name=resource}) do&lt;br /&gt;
            e.destroy()&lt;br /&gt;
        end&lt;br /&gt;
        surface.regenerate_entity({resource}, chunks)&lt;br /&gt;
    else&lt;br /&gt;
        for _, e in pairs(surface.find_entities_filtered{area=area, name=resource}) do&lt;br /&gt;
            e.amount = e.initial_amount&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area=area, type=&amp;quot;mining-drill&amp;quot;}) do&lt;br /&gt;
    e.update_connections()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Regenerate on the entire surface.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local surface = game.player.surface&lt;br /&gt;
local chunks = {}&lt;br /&gt;
for c in surface.get_chunks() do&lt;br /&gt;
    table.insert(chunks, c)&lt;br /&gt;
end&lt;br /&gt;
for resource, prototype in pairs(game.get_filtered_entity_prototypes{{filter=&amp;quot;type&amp;quot;, type=&amp;quot;resource&amp;quot;}}) do&lt;br /&gt;
    if prototype.resource_category == &amp;quot;basic-solid&amp;quot; then&lt;br /&gt;
        for _, e in pairs(surface.find_entities_filtered{name=resource}) do&lt;br /&gt;
            e.destroy()&lt;br /&gt;
        end&lt;br /&gt;
        surface.regenerate_entity({resource}, chunks)&lt;br /&gt;
    else&lt;br /&gt;
        for _, e in pairs(surface.find_entities_filtered{name=resource}) do&lt;br /&gt;
            e.amount = e.initial_amount&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{type=&amp;quot;mining-drill&amp;quot;}) do&lt;br /&gt;
    e.update_connections()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create 10 fishes ===&lt;br /&gt;
This creates 10 fishes around of player. The player must be on the water edge.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local player = game.player&lt;br /&gt;
local surface = player.surface&lt;br /&gt;
for i = 1, 10 do&lt;br /&gt;
  local position = surface.find_non_colliding_position(&#039;fish&#039;, player.position, 10, 1)&lt;br /&gt;
  if not position then return end&lt;br /&gt;
  surface.create_entity {name = &#039;fish&#039;, position = position}&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count entities ===&lt;br /&gt;
Counts all entities whose name includes the string in local entity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local entity=&amp;quot;belt&amp;quot;&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local count=0&lt;br /&gt;
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(ent.name,entity) then&lt;br /&gt;
		count=count+1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emptying all pipes, underground pipes and pumps ===&lt;br /&gt;
Useful when pipes contain a fluid you dont want.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local deleted=0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(entity.name, &amp;quot;pipe&amp;quot;) or &lt;br /&gt;
		string.find(entity.name, &amp;quot;pump&amp;quot;) &lt;br /&gt;
	then&lt;br /&gt;
		for i=1,#entity.fluidbox do&lt;br /&gt;
			deleted = deleted + 1&lt;br /&gt;
			entity.fluidbox[i] = nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(&amp;quot;Fluids removed from &amp;quot;..deleted ..&amp;quot; entities&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off cliff generation ===&lt;br /&gt;
Sets size to &amp;quot;none&amp;quot;. Only effective on chunks that are generated after using this command. Use [[#Remove all cliffs]] to delete existing cliffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local mgs = game.player.surface.map_gen_settings&lt;br /&gt;
mgs.cliff_settings.cliff_elevation_0 = 1024&lt;br /&gt;
game.player.surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all cliffs ===&lt;br /&gt;
Removes all cliffs existing cliffs from the world. Use [[#Turn off cliff generation]] to turn off cliff generation in new chunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, v in pairs(game.player.surface.find_entities_filtered{type=&amp;quot;cliff&amp;quot;}) do&lt;br /&gt;
  v.destroy()&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete all decoratives ===&lt;br /&gt;
Delete the decoratives that can be found in the world.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.destroy_decoratives({})&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change map generation settings ===&lt;br /&gt;
This allows to change the map generation settings for new chunks; it does not alter already generated chunks. [[#Delete chunks|Deleted chunks]] are affected by the setting change because they are newly generated when they get explored again.&lt;br /&gt;
&lt;br /&gt;
To change resource generation settings, replace &amp;quot;iron-ore&amp;quot; with the [[Data.raw#resource|resource]] that should be changed and replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command. Replace &amp;quot;iron-ore&amp;quot; with &amp;quot;enemy-base&amp;quot; to change the enemy base generation settings. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local resource = &amp;quot;iron-ore&amp;quot;&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[resource].size = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].frequency = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].richness = &amp;quot;very-high&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change water generation settings, replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.water = &amp;quot;very-high&amp;quot; --[[ size]]&lt;br /&gt;
mgs.terrain_segmentation  = &amp;quot;very-high&amp;quot; --[[ frequency]]&lt;br /&gt;
surface.map_gen_settings = mgs &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enemy/evolution scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Set evolution factor ===&lt;br /&gt;
Ranges from 0 (new game) to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].evolution_factor=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable time-based evolution &amp;amp; increases pollution-based evolution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_evolution.time_factor=0&lt;br /&gt;
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;2&amp;quot; at the end of the last command will double the default pollution factor. You can substitute another number to increase (or decrease) the pollution factor further.&lt;br /&gt;
&lt;br /&gt;
=== Kill all biters on the &amp;quot;enemy&amp;quot; force ===&lt;br /&gt;
Note that this will kill only mobile units, spawners will not be killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].kill_all_units()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all enemies ===&lt;br /&gt;
This will kill all biters, bases and worms. Anything that is an enemy will be completely destroyed. This only affects enemies in the explored world, so any unexplored parts of the map which still need to be generated will still have enemies. You can [[#Prevent biters being on newly generated chunks|prevent biters being on newly generated chunks]] if desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all nearby enemies ===&lt;br /&gt;
&lt;br /&gt;
This will kill all biters, bases and worms in a configurable radius. The default, 250 tiles, is about two zoomed-out screen widths on full HD. After destruction, it shows how many objects were destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local pp = game.player.position&lt;br /&gt;
local cnt = 0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;, radius=250, position=pp })) do&lt;br /&gt;
	cnt = cnt+1&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
 end	&lt;br /&gt;
game.player.print(cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable peaceful mode ===&lt;br /&gt;
Enabling peaceful mode prevents biter attacks until provoked. Substitute true for false to disable. Already existing biters are not affected by this command so attacks could continue for a while after activating peaceful mode.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.peaceful_mode = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable biter expansion ===&lt;br /&gt;
Biter expansion allows biters to create new nests, it is enabled by default. Substitute true for false to disable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_expansion.enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prevent biters being on newly generated chunks ===&lt;br /&gt;
On newly generated chunks no biters will be present, however all current biters will remain unaffected. Equivalent of setting the Enemy Base Size to None under the Terrain settings during map generation but achieved mid game by [[#Change map generation settings|changing map generation settings]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[&amp;quot;enemy-base&amp;quot;].size = &amp;quot;none&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Player character scripts ==&lt;br /&gt;
Commands concerning the player directly.&lt;br /&gt;
=== Get player position ===&lt;br /&gt;
Prints coordinates of your current position.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.position.x .. &amp;quot;, &amp;quot; .. game.player.position.y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Teleport player ===&lt;br /&gt;
Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.teleport({X, Y})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To teleport to the world&#039;s origin, use 0,0.&lt;br /&gt;
&lt;br /&gt;
=== Enable god mode ===&lt;br /&gt;
God mode removes your player character allowing you to fly over obstacles and take no damage.&lt;br /&gt;
&lt;br /&gt;
Disassociate your controls from the player:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character=nil&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, hover the mouse over the useless player and destroy it by typing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To undo, spawn a player character. This will spawn a new player at the spawn point of the world, and connect your controls to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.create_character()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable long reach ===&lt;br /&gt;
Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local reach = 10000&lt;br /&gt;
game.player.force.character_build_distance_bonus = reach&lt;br /&gt;
game.player.force.character_reach_distance_bonus = reach&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Find player corpses ===&lt;br /&gt;
Pings player corpses on the map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local found_corpses = game.player.surface.find_entities_filtered{type=&amp;quot;character-corpse&amp;quot;}&lt;br /&gt;
for _,corpse in pairs(found_corpses) do&lt;br /&gt;
    local player = game.get_player(corpse.character_corpse_player_index)&lt;br /&gt;
    local name = player and player.name or &amp;quot;????&amp;quot;&lt;br /&gt;
    game.player.print(name .. &amp;quot; --&amp;gt; [gps=&amp;quot; .. corpse.position.x .. &amp;quot;,&amp;quot; .. corpse.position.y .. &amp;quot;]&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Research scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Research Queue ===&lt;br /&gt;
Enable the research queue for the player&#039;s current team. Can be done after the game has started if it was forgotten during the map&#039;s setup.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_queue_enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable faster research ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.laboratory_speed_modifier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
1 is normal speed, 2 is double speed 3 is triple etc.&lt;br /&gt;
&lt;br /&gt;
=== Research specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=true&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unresearch specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;electric-energy-distribution-1&#039;, 0)&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;steel-processing&#039;, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling specific recipes ===&lt;br /&gt;
The internal recipe/item names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;electric-energy-interface&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;rocket-silo&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes.loader.enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;fast-loader&amp;quot;].enabled = true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;express-loader&amp;quot;].enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all recipes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modding tools ==&lt;br /&gt;
A list of the internal names of most things in the vanilla game can also be found on [[data.raw]].&lt;br /&gt;
&lt;br /&gt;
=== Access a mod&#039;s data ===&lt;br /&gt;
If the first word of the command is __mod-name__ it will run in the context of the mod with the same name. For instance, this command prints the data from Resource Spawner Overhaul:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c __rso-mod__ game.player.print(serpent.dump(global))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Print to console which tile are you have under the player position ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.surface.get_tile(game.player.position).name)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all researched technologies to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	if tech.researched then&lt;br /&gt;
    list[#list+1] = tech.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;techs.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all enabled recipes to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, recipe in pairs(game.player.force.recipes) do &lt;br /&gt;
	if recipe.enabled then&lt;br /&gt;
    list[#list+1] = recipe.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;recipes.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write mod list to file ===&lt;br /&gt;
Write all currently active mods and their version to the file script-output/mods.txt in the [[user data directory]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.write_file(&amp;quot;mods.txt&amp;quot;, serpent.block(game.active_mods))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Command line parameters]]&lt;br /&gt;
* http://lua-api.factorio.com/latest/ - Factorio API reference for latest version&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Replay_system&amp;diff=181835</id>
		<title>Replay system</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Replay_system&amp;diff=181835"/>
		<updated>2020-08-29T11:18:10Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Quick update to 1.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
A replay is a file stored within the game save, containing any information needed to repeat (replay) a game from start, in a movie-like fashion. This feature is to allow players to view how their world came to be.&lt;br /&gt;
&lt;br /&gt;
== Creating &amp;amp; playing a replay ==&lt;br /&gt;
&lt;br /&gt;
Replays can be automatically generated as the map is played, behind the scenes. To enable this, the &amp;quot;Record replay information&amp;quot; option needs to be checked upon creation of the map in the map settings. Replays have rather strong limitations, see below.&lt;br /&gt;
&lt;br /&gt;
Playing a replay will play back in chronological order the actions taken in the world, as if the player was recording. The speed of playback can be increased or decreased to fine-tune the viewing experience. &lt;br /&gt;
&lt;br /&gt;
To play replays, from the main menu go to Single Player -&amp;gt; Load game, then find the ▶ Start replay button in the upper right. &lt;br /&gt;
&lt;br /&gt;
=== The replay GUI ===&lt;br /&gt;
&lt;br /&gt;
A simple control GUI is available to control replay playback:&lt;br /&gt;
&lt;br /&gt;
[[File:replayGUI.jpg]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Pause/play the replay &lt;br /&gt;
2. Slow down playback &lt;br /&gt;
3. Speed up playback &lt;br /&gt;
4. Playback position&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In multiplayer replays it is also possible to change the viewpoint player.&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
&lt;br /&gt;
* Replays for worlds created in older versions cannot be played. Downgrading is needed to view the replay.&lt;br /&gt;
* Adding/removing mods to the save will also break the replay.&lt;br /&gt;
* Although the replay option is part of the map settings, it is not saved to map exchange strings, hence it needs to be enabled manually after importing an exchange string. &lt;br /&gt;
* Playback view is locked to the character in singleplayer.&lt;br /&gt;
* There is no way to skip ahead, the entire replay must be watched up until the point of interest.&lt;br /&gt;
* Re-winding (A.K.A. Going backwards in time ) is not possible.&lt;br /&gt;
&lt;br /&gt;
== Advanced Features ==&lt;br /&gt;
&lt;br /&gt;
* The game can be saved at any time during playback, thus it is possible to play again from any time during the replay.&lt;br /&gt;
* Changing the script files inside the save will not invalidate the replay. This can be used e.g. to collect data or screenshots in the background as the replay runs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Multiplayer]]&lt;br /&gt;
* [[Application directory]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Console&amp;diff=180676</id>
		<title>Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Console&amp;diff=180676"/>
		<updated>2020-06-28T14:42:12Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Modding tools */ Add command to write mod list to file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
The &#039;&#039;&#039;console&#039;&#039;&#039; is Factorio&#039;s in-game command-line interface. See [[command line parameters]] for the command line interface of the Factorio executable.&lt;br /&gt;
&lt;br /&gt;
The in-game console can be used for:&lt;br /&gt;
&lt;br /&gt;
* Chatting with other players&lt;br /&gt;
* Occasional status updates&lt;br /&gt;
* Running commands / scripts / cheats&lt;br /&gt;
&lt;br /&gt;
There are three types of commands:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Normal commands|Normal]]&#039;&#039;&#039; - Display information about the game and customize your experience.&lt;br /&gt;
* &#039;&#039;&#039;[[#Multiplayer commands|Multiplayer]]&#039;&#039;&#039; - Message filtering, banning users, etc.&lt;br /&gt;
* &#039;&#039;&#039;[[#Scripting and cheat commands|Scripting/Cheating]]&#039;&#039;&#039; - Run small Lua scripts (but they &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;disable achievements for the save game&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Using the console ===&lt;br /&gt;
The console display can be toggled with the {{keybinding|/}} (slash) or {{keybinding|~}} (tilde) keys.&lt;br /&gt;
&lt;br /&gt;
You can customize the keys via &#039;&#039;&#039;Options Menu → Keyboard → Toggle Lua console&#039;&#039;&#039;.&lt;br /&gt;
When the console is open, you&#039;ll see a blinking cursor at the bottom of the screen; type your message or command and hit &#039;&#039;&#039;Return&#039;&#039;&#039; to send it (this will also close the console).&lt;br /&gt;
Documentation about message and command prefixes can be found further down this page.&lt;br /&gt;
&lt;br /&gt;
The console supports [[rich text]] tags. These tags are useful for sharing blueprints, marking map locations in chat or adding icons to map markers and train stations. Ctrl + Alt-clicking the map or ground will automatically insert a GPS tag and post it into the console. Shift-clicking most things with the console open will insert a tag for that thing into the console.&lt;br /&gt;
&lt;br /&gt;
When the console is closed, only the most recent messages/commands will be displayed, but they will gradually fade away (opening the console will immediately re-display all recent messages).&lt;br /&gt;
Note that by default, all executed commands are made visible to all users. You can set the fade-out time via &#039;&#039;&#039;Options Menu → Other Settings → Message Delay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you want to immediately hide the console, open the console and then press &#039;&#039;&#039;Escape&#039;&#039;&#039; key (or press &#039;&#039;&#039;Return&#039;&#039;&#039; without entering any message/command).&lt;br /&gt;
This not only closes the console, but it also hides all the recent messages/commands.&lt;br /&gt;
The console can be cleared with the &#039;&#039;&#039;/clear&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the {{keybinding|&amp;amp;uarr;}} and {{keybinding|&amp;amp;darr;}} keys to scroll through the console history. The {{keybinding|Tab}} key will auto-complete commands and player names.&lt;br /&gt;
&lt;br /&gt;
== Normal commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| /alerts &amp;lt;enable/disable/mute/unmute&amp;gt; &amp;lt;alert&amp;gt;&lt;br /&gt;
| /alerts disable turret_fire&lt;br /&gt;
| Enables, disables, mutes, or unmutes the given  [[alerts|alert]] type. Available alerts: entity_destroyed, entity_under_attack, not_enough_construction_robots, no_material_for_construction, not_enough_repair packs, turret_fire, custom, no_storage, train_out_of_fuel, fluid_mixing.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /clear&lt;br /&gt;
| /clear&lt;br /&gt;
| Clears the console.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /color &amp;lt;color&amp;gt;&lt;br /&gt;
| /color 20 255 255 100&lt;br /&gt;
| Changes your color. Can either be one of the pre-defined colors or [[:Wikipedia:RGBA_color_space|RGBA value]] in the format of “# # # #”. Available colors: default, red, green, blue, orange, yellow, pink, purple, white, black, gray, brown, cyan, acid.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /evolution&lt;br /&gt;
| /evolution&lt;br /&gt;
| Prints info about the alien evolution factor.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /help [command]&lt;br /&gt;
| /help&lt;br /&gt;
| Prints a list of available commands, the optional argument can specify the command that should be described.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /h [command]&lt;br /&gt;
| /h&lt;br /&gt;
| Same as /help.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /mute-programmable-speaker &amp;lt;mute/unmute&amp;gt; &amp;lt;local/everyone&amp;gt;&lt;br /&gt;
| /mute-programmable-speaker mute local&lt;br /&gt;
| Mutes or unmutes the global sounds created by the Programmable Speaker. Use “local” to mute just the local client. Admins can use “everyone” to mute the sounds for everyone on the server.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /perf-avg-frames &amp;lt;number&amp;gt;&lt;br /&gt;
| /perf-avg-frames 100&lt;br /&gt;
| Number of ticks/updates used to average performance counters. Default is 100. Value of 5-10 is recommended for fast convergence, but numbers will jitter more rapidly.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /permissions&lt;br /&gt;
| /permissions&lt;br /&gt;
| Opens the permissions GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /screenshot [x resolution] [y resolution] [zoom]&lt;br /&gt;
| /screenshot&lt;br /&gt;
| Takes a screenshot with the GUI hidden, centered on the player. It is saved in the &amp;quot;script-output&amp;quot; subfolder of your [[User data directory]].  Resolution is optional and defaults to the current window size. Zoom is optional and defaults to 1.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /seed&lt;br /&gt;
| /seed&lt;br /&gt;
| Prints the starting map seed.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /time&lt;br /&gt;
| /time&lt;br /&gt;
| Prints info about how old the map is.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| /toggle-action-logging&lt;br /&gt;
| Toggles logging all input actions performed by the game. This value isn’t persisted between game restarts and only affects your local game in multiplayer sessions.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| /toggle-heavy-mode&lt;br /&gt;
| Used to investigate [[Desynchronization#Using_heavy_mode_command|desyncs]]. Will slow down the game and make multiplayer unplayable.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| /toggle-rockets-sent-gui&lt;br /&gt;
| Toggles if the rockets sent button is shown in the upper left corner of the screen.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| /unlock-shortcut-bar&lt;br /&gt;
| Unlocks all shortcut bar items.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /version&lt;br /&gt;
| /version&lt;br /&gt;
| Prints the current game version.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multiplayer commands ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Command&lt;br /&gt;
! style=&amp;quot;width:25%&amp;quot;| Example&lt;br /&gt;
! style=&amp;quot;width:46%&amp;quot;| Description&lt;br /&gt;
! style=&amp;quot;width:4%&amp;quot;| Admin only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;message&amp;gt;&lt;br /&gt;
| Hello team!&lt;br /&gt;
| Console input that does not start with {{keybinding|/}} is shown as a chat message to your team.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /admin&lt;br /&gt;
| /admin&lt;br /&gt;
| Opens the player management GUI.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /admins&lt;br /&gt;
| /admins&lt;br /&gt;
| Prints a list of game admins.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ban &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /ban xTROLLx Throwing grenades in base&lt;br /&gt;
| Bans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /banlist &amp;lt;add/remove/get/clear&amp;gt; &amp;lt;player&amp;gt;&lt;br /&gt;
| /banlist get&lt;br /&gt;
| Adds or removes a player from the banlist. Same as /ban or /unban.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /config &amp;lt;get/set&amp;gt; &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| /config set password hunter2&lt;br /&gt;
| Gets or sets various multiplayer game settings. Available configs are: afk-auto-kick, allow-commands, allow-debug-settings, autosave-interval, autosave-only-on-server, ignore-player-limit-for-returning-players, max-players, max-upload-speed, only-admins-can-pause, password, require-user-verification, visibility-lan, visibility-public.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /delete-blueprint-library &amp;lt;player&amp;gt;&lt;br /&gt;
| /delete-blueprint-library everybody confirm&lt;br /&gt;
| Deletes the blueprint library storage for the given offline player from the save file. Enter “everybody confirm” to delete the storage of all offline players.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /demote &amp;lt;player&amp;gt;&lt;br /&gt;
| /demote AzureDiamond&lt;br /&gt;
| Demotes the player from admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /ignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /ignore Cthon98&lt;br /&gt;
| Prevents the chat from showing messages from this player. Admin messages are still shown.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /ignores&lt;br /&gt;
| /ignores&lt;br /&gt;
| Prints a list of ignored players.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /kick &amp;lt;player&amp;gt; &amp;lt;reason&amp;gt;&lt;br /&gt;
| /kick xTROLLx Throwing grenades in base&lt;br /&gt;
| Kicks the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mute &amp;lt;player&amp;gt;&lt;br /&gt;
| /mute Cthon98&lt;br /&gt;
| Prevents the player from saying anything in chat.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /mutes&lt;br /&gt;
| /mutes&lt;br /&gt;
| All players that are muted (can’t talk in chat).&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /open &amp;lt;player&amp;gt;&lt;br /&gt;
| /open AzureDiamond&lt;br /&gt;
| Opens another player’s inventory.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /o &amp;lt;player&amp;gt;&lt;br /&gt;
| /o AzureDiamond&lt;br /&gt;
| Same as /open.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /players [online/o/count/c]&lt;br /&gt;
| /players&lt;br /&gt;
| Prints a list of players in the game. (parameter online/o, it prints only players that are online, count/c prints only count)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /promote &amp;lt;player&amp;gt;&lt;br /&gt;
| /promote AzureDiamond&lt;br /&gt;
| Promotes the player to admin.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /purge &amp;lt;player&amp;gt;&lt;br /&gt;
| /purge Cthon98&lt;br /&gt;
| Clears all the messages from this player from the chat log.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /reply &amp;lt;message&amp;gt;&lt;br /&gt;
| /reply oh, really?&lt;br /&gt;
| Replies to the last player that whispered to you.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /r &amp;lt;message&amp;gt;&lt;br /&gt;
| /r oh, really?&lt;br /&gt;
| Same as /reply.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /server-save&lt;br /&gt;
| /server-save&lt;br /&gt;
| Saves the game on the server in a multiplayer game.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /shout &amp;lt;message&amp;gt;&lt;br /&gt;
| /shout Hello world!&lt;br /&gt;
| Sends a message to all players including other forces.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /s &amp;lt;message&amp;gt;&lt;br /&gt;
| /s Hello world!&lt;br /&gt;
| Same as /shout.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /swap-players &amp;lt;player&amp;gt; [player]&lt;br /&gt;
| /swap-players AzureDiamond&lt;br /&gt;
| Swaps your character with the given player’s character, or if two players are given swaps the two player characters.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unban &amp;lt;player&amp;gt;&lt;br /&gt;
| /unban xTROLLx&lt;br /&gt;
| Unbans the specified player.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /unignore &amp;lt;player&amp;gt;&lt;br /&gt;
| /unignore Cthon98&lt;br /&gt;
| Allows the chat to show messages from this player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /unmute &amp;lt;player&amp;gt;&lt;br /&gt;
| /unmute Cthon98&lt;br /&gt;
| Allows the player to talk in chat again.&lt;br /&gt;
| Yes&lt;br /&gt;
|-&lt;br /&gt;
| /whisper &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /whisper AzureDiamond that&#039;s what I see&lt;br /&gt;
| Sends a message to the specified player.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /w &amp;lt;player&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
| /w AzureDiamond that&#039;s what I see&lt;br /&gt;
| Same as /whisper.&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| /whitelist &amp;lt;add/remove/get/clear&amp;gt; [player]&lt;br /&gt;
| /whitelist get&lt;br /&gt;
| Adds or removes a player from the whitelist, where only whitelisted players can join the game. Enter nothing for “player” when using “get” to print a list of all whitelisted players. An empty whitelist disables the whitelist functionality allowing anyone to join.&lt;br /&gt;
| No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripting and cheat commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /cheat &amp;lt;all&amp;gt;&lt;br /&gt;
| Researches all technologies and enables cheat mode. Using the &#039;&#039;&#039;all&#039;&#039;&#039; option also gives the player some additional items.&lt;br /&gt;
|-&lt;br /&gt;
| /command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /c &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed).&lt;br /&gt;
|-&lt;br /&gt;
| /editor&lt;br /&gt;
| Toggles the map editor.&lt;br /&gt;
|-&lt;br /&gt;
| /measured-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) and measures time it took.&lt;br /&gt;
|-&lt;br /&gt;
| /silent-command &amp;lt;command&amp;gt;&lt;br /&gt;
| Executes a Lua command (if allowed) without printing it to the console.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a very powerful feature, which also allows cheating, and as such &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;achievements will be permanently disabled for the save&amp;lt;/span&amp;gt; as soon as you use a script command.&lt;br /&gt;
&lt;br /&gt;
== Basic example scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Use it as calculator ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(1234*5678)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zoom beyond normal bounds ===&lt;br /&gt;
Note that zooming too far out can cause performance hits. Be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.zoom=0.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mine faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_mining_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Craft faster ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.manual_crafting_speed_modifier=1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unlock and research all technologies ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_all_technologies()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Undo this with the command in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Unresearch all technologies ===&lt;br /&gt;
This does not reset manually applied bonuses&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	tech.researched=false&lt;br /&gt;
	game.player.force.set_saved_technology_progress(tech, 0)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reset your force ===&lt;br /&gt;
This resets all data for your force, including kill and production statistics, technologies, bonuses and charting status.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.reset()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create new force and change your force to new one ===&lt;br /&gt;
This creates new force with specified name, than you get this new force.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force = game.create_force(&amp;quot;new_force_name&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Always show rail block visualization ===&lt;br /&gt;
Permanently show the rail block visualization instead of only when holding a rail signal. Disable by replacing true with false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.game_view_settings.show_rail_block_visualisation = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inventory manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Cheat mode ===&lt;br /&gt;
Allows for infinite free crafting. Disable by replacing true with false.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.cheat_mode=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Refill resources (refill oil, iron etc.) ===&lt;br /&gt;
While holding the cursor over a resource tile in-game&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.amount=7500&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively you can refill all resources in the map with the following command. Change ore.amount to the desired value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c surface = game.player.surface&lt;br /&gt;
for _, ore in pairs(surface.find_entities_filtered({type=&amp;quot;resource&amp;quot;})) do&lt;br /&gt;
    ore.amount = 10000&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add items to the player&#039;s inventory ===&lt;br /&gt;
Replace iron-plate with the [[data.raw|internal name]] of the item desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;iron-plate&amp;quot;, count=100}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, here&#039;s a stack of the god-mode energy system interface:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.insert{name=&amp;quot;electric-energy-interface&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a powerful armor with equipment and some tools for construction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c	local player = game.player&lt;br /&gt;
player.insert{name=&amp;quot;power-armor-mk2&amp;quot;, count = 1}&lt;br /&gt;
local p_armor = player.get_inventory(5)[1].grid&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;fusion-reactor-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;exoskeleton-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;energy-shield-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;personal-roboport-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;night-vision-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
	p_armor.put({name = &amp;quot;battery-mk2-equipment&amp;quot;})&lt;br /&gt;
player.insert{name=&amp;quot;construction-robot&amp;quot;, count = 25}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== World manipulation scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Reveal the map around the player ===&lt;br /&gt;
&lt;br /&gt;
Reveals the map around the player, similar to a [[radar]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{game.player.position.x-radius, game.player.position.y-radius}, {game.player.position.x+radius, game.player.position.y+radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or from start position&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local radius=150&lt;br /&gt;
game.player.force.chart(game.player.surface, {{x = -radius, y = -radius}, {x = radius, y = radius}})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Change 150 to the desired radius, higher values take longer.&lt;br /&gt;
&lt;br /&gt;
=== Hide revealed map ===&lt;br /&gt;
&lt;br /&gt;
Hides all revealed chunks, inverted map revealing.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local force = game.player.force&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  force.unchart_chunk({x = chunk.x, y = chunk.y}, surface)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reveal all generated map ===&lt;br /&gt;
&lt;br /&gt;
Revels all of the generated map to the player&#039;s team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.chart_all()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete chunks ===&lt;br /&gt;
If much of the map is revealed, it increases the size of the save file. The following command cancels the generation of all chunks that are currently queued for generation and removes chunks outside a 32 chunks radius around 0,0. Note that this will remove player entities if there are any on these chunks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface;&lt;br /&gt;
game.player.force.cancel_charting(surface); &lt;br /&gt;
local chunk_radius = 32;&lt;br /&gt;
for chunk in surface.get_chunks() do&lt;br /&gt;
  if (chunk.x &amp;lt; -chunk_radius or chunk.x &amp;gt; chunk_radius or chunk.y &amp;lt; -chunk_radius or chunk.y &amp;gt; chunk_radius) then&lt;br /&gt;
    surface.delete_chunk(chunk)&lt;br /&gt;
  end&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off night ===&lt;br /&gt;
Enables eternal day.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.always_day=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change game speed ===&lt;br /&gt;
0.5 is half speed, 1 is default, 2 is double speed, etc. Minimum is 0.01. This can be used for a lot of things like when you know you will have to wait for long periods of time for something to complete. Increasing will decrease performance, be careful.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.speed=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Expensive (marathon) or normal mode ===&lt;br /&gt;
To change from normal to expensive mode preset (this changes the research cost and intermediate product cost):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_difficulty=1&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change back to normal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.difficulty_settings.recipe_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_difficulty=0&lt;br /&gt;
game.difficulty_settings.technology_price_multiplier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Freeze time ===&lt;br /&gt;
Stops the advancement of the time if you replace &amp;quot;BOOL&amp;quot; with &amp;quot;true&amp;quot; or unfreezes it if you replace it with &amp;quot;false&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.freeze_daytime=BOOL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.clear_pollution()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completely turn off pollution ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, surface in pairs(game.surfaces) do&lt;br /&gt;
  surface.clear_pollution()&lt;br /&gt;
end&lt;br /&gt;
game.map_settings.pollution.enabled = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add a lot of pollution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.pollute(game.player.position, 1000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where speakers are, by who ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c speakers = game.player.surface.find_entities_filtered{force = game.player.force, type=&amp;quot;programmable-speaker&amp;quot;}&lt;br /&gt;
for key, speaker in pairs(speakers) do&lt;br /&gt;
    game.player.print(speaker.last_user.name .. &amp;quot; placed a speaker at X=&amp;quot; .. speaker.position.x .. &amp;quot;, Y=&amp;quot; .. speaker.position.y)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable friendly fire for your force ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.friendly_fire = false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new resource patch ===&lt;br /&gt;
This creates a new 11×11 patch of resources, centered on the player character, where the ground is not water.&lt;br /&gt;
The patch it creates is perfectly square but it randomizes the amount similar to natural generation, with fewer ore at the edges and more ore in the center.&lt;br /&gt;
The default numbers result in a patch with 2500-3000 ore.&lt;br /&gt;
&lt;br /&gt;
If you want a larger patch, change &amp;quot;local size = 5&amp;quot; to a larger number.&lt;br /&gt;
A larger patch will have exponentially more ore.&lt;br /&gt;
Entering a number above 30 is not recommended.&lt;br /&gt;
&lt;br /&gt;
If you want a richer patch, change &amp;quot;local density = 10&amp;quot; to a larger number.&lt;br /&gt;
Entering a very large number shouldn&#039;t hurt anything but you probably don&#039;t need to go above 100.&lt;br /&gt;
&lt;br /&gt;
To choose which resource is spawned, change &amp;quot;stone&amp;quot; near the bottom to &amp;quot;iron-ore&amp;quot;, &amp;quot;copper-ore&amp;quot;, &amp;quot;coal&amp;quot;, or &amp;quot;uranium-ore&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local ore=nil&lt;br /&gt;
local size=5&lt;br /&gt;
local density=10&lt;br /&gt;
for y=-size, size do&lt;br /&gt;
	for x=-size, size do&lt;br /&gt;
		a=(size+1-math.abs(x))*10&lt;br /&gt;
		b=(size+1-math.abs(y))*10&lt;br /&gt;
		if a&amp;lt;b then&lt;br /&gt;
			ore=math.random(a*density-a*(density-8), a*density+a*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if b&amp;lt;a then&lt;br /&gt;
			ore=math.random(b*density-b*(density-8), b*density+b*(density-8))&lt;br /&gt;
		end&lt;br /&gt;
		if surface.get_tile(game.player.position.x+x, game.player.position.y+y).collides_with(&amp;quot;ground-tile&amp;quot;) then&lt;br /&gt;
			surface.create_entity({name=&amp;quot;stone&amp;quot;, amount=ore, position={game.player.position.x+x, game.player.position.y+y}})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove resources around the player ===&lt;br /&gt;
Removes all resource patches from the ground in a 50 x 50 area around the player.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local size=50&lt;br /&gt;
local pos=game.player.position&lt;br /&gt;
&lt;br /&gt;
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, type=&amp;quot;resource&amp;quot;}) &lt;br /&gt;
	do e.destroy() &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add new oil patch ===&lt;br /&gt;
This creates 9 crude oil patches in a 3×3 square.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for y=0,2 do&lt;br /&gt;
	for x=0,2 do&lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position={game.player.position.x+x*7-7, game.player.position.y+y*7-7}})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or randomly without any collision:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local position=nil&lt;br /&gt;
for i=1,9 do&lt;br /&gt;
	position=game.player.surface.find_non_colliding_position(&amp;quot;crude-oil&amp;quot;, game.player.position, 0, i/2+1.5)&lt;br /&gt;
	if position then &lt;br /&gt;
		game.player.surface.create_entity({name=&amp;quot;crude-oil&amp;quot;, amount=100000, position=position})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create 10 fishes ===&lt;br /&gt;
This creates 10 fishes around of player. The player must be on the water edge.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local player = game.player&lt;br /&gt;
local surface = player.surface&lt;br /&gt;
for i = 1, 10 do&lt;br /&gt;
  local position = surface.find_non_colliding_position(&#039;fish&#039;, player.position, 10, 1)&lt;br /&gt;
  if not position then return end&lt;br /&gt;
  surface.create_entity {name = &#039;fish&#039;, position = position}&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count entities ===&lt;br /&gt;
Counts all entities whose name includes the string in local entity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local entity=&amp;quot;belt&amp;quot;&lt;br /&gt;
local surface=game.player.surface&lt;br /&gt;
local count=0&lt;br /&gt;
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(ent.name,entity) then&lt;br /&gt;
		count=count+1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(count)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emptying all pipes, underground pipes and pumps ===&lt;br /&gt;
Useful when pipes contain a fluid you dont want.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local deleted=0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=game.player.force})) do&lt;br /&gt;
	if string.find(entity.name, &amp;quot;pipe&amp;quot;) or &lt;br /&gt;
		string.find(entity.name, &amp;quot;pump&amp;quot;) &lt;br /&gt;
	then&lt;br /&gt;
		for i=1,#entity.fluidbox do&lt;br /&gt;
			deleted = deleted + 1&lt;br /&gt;
			entity.fluidbox[i] = nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
game.player.print(&amp;quot;Fluids removed from &amp;quot;..deleted ..&amp;quot; entities&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Turn off cliff generation ===&lt;br /&gt;
Sets size to &amp;quot;none&amp;quot;. Only effective on chunks that are generated after using this command. Use [[#Remove all cliffs]] to delete existing cliffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local mgs = game.player.surface.map_gen_settings&lt;br /&gt;
mgs.cliff_settings.cliff_elevation_0 = 1024&lt;br /&gt;
game.player.surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remove all cliffs ===&lt;br /&gt;
Removes all cliffs existing cliffs from the world. Use [[#Turn off cliff generation]] to turn off cliff generation in new chunks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for _, v in pairs(game.player.surface.find_entities_filtered{type=&amp;quot;cliff&amp;quot;}) do&lt;br /&gt;
  v.destroy()&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete all decoratives ===&lt;br /&gt;
Delete the decoratives that can be found in the world.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.destroy_decoratives({})&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change map generation settings ===&lt;br /&gt;
This allows to change the map generation settings for new chunks; it does not alter already generated chunks. [[#Delete chunks|Deleted chunks]] are affected by the setting change because they are newly generated when they get explored again.&lt;br /&gt;
&lt;br /&gt;
To change resource generation settings, replace &amp;quot;iron-ore&amp;quot; with the [[Data.raw#resource|resource]] that should be changed and replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command. Replace &amp;quot;iron-ore&amp;quot; with &amp;quot;enemy-base&amp;quot; to change the enemy base generation settings. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local resource = &amp;quot;iron-ore&amp;quot;&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[resource].size = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].frequency = &amp;quot;very-high&amp;quot;&lt;br /&gt;
mgs.autoplace_controls[resource].richness = &amp;quot;very-high&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change water generation settings, replace &amp;quot;very-high&amp;quot; with the desired [https://lua-api.factorio.com/latest/Concepts.html#MapGenSize MapGenSize] in the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.water = &amp;quot;very-high&amp;quot; --[[ size]]&lt;br /&gt;
mgs.terrain_segmentation  = &amp;quot;very-high&amp;quot; --[[ frequency]]&lt;br /&gt;
surface.map_gen_settings = mgs &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enemy/evolution scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Set evolution factor ===&lt;br /&gt;
Ranges from 0 (new game) to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].evolution_factor=X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable time-based evolution &amp;amp; increases pollution-based evolution ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_evolution.time_factor=0&lt;br /&gt;
/c game.map_settings.enemy_evolution.pollution_factor=game.map_settings.enemy_evolution.pollution_factor*2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;2&amp;quot; at the end of the last command will double the default pollution factor. You can substitute another number to increase (or decrease) the pollution factor further.&lt;br /&gt;
&lt;br /&gt;
=== Kill all biters on the &amp;quot;enemy&amp;quot; force ===&lt;br /&gt;
Note that this will kill only mobile units, spawners will not be killed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.forces[&amp;quot;enemy&amp;quot;].kill_all_units()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all enemies ===&lt;br /&gt;
This will kill all biters, bases and worms. Anything that is an enemy will be completely destroyed. This only affects enemies in the explored world, so any unexplored parts of the map which still need to be generated will still have enemies. You can [[#Prevent biters being on newly generated chunks|prevent biters being on newly generated chunks]] if desired.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;})) do&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill all nearby enemies ===&lt;br /&gt;
&lt;br /&gt;
This will kill all biters, bases and worms in a configurable radius. The default, 250 tiles, is about two zoomed-out screen widths on full HD. After destruction, it shows how many objects were destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface=game.player.surface&lt;br /&gt;
local pp = game.player.position&lt;br /&gt;
local cnt = 0&lt;br /&gt;
for key, entity in pairs(surface.find_entities_filtered({force=&amp;quot;enemy&amp;quot;, radius=250, position=pp })) do&lt;br /&gt;
	cnt = cnt+1&lt;br /&gt;
	entity.destroy()&lt;br /&gt;
 end	&lt;br /&gt;
game.player.print(cnt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable peaceful mode ===&lt;br /&gt;
Enabling peaceful mode prevents biter attacks until provoked. Substitute true for false to disable. Already existing biters are not affected by this command so attacks could continue for a while after activating peaceful mode.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.surface.peaceful_mode = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable biter expansion ===&lt;br /&gt;
Biter expansion allows biters to create new nests, it is enabled by default. Substitute true for false to disable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.map_settings.enemy_expansion.enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prevent biters being on newly generated chunks ===&lt;br /&gt;
On newly generated chunks no biters will be present, however all current biters will remain unaffected. Equivalent of setting the Enemy Base Size to None under the Terrain settings during map generation but achieved mid game by [[#Change map generation settings|changing map generation settings]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local surface = game.player.surface&lt;br /&gt;
local mgs = surface.map_gen_settings&lt;br /&gt;
mgs.autoplace_controls[&amp;quot;enemy-base&amp;quot;].size = &amp;quot;none&amp;quot;&lt;br /&gt;
surface.map_gen_settings = mgs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Player character scripts ==&lt;br /&gt;
Commands concerning the player directly.&lt;br /&gt;
=== Get player position ===&lt;br /&gt;
Prints coordinates of your current position.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.position.x .. &amp;quot;, &amp;quot; .. game.player.position.y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Teleport player ===&lt;br /&gt;
Moves the player to the specified location. You should be able to teleport to a specific player if you obtain their coordinates via them executing the previous command and giving them to you.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.teleport({X, Y})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To teleport to the world&#039;s origin, use 0,0.&lt;br /&gt;
&lt;br /&gt;
=== Enable god mode ===&lt;br /&gt;
God mode removes your player character allowing you to fly over obstacles and take no damage.&lt;br /&gt;
&lt;br /&gt;
Disassociate your controls from the player:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.character=nil&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, hover the mouse over the useless player and destroy it by typing:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.selected.destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To undo, spawn a player character. This will spawn a new player at the spawn point of the world, and connect your controls to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.create_character()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable long reach ===&lt;br /&gt;
Enables long reach, which allows the player to build and interact with entities at a greater distance. The default reach is 10.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local reach = 10000&lt;br /&gt;
game.player.force.character_build_distance_bonus = reach&lt;br /&gt;
game.player.force.character_reach_distance_bonus = reach&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Research scripts ==&lt;br /&gt;
&lt;br /&gt;
=== Enable Research Queue ===&lt;br /&gt;
Enable the research queue for the players current team. Can be done after the game has started if it was forgotten during the map&#039;s setup.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.research_queue_enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable faster research ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.laboratory_speed_modifier=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
1 is normal speed, 2 is double speed 3 is triple etc.&lt;br /&gt;
&lt;br /&gt;
=== Research specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=true&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unresearch specific technologies ===&lt;br /&gt;
The internal technology names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.technologies[&#039;electric-energy-distribution-1&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;electric-energy-distribution-1&#039;, 0)&lt;br /&gt;
/c game.player.force.technologies[&#039;steel-processing&#039;].researched=false; game.player.force.set_saved_technology_progress(&#039;steel-processing&#039;, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling specific recipes ===&lt;br /&gt;
The internal recipe/item names can be found in the infoboxes on their respective pages.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;electric-energy-interface&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;rocket-silo&amp;quot;].enabled=true&lt;br /&gt;
/c game.player.force.recipes.loader.enabled=true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;fast-loader&amp;quot;].enabled = true&lt;br /&gt;
/c game.player.force.recipes[&amp;quot;express-loader&amp;quot;].enabled = true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all recipes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c for name, recipe in pairs(game.player.force.recipes) do recipe.enabled = true end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modding tools ==&lt;br /&gt;
A list of the internal names of most things in the vanilla game can also be found on [[data.raw]].&lt;br /&gt;
&lt;br /&gt;
=== Access a mod&#039;s data ===&lt;br /&gt;
If the first word of the command is __mod-name__ it will run in the context of the mod with the same name. For instance, this command prints the data from Resource Spawner Overhaul:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c __rso-mod__ game.player.print(serpent.dump(global))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Print to console which tile are you have under the player position ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.player.print(game.player.surface.get_tile(game.player.position).name)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all researched technologies to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, tech in pairs(game.player.force.technologies) do &lt;br /&gt;
	if tech.researched then&lt;br /&gt;
    list[#list+1] = tech.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;techs.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write all enabled recipes to file ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c local list = {}&lt;br /&gt;
for _, recipe in pairs(game.player.force.recipes) do &lt;br /&gt;
	if recipe.enabled then&lt;br /&gt;
    list[#list+1] = recipe.name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
game.write_file(&amp;quot;recipes.lua&amp;quot;, serpent.block(list) .. &amp;quot;\n&amp;quot;, true)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write mod list to file ===&lt;br /&gt;
Write all currently active mods and their version to the file script-output/mods.txt in the [[user data directory]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
/c game.write_file(&amp;quot;mods.txt&amp;quot;, serpent.block(game.active_mods))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Command line parameters]]&lt;br /&gt;
* http://lua-api.factorio.com/latest/ - Factorio API reference for latest version&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Rail_signal&amp;diff=180290</id>
		<title>Rail signal</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Rail_signal&amp;diff=180290"/>
		<updated>2020-06-12T16:34:53Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Make reference to train signals tutorial more visible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Rail signal}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;rail signal&#039;&#039;&#039; divides rails into &#039;&#039;blocks&#039;&#039; and allows [[locomotive]]s to react to other locomotives allowing multiple trains use the same rails without colliding. Blocks span all connected rails regardless if a train can actually travel between them. Rail signals can also be used in with conjunction [[rail chain signal]]s, which also separate rails into blocks. In addition to the explanation on this page, there is also the [[Tutorial:Train_signals|rail signal tutorial]]. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks.png|thumb|Signals dividing rails into blocks. Each block is highlighted with a different color.]]&lt;br /&gt;
&lt;br /&gt;
== Direction ==&lt;br /&gt;
Which block a signal monitors depends on which side of a rail it is placed. When a signal is on the right-hand side of the track, it monitors and protects the rail block behind it, up to the next signal or the end of the track. When placing rail signals, the rail signal blocks will be visible, and the opposite signal position will be highlighted in white. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal.&lt;br /&gt;
&lt;br /&gt;
== States ==&lt;br /&gt;
[[File:railsignal_anim.png]]&lt;br /&gt;
&lt;br /&gt;
Rail signals have four states:&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#55FF55&amp;quot;&amp;gt;Green&amp;lt;/span&amp;gt;&#039;&#039;&#039; - The monitored block is empty.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FFFF55&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt;&#039;&#039;&#039; - A train is not able to stop before the monitored block and will pass the signal. The [[debug mode|debug option]] &amp;lt;code&amp;gt;show_train_stop_point&amp;lt;/code&amp;gt; can be used to see the distance locomotives need to stop.  A yellow signal means that a train is approaching and already has the approval to enter the following block.  The block is reserved for a train and all other entrance signals of that block turn red.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#ee7777&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt;&#039;&#039;&#039; - The monitored block is not empty or another signal monitoring it is orange.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;span class=&amp;quot;rail-signal-blink&amp;quot;&amp;gt;Blinking&amp;lt;/span&amp;gt;&#039;&#039;&#039; - The signal is not on a rail, or the monitored block is also the block before the signal.&lt;br /&gt;
&lt;br /&gt;
When a signal is red, locomotives will stop before it. A rail chain signal can be used to make locomotives stop earlier, as they will always mimic the signal of what is in front of them.&lt;br /&gt;
&lt;br /&gt;
== Circuit network ==&lt;br /&gt;
[[File:Rail_signal_circuit_network_gui.png|thumb|The interface for configuring a circuit network connection for a rail signal.]]&lt;br /&gt;
A circuit network condition can be configured that when true will make the rail signal red.&lt;br /&gt;
&lt;br /&gt;
A rail signal can also output three different signals depending on if it is in its green, orange or red state. If a rail signal is red because of a circuit network condition the rail signal won&#039;t output a circuit network signal.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
* The rail signal is now connectable to the circuit network.&lt;br /&gt;
* Halved the mining time of the rail signal.&lt;br /&gt;
* Rail signal stop placement indicator added.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.11.4|&lt;br /&gt;
* Rail signal that fails to divide two sections of rail will blink multiple colors.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.9.0|&lt;br /&gt;
* Players no longer collide with the rail signal.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.5.0|&lt;br /&gt;
* Players can now see a visualization of the protected rail area when building/selecting the signal.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.1|&lt;br /&gt;
* Rail signals connect to more than one rail when connected to a junction.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.0|&lt;br /&gt;
* Introduced}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Rail chain signal]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Tutorial:Train signals]]&lt;br /&gt;
&lt;br /&gt;
{{LogisticsNav}}&lt;br /&gt;
{{C|Transport}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Rail_chain_signal&amp;diff=180289</id>
		<title>Rail chain signal</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Rail_chain_signal&amp;diff=180289"/>
		<updated>2020-06-12T16:30:26Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Fix outdated links, make reference to the signals tutorial more visible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Rail chain signal}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rail chain signals&#039;&#039;&#039; are used for automated transportation on a [[Railway|railway network]]. With rail chain signals, it is possible to use multiple trains on a single track, or multiple rails that intertwine. Rail chain signals can be used to ensure that trains only enter a crossing if they can also leave it, which ensures that they do not block other traffic by waiting on the crossing. In addition to the explanation on this page, there is also the [[Tutorial:Train_signals|rail signal tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
* The best prerequisite to understand chain signals is to understand [[Tutorial:Train_signals#Regular_signals_and_blocks|signal blocks]].&lt;br /&gt;
* Rail chain signals are placed like regular signals at the right side of the railway track. If automated trains are required to drive in both directions on the same track segment, signals need to be added on both sides of the track, opposite each other.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Both normal signals and chain signals prevent a train from entering the next block if it is obstructed.  However, a chain signal also looks ahead to the next signal, and turns red if the next signal is red.  In effect, this prevents a train from entering a block if it won&#039;t be able to leave. When more than one exits exist, the one where the train is pathing to is considered.  &lt;br /&gt;
&lt;br /&gt;
== Usage examples ==&lt;br /&gt;
&#039;&#039;&#039;Regular signal compared to a chain signal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With a regular signal, the block after it is empty, so the train can go there.&lt;br /&gt;
[[File:Regular-signals.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chain signal with one exit doesn&#039;t allow the train to enter the block, since it can&#039;t leave immediately.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-basic.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simple example with practical usage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The chain signal prevents the train from blocking the crossing route while waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Double crossing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Double crossings are a common cause of train jams, as trains can stop in the middle of the crossing and block everything. It can even cause total deadlock, which require manual intervention to fix the problem. With chain signals, the rails that don&#039;t cross are still separated, but trains won&#039;t stop in the middle of the crossing.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock prevention&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another common cause of blockages are bidirectional single track lines with occasional bypasses. Here a train can&#039;t enter the line because another train is in it, but that train in turn can&#039;t leave the line.&lt;br /&gt;
&lt;br /&gt;
[[File:train-deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With chain signals, this problem can be totally avoided by preventing the train from going to the shared section unless it can exit it.&lt;br /&gt;
&lt;br /&gt;
[[File:chain-signal-prevents-deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
[[File:railchainsignal_anim.png]]&lt;br /&gt;
&lt;br /&gt;
* If the chain signal has only one exit, it doesn&#039;t allow the train to enter its block, if the train would have to stop in said block.&lt;br /&gt;
* Since trains react to chain signals based on their own path, chain signals before a crossing will not stop trains if the other track&#039;s exit is blocked.&lt;br /&gt;
* If there are several chain signals before a regular one, a train waits before the first chain signal if the block after the regular signal is occupied.&lt;br /&gt;
&lt;br /&gt;
* If a chain signal switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#55FF55&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;&#039;&#039;&#039;, all exits are free.&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FFFF55&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt;&#039;&#039;&#039;, the block is reserved for a train and all other entrance signals of that block turn &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FF5555&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FF5555&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt;&#039;&#039;&#039;, all exits are occupied.&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#8888FF&amp;quot;&amp;gt;blue&amp;lt;/span&amp;gt;&#039;&#039;&#039;, some but not all exits are free. In this case trains may or may not stop, depending on their path.&lt;br /&gt;
* If it is &#039;&#039;&#039;&amp;lt;span class=&amp;quot;rail-signal-blink&amp;quot;&amp;gt;Blinking&amp;lt;/span&amp;gt;&#039;&#039;&#039;, it is not on a rail, or unable to divide it into separate blocks.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{history|0.16.0|&lt;br /&gt;
* Rail chain signals can be read by the [[circuit network]].}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.12.0|&lt;br /&gt;
* Introduced}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Tutorial: Train signals]]&lt;br /&gt;
&lt;br /&gt;
{{LogisticsNav}}&lt;br /&gt;
{{C|Transport}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Rocket_silo_(research)&amp;diff=170537</id>
		<title>Rocket silo (research)</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Rocket_silo_(research)&amp;diff=170537"/>
		<updated>2019-03-12T22:11:54Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Updated first section for 0.17.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Rocket silo (research)}}&lt;br /&gt;
&lt;br /&gt;
The rocket silo technology is the final technology required to win the game. Because the rocket silo is at the end of a deep research tree, researching it and the techs leading up to it is a significant part of the cost of winning the game. &lt;br /&gt;
&lt;br /&gt;
In version 0.17, the following science packs are required to research the rocket silo and all technologies leading up to it (with normal science cost):&lt;br /&gt;
&amp;lt;div&amp;gt;{{Icon|Science pack 1}} × 5825, {{Icon|Science pack 2}} × 5615, {{Icon|Science pack 3}} × 3100, {{Icon|Production science pack}} × 1300, {{Icon|Utility science pack}} × 1600&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raw Materials ==&lt;br /&gt;
The following lists the raw resources required to craft the science packs above. Note that the following information depends on a large part of the game&#039;s recipes and hence any version that changes the recipes might affect this data. The following is correct for version &#039;&#039;0.15.33&#039;&#039;. &lt;br /&gt;
There is a distinction to be made for whether the player decides to use [[Advanced oil processing]] or not, the value in brackets is the value without advanced oil processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;{{Icon|Crude oil}} × 552955 (760313), {{Icon|Water}} × 356103 (79625), {{Icon|Iron ore}} × 329538, {{Icon|Copper ore}} × 192028, {{Icon|Coal}} × 25250, {{Icon|Stone}} × 13000,&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would also produce an additional 56296 (228094) [[Heavy oil]] and 248830 (228094) [[Light oil]] which go unused. We did not add the cost of advanced oil processing in the calculation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:40em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Complete list of all intermediate products&#039;&#039;&#039; (using advanced oil processing):&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
     650 [[Electric furnace]]&lt;br /&gt;
     650 [[Battery]]&lt;br /&gt;
     650 [[Assembling machine 1]]&lt;br /&gt;
     650 [[Electric engine unit]]&lt;br /&gt;
     650 [[Speed module]]&lt;br /&gt;
   1 160 [[Grenade]]&lt;br /&gt;
   1 160 [[Gun turret]]&lt;br /&gt;
   1 160 [[Piercing rounds magazine]]&lt;br /&gt;
   1 160 [[Firearm magazine]]&lt;br /&gt;
   1 300 [[Production science pack]]&lt;br /&gt;
   1 300 [[Utility science pack]]&lt;br /&gt;
   1 950 [[Processing unit]]&lt;br /&gt;
   2 275 [[Sulfur]]&lt;br /&gt;
   2 320 [[Military science pack]]&lt;br /&gt;
   3 100 [[Electric mining drill]]&lt;br /&gt;
   3 100 [[Chemical science pack]]&lt;br /&gt;
   3 750 [[Engine unit]]&lt;br /&gt;
   5 735 [[Logistic science pack]]&lt;br /&gt;
   5 735 [[Inserter]]&lt;br /&gt;
   5 735 [[Transport belt]]&lt;br /&gt;
   5 925 [[Automation science pack]]&lt;br /&gt;
   6 500 [[Stone brick]]&lt;br /&gt;
   7 500 [[Pipe]]&lt;br /&gt;
   9 750 [[Lubricant]]&lt;br /&gt;
  11 410 [[Steel plate]]&lt;br /&gt;
  13 500 [[Advanced circuit]]&lt;br /&gt;
  22 750 [[Sulfuric acid]]&lt;br /&gt;
  26 500 [[Plastic bar]]&lt;br /&gt;
  48 628 [[Iron gear wheel]]&lt;br /&gt;
  54 387 [[Heavy oil]]&lt;br /&gt;
  87 535 [[Electronic circuit]]&lt;br /&gt;
 189 028 [[Copper plate]]&lt;br /&gt;
 244 793 [[Light oil]]&lt;br /&gt;
 299 125 [[Petroleum gas]]&lt;br /&gt;
 192 028 [[Copper cable]]&lt;br /&gt;
 329 538 [[Iron plate]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This also doesn&#039;t include any military or advanced logistics tech, products needed for the actual rocket, or production facilities (belts, assemblers, inserters etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Rocket silo]]&lt;br /&gt;
* [[Research]]&lt;br /&gt;
* [[Technologies]]&lt;br /&gt;
{{TechNav}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Combinator_tutorial&amp;diff=170414</id>
		<title>Tutorial:Combinator tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Combinator_tutorial&amp;diff=170414"/>
		<updated>2019-03-10T23:30:37Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is an &#039;&#039;&#039;advanced&#039;&#039;&#039; tutorial. Beginners should refer to the [[Tutorial:Circuit network cookbook]] for examples and the [[Circuit network]] page for an overview over the circuit network. This tutorial assumes a basic understanding of circuits and covers more advanced topics like SR latches, memory cells and clocks.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Combinator logic is achieved by cross-connecting outputs to inputs in such a way to achieve the desired logic. While advanced logic requires a multitude of combinators, some very useful basic logic can be achieved using only a handful of combinators. &#039;&#039;&#039;Combinator logic works because Factorio only updates at 60 times per second, such that combinators analyze their logic in a step, and then sum and/or decide the resulting output values on the next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When logic values are computed by combinators, the outputs are not recognized by the circuit network until the following step. So when a [[decider combinator]] is used to detect a certain input condition, it&#039;s output value will not take effect on the circuit network until the next step. &#039;&#039;&#039;This behavior is important to remember and can result in sequencing errors and significant delays when multiple combinators are connected in series.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Circuit wires act like a wire bus in electronics, it carries information in the connected wires, meaning that &#039;&#039;&#039;if there are similar signals on a wire, it will add them automatically, unless if it is a different signal, that means it will be carried in that wire as well, but as a different signal.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When cross-connecting combinators &#039;&#039;&#039;it&#039;s good practice to use the unused color to cross-connect, this will split the input and output networks and prevent unwanted inputs from accidentally connecting to a larger circuit network.&#039;&#039;&#039; Combinators will sum the red &amp;amp;/or green inputs prior to calculation, so either color can be used when wiring the output back to the input, but in most cases, it is more useful to use the opposing color of the wire so that it will not interfere with the resulting output and input.&lt;br /&gt;
&lt;br /&gt;
== Virtual signals ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#FF6666&amp;quot;&amp;gt;Everything wildcard&amp;lt;/span&amp;gt; [[File:everything_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This red wildcard serves to check all the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used in the decider combinator&lt;br /&gt;
* as input it checks if all inputs meet the specified condition.&lt;br /&gt;
* as output it serves output to every signal.&lt;br /&gt;
&lt;br /&gt;
Side note: &amp;quot;Everything&amp;quot; outputs true by default even if there is no signal to guarantee that it is true. &#039;&#039;Everything is false when every input does not meet the condition, otherwise, output true.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#99FF99&amp;quot;&amp;gt;Anything wildcard&amp;lt;/span&amp;gt; [[File:anything_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This green wildcard serves to check all the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used as input in the decider combinator it checks if any of the inputs meet the specified condition.&lt;br /&gt;
&lt;br /&gt;
Side note: &amp;quot;Anything&amp;quot; outputs false by default if there is no signal to guarantee that it is true. &#039;&#039;Anything is false when any of inputs do not meet the condition, otherwise, it is true.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#FFFF99&amp;quot;&amp;gt;Each wildcard&amp;lt;/span&amp;gt; [[File:each_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This yellow wildcard serves to check for each the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used in the decider combinator&lt;br /&gt;
* as input it checks on all inputs if it meets the specified condition.&lt;br /&gt;
* as output it serves output to each signal.&lt;br /&gt;
&lt;br /&gt;
When used as input in a [[arithmetic combinator]] or decider combinator, it serves each input individually, then the following summations are summed and outputted, with each signal as its own respective signals.&lt;br /&gt;
&lt;br /&gt;
== Input insulator &amp;amp; gate ==&lt;br /&gt;
An arithmetic combinator set to (In: Each + 0, Out: Each) can be used to swap wire colors and as an insulator to prevent downstream logic from backfeeding into the circuit network&#039;s inputs.&lt;br /&gt;
&lt;br /&gt;
A decider combinator set to (Out: Everything, Input-&amp;gt; Output) will also function as an insulator as long as the set logic condition is true. This can also selectively pass or &#039;gate&#039; inputs only when desired. This could be used to sequentially poll remote train stations for their chest contents, and include only desired stations.&lt;br /&gt;
&lt;br /&gt;
== Set/Reset latching switch ==&lt;br /&gt;
You want something to SET a trigger at some quantity, but then STAY on until that quantity hits some other value, the RESET value. You&#039;ll need one decider combinator and one arithmetic combinator. Two decider combinators and a [[constant combinator]] can also be used for more complex multi-channel conditions.&lt;br /&gt;
&lt;br /&gt;
Setup the first decider combinator to the desired set conditional and to output a 1. Then connect the output to the input of an arithmetic combinator, and configure it to multiply by the bias value, the difference between the set and reset values, and wire the arithmetic output to the input of the decider. The arithmetic output channel MUST be set the same as the decider&#039;s input channel. That&#039;s it! Whenever your set conditional is reached, the decider will output a &#039;1&#039;, and the bias of the arithmetic combinator will be applied. This will &#039;hold&#039; the output true until the value goes back below the reset point.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a more specific example, I want the pump to run when petrol reach 2000, and turn off when reach 200: &lt;br /&gt;
* Tank -&amp;gt; in decider&lt;br /&gt;
* out decider -&amp;gt; in arithmetic&lt;br /&gt;
* out arithmetic -&amp;gt; in decider&lt;br /&gt;
* green wire from in decider, to pump&lt;br /&gt;
&lt;br /&gt;
Pump has the same condition as the decider (Petrol &amp;gt; 2000)&lt;br /&gt;
&lt;br /&gt;
* Decider: Petrol &amp;gt; 2000&lt;br /&gt;
* out: A = 1&lt;br /&gt;
* Arithmetic: A × 1800 (2000 - 200)&lt;br /&gt;
* out: petrol&lt;br /&gt;
[[File:Factorio combinator switch.png|620px]]&lt;br /&gt;
&lt;br /&gt;
Backup steam power example with detailed configuration and explanation can be found here:&amp;lt;br /&amp;gt;[[Tutorial:Circuit network cookbook#SR_latch_-_single_decider_version|Tutorial:Circuit-network_Cookbook#SR latch - single decider version]]&lt;br /&gt;
&lt;br /&gt;
== Smart train loading ==&lt;br /&gt;
This solves the problem of loading logistics into chests, which tend to be unequal and is slower in the rate of loading logistics into the cargo of trains.&lt;br /&gt;
&lt;br /&gt;
To setup the design, you require an Arithmetic Combinator, as well as Red and Green wires. &#039;&#039;&#039;Wire all the chests used, to the input of the Arithmetic Combinator&#039;&#039;&#039;. &#039;&#039;&#039;Then write (Logistics Item / -Amount of chests) and as the output as the Logistics Item in the Arithmetic Combinator&#039;&#039;&#039;, this will average the amount of items within the chests. Lastly, &#039;&#039;&#039;wire all the inserters used to the output of the Arithmetic Combinator and have the other color of the wire be wired to the adjacent chest&#039;&#039;&#039;. &#039;&#039;&#039;Have the inserters enabled when Logistics Item &amp;lt; 1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A more visual representation as well as questions about the design can be found in a reddit post: [https://www.reddit.com/r/factorio/comments/4e03g2/madzuris_smart_loading_train_station_guide/ MadZuri&#039;s smart loading train station].&lt;br /&gt;
&lt;br /&gt;
Explanation of why this works:&lt;br /&gt;
It compares the average amount of total items within the chests and the chest adjacent to the inserter so that it activates when the average number of items is higher than the amount within the chest.&lt;br /&gt;
The reason for why the division denominator is negative is because if the items in the chests are 0, it basically makes it so that it adds 1 to the equation.&lt;br /&gt;
&lt;br /&gt;
== Memory ==&lt;br /&gt;
How to store a constant value for later use, either for a basic counter or for more advanced logic. A decider combinator wired output tied to input and configured greater than zero (for positive values), input -&amp;gt; output will &#039;hold&#039; a value, as long as all other inputs on the network are zero.&lt;br /&gt;
&lt;br /&gt;
Any non-zero input condition will create a basic clock; incrementing the stored value by the sum of all connected input values every cycle. A single pulse of an input will cause a single increment by the pulsed value. Reset to zero occurs whenever the set condition is no longer met, or if a negative pulse equal to the input occurs.&lt;br /&gt;
&lt;br /&gt;
== Basic clocks ==&lt;br /&gt;
[[File:Timer.png|thumb|right|377px|A basic clock. 30 ticks is the ceiling for Signal 1; which is continuously added.]]&lt;br /&gt;
Clocks are constructed by having the output of a combinator tied back to its own input, such that every cycle advances its own count. Either the arithmetic combinator or the decider combinator can be used.&lt;br /&gt;
&lt;br /&gt;
An arithmetic combinator tied to itself is fun to watch and will happily run-away, but requires additional control logic to reset.&lt;br /&gt;
&lt;br /&gt;
A self-resetting clock requires just a single decider combinator with output wired to input and configured with Less Than (&amp;lt;) and Input -&amp;gt; Output. When a constant combinator is then connected to the input, every cycle it will count up by the value of the Constant Combinator until the set conditional value is reached, then output a zero which will be summed with the constant combinator, and reset the process.&lt;br /&gt;
&lt;br /&gt;
The clock sequence will not include zero, will begin at the value set by the constant combinator, and will include whatever value eventually causes the conditional to be false. An arithmetic combinator can modify the clock sequence but remember its outputs will occur one cycle later than the clock cycle values.&lt;br /&gt;
&lt;br /&gt;
A clock that only counts once can be built using the following setup:&lt;br /&gt;
&lt;br /&gt;
[[File:Onetime_Clock.png|thumb|none|360px|One-time clock. Runs until T=Z+1. Reset via R&amp;gt;0.]]&lt;br /&gt;
&lt;br /&gt;
== Pulse generators ==&lt;br /&gt;
&lt;br /&gt;
Connecting an additional (=) decider combinator to the output of a basic clock will create a pulse generator, and will pulse a single output every time the clock cycles through the set condition. Any output value can be used, either directly from the clock sequence (input-&amp;gt;output), a 1, or some value on a separate logic channel on the circuit network, such as set by a constant combinator. or by the circuit network.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:PulseGen.png|500px]]&lt;br /&gt;
*&#039;&#039;The value 1 can be written as any positive integer, so long as it is within the cap or ceiling of your timer.&#039;&#039;&lt;br /&gt;
*&#039;&#039;As an example from the above timer, this light will pulse every 1st tick after the timer reaches 30 ticks, making it pulse 1/30th of a second, as Factorio updates at 60 times per second.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Counter ==&lt;br /&gt;
A counter is used to count the number of input events, and output the sum of that count. Any pulsing input into a decider combinator configured input -&amp;gt; output and wired between output and input will create a counter, but this input must be zero at all other times or else the combinator will run away like a clock. A pulse generator is normally used to accomplish this. Combining several gating decider isolators set with sequential conditionals, a clock, and a pulse generator to the input of a counter will allow remote polling and counting of each isolator&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
== Logic gates ==&lt;br /&gt;
&lt;br /&gt;
Some logic gates will only function with boolean values, where the inputs are either 0 or 1.&lt;br /&gt;
Other logic gates will work with other values as well, e.g. 2.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Built In&#039;&#039;&#039;===&lt;br /&gt;
The arithmetic combinator has built in OR, XOR and AND operators.&lt;br /&gt;
These operate bitwise, i.e. they perform the operation on each bit in the number in a binary format and return the result.&lt;br /&gt;
&lt;br /&gt;
An example for the bitwise AND operator:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 4  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 30  || 10&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 40  || 8&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
If your inputs only consist of boolean values (1 or 0) the arithmetic combinator&#039;s operators can be used as logic gates.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Unary NOT&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NOT.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary OR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:OR.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Notes: This works for any number of inputs, all sent as the signal &amp;quot;A&amp;quot;. This works for boolean inputs as well as other values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary NOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NOR.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Notes: This works for any number of inputs, all sent as the signal &amp;quot;A&amp;quot;. This works for boolean inputs as well as other values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary XOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:XOR.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 1!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||  0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||  1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  1 || 0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note: This only works for boolean inputs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary AND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:AND.png|530px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:The arithmetic combinator example provided works for non-boolean values, and will return non-boolean values when given them as input, but only if both values are non 0.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:The decider combinator example provided only works for boolean values. It can be modified to have any number of inputs by changing the &amp;quot;1&amp;quot; shown to 1 less than the number of inputs, or the &amp;quot;2&amp;quot; shown to the number of inputs, as demonstrated below for a Ternary AND.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Ternary AND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:TrinaryAND.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Input 3!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary NAND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NAND.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:This only works for boolean input values. It can be modified to have any number of inputs by changing the &amp;quot;2&amp;quot; shown to the number of inputs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary XNOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:XAND.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:This only works for boolean input values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Memory cells ==&lt;br /&gt;
&lt;br /&gt;
=== Simple latch ===&lt;br /&gt;
&lt;br /&gt;
When looping the combinator to itself, use a different color of wire from your main inputs or outputs. &lt;br /&gt;
&lt;br /&gt;
[[File:SimpleLatchv2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Output 1!!Input 1!!Input 2!! Output 1 (t+1)&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 0 || 1 &#039;&#039;(2)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 1 || 1 &#039;&#039;(2)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&#039;&#039;Output 1 is the green wire loop seen in the picture, it carries the value to latch.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Input 1 is Set, while Input 2 is Reset.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Positive cell ===&lt;br /&gt;
&lt;br /&gt;
Cell for storing a positive value, with reset support:&lt;br /&gt;
&lt;br /&gt;
[[File:AdvancedMemoryCell.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Connect the desired value as signal 3 on the right side to set the memory cell and connect a negative value as signal 3 to reset the cell.  *Please note the arithmetic combinator&#039;s output should be facing the opposite direction of the decider combinators.&lt;br /&gt;
&lt;br /&gt;
This particular cell design does not work properly on a one-tick burst of input. Input must be held for at least 2 ticks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Address Enable Switch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Positives and negatives cell ===&lt;br /&gt;
&lt;br /&gt;
This cell can store negatives or positives. Reset is done on a dedicated line. Additionally, a 1-tick burst is handled properly. [https://forums.factorio.com/viewtopic.php?f=193&amp;amp;t=60330&amp;amp;p=362377#p362377 Forum post].&lt;br /&gt;
&lt;br /&gt;
* The output M (memory) is the last non-zero input I (Input).&lt;br /&gt;
* A non zero R (reset) signal sets the output to zero.&lt;br /&gt;
* 1-tick bursts of R or I are handled properly.&lt;br /&gt;
* Negatives are handled properly.&lt;br /&gt;
&lt;br /&gt;
[[File:Memory_cell_with_negatives.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://www.factorioforums.com/forum/viewtopic.php?f=18&amp;amp;t=14556 Combinators 101 (Tutorial)]&lt;br /&gt;
* [[Tutorial:Circuit network cookbook]]&lt;br /&gt;
* [[Circuit network]]&lt;br /&gt;
* [[Arithmetic combinator]]&lt;br /&gt;
* [[Constant combinator]]&lt;br /&gt;
* [[Decider combinator]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial_talk:Combinator_tutorial&amp;diff=170413</id>
		<title>Tutorial talk:Combinator tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial_talk:Combinator_tutorial&amp;diff=170413"/>
		<updated>2019-03-10T23:25:57Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* This is not a beginner tutorial at the moment */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory cells  ==&lt;br /&gt;
&lt;br /&gt;
I am aiming to update the &amp;quot;memory cells&amp;quot; section.&lt;br /&gt;
* The &amp;quot;advanced cell&amp;quot; does not handle 1-tick bursts properly. (I updated the article and wrote about that)&lt;br /&gt;
* There should be more versions of the memory cell, including versions that can handle negative input.&lt;br /&gt;
&lt;br /&gt;
I may post some of my designs here once I finish polishing them.&lt;br /&gt;
-- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 09:46, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Thank you for this, designs are appreciated here. It&#039;s good that you remain objective about their advantages and disadvantages. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Admin&amp;lt;/span&amp;gt; 11:57, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Thank you for your incredible work on the Wiki. I am always 100% objective. In this particular scenario, the initial design is objectively flawed. Try connecting a simple clock (self-connected arithmetic combinator with + 1) into it and then disconnecting it suddenly, its memory will flicker between the last two values. More generally, if the current input is only given for 1 tick, then it flickers between the current and the previous input. I do not want to remove it without the approval of the original poster. Here is a demo of the flicker. This device on the left sends a 1-tick pulse of 1. The lamp turns on if the output signal is 1. -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 13:46, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: (edit: fixed link): https://streamable.com/5r7w8&lt;br /&gt;
&lt;br /&gt;
::: Because your memory cell has the same size, the other memory cell has no advantages over it. So, I am okay with a removal of the &amp;quot;positive cell&amp;quot;. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Admin&amp;lt;/span&amp;gt; 14:53, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Ok. Let&#039;s wait for a while in case the original poster has comments that we&#039;ve missed.&lt;br /&gt;
&lt;br /&gt;
:::: There&#039;s one advantage for the previous design: It&#039;s useful for someone that absolutely requires a reset-on-negative and not reset on a dedicated line, and does not care about the flicker issue. But that seems like a very rare edge case, and someone who needs it is most likely very experienced and doesn&#039;t need this guide. -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 15:54, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Binary gates redundant? ==&lt;br /&gt;
&lt;br /&gt;
The binary gates do not seem to have much function, because As of 0.16, arithmetic combinators have built-in binary logic support. -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 09:56, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I am not very experienced in combinators, but aren&#039;t the combinators OR, XOR and AND option bitwise instead of binary? [[User:My3DS]] changed the page to specify that just yesterday, so it seems important to me. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Admin&amp;lt;/span&amp;gt; 11:57, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I am not sure I understand the difference between &amp;quot;bitwise&amp;quot; and &amp;quot;binary&amp;quot; in the context of 1-bit inputs.&lt;br /&gt;
&lt;br /&gt;
:: The built-in OR, XOR, and AND produce exactly the same truth tables as the ones currently in the article for inputs of 1&#039;s and zeros, and are additionally capable of performing more than that for inputs greater than 1.&lt;br /&gt;
&lt;br /&gt;
:: -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 13:25, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Like I said, combinators aren&#039;t my strong suit :) So yes, they are redundant, but I&#039;d personally wait and see what My3DS wants to do with the gates before removing them. Perhaps give them a week, and if nothing is changed until then, remove them. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Admin&amp;lt;/span&amp;gt; 14:53, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Ok :), does the wiki have some sort of &amp;quot;pinging&amp;quot; system to let them see the conversation?. -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 15:54, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: You can&#039;t ping people directly, but if you leave a message on someones talk page, they will see a notification until they check it. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Admin&amp;lt;/span&amp;gt; 18:12, 13 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::: Thank you :) -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 14:06, 14 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I can see the merit in these designs for 3 or more inputs. But I think  it should be clear to the reader that the 2-input designs are alternatives to the built-in ones, and that the bitwise vs binary sentence should be clarified. -- [[User:SafwatHalaby|SafwatHalaby]] ([[User talk:SafwatHalaby|talk]]) 14:06, 14 May 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
I have updated the page to have some clarification of what is meant by bitwise and some additional notes on the gates, as some can function with boolean or non-boolean values (or binary vs non-binary values), and some can have more inputs. Let me know if something doesn&#039;t make sense or should be improved. I&#039;m also not sure if the built in ones should be under the others or before it. [[User:BlackJack69|BlackJack69]] ([[User talk:BlackJack69|talk]]) 00:19, 12 February 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== This is not a beginner tutorial at the moment ==&lt;br /&gt;
&lt;br /&gt;
This page seems inappropriate for circuit beginners and I&#039;ve added a sentence at the beginning to keep beginners from getting frustrated; the circuit network page and cookbook page should be more helpful for beginners. A beginner section on this (or on a different page) that explains how to connect wires, how signals work and so on would be useful.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a decent overlap with the cookbook page (the madzuri setup, memory cells, sr latches, logic gates). And virtual signals are explained here and on the circuit network page. That is not a problem as such but it means there is more work to keep it updated. In sections where the intended depth of explanation is comparable between the pages, it may be better to keep the content on one page and have a link on the other one. [[User:Unique 2|Unique 2]] ([[User talk:Unique 2|talk]]) 23:25, 10 March 2019 (UTC)&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Combinator_tutorial&amp;diff=170409</id>
		<title>Tutorial:Combinator tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Combinator_tutorial&amp;diff=170409"/>
		<updated>2019-03-10T22:23:02Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Make sure that beginners don&amp;#039;t use this.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is an &#039;&#039;&#039;advanced&#039;&#039;&#039; tutorial. Beginners should refer to the [[Tutorial:Circuit network cookbook]] for examples and the [[Circuit network]] page for an overview over the circuit network. This tutorial assumes knowledge from both of these pages and covers advanced topics like input insulation, memory cells and clocks.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Combinator logic is achieved by cross-connecting outputs to inputs in such a way to achieve the desired logic. While advanced logic requires a multitude of combinators, some very useful basic logic can be achieved using only a handful of combinators. &#039;&#039;&#039;Combinator logic works because Factorio only updates at 60 times per second, such that combinators analyze their logic in a step, and then sum and/or decide the resulting output values on the next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When logic values are computed by combinators, the outputs are not recognized by the circuit network until the following step. So when a [[decider combinator]] is used to detect a certain input condition, it&#039;s output value will not take effect on the circuit network until the next step. &#039;&#039;&#039;This behavior is important to remember and can result in sequencing errors and significant delays when multiple combinators are connected in series.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Circuit wires act like a wire bus in electronics, it carries information in the connected wires, meaning that &#039;&#039;&#039;if there are similar signals on a wire, it will add them automatically, unless if it is a different signal, that means it will be carried in that wire as well, but as a different signal.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When cross-connecting combinators &#039;&#039;&#039;it&#039;s good practice to use the unused color to cross-connect, this will split the input and output networks and prevent unwanted inputs from accidentally connecting to a larger circuit network.&#039;&#039;&#039; Combinators will sum the red &amp;amp;/or green inputs prior to calculation, so either color can be used when wiring the output back to the input, but in most cases, it is more useful to use the opposing color of the wire so that it will not interfere with the resulting output and input.&lt;br /&gt;
&lt;br /&gt;
== Virtual signals ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#FF6666&amp;quot;&amp;gt;Everything wildcard&amp;lt;/span&amp;gt; [[File:everything_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This red wildcard serves to check all the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used in the decider combinator&lt;br /&gt;
* as input it checks if all inputs meet the specified condition.&lt;br /&gt;
* as output it serves output to every signal.&lt;br /&gt;
&lt;br /&gt;
Side note: &amp;quot;Everything&amp;quot; outputs true by default even if there is no signal to guarantee that it is true. &#039;&#039;Everything is false when every input does not meet the condition, otherwise, output true.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#99FF99&amp;quot;&amp;gt;Anything wildcard&amp;lt;/span&amp;gt; [[File:anything_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This green wildcard serves to check all the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used as input in the decider combinator it checks if any of the inputs meet the specified condition.&lt;br /&gt;
&lt;br /&gt;
Side note: &amp;quot;Anything&amp;quot; outputs false by default if there is no signal to guarantee that it is true. &#039;&#039;Anything is false when any of inputs do not meet the condition, otherwise, it is true.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#FFFF99&amp;quot;&amp;gt;Each wildcard&amp;lt;/span&amp;gt; [[File:each_logic_icon.png|left|20px]] ===&lt;br /&gt;
&lt;br /&gt;
This yellow wildcard serves to check for each the specified input signals.&lt;br /&gt;
&lt;br /&gt;
When used in the decider combinator&lt;br /&gt;
* as input it checks on all inputs if it meets the specified condition.&lt;br /&gt;
* as output it serves output to each signal.&lt;br /&gt;
&lt;br /&gt;
When used as input in a [[arithmetic combinator]] or decider combinator, it serves each input individually, then the following summations are summed and outputted, with each signal as its own respective signals.&lt;br /&gt;
&lt;br /&gt;
== Input insulator &amp;amp; gate ==&lt;br /&gt;
An arithmetic combinator set to (In: Each + 0, Out: Each) can be used to swap wire colors and as an insulator to prevent downstream logic from backfeeding into the circuit network&#039;s inputs.&lt;br /&gt;
&lt;br /&gt;
A decider combinator set to (Out: Everything, Input-&amp;gt; Output) will also function as an insulator as long as the set logic condition is true. This can also selectively pass or &#039;gate&#039; inputs only when desired. This could be used to sequentially poll remote train stations for their chest contents, and include only desired stations.&lt;br /&gt;
&lt;br /&gt;
== Set/Reset latching switch ==&lt;br /&gt;
You want something to SET a trigger at some quantity, but then STAY on until that quantity hits some other value, the RESET value. You&#039;ll need one decider combinator and one arithmetic combinator. Two decider combinators and a [[constant combinator]] can also be used for more complex multi-channel conditions.&lt;br /&gt;
&lt;br /&gt;
Setup the first decider combinator to the desired set conditional and to output a 1. Then connect the output to the input of an arithmetic combinator, and configure it to multiply by the bias value, the difference between the set and reset values, and wire the arithmetic output to the input of the decider. The arithmetic output channel MUST be set the same as the decider&#039;s input channel. That&#039;s it! Whenever your set conditional is reached, the decider will output a &#039;1&#039;, and the bias of the arithmetic combinator will be applied. This will &#039;hold&#039; the output true until the value goes back below the reset point.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a more specific example, I want the pump to run when petrol reach 2000, and turn off when reach 200: &lt;br /&gt;
* Tank -&amp;gt; in decider&lt;br /&gt;
* out decider -&amp;gt; in arithmetic&lt;br /&gt;
* out arithmetic -&amp;gt; in decider&lt;br /&gt;
* green wire from in decider, to pump&lt;br /&gt;
&lt;br /&gt;
Pump has the same condition as the decider (Petrol &amp;gt; 2000)&lt;br /&gt;
&lt;br /&gt;
* Decider: Petrol &amp;gt; 2000&lt;br /&gt;
* out: A = 1&lt;br /&gt;
* Arithmetic: A × 1800 (2000 - 200)&lt;br /&gt;
* out: petrol&lt;br /&gt;
[[File:Factorio combinator switch.png|620px]]&lt;br /&gt;
&lt;br /&gt;
Backup steam power example with detailed configuration and explanation can be found here:&amp;lt;br /&amp;gt;[[Tutorial:Circuit network cookbook#SR_latch_-_single_decider_version|Tutorial:Circuit-network_Cookbook#SR latch - single decider version]]&lt;br /&gt;
&lt;br /&gt;
== Smart train loading ==&lt;br /&gt;
This solves the problem of loading logistics into chests, which tend to be unequal and is slower in the rate of loading logistics into the cargo of trains.&lt;br /&gt;
&lt;br /&gt;
To setup the design, you require an Arithmetic Combinator, as well as Red and Green wires. &#039;&#039;&#039;Wire all the chests used, to the input of the Arithmetic Combinator&#039;&#039;&#039;. &#039;&#039;&#039;Then write (Logistics Item / -Amount of chests) and as the output as the Logistics Item in the Arithmetic Combinator&#039;&#039;&#039;, this will average the amount of items within the chests. Lastly, &#039;&#039;&#039;wire all the inserters used to the output of the Arithmetic Combinator and have the other color of the wire be wired to the adjacent chest&#039;&#039;&#039;. &#039;&#039;&#039;Have the inserters enabled when Logistics Item &amp;lt; 1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A more visual representation as well as questions about the design can be found in a reddit post: [https://www.reddit.com/r/factorio/comments/4e03g2/madzuris_smart_loading_train_station_guide/ MadZuri&#039;s smart loading train station].&lt;br /&gt;
&lt;br /&gt;
Explanation of why this works:&lt;br /&gt;
It compares the average amount of total items within the chests and the chest adjacent to the inserter so that it activates when the average number of items is higher than the amount within the chest.&lt;br /&gt;
The reason for why the division denominator is negative is because if the items in the chests are 0, it basically makes it so that it adds 1 to the equation.&lt;br /&gt;
&lt;br /&gt;
== Memory ==&lt;br /&gt;
How to store a constant value for later use, either for a basic counter or for more advanced logic. A decider combinator wired output tied to input and configured greater than zero (for positive values), input -&amp;gt; output will &#039;hold&#039; a value, as long as all other inputs on the network are zero.&lt;br /&gt;
&lt;br /&gt;
Any non-zero input condition will create a basic clock; incrementing the stored value by the sum of all connected input values every cycle. A single pulse of an input will cause a single increment by the pulsed value. Reset to zero occurs whenever the set condition is no longer met, or if a negative pulse equal to the input occurs.&lt;br /&gt;
&lt;br /&gt;
== Basic clocks ==&lt;br /&gt;
[[File:Timer.png|thumb|right|377px|A basic clock. 30 ticks is the ceiling for Signal 1; which is continuously added.]]&lt;br /&gt;
Clocks are constructed by having the output of a combinator tied back to its own input, such that every cycle advances its own count. Either the arithmetic combinator or the decider combinator can be used.&lt;br /&gt;
&lt;br /&gt;
An arithmetic combinator tied to itself is fun to watch and will happily run-away, but requires additional control logic to reset.&lt;br /&gt;
&lt;br /&gt;
A self-resetting clock requires just a single decider combinator with output wired to input and configured with Less Than (&amp;lt;) and Input -&amp;gt; Output. When a constant combinator is then connected to the input, every cycle it will count up by the value of the Constant Combinator until the set conditional value is reached, then output a zero which will be summed with the constant combinator, and reset the process.&lt;br /&gt;
&lt;br /&gt;
The clock sequence will not include zero, will begin at the value set by the constant combinator, and will include whatever value eventually causes the conditional to be false. An arithmetic combinator can modify the clock sequence but remember its outputs will occur one cycle later than the clock cycle values.&lt;br /&gt;
&lt;br /&gt;
A clock that only counts once can be built using the following setup:&lt;br /&gt;
&lt;br /&gt;
[[File:Onetime_Clock.png|thumb|none|360px|One-time clock. Runs until T=Z+1. Reset via R&amp;gt;0.]]&lt;br /&gt;
&lt;br /&gt;
== Pulse generators ==&lt;br /&gt;
&lt;br /&gt;
Connecting an additional (=) decider combinator to the output of a basic clock will create a pulse generator, and will pulse a single output every time the clock cycles through the set condition. Any output value can be used, either directly from the clock sequence (input-&amp;gt;output), a 1, or some value on a separate logic channel on the circuit network, such as set by a constant combinator. or by the circuit network.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:PulseGen.png|500px]]&lt;br /&gt;
*&#039;&#039;The value 1 can be written as any positive integer, so long as it is within the cap or ceiling of your timer.&#039;&#039;&lt;br /&gt;
*&#039;&#039;As an example from the above timer, this light will pulse every 1st tick after the timer reaches 30 ticks, making it pulse 1/30th of a second, as Factorio updates at 60 times per second.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Counter ==&lt;br /&gt;
A counter is used to count the number of input events, and output the sum of that count. Any pulsing input into a decider combinator configured input -&amp;gt; output and wired between output and input will create a counter, but this input must be zero at all other times or else the combinator will run away like a clock. A pulse generator is normally used to accomplish this. Combining several gating decider isolators set with sequential conditionals, a clock, and a pulse generator to the input of a counter will allow remote polling and counting of each isolator&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
== Logic gates ==&lt;br /&gt;
&lt;br /&gt;
Some logic gates will only function with boolean values, where the inputs are either 0 or 1.&lt;br /&gt;
Other logic gates will work with other values as well, e.g. 2.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Built In&#039;&#039;&#039;===&lt;br /&gt;
The arithmetic combinator has built in OR, XOR and AND operators.&lt;br /&gt;
These operate bitwise, i.e. they perform the operation on each bit in the number in a binary format and return the result.&lt;br /&gt;
&lt;br /&gt;
An example for the bitwise AND operator:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 4  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 30  || 10&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 40  || 8&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
If your inputs only consist of boolean values (1 or 0) the arithmetic combinator&#039;s operators can be used as logic gates.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Unary NOT&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NOT.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary OR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:OR.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Notes: This works for any number of inputs, all sent as the signal &amp;quot;A&amp;quot;. This works for boolean inputs as well as other values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary NOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NOR.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Notes: This works for any number of inputs, all sent as the signal &amp;quot;A&amp;quot;. This works for boolean inputs as well as other values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary XOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:XOR.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 1!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||  0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||  1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  1 || 0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note: This only works for boolean inputs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary AND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:AND.png|530px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:The arithmetic combinator example provided works for non-boolean values, and will return non-boolean values when given them as input, but only if both values are non 0.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:The decider combinator example provided only works for boolean values. It can be modified to have any number of inputs by changing the &amp;quot;1&amp;quot; shown to 1 less than the number of inputs, or the &amp;quot;2&amp;quot; shown to the number of inputs, as demonstrated below for a Ternary AND.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Ternary AND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:TrinaryAND.png|415px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Input 3!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary NAND&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:NAND.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:This only works for boolean input values. It can be modified to have any number of inputs by changing the &amp;quot;2&amp;quot; shown to the number of inputs.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Binary XNOR&#039;&#039;&#039;===&lt;br /&gt;
----&lt;br /&gt;
[[File:XAND.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Input 1!!Input 2!!Output&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0  || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1  || 1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;*Note:This only works for boolean input values.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Memory cells ==&lt;br /&gt;
&lt;br /&gt;
=== Simple latch ===&lt;br /&gt;
&lt;br /&gt;
When looping the combinator to itself, use a different color of wire from your main inputs or outputs. &lt;br /&gt;
&lt;br /&gt;
[[File:SimpleLatchv2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Truth Table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Output 1!!Input 1!!Input 2!! Output 1 (t+1)&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 0 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 0 || 1 &#039;&#039;(2)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || 1 || 1 &#039;&#039;(2)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&#039;&#039;Output 1 is the green wire loop seen in the picture, it carries the value to latch.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Input 1 is Set, while Input 2 is Reset.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Positive cell ===&lt;br /&gt;
&lt;br /&gt;
Cell for storing a positive value, with reset support:&lt;br /&gt;
&lt;br /&gt;
[[File:AdvancedMemoryCell.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Connect the desired value as signal 3 on the right side to set the memory cell and connect a negative value as signal 3 to reset the cell.  *Please note the arithmetic combinator&#039;s output should be facing the opposite direction of the decider combinators.&lt;br /&gt;
&lt;br /&gt;
This particular cell design does not work properly on a one-tick burst of input. Input must be held for at least 2 ticks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Address Enable Switch&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Positives and negatives cell ===&lt;br /&gt;
&lt;br /&gt;
This cell can store negatives or positives. Reset is done on a dedicated line. Additionally, a 1-tick burst is handled properly. [https://forums.factorio.com/viewtopic.php?f=193&amp;amp;t=60330&amp;amp;p=362377#p362377 Forum post].&lt;br /&gt;
&lt;br /&gt;
* The output M (memory) is the last non-zero input I (Input).&lt;br /&gt;
* A non zero R (reset) signal sets the output to zero.&lt;br /&gt;
* 1-tick bursts of R or I are handled properly.&lt;br /&gt;
* Negatives are handled properly.&lt;br /&gt;
&lt;br /&gt;
[[File:Memory_cell_with_negatives.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://www.factorioforums.com/forum/viewtopic.php?f=18&amp;amp;t=14556 Combinators 101 (Tutorial)]&lt;br /&gt;
* [[Tutorial:Circuit network cookbook]]&lt;br /&gt;
* [[Circuit network]]&lt;br /&gt;
* [[Arithmetic combinator]]&lt;br /&gt;
* [[Constant combinator]]&lt;br /&gt;
* [[Decider combinator]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Technologies&amp;diff=170343</id>
		<title>Technologies</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Technologies&amp;diff=170343"/>
		<updated>2019-03-09T13:14:19Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Pricing Formulas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology tree.png|thumb|right|700px|The technology tree − click to enlarge]]&lt;br /&gt;
&#039;&#039;&#039;Technologies&#039;&#039;&#039; are [[Research|researched]] in [[lab]]s using [[science pack]]s.&lt;br /&gt;
&lt;br /&gt;
Every technology needs a certain amount of science packs per science pack type to be researched, for example the [[Logistics (research)|Logistics]] technology requires 20 [[science pack 1]] to be placed in labs while the technology is selected for research.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Infinite technologies ==&lt;br /&gt;
&lt;br /&gt;
While most technologies in Factorio are either one-off or have a finite, relatively small number of levels available, a few are &amp;quot;infinite&amp;quot;, meaning the player can research as many levels as they can afford. All of them unlock bonuses to existing technologies, never new structures or abilities. The per-level bonuses are constant for a particular infinite technologies and, like finite research bonuses, are additive within a single technology. They are subject to diminishing returns; thus, the per-level and per-science pack contributions from very high levels of infinite technologies will eventually provide only marginal improvements.&lt;br /&gt;
&lt;br /&gt;
All infinite technologies levels require [[space science pack]]s, and are also the only technologies that do. As such, they are late-game technologies intended primarily for players who wish to continue playing and expand their factory past the nominal victory condition of launching a single satellite inside a rocket.&lt;br /&gt;
&lt;br /&gt;
Infinite technologies are identified in-game by a small &amp;lt;code&amp;gt;∞&amp;lt;/code&amp;gt; infinity symbol shown in the top right corner of the research technology&#039;s card in the research screen.&lt;br /&gt;
&lt;br /&gt;
Most infinite technologies are continuations of ordinary multi-level technologies; the &amp;quot;infinite&amp;quot; mechanic becomes effective once the player reaches the card initially labeled with &amp;lt;code&amp;gt;N - ∞&amp;lt;/code&amp;gt; in the research tree. Only the two [[artillery]]-related technologies (artillery shell [[artillery shell range (research)|range]] and [[artillery shell shooting speed (research)|shooting speed]]) are infinite-only; for these, &amp;lt;code&amp;gt;1 - ∞&amp;lt;/code&amp;gt; is shown before any levels in them are researched. In either case, once the first infinite level is researched, the card label switches to the one discussed above.&lt;br /&gt;
&lt;br /&gt;
=== Pricing formulas ===&lt;br /&gt;
&lt;br /&gt;
The price of all infinite technologies is generated in a [[Wikipedia:Progression|mathematical progression]]; for the majority of technologies, the progression is [[Wikipedia:Geometric_progression|geometric]], mostly in powers of 2. Two technologies - [[mining productivity (research)|mining productivity]] and [[follower robot count (research)|follower robot count]] - use an [[Wikipedia:Arithmetic_progression|arithmetic progression]] instead.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes for all infinite researches their first infinite level, the cost of the first infinite level, the cost formula and the per-level bonus. &lt;br /&gt;
&lt;br /&gt;
We denote by &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; the current level of the research, by &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; the final non-infinite level of the research (hence F+1 is the first &amp;quot;infinite&amp;quot; level) and by &amp;lt;code&amp;gt;P[N]&amp;lt;/code&amp;gt; the price of the research at level &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Technology !! Science Packs !! F+1 !! P[F+1] !! P[N] !! Bonus&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Worker robot speed (research)}} [[Worker robot speed (research)|Worker robot speed ]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +65% Robot Speed&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Mining productivity (research)}} [[Mining productivity (research)|Mining productivity]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 4 || 2,500 || 2,500 × (N - F - 1) || +10% Mining Productivity&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Physical projectile damage (research)}} [[Physical projectile damage (research)|Physical projectile damage]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +40% Bullet Damage &amp;lt;br&amp;gt; +70% Turret Damage &amp;lt;br&amp;gt; +40% Shotgun Shell Damage &amp;lt;br&amp;gt; +100% Cannon Shell Damage&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Stronger explosives (research)}} [[Stronger explosives (research)|Stronger explosives]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +50% Rocket Damage &amp;lt;br&amp;gt; +20% Grenade Damage &amp;lt;br&amp;gt; +20% Landmine Damage&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Refined flammables (research)}} [[Refined flammables (research)|Refined flammables]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +20% Flame Thrower Damage&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Energy weapons damage (research)}} [[Energy weapons damage (research)|Energy weapons damage]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +70% Laser Turret Damage &amp;lt;br&amp;gt; +30% Combat Robot Beam/Laser Damage&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Artillery shell range (research)}} [[Artillery shell range (research)|Artillery shell range]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 1 || 1,000 || 1,000 × 2^(N - F) || +30% Artillery Shell Range&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Artillery shell shooting speed (research)}} [[Artillery shell shooting speed (research)|Artillery shell speed]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 1 || 1,000 || 1,000 + 1,000 × 3^(N - F - 1) || +100% Artillery Range&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Follower robot count (research)}} [[Follower robot count (research)|Follower robot count]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,00 × (N - F) + 900 || +10 Follower Robots&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cumulative cost ===&lt;br /&gt;
&lt;br /&gt;
As the price of most infinite technologies (specifically, those based on geometric progressions) increases very steeply, it may be a good idea for players to set realistic target levels for each of the infinite technologies they wish to pursue, and make their factory plans accordingly. To that end, the following properties of cumulative infinite research prices may be useful:&lt;br /&gt;
&lt;br /&gt;
#For infinite technologies whose underlying equation is a powers-of-two geometric series, the cumulative price of the first &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; infinite levels (skipping the first &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; level, so counting &amp;quot;infinite&amp;quot; levels only) is &amp;lt;code&amp;gt;2 × P[N] - P[F+1]&amp;lt;/code&amp;gt;; i.e., twice the price of the final researched level, less the price of the first &amp;quot;infinite&amp;quot; level. &lt;br /&gt;
#*As &#039;&#039;N&#039;&#039; increases, this is approximated well by &amp;lt;code&amp;gt;2 × P[N] = P[N+1]&amp;lt;/code&amp;gt;, so the cumulative cost of researching to level &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; is about as much as researching level &amp;lt;code&amp;gt;N+1&amp;lt;/code&amp;gt;. &lt;br /&gt;
#*If one decides a level &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; which one considers the &amp;quot;highest feasible&amp;quot; with their current science pack production capacity, expanding said capacity by a factor of &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; will allow about &amp;lt;code&amp;gt;log[2](X)&amp;lt;/code&amp;gt; additional levels to be researched before the next level takes longer to research with the expanded capacity than level &amp;lt;code&amp;gt;M + 1&amp;lt;/code&amp;gt; would have taken with the pre-expansion production capacity.&lt;br /&gt;
#*For example, if one expands production capacity by a factor of 10, they will be able to research at least &amp;lt;code&amp;gt;floor(log[2](10)) = 3&amp;lt;/code&amp;gt; and at most &amp;lt;code&amp;gt;ceiling(log[2](10)) = 4&amp;lt;/code&amp;gt; additional levels in a given technology before the exponential increase in price negates the speed benefits of their ×10 capacity expansion.&lt;br /&gt;
#The cumulative price of the first &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; levels of infinite technologies whose underlying equation is an arithmetic series is &amp;lt;code&amp;gt;(N - F) × (P[N] + P[F + 1]) ÷ 2&amp;lt;/code&amp;gt;; i.e, &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; times the mean of the prices of the first and last &amp;quot;infinite&amp;quot; level. For the [[Follower robot count (research)]], an additional &amp;lt;code&amp;gt;900 × (N-F)&amp;lt;/code&amp;gt; need to be added. &lt;br /&gt;
#*Expanding production capacity by a factor of &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, as above, will in this case allow an additional &amp;lt;code&amp;gt;N × (X - 1)&amp;lt;/code&amp;gt; levels to be researched before the benefit of the expansion is wiped out (i.e., research progress speed drops to or below what it was pre-expansion).&lt;br /&gt;
#The cumulative price of the first &#039;&#039;&#039;&#039;&#039;N&#039;&#039;&#039;&#039;&#039; levels of &#039;&#039;&#039;artillery shell shooting speed&#039;&#039;&#039;, the sole infinite technology whose underlying equation is a powers-of-three geometric series (equation type (2)) is &amp;lt;code&amp;gt;1.5 × P[N] - 0.5 × P[1]&amp;lt;/code&amp;gt;; i.e., 1.5 times the price of the final researched level, less half the price of the first level.&lt;br /&gt;
&lt;br /&gt;
Note that these prices reflect &#039;&#039;&#039;research units&#039;&#039;&#039;, which will not be equal to science packs if [[productivity module|productivity modules]] are used in labs. (In that case, the science pack requirement will be lower.)&lt;br /&gt;
&lt;br /&gt;
== All technologies ==&lt;br /&gt;
This is a list of all technologies that are currently researchable in the game. &lt;br /&gt;
&lt;br /&gt;
{{TechTable}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Research]]&lt;br /&gt;
* [[Science pack]]&lt;br /&gt;
&lt;br /&gt;
{{TechNav}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Technologies&amp;diff=170342</id>
		<title>Technologies</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Technologies&amp;diff=170342"/>
		<updated>2019-03-09T13:13:45Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Updated for 0.17.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology tree.png|thumb|right|700px|The technology tree − click to enlarge]]&lt;br /&gt;
&#039;&#039;&#039;Technologies&#039;&#039;&#039; are [[Research|researched]] in [[lab]]s using [[science pack]]s.&lt;br /&gt;
&lt;br /&gt;
Every technology needs a certain amount of science packs per science pack type to be researched, for example the [[Logistics (research)|Logistics]] technology requires 20 [[science pack 1]] to be placed in labs while the technology is selected for research.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Infinite technologies ==&lt;br /&gt;
&lt;br /&gt;
While most technologies in Factorio are either one-off or have a finite, relatively small number of levels available, a few are &amp;quot;infinite&amp;quot;, meaning the player can research as many levels as they can afford. All of them unlock bonuses to existing technologies, never new structures or abilities. The per-level bonuses are constant for a particular infinite technologies and, like finite research bonuses, are additive within a single technology. They are subject to diminishing returns; thus, the per-level and per-science pack contributions from very high levels of infinite technologies will eventually provide only marginal improvements.&lt;br /&gt;
&lt;br /&gt;
All infinite technologies levels require [[space science pack]]s, and are also the only technologies that do. As such, they are late-game technologies intended primarily for players who wish to continue playing and expand their factory past the nominal victory condition of launching a single satellite inside a rocket.&lt;br /&gt;
&lt;br /&gt;
Infinite technologies are identified in-game by a small &amp;lt;code&amp;gt;∞&amp;lt;/code&amp;gt; infinity symbol shown in the top right corner of the research technology&#039;s card in the research screen.&lt;br /&gt;
&lt;br /&gt;
Most infinite technologies are continuations of ordinary multi-level technologies; the &amp;quot;infinite&amp;quot; mechanic becomes effective once the player reaches the card initially labeled with &amp;lt;code&amp;gt;N - ∞&amp;lt;/code&amp;gt; in the research tree. Only the two [[artillery]]-related technologies (artillery shell [[artillery shell range (research)|range]] and [[artillery shell shooting speed (research)|shooting speed]]) are infinite-only; for these, &amp;lt;code&amp;gt;1 - ∞&amp;lt;/code&amp;gt; is shown before any levels in them are researched. In either case, once the first infinite level is researched, the card label switches to the one discussed above.&lt;br /&gt;
&lt;br /&gt;
=== Pricing Formulas ===&lt;br /&gt;
&lt;br /&gt;
The price of all infinite technologies is generated in a [[Wikipedia:Progression|mathematical progression]]; for the majority of technologies, the progression is [[Wikipedia:Geometric_progression|geometric]], mostly in powers of 2. Two technologies - [[mining productivity (research)|mining productivity]] and [[follower robot count (research)|follower robot count]] - use an [[Wikipedia:Arithmetic_progression|arithmetic progression]] instead.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes for all infinite researches their first infinite level, the cost of the first infinite level, the cost formula and the per-level bonus. &lt;br /&gt;
&lt;br /&gt;
We denote by &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; the current level of the research, by &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; the final non-infinite level of the research (hence F+1 is the first &amp;quot;infinite&amp;quot; level) and by &amp;lt;code&amp;gt;P[N]&amp;lt;/code&amp;gt; the price of the research at level &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Technology !! Science Packs !! F+1 !! P[F+1] !! P[N] !! Bonus&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Worker robot speed (research)}} [[Worker robot speed (research)|Worker robot speed ]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +65% Robot Speed&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Mining productivity (research)}} [[Mining productivity (research)|Mining productivity]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 4 || 2,500 || 2,500 × (N - F - 1) || +10% Mining Productivity&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Physical projectile damage (research)}} [[Physical projectile damage (research)|Physical projectile damage]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +40% Bullet Damage &amp;lt;br&amp;gt; +70% Turret Damage &amp;lt;br&amp;gt; +40% Shotgun Shell Damage &amp;lt;br&amp;gt; +100% Cannon Shell Damage&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Stronger explosives (research)}} [[Stronger explosives (research)|Stronger explosives]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +50% Rocket Damage &amp;lt;br&amp;gt; +20% Grenade Damage &amp;lt;br&amp;gt; +20% Landmine Damage&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Refined flammables (research)}} [[Refined flammables (research)|Refined flammables]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +20% Flame Thrower Damage&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Energy weapons damage (research)}} [[Energy weapons damage (research)|Energy weapons damage]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,000 × 2^(N - F - 1) || +70% Laser Turret Damage &amp;lt;br&amp;gt; +30% Combat Robot Beam/Laser Damage&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Artillery shell range (research)}} [[Artillery shell range (research)|Artillery shell range]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 1 || 1,000 || 1,000 × 2^(N - F) || +30% Artillery Shell Range&lt;br /&gt;
|-&lt;br /&gt;
| {{Icontech|Artillery shell shooting speed (research)}} [[Artillery shell shooting speed (research)|Artillery shell speed]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 1 || 1,000 || 1,000 + 1,000 × 3^(N - F - 1) || +100% Artillery Range&lt;br /&gt;
|- &lt;br /&gt;
| {{Icontech|Follower robot count (research)}} [[Follower robot count (research)|Follower robot count]] || {{icon|Automation science pack}} {{icon|Logistic science pack}} {{icon|Chemical science pack}} {{icon|Military science pack}} {{icon|Production science pack}} {{icon|Utility science pack}} {{icon|Space science pack}} || 7 || 1,000 || 1,00 × (N - F) + 900 || +10 Follower Robots&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cumulative cost ===&lt;br /&gt;
&lt;br /&gt;
As the price of most infinite technologies (specifically, those based on geometric progressions) increases very steeply, it may be a good idea for players to set realistic target levels for each of the infinite technologies they wish to pursue, and make their factory plans accordingly. To that end, the following properties of cumulative infinite research prices may be useful:&lt;br /&gt;
&lt;br /&gt;
#For infinite technologies whose underlying equation is a powers-of-two geometric series, the cumulative price of the first &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; infinite levels (skipping the first &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; level, so counting &amp;quot;infinite&amp;quot; levels only) is &amp;lt;code&amp;gt;2 × P[N] - P[F+1]&amp;lt;/code&amp;gt;; i.e., twice the price of the final researched level, less the price of the first &amp;quot;infinite&amp;quot; level. &lt;br /&gt;
#*As &#039;&#039;N&#039;&#039; increases, this is approximated well by &amp;lt;code&amp;gt;2 × P[N] = P[N+1]&amp;lt;/code&amp;gt;, so the cumulative cost of researching to level &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; is about as much as researching level &amp;lt;code&amp;gt;N+1&amp;lt;/code&amp;gt;. &lt;br /&gt;
#*If one decides a level &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; which one considers the &amp;quot;highest feasible&amp;quot; with their current science pack production capacity, expanding said capacity by a factor of &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; will allow about &amp;lt;code&amp;gt;log[2](X)&amp;lt;/code&amp;gt; additional levels to be researched before the next level takes longer to research with the expanded capacity than level &amp;lt;code&amp;gt;M + 1&amp;lt;/code&amp;gt; would have taken with the pre-expansion production capacity.&lt;br /&gt;
#*For example, if one expands production capacity by a factor of 10, they will be able to research at least &amp;lt;code&amp;gt;floor(log[2](10)) = 3&amp;lt;/code&amp;gt; and at most &amp;lt;code&amp;gt;ceiling(log[2](10)) = 4&amp;lt;/code&amp;gt; additional levels in a given technology before the exponential increase in price negates the speed benefits of their ×10 capacity expansion.&lt;br /&gt;
#The cumulative price of the first &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; levels of infinite technologies whose underlying equation is an arithmetic series is &amp;lt;code&amp;gt;(N - F) × (P[N] + P[F + 1]) ÷ 2&amp;lt;/code&amp;gt;; i.e, &amp;lt;code&amp;gt;N - F&amp;lt;/code&amp;gt; times the mean of the prices of the first and last &amp;quot;infinite&amp;quot; level. For the [[Follower robot count (research)]], an additional &amp;lt;code&amp;gt;900 × (N-F)&amp;lt;/code&amp;gt; need to be added. &lt;br /&gt;
#*Expanding production capacity by a factor of &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, as above, will in this case allow an additional &amp;lt;code&amp;gt;N × (X - 1)&amp;lt;/code&amp;gt; levels to be researched before the benefit of the expansion is wiped out (i.e., research progress speed drops to or below what it was pre-expansion).&lt;br /&gt;
#The cumulative price of the first &#039;&#039;&#039;&#039;&#039;N&#039;&#039;&#039;&#039;&#039; levels of &#039;&#039;&#039;artillery shell shooting speed&#039;&#039;&#039;, the sole infinite technology whose underlying equation is a powers-of-three geometric series (equation type (2)) is &amp;lt;code&amp;gt;1.5 × P[N] - 0.5 × P[1]&amp;lt;/code&amp;gt;; i.e., 1.5 times the price of the final researched level, less half the price of the first level.&lt;br /&gt;
&lt;br /&gt;
Note that these prices reflect &#039;&#039;&#039;research units&#039;&#039;&#039;, which will not be equal to science packs if [[productivity module|productivity modules]] are used in labs. (In that case, the science pack requirement will be lower.)&lt;br /&gt;
&lt;br /&gt;
== All technologies ==&lt;br /&gt;
This is a list of all technologies that are currently researchable in the game. &lt;br /&gt;
&lt;br /&gt;
{{TechTable}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Research]]&lt;br /&gt;
* [[Science pack]]&lt;br /&gt;
&lt;br /&gt;
{{TechNav}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Research&amp;diff=170341</id>
		<title>Research</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Research&amp;diff=170341"/>
		<updated>2019-03-09T12:24:06Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology_Screen.png|400px|thumb|The technology screen]]&lt;br /&gt;
&#039;&#039;&#039;Research&#039;&#039;&#039; is used to unlock [[technologies]], offering new recipes and bonuses. Research is performed by [[lab|labs]] consuming different types of [[science pack|science packs]].&lt;br /&gt;
&lt;br /&gt;
== Mechanics ==&lt;br /&gt;
&lt;br /&gt;
In singleplayer games, only one technology can be researched at a time, the same is true for every [[Multiplayer#PvP|force]] (team of players) in a multiplayer game. In multiplayer games with multiple forces, each force has its own technology tree and research status, so different forces can research independently in [[Multiplayer#PvP|PvP]] games.&lt;br /&gt;
&lt;br /&gt;
The technology to be researched is selected from the technology screen, opened by pressing {{Keybinding|T}}. The currently active research can be changed at any time from the technology screen; if another research is in progress, that progress will be saved. Multiple technologies can be partially researched like this at any one time.&lt;br /&gt;
&lt;br /&gt;
Research progress for a technology is divided into &#039;&#039;units&#039;&#039;. Each unit has a time and a science pack cost. When research is in progress, labs with the required amount of science packs for one unit will consume the amount and contribute towards research progress.&lt;br /&gt;
&lt;br /&gt;
[[File:res.png|frame|The progress bar shown in the top right corner of the screen when research is in progress]]&lt;br /&gt;
&lt;br /&gt;
The time &#039;&#039;T&#039;&#039; it will take to research a particular technology is given by:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;T = (T[0] × P) ÷ (L × S)&amp;lt;/code&amp;gt; seconds,&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;T[0]&#039;&#039;&#039;&#039;&#039; is the time cost per unit (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;P&#039;&#039;&#039;&#039;&#039; is the price of the research, in units (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;L&#039;&#039;&#039;&#039;&#039; is the number of labs used&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;S&#039;&#039;&#039;&#039;&#039; is lab speed, which is given by:&lt;br /&gt;
**&amp;lt;code&amp;gt;1 + B[r]&amp;lt;/code&amp;gt;&lt;br /&gt;
**where &#039;&#039;&#039;&#039;&#039;B[r]&#039;&#039;&#039;&#039;&#039; is the total research speed modifier from [[Lab research speed (research)|lab research speed]] research and any module effects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that &#039;&#039;P&#039;&#039; represents the research price &#039;&#039;&#039;in units&#039;&#039;&#039;, not in individual science packs summed across all their types. For example, a research that costs 100 [[science pack 1|science packs 1]] and 100 [[science pack 2|science packs 2]], grouped into 100 units of 1 each of science packs 1 and 2, would have a &#039;&#039;P&#039;&#039; of 100, &#039;&#039;not&#039;&#039; 200.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automation ===&lt;br /&gt;
[[File:5_5_Labs_R_G_packs.png|400px|thumb|right|A simple lab setup using [[science pack 1]] and [[science pack 2|2]], [[belt transport system|belts]], and [[inserters]]]]&lt;br /&gt;
&lt;br /&gt;
Crafting science packs by hand is not feasible, mainly because of the amount of resources and time needed to craft them. Some science packs also require ingredients that cannot be handcrafted, such as [[oil processing|oil products]]. Science pack production automation is the primary incentive for factory development throughout the game.&lt;br /&gt;
&lt;br /&gt;
The insertion of science packs into labs may be automated using [[inserters]] and [[transport belt]]s, as shown to the right, or using [[Robotic network#Robots|robots]] and the [[logistic network]].&lt;br /&gt;
&lt;br /&gt;
Note that inserters can take science packs from labs and hand them to other labs, making a lab chain a feasible solution. Other options include using 3 belts (before space science packs are needed), or a [[Glossary#S|sushi belt]].&lt;br /&gt;
&lt;br /&gt;
=== Research Queue ===&lt;br /&gt;
[[File:Research_Screen_Queue.png|400px|thumb|right|The technology screen with some technologies queued.]]&lt;br /&gt;
The research queue allows players to automatically research more technologies after a research finishes. The research queue is by default unlocked when the first rocket is launched. Alternatively it can be unlocked in the map generation settings in the &#039;advanced&#039; category, or via [[Console#Enable_Research_Queue|console commands]] (note that this disables achievements for the save). &lt;br /&gt;
&lt;br /&gt;
Once the research queue is enabled, a technology can be added to the queue by pressing the &amp;quot;Start Research&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
Technologies in the queue are displayed in the upper right corner of the interface. If a technology is added to the queue, the technologies that depend on it may become available to be added to the queue as well and those technologies are displayed in orange. For example adding the [[Logistics_(research)|Logistics]] and [[Logistic_science_pack_(research)|Logistic Science Pack]] technologies to the queue allows the technology [[Logistics_2_(research)|Logistics 2]] to be queued. &lt;br /&gt;
&lt;br /&gt;
To remove a technology from the queue, the technology&#039;s image must be hovered in the queue display in the upper left corner and the red button that appears must be pressed.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
&lt;br /&gt;
{{Achievement|Tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{History|0.17.0|&lt;br /&gt;
* Research UI overhauled.&lt;br /&gt;
* Research Queue added.}}&lt;br /&gt;
&lt;br /&gt;
{{History|0.15.0|&lt;br /&gt;
* Research system overhauled&lt;br /&gt;
** There are now 7 science pack types instead of 4, research prices have been changed to compensate.&lt;br /&gt;
** Top-tier science pack is no longer obtained by destroying alien nests, but by launching rockets with satellites.&lt;br /&gt;
**&amp;quot;Infinite research&amp;quot; mechanic introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Technologies]]&lt;br /&gt;
* [[Science pack]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;br /&gt;
{{TechNav}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Research&amp;diff=170340</id>
		<title>Research</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Research&amp;diff=170340"/>
		<updated>2019-03-09T12:21:16Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Mechanics */ Clarify first sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology_Screen.png|400px|thumb|The technology screen]]&lt;br /&gt;
&#039;&#039;&#039;Research&#039;&#039;&#039; is used to unlock [[technologies]], offering new recipes and bonuses. Research is performed by [[lab|labs]] consuming different types of [[science pack|science packs]].&lt;br /&gt;
&lt;br /&gt;
== Mechanics ==&lt;br /&gt;
&lt;br /&gt;
In single player games, only one technology can be researched at a time and the same is true for every [[Multiplayer#PvP|force]] (team of players) in a multiplayer game. In multiplayer games with multiple forces, each force has their own technology tree and research status, so different forces may research independently in [[Multiplayer#PvP|PvP]] games.&lt;br /&gt;
&lt;br /&gt;
The technology to be researched is selected from the technology screen, opened by pressing {{Keybinding|T}}. The currently active research can be changed at any time from the technology screen; if another research is in progress, that progress will be saved. Multiple technologies can be partially researched like this at any one time.&lt;br /&gt;
&lt;br /&gt;
Research progress for a technology is divided into &#039;&#039;units&#039;&#039;. Each unit has a time and a science pack cost. When research is in progress, labs with the required amount of science packs for one unit will consume the amount and contribute towards research progress.&lt;br /&gt;
&lt;br /&gt;
[[File:res.png|frame|The progress bar shown in the top right corner of the screen when research is in progress]]&lt;br /&gt;
&lt;br /&gt;
The time &#039;&#039;T&#039;&#039; it will take to research a particular technology is given by:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;T = (T[0] × P) ÷ (L × S)&amp;lt;/code&amp;gt; seconds,&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;T[0]&#039;&#039;&#039;&#039;&#039; is the time cost per unit (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;P&#039;&#039;&#039;&#039;&#039; is the price of the research, in units (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;L&#039;&#039;&#039;&#039;&#039; is the number of labs used&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;S&#039;&#039;&#039;&#039;&#039; is lab speed, which is given by:&lt;br /&gt;
**&amp;lt;code&amp;gt;1 + B[r]&amp;lt;/code&amp;gt;&lt;br /&gt;
**where &#039;&#039;&#039;&#039;&#039;B[r]&#039;&#039;&#039;&#039;&#039; is the total research speed modifier from [[Lab research speed (research)|lab research speed]] research and any module effects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that &#039;&#039;P&#039;&#039; represents the research price &#039;&#039;&#039;in units&#039;&#039;&#039;, not in individual science packs summed across all their types. For example, a research that costs 100 [[science pack 1|science packs 1]] and 100 [[science pack 2|science packs 2]], grouped into 100 units of 1 each of science packs 1 and 2, would have a &#039;&#039;P&#039;&#039; of 100, &#039;&#039;not&#039;&#039; 200.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automation ===&lt;br /&gt;
[[File:5_5_Labs_R_G_packs.png|400px|thumb|right|A simple lab setup using [[science pack 1]] and [[science pack 2|2]], [[belt transport system|belts]], and [[inserters]]]]&lt;br /&gt;
&lt;br /&gt;
Crafting science packs by hand is not feasible, mainly because of the amount of resources and time needed to craft them. Some science packs also require ingredients that cannot be handcrafted, such as [[oil processing|oil products]]. Science pack production automation is the primary incentive for factory development throughout the game.&lt;br /&gt;
&lt;br /&gt;
The insertion of science packs into labs may be automated using [[inserters]] and [[transport belt]]s, as shown to the right, or using [[Robotic network#Robots|robots]] and the [[logistic network]].&lt;br /&gt;
&lt;br /&gt;
Note that inserters can take science packs from labs and hand them to other labs, making a lab chain a feasible solution. Other options include using 3 belts (before space science packs are needed), or a [[Glossary#S|sushi belt]].&lt;br /&gt;
&lt;br /&gt;
=== Research Queue ===&lt;br /&gt;
[[File:Research_Screen_Queue.png|400px|thumb|right|The technology screen with some technologies queued.]]&lt;br /&gt;
The research queue allows players to automatically research more technologies after a research finishes. The research queue is by default unlocked when the first rocket is launched. Alternatively it can be unlocked in the map generation settings in the &#039;advanced&#039; category, or via [[Console#Enable_Research_Queue|console commands]] (note that this disables achievements for the save). &lt;br /&gt;
&lt;br /&gt;
Once the research queue is enabled, a technology can be added to the queue by pressing the &amp;quot;Start Research&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
Technologies in the queue are displayed in the upper right corner of the interface. If a technology is added to the queue, the technologies that depend on it may become available to be added to the queue as well and those technologies are displayed in orange. For example adding the [[Logistics_(research)|Logistics]] and [[Logistic_science_pack_(research)|Logistic Science Pack]] technologies to the queue allows the technology [[Logistics_2_(research)|Logistics 2]] to be queued. &lt;br /&gt;
&lt;br /&gt;
To remove a technology from the queue, the technology&#039;s image must be hovered in the queue display in the upper left corner and the red button that appears must be pressed.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
&lt;br /&gt;
{{Achievement|Tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{History|0.17.0|&lt;br /&gt;
* Research UI overhauled.&lt;br /&gt;
* Research Queue added.}}&lt;br /&gt;
&lt;br /&gt;
{{History|0.15.0|&lt;br /&gt;
* Research system overhauled&lt;br /&gt;
** There are now 7 science pack types instead of 4, research prices have been changed to compensate.&lt;br /&gt;
** Top-tier science pack is no longer obtained by destroying alien nests, but by launching rockets with satellites.&lt;br /&gt;
**&amp;quot;Infinite research&amp;quot; mechanic introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Technologies]]&lt;br /&gt;
* [[Science pack]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;br /&gt;
{{TechNav}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Research&amp;diff=170317</id>
		<title>Research</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Research&amp;diff=170317"/>
		<updated>2019-03-08T23:10:50Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology_Screen.png|400px|thumb|The technology screen]]&lt;br /&gt;
&#039;&#039;&#039;Research&#039;&#039;&#039; is used to unlock [[technologies]], offering new recipes and bonuses. Research is performed by [[lab|labs]] consuming different types of [[science pack|science packs]].&lt;br /&gt;
&lt;br /&gt;
== Mechanics ==&lt;br /&gt;
&lt;br /&gt;
In single player games, only one technology can be researched at a time. In multiplayer, research progress is separate for each [[Multiplayer#PvP|force]], so different forces may research different technologies.&lt;br /&gt;
&lt;br /&gt;
The technology to be researched is selected from the technology screen, opened by pressing {{Keybinding|T}}. The currently active research can be changed at any time from the technology screen; if another research is in progress, that progress will be saved. Multiple technologies can be partially researched like this at any one time.&lt;br /&gt;
&lt;br /&gt;
Research progress for a technology is divided into &#039;&#039;units&#039;&#039;. Each unit has a time and a science pack cost. When research is in progress, labs with the required amount of science packs for one unit will consume the amount and contribute towards research progress.&lt;br /&gt;
&lt;br /&gt;
[[File:res.png|frame|The progress bar shown in the top right corner of the screen when research is in progress]]&lt;br /&gt;
&lt;br /&gt;
The time &#039;&#039;T&#039;&#039; it will take to research a particular technology is given by:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;T = (T[0] × P) ÷ (L × S)&amp;lt;/code&amp;gt; seconds,&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;T[0]&#039;&#039;&#039;&#039;&#039; is the time cost per unit (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;P&#039;&#039;&#039;&#039;&#039; is the price of the research, in units (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;L&#039;&#039;&#039;&#039;&#039; is the number of labs used&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;S&#039;&#039;&#039;&#039;&#039; is lab speed, which is given by:&lt;br /&gt;
**&amp;lt;code&amp;gt;1 + B[r]&amp;lt;/code&amp;gt;&lt;br /&gt;
**where &#039;&#039;&#039;&#039;&#039;B[r]&#039;&#039;&#039;&#039;&#039; is the total research speed modifier from [[Lab research speed (research)|lab research speed]] research and any module effects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that &#039;&#039;P&#039;&#039; represents the research price &#039;&#039;&#039;in units&#039;&#039;&#039;, not in individual science packs summed across all their types. For example, a research that costs 100 [[science pack 1|science packs 1]] and 100 [[science pack 2|science packs 2]], grouped into 100 units of 1 each of science packs 1 and 2, would have a &#039;&#039;P&#039;&#039; of 100, &#039;&#039;not&#039;&#039; 200.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automation ===&lt;br /&gt;
[[File:5_5_Labs_R_G_packs.png|400px|thumb|right|A simple lab setup using [[science pack 1]] and [[science pack 2|2]], [[belt transport system|belts]], and [[inserters]]]]&lt;br /&gt;
&lt;br /&gt;
Crafting science packs by hand is not feasible, mainly because of the amount of resources and time needed to craft them. Some science packs also require ingredients that cannot be handcrafted, such as [[oil processing|oil products]]. Science pack production automation is the primary incentive for factory development throughout the game.&lt;br /&gt;
&lt;br /&gt;
The insertion of science packs into labs may be automated using [[inserters]] and [[transport belt]]s, as shown to the right, or using [[Robotic network#Robots|robots]] and the [[logistic network]].&lt;br /&gt;
&lt;br /&gt;
Note that inserters can take science packs from labs and hand them to other labs, making a lab chain a feasible solution. Other options include using 3 belts (before space science packs are needed), or a [[Glossary#S|sushi belt]].&lt;br /&gt;
&lt;br /&gt;
=== Research Queue ===&lt;br /&gt;
[[File:Research_Screen_Queue.png|400px|thumb|right|The technology screen with some technologies queued.]]&lt;br /&gt;
The research queue allows players to automatically research more technologies after a research finishes. The research queue is by default unlocked when the first rocket is launched. Alternatively it can be unlocked in the map generation settings in the &#039;advanced&#039; category, or via [[Console#Enable_Research_Queue|console commands]] (note that this disables achievements for the save). &lt;br /&gt;
&lt;br /&gt;
Once the research queue is enabled, a technology can be added to the queue by pressing the &amp;quot;Start Research&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
Technologies in the queue are displayed in the upper right corner of the interface. If a technology is added to the queue, the technologies that depend on it may become available to be added to the queue as well and those technologies are displayed in orange. For example adding the [[Logistics_(research)|Logistics]] and [[Logistic_science_pack_(research)|Logistic Science Pack]] technologies to the queue allows the technology [[Logistics_2_(research)|Logistics 2]] to be queued. &lt;br /&gt;
&lt;br /&gt;
To remove a technology from the queue, the technology&#039;s image must be hovered in the queue display in the upper left corner and the red button that appears must be pressed.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
&lt;br /&gt;
{{Achievement|Tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{History|0.17.0|&lt;br /&gt;
* Research UI overhauled.&lt;br /&gt;
* Research Queue added.}}&lt;br /&gt;
&lt;br /&gt;
{{History|0.15.0|&lt;br /&gt;
* Research system overhauled&lt;br /&gt;
** There are now 7 science pack types instead of 4, research prices have been changed to compensate.&lt;br /&gt;
** Top-tier science pack is no longer obtained by destroying alien nests, but by launching rockets with satellites.&lt;br /&gt;
**&amp;quot;Infinite research&amp;quot; mechanic introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Technologies]]&lt;br /&gt;
* [[Science pack]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;br /&gt;
{{TechNav}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Research&amp;diff=170316</id>
		<title>Research</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Research&amp;diff=170316"/>
		<updated>2019-03-08T23:09:00Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Updated for 0.17.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:Technology_Screen.png|400px|thumb|The technology screen]]&lt;br /&gt;
&#039;&#039;&#039;Research&#039;&#039;&#039; is used to unlock [[technologies]], offering new recipes and bonuses. Research is performed by [[lab|labs]] consuming different types of [[science pack|science packs]].&lt;br /&gt;
&lt;br /&gt;
== Mechanics ==&lt;br /&gt;
&lt;br /&gt;
In single player games, only one technology can be researched at a time. In multiplayer, research progress is separate for each [[Multiplayer#PvP|force]], so different forces may research different technologies.&lt;br /&gt;
&lt;br /&gt;
The technology to be researched is selected from the technology screen, opened by pressing {{Keybinding|T}}. The currently active research can be changed at any time from the technology screen; if another research is in progress, that progress will be saved. Multiple technologies can be partially researched like this at any one time.&lt;br /&gt;
&lt;br /&gt;
Research progress for a technology is divided into &#039;&#039;units&#039;&#039;. Each unit has a time and a science pack cost. When research is in progress, labs with the required amount of science packs for one unit will consume the amount and contribute towards research progress.&lt;br /&gt;
&lt;br /&gt;
[[File:res.png|frame|The progress bar shown in the top right corner of the screen when research is in progress]]&lt;br /&gt;
&lt;br /&gt;
The time &#039;&#039;T&#039;&#039; it will take to research a particular technology is given by:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;T = (T[0] × P) ÷ (L × S)&amp;lt;/code&amp;gt; seconds,&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;T[0]&#039;&#039;&#039;&#039;&#039; is the time cost per unit (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;P&#039;&#039;&#039;&#039;&#039; is the price of the research, in units (as shown in Research screen)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;L&#039;&#039;&#039;&#039;&#039; is the number of labs used&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;S&#039;&#039;&#039;&#039;&#039; is lab speed, which is given by:&lt;br /&gt;
**&amp;lt;code&amp;gt;1 + B[r]&amp;lt;/code&amp;gt;&lt;br /&gt;
**where &#039;&#039;&#039;&#039;&#039;B[r]&#039;&#039;&#039;&#039;&#039; is the total research speed modifier from [[Lab research speed (research)|lab research speed]] research and any module effects&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that &#039;&#039;P&#039;&#039; represents the research price &#039;&#039;&#039;in units&#039;&#039;&#039;, not in individual science packs summed across all their types. For example, a research that costs 100 [[science pack 1|science packs 1]] and 100 [[science pack 2|science packs 2]], grouped into 100 units of 1 each of science packs 1 and 2, would have a &#039;&#039;P&#039;&#039; of 100, &#039;&#039;not&#039;&#039; 200.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Automation ===&lt;br /&gt;
[[File:5_5_Labs_R_G_packs.png|400px|thumb|right|A simple lab setup using [[science pack 1]] and [[science pack 2|2]], [[belt transport system|belts]], and [[inserters]]]]&lt;br /&gt;
&lt;br /&gt;
Crafting science packs by hand is not feasible, mainly because of the amount of resources and time needed to craft them. Some science packs also require ingredients that cannot be handcrafted, such as [[oil processing|oil products]]. Science pack production automation is the primary incentive for factory development throughout the game.&lt;br /&gt;
&lt;br /&gt;
The insertion of science packs into labs may be automated using [[inserters]] and [[transport belt]]s, as shown to the right, or using [[Robotic network#Robots|robots]] and the [[logistic network]].&lt;br /&gt;
&lt;br /&gt;
Note that inserters can take science packs from labs and hand them to other labs, making a lab chain a feasible solution. Other options include using 3 belts (before space science packs are needed), or a [[Glossary#S|sushi belt]].&lt;br /&gt;
&lt;br /&gt;
=== Research Queue ===&lt;br /&gt;
[[File:Research_Screen_Queue.png|400px|thumb|right|The technology screen with some technologies queued.]]&lt;br /&gt;
The research queue allows players to automatically research more technologies after a research finishes. The research queue is by default unlocked when the first rocket is launched. Alternatively it can be unlocked in the map generation settings in the &#039;advanced&#039; category, or via [[Console#Enable_Research_Queue|console commands]] (note that this disables achievements for the save). &lt;br /&gt;
&lt;br /&gt;
Once the research queue is enabled, a technology can be added to the queue by pressing the &amp;quot;Start Research&amp;quot; button. &lt;br /&gt;
&lt;br /&gt;
Technologies in the queue are displayed in the upper right corner of the interface. If a technology is added to the queue, the technologies that depend on it may become available to be added to the queue as well and those technologies are displayed in orange. For example adding the [[Logistics_(research)|Logistics]] and [[Logistic_science_pack_(research)|Logistic Science Pack]] technologies to the queue allows the technology [[Logistics_2_(research)|Logistics 2]] to be queued. &lt;br /&gt;
&lt;br /&gt;
To remove a technology from the queue, the technology&#039;s image must be hovered in the queue display in the upper left corner and the red button that appears must be pressed.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
&lt;br /&gt;
{{Achievement|Tech-maniac}}&lt;br /&gt;
* Completing infinite technologies of any level is not required for &#039;&#039;&#039;Tech maniac&#039;&#039;&#039;. All non-infinite levels of technologies that have infinite continuations are still required.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
{{History|0.17.0|&lt;br /&gt;
* Research UI overhauled.&lt;br /&gt;
* Research Queue added.}}&lt;br /&gt;
&lt;br /&gt;
{{History|0.15.0|&lt;br /&gt;
* Research system overhauled&lt;br /&gt;
** There are now 7 science pack types instead of 4, research prices have been changed to compensate.&lt;br /&gt;
** Top-tier science pack is no longer obtained by destroying alien nests, but by launching rockets with satellites.&lt;br /&gt;
**&amp;quot;Infinite research&amp;quot; mechanic introduced.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Technologies]]&lt;br /&gt;
* [[Science_pack]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Technology]]&lt;br /&gt;
{{TechNav}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Technology_Screen.png&amp;diff=170314</id>
		<title>File:Technology Screen.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Technology_Screen.png&amp;diff=170314"/>
		<updated>2019-03-08T22:32:57Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Technology Screen.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Screenshot}}List of Tectnologies at new game.&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170313</id>
		<title>File:Research Screen Queue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170313"/>
		<updated>2019-03-08T22:27:25Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Screenshot}}View of the research screen with some technologies queued for demonstration.&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170312</id>
		<title>File:Research Screen Queue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170312"/>
		<updated>2019-03-08T22:25:27Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Research Screen Queue.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{Screenshots}}&lt;br /&gt;
0.17&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170311</id>
		<title>File:Research Screen Queue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170311"/>
		<updated>2019-03-08T22:23:10Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Research Screen Queue.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{Screenshots}}&lt;br /&gt;
0.17&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170310</id>
		<title>File:Research Screen Queue.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Research_Screen_Queue.png&amp;diff=170310"/>
		<updated>2019-03-08T22:21:39Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: {{Screenshots}}
0.17&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{Screenshots}}&lt;br /&gt;
0.17&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165249</id>
		<title>File:Why signals.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165249"/>
		<updated>2018-11-12T21:19:51Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Why signals.gif&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165248</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165248"/>
		<updated>2018-11-12T21:12:12Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Regular signals and blocks */ Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in Factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fueling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fueled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular signals and blocks ==&lt;br /&gt;
&lt;br /&gt;
[[File:Why_signals.gif]]&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular [[Rail signal|rail signal]] protects the rail block behind it, up to the next signal or the end of the track. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
Rail blocks are shown with colors when a player has a signal in hand. The picture shows the block visualization, there are a total of eleven blocks. Rail signals (and chain signals) break up blocks, train stops do not. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, [[Rail chain signal]]s are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals in and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_anim.gif]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. A corrected version of this intersection can be found above. The eight signals before and on the intersection should be replaced by chain signals, the ones leading out of the intersection can stay as they are. As stated above, in general chain signals should be used before and on intersections.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. The signals are correct; to fix the deadlock the circle must be removed or less trains need to be routed through this area.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This deadlock also happened because there were too many trains in a too small circle. It shows that a deadlock can happen with as few as two trains. In this case the deadlock could also have been avoided by replacing the marked signal with a chain signal, because it would ensure that only one train can enter the offending circle. However this could lead to trains waiting on the main line, so a waiting area for trains near the station should be added.&lt;br /&gt;
&lt;br /&gt;
== Signal spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signaled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting rail blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line which leads to a traffic jam in the network and can cause deadlocks. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165247</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165247"/>
		<updated>2018-11-12T21:00:23Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Add crashing trains.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in Factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fueling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fueled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular signals and blocks ==&lt;br /&gt;
&lt;br /&gt;
[[File:Why_signals.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular [[Rail signal|rail signal]] protects the rail block behind it, up to the next signal or the end of the track. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
Rail blocks are shown with colors when a player has a signal in hand. The picture shows the block visualization, there are a total of eleven blocks. Rail signals (and chain signals) break up blocks, train stops do not. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, [[Rail chain signal]]s are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals in and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_anim.gif]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. A corrected version of this intersection can be found above. The eight signals before and on the intersection should be replaced by chain signals, the ones leading out of the intersection can stay as they are. As stated above, in general chain signals should be used before and on intersections.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. The signals are correct; to fix the deadlock the circle must be removed or less trains need to be routed through this area.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This deadlock also happened because there were too many trains in a too small circle. It shows that a deadlock can happen with as few as two trains. In this case the deadlock could also have been avoided by replacing the marked signal with a chain signal, because it would ensure that only one train can enter the offending circle. However this could lead to trains waiting on the main line, so a waiting area for trains near the station should be added.&lt;br /&gt;
&lt;br /&gt;
== Signal spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signaled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting rail blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line which leads to a traffic jam in the network and can cause deadlocks. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165246</id>
		<title>File:Why signals.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165246"/>
		<updated>2018-11-12T20:50:23Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Why signals.gif&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165245</id>
		<title>File:Why signals.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Why_signals.gif&amp;diff=165245"/>
		<updated>2018-11-12T20:43:27Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165240</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=165240"/>
		<updated>2018-11-12T20:03:31Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Deadlocks */ Fix a deadlock.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in Factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fueling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fueled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture (there are a total of 11 blocks in the picture). Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals in and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_anim.gif]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. A corrected version of this intersection can be found above. The eight signals before and on the intersection should be replaced by chain signals, the ones leading out of the intersection can stay as they are. As stated above, in general chain signals should be used before and on intersections.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. The signals are correct; to fix the deadlock the circle must be removed or less trains need to be routed through this area.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This deadlock also happened because there were too many trains in a too small circle. It shows that a deadlock can happen with as few as two trains. In this case the deadlock could also have been avoided by replacing the marked signal with a chain signal, because it would ensure that only one train can enter the offending circle. However this could lead to trains waiting on the main line, so a waiting area for trains near the station should be added.&lt;br /&gt;
&lt;br /&gt;
== Signal spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signaled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting rail blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line which leads to a traffic jam in the network and can cause deadlocks. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Signal_deadlock.png&amp;diff=165239</id>
		<title>File:Signal deadlock.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Signal_deadlock.png&amp;diff=165239"/>
		<updated>2018-11-12T19:59:54Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Signal deadlock.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Screenshot}}Deadlock caused by missing chain signals. Positions where chain signals should be placed are marked with hazard concrete.&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Deadlock_anim.gif&amp;diff=165238</id>
		<title>File:Deadlock anim.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Deadlock_anim.gif&amp;diff=165238"/>
		<updated>2018-11-12T19:56:18Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Deadlock anim.gif&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Deadlock_anim.gif&amp;diff=165237</id>
		<title>File:Deadlock anim.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Deadlock_anim.gif&amp;diff=165237"/>
		<updated>2018-11-12T19:44:10Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Main_bus&amp;diff=165169</id>
		<title>Tutorial:Main bus</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Main_bus&amp;diff=165169"/>
		<updated>2018-11-07T20:08:15Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Split-off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:main_bus.jpg|thumb|400px|A main bus in use with several different items and some production]]&lt;br /&gt;
&amp;lt;!-- alternate first sentence: The concept of a &#039;&#039;&#039;Main bus&#039;&#039;&#039; is the order and central distribution of materials to assembling machines. --&amp;gt;&lt;br /&gt;
The concept of a &#039;&#039;&#039;Main Bus&#039;&#039;&#039; is to put the most used and useful ingredients in a central spot to use for assembling machines. &lt;br /&gt;
This is a good measure to combat &amp;quot;spaghetti factories&amp;quot; as it forces someone to plan a structured layout and move everything to use items from the bus.&lt;br /&gt;
Which is also a downside as there are more belts used and therefore more room for belt-buffer and everything is less compact.&lt;br /&gt;
&lt;br /&gt;
Whether one uses a bus is often decided before starting a map or when first building an array of furnaces.&lt;br /&gt;
&lt;br /&gt;
A bus often starts at the smelting of iron, copper and steel and then over time and distance gains more and more different items.&lt;br /&gt;
When one doesn&#039;t have enough production to saturate a belt (or splits it into more) then this can be called a &amp;quot;fake&amp;quot;-bus as it &#039;&#039;can not&#039;&#039; be saturated. &lt;br /&gt;
This is especially deceiving when the item isn&#039;t moving and all belts have filled up as these belts can&#039;t carry the amount they lead on to believe they can.&lt;br /&gt;
This can be done to reserve room for later expansion, blueprint-ghosts are a good usage for that as they don&#039;t allow the belt to be filled with non-usable items.&lt;br /&gt;
&lt;br /&gt;
The direction of a bus, being horizontal or vertical depends on personal preference and how one likes to work on the production that splits off it, which can almost always be expanded for greater use later on. &lt;br /&gt;
The orientation of and how wide the players monitor is also plays a role in this decision. &lt;br /&gt;
A corner is not unheard of but very unusual and is often only necessary when a lake appears that is not planned for.&lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
What items one puts on a bus is personal preference.&lt;br /&gt;
Some items are a good candidate to be built &amp;quot;on-site&amp;quot; meaning not carried by the bus but rather made where they are needed.&lt;br /&gt;
A good example for this are [[copper cable]]s as they consume more space on a belt than in form of copper plates.&lt;br /&gt;
&lt;br /&gt;
Here are some things people have put on their bus in the past:&lt;br /&gt;
* Several belts of [[Iron plate]]s, usually a multiple of four as that is the length one [[underground belt]] can go underneath of.&lt;br /&gt;
* Some belts of [[Copper plate]]s as well, usually less than Iron plates, as of 0.15 a lot less.&lt;br /&gt;
* [[Iron gear wheel]]s are seen on some buses as of 0.15 as they&#039;re taking up half as much room than iron plates (are denser) and see usage in a lot of recipes.&lt;br /&gt;
* [[Electronic circuit]]s and later on even &lt;br /&gt;
* [[Advanced circuit]]s though that may not be necessary as they just get used up quickly in other steps and aren&#039;t used in that many different products.&lt;br /&gt;
* [[Steel plate]]s.&lt;br /&gt;
* [[Processing unit]]s are rarely seen on a bus as they are used in even less recipes than the other mentioned intermediate products.&lt;br /&gt;
* [[Battery|Batteries]].&lt;br /&gt;
* [[Plastic bar]]s (sometimes replaces [[coal]] from where plastic is produced).&lt;br /&gt;
Each of these Items would get a dedicated line of belts from which one would draw from if there is need for the item.&lt;br /&gt;
&lt;br /&gt;
Some people like to have fluids part of their bus which could include:&lt;br /&gt;
* [[Sulfuric acid]] for processing units.&lt;br /&gt;
* [[Water]] for [[concrete]].&lt;br /&gt;
* [[Lubricant]] for [[express transport belt]].&lt;br /&gt;
&lt;br /&gt;
== Advice and Limitations ==&lt;br /&gt;
Having all possible items on a bus results in a huge wide bus with a lot of belt-buffer for expensive items and standing belts of output-items that wont get used in another process.&lt;br /&gt;
These items are often just put into [[chests]] for personal use rather than on a bus.&lt;br /&gt;
&lt;br /&gt;
The width of the bus can become a problem if it is very wide.&lt;br /&gt;
Players sometimes choose to only build on one side of the bus until they can estimate that they wont need more belts on the bus.&lt;br /&gt;
&lt;br /&gt;
It is advisable to leave &#039;&#039;space&#039;&#039; between the groups of belts of one item for underground belt to surface and for other things to cross the bus.&lt;br /&gt;
A recommended numbers is two free spaces for every group of four belts, although leaving more space can be useful too.&lt;br /&gt;
Same with the production that is to the side of the bus, leave space &#039;&#039;between the builds&#039;&#039; for later expansion or belts that go between, at least three, six to ten is fitting.&lt;br /&gt;
Grouping differing items together can cause problems when splitting them off, hence only groupings of two differing items is recommended. &lt;br /&gt;
Having smaller groups of only one or two is also not a bad thing.&lt;br /&gt;
&lt;br /&gt;
When [[logistic robot]]s are available one might start moving some items by robots instead of using the bus. &lt;br /&gt;
Some players eventually phase out the main bus entirely in favor of robots. &lt;br /&gt;
This may happen at a later stage in the game up to which a bus is a very good tool to reduce clutter. &lt;br /&gt;
But robots have their own difficulties and require a lot more resources and knowledge of the game.&lt;br /&gt;
&lt;br /&gt;
For very large amounts of items [[railway]]s may be a better alternative that can not only carry large amounts of ore but also the intermediate and end-products.&lt;br /&gt;
This can lead to designs of a base consisting of only train-stations with small [[logistic network]]s without any belts.&lt;br /&gt;
For a comparison of belt, logistic robot and railway transport systems, refer to the [[Tutorial:Transport_use_cases|Transport use cases tutorial]].&lt;br /&gt;
&lt;br /&gt;
One [https://redd.it/5gn30r reddit post] mentions the use of [[cargo wagon]]s as a means to increase throughput and reduce the size of a bus.&lt;br /&gt;
&lt;br /&gt;
== Split-off ==&lt;br /&gt;
When one wants to use the items on their bus one could directly take items off the bus as if it is just a belt, though that would mean an extremely long bus and useless lengths of other belts.&lt;br /&gt;
This is sometimes done to get Items crafted into a chest for personal use like [[pipe]] which only uses Iron plates.&lt;br /&gt;
However in most cases a belt is split away from the main bus that can deliver the resource to the factory. Split-off designs aren&#039;t strictly necessary but help immensely. The following designs have the additional property that if the incoming belts are fully saturated then the split-off belt will be full (recall that a single splitter with a single full input belt will by default split off a half-filled belt).&lt;br /&gt;
&lt;br /&gt;
With [[splitter]] priorities that were added in 0.16 it is very simple to split off a belt from a main bus while ensuring good throughput properties. The design shown here makes sure that the belts on the right side are filled first, so belts can be taken from the right every time without the need to further rebalance. Thus up to a full belt can be delivered and the remaining resources can go through on the main bus.&lt;br /&gt;
&lt;br /&gt;
[[File:4-split-priority.png]]&lt;br /&gt;
&lt;br /&gt;
Alternatively, one can make split-off setups without priority splitters. The idea is that one wants to draw from every belt (and lane even) equally to not have too few items at the current planned production and not have empty and at the same time standing belts of items.&lt;br /&gt;
That way at every step along the bus a few items are split off and used up and when the production comes to a stop the items go on to be used by the next production.&lt;br /&gt;
&lt;br /&gt;
The following are 2 designs for a split-off off a 2-wide bus (by reddit user [https://www.reddit.com/user/unique_2 /u/unique_2]).&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=320px &amp;gt;&lt;br /&gt;
File:2-split_variant_a.png|{{BlueprintString|bp-string=0eNqVld9ugyAUxl/FnKstwRbwT1sfY7fL0mhLHIlFh9DMGN99qO1mWrrCFfHI9+NwvgP0UFSaNZILBVkP/FCLFrL3HlpeirwaY6prGGRw5lJpE0Eg8tMYmGeEFAYEXBzZN2RkQB7Kt4WSWpVcsdNC1lRcKSYXsshBpmQu2qaWKixYpRbiePhAwITiirN509NHtxf6VJhlMvKIgaCpWyOrxbiqQYUUQWeGeBgTusFQdwz5BxN5ZxPZMLE3htowiTMGXykIjlyyw/wrtjBT70LdQKkFuvmFamO7LGVtxidY01bXXqq1avTYNXfgrW8hsa2Ou/v2tqS1SubEiA1BsKcX+HnVCPH1lzhAqb8X+M8KLh44QSKHIl6sxavEIVHvQ2I3JvEx13rMSOqCwBeEPYuN72as9wbZ+p5OgzEX7HQZZ4tnBkGVG52J0XDaUyB5+amCl6IL1nqtBf/SbE9fg9xMPTPZTuA0jmmabiihu2H4AQXcOK0=}}&lt;br /&gt;
&lt;br /&gt;
File:2-split_variant_b.png|{{BlueprintString|bp-string=0eNqVlNFugzAMRX8F+WmTwkpSSlc+Y6/TVEEbdZZoYMGphir+fYZOHVrTijwhQu7J9Y3xGcrK6caiIcjPgLvatJC/n6HFgymqYY26RkMOJ7TkeEWAKY7DwmVHrKAXgGavvyGXvQhQvk2UyqtE0seJrKmQSNuJbDlDRrYwbVNbiktd0USc9h8CtCEk1Jeix5dua9yx5GNyeY8hoKlbltVmOJVRMW/t+JH2g6F/GDUbkzygLIPNLH2YNBijfJjVbMzVjIA9Wr27fFIeZnZ707cJvaweuFpfCY6v2B5szc/HWQ++ftumdtS4oUFuuK+hoSU+d5sZ9cXXAqUPIZPA3L1GpAy9Pb8ZFRx38pc2mjthy+BO97tLQ+L2tpNcBXSk30QWWov3p5XrwBHCFJ5t4xzMJxNeQFWwjNdUPFYUWTx8UvRUdtHCLZzBL6e36jkqeetJ23bkZmmqsmytpNr0/Q+uzw2D}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Putting a lane-balancer after a split-off is not necessary most of the time as the rest moves on if the belt has no draw or if only one lane is used. &lt;br /&gt;
If there is enough input for the item to saturate a whole belt then putting a lane-balancer in wont help to get more items later on. &lt;br /&gt;
Putting a lane-balancer after an inherently balanced build that produces the item is also not necessary as then half of the production pauses and the other half fills the moving lane to saturation. &lt;br /&gt;
The following is a split-off off a 4-wide bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=256px &amp;gt;&lt;br /&gt;
File:4-split_l.png|{{BlueprintString|bp-string=0eNqlld1qhDAQhV+lzHUsxv/6DPsGpRTdDUvAjRLjUhHfvaPWVTBbMu1VcPR8OTOTMQOUVScaLZWBfAB5rlUL+fsArbyqoppipm8E5HCX2nQYYaCK2xRYvvAiGBlIdRFfkPOREZSnnTKwKqURt01mdKHaptbGK0VlduLwP+Jo/GAglJFGiiX1+aH/VN2tFBqTejA6VOirrnFdKAyaukVhraZ9EeYFDHpc0NFqo+5M000bHsABAewTuCHFMCeAo2fVPGAfVAsl/kM9+WZPqifuEmd3KxUPHVykFuflXWKBpu5Q7gzNtkloKmkMxo44/zVec7cg3qitCGwU7lMxVjOcuyTEfxLyrYiA2j27k9DBif+rkYg8lS6Hk8f0oXTiJsQO2suWUhpoP0oZofJIwJ/u/IPOdxcQg6pA7xiLvBnyMl0ad6HbZZSyNOBZmPhhNI7frCw6ag==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_lr.png|{{BlueprintString|bp-string=0eNqdld9qgzAUxl9lnOs4TBq19Rl6tdsxhrahBGyUGMuK+O476jqFxpGzq+DR75fv/DHpoaw61VhtHOQ96FNtWsjfe2j1xRTVGHP3RkEON21dhxEGpriOgfmLSMLAQJuz+oKcD8yj1E5dF5mzhWmb2rqoVJVbiYVXvLXtcaXckZRvK6UcPhgo47TTas57erh/mu5aKosZ/ao7VNiLrXGdnTNo6haFtRk3RVgkGNxxQTsPD3Xnmm5M8gksCOCYwN1RDHMCWBLAFG7yjwrzBazNBjfdmrhNKg4gnLVVp/ld6oFmwdDYyxQe5j7cKA82elimvqm0cxh7xsWvyaOeHgSP6R0PaQznwQnz4CJyEZIw/0k49ua7o06Mv2wywEn8p5GEfDYE1T2lHw1B3IzYT3/Z9pQGCi/iQKg8EvDon66mfHUHMqgK9I4xGU2Ql2qE3JRt539NSpGmmeDiMAzfI+ZmDA==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_r.png|{{BlueprintString|bp-string=0eNqlldFugzAMRX9l8nOYcEih5TP2Ok0TbaMqEgQUQjVU8e8LdAy0hirWniIM9+TajsMNjmUnG6O0hfwG6lTrFvL3G7TqootyjNm+kZDDVRnbuQgDXVRj4P5FJGBgoPRZfkGOAyMo31ZK7lUqK6tFZk2h26Y2NjrK0q7EyX/EYvhgILVVVsl76tND/6m76iiNS2qLwaCpWyer9birQ0WcQe+WZBgN/cHwX0znNjYXU7t1AxTPHDYnU3e26UbbD9yEwI2QABYEMIW7I9eT++qZkjHow2TBmHg2w+CsjDzdX3EPc7+c9KZU1rrYo6n4dffE1iHYFgbbwpjeUVw6qvRGQxFD8sWffGNfusip3fRWDZMAJ/FTI4I8pkEl2tGnNIibEs+Jv2wZpYHeacQ9ofKO4O7c6X7OV/8fBmXhvLuYiCbIy8i4StNOiFQInqYZR34Yhm/sYzpB}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taking two belts off of this wont produce two belts worth of output, the middle one only carries &#039;&#039;half a belt&#039;&#039; to each side!&lt;br /&gt;
As of 0.16 Splitters can prioritize one in- and output lane, therefore the above design can supply fully saturated belts, if the splitters are set up in a way that prioritizes the output belt (to earlier production) rather than letting items go on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following are two designs for a split-off off a 4-wide bus that feature an in-line lane-balancer(by reddit user [https://www.reddit.com/user/moomaka /u/moomaka]).&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=288px &amp;gt;&lt;br /&gt;
File:4-split_l_lane.png|{{BlueprintString|bp-string=0eNqVllFugzAMhq9S5WmToCUh0JYz7AbTNEGbVdEgQSFUQxV3n4ExsTVs8VOEyf/Z2I7DjRRlK2ojlSXZjciTVg3Jnm+kkReVl4PNdrUgGblKY1uwBETl1WCYdoSc9AGR6iw+SEb7AKF8WiiZUymtqBayupTWCrOQxR4ya3LV1NrYsBClXYh5/xIQoay0UkwfPT50r6qtCnCT0W9GCwpzMRrWiRKQWjcg1GrwC7AQNnewQERzGLq1dTs4vAMzBBjDjRHcCMHla8m8o7KZ6qAk3pTwCwNdQc7SiNP0jjugKRpKf0JTB3R/33OrBafb5H/gAV+Y32F6lOmI98LwXmiE795VN1KteaHehZ0L4eo5yrCty5yYGItxR8PxEyXqPZKV+DRstE1Goju01AMxEyInwefU0D9jOCCz7I7j6D8SphQ7S84iTE6dA49R9ElhHtVmDH3OvbAxon7u78XeE5B4uILH6zpb/IgEpMxBBjYejqFsSvFmNw9Ft9m1u0rrKn/PH2HbVZhmGiicszTdM8qOff8JVpvtyQ==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_r_lane.png|{{BlueprintString|bp-string=0eNqdlt1ugjAUx1/F9GpLitJDReUxdrssC2jjmkFLSjEjhndfwbkQLabHq4bC/3c+e8qZFGUraiOVJdmZyL1WDcnez6SRR5WXw57takEycpLGtm6HEpVXw8bli4iTnhKpDuKHZKynCOXbRAlepbSimsjqUlorzESWBMisyVVTa2OjQpR2Iub9ByVCWWmluAQ9PnSfqq0KZyZjcwxKat04mVaDVYeKEkq6YekHh24w8I9pnWFzNNqtcyB2BdFrNLq1dTv4fQdOMGBAgDkCHCO4a3RCmS+hKRoDPswmHAMPvNk+UV53UMhBGrG/vIOA3O2eKDbMmZFqxgqLn4gG8NGw8LPlN8J9UMBCb+vggyb3A2juELDlOgDIse0b+9qOrQP8imC5HhHezmVpCIL9IfxebEIQ8UMvtuhpE/cBnbzDptk7JCDGpNk//xn+TEFAhAD4kRDETTA19Ycc3uPxNffuMh4v7mzyS0JJmTuZ2+PR6MvCyOOXXbwU3WLVriqtq/w7f3XfnYRpRmjKOaTpBhjs+v4XLT/v+g==}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way in which materials are split off from the main bus determines which production setups in the factory are prioritized if the bus delivers less input than all the setups combined need. &lt;br /&gt;
The split-offs shown above generally prefer setups near the start of the main bus but will also supply some limited materials to the later setups. &lt;br /&gt;
There are alternative designs, for example using [[splitter]] priorities on can fully prefer the setups near the start of the main bus and only allow materials to go through to a later setup if that earlier setup&#039;s needs are satisfied. &lt;br /&gt;
The priorities can be set in various ways but this should not distract from the fact that more resource input should be added whenever this becomes a concern.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Tutorial:Transport_use_cases|What Transport for which case?]]&lt;br /&gt;
* [[Belt transport system]]&lt;br /&gt;
* [[Logistic network]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Splitter]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Main_bus&amp;diff=165168</id>
		<title>Tutorial:Main bus</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Main_bus&amp;diff=165168"/>
		<updated>2018-11-07T20:06:39Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Split-off */ Attempt at getting priority splitters into this. Could still use some work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:main_bus.jpg|thumb|400px|A main bus in use with several different items and some production]]&lt;br /&gt;
&amp;lt;!-- alternate first sentence: The concept of a &#039;&#039;&#039;Main bus&#039;&#039;&#039; is the order and central distribution of materials to assembling machines. --&amp;gt;&lt;br /&gt;
The concept of a &#039;&#039;&#039;Main Bus&#039;&#039;&#039; is to put the most used and useful ingredients in a central spot to use for assembling machines. &lt;br /&gt;
This is a good measure to combat &amp;quot;spaghetti factories&amp;quot; as it forces someone to plan a structured layout and move everything to use items from the bus.&lt;br /&gt;
Which is also a downside as there are more belts used and therefore more room for belt-buffer and everything is less compact.&lt;br /&gt;
&lt;br /&gt;
Whether one uses a bus is often decided before starting a map or when first building an array of furnaces.&lt;br /&gt;
&lt;br /&gt;
A bus often starts at the smelting of iron, copper and steel and then over time and distance gains more and more different items.&lt;br /&gt;
When one doesn&#039;t have enough production to saturate a belt (or splits it into more) then this can be called a &amp;quot;fake&amp;quot;-bus as it &#039;&#039;can not&#039;&#039; be saturated. &lt;br /&gt;
This is especially deceiving when the item isn&#039;t moving and all belts have filled up as these belts can&#039;t carry the amount they lead on to believe they can.&lt;br /&gt;
This can be done to reserve room for later expansion, blueprint-ghosts are a good usage for that as they don&#039;t allow the belt to be filled with non-usable items.&lt;br /&gt;
&lt;br /&gt;
The direction of a bus, being horizontal or vertical depends on personal preference and how one likes to work on the production that splits off it, which can almost always be expanded for greater use later on. &lt;br /&gt;
The orientation of and how wide the players monitor is also plays a role in this decision. &lt;br /&gt;
A corner is not unheard of but very unusual and is often only necessary when a lake appears that is not planned for.&lt;br /&gt;
&lt;br /&gt;
== Content ==&lt;br /&gt;
What items one puts on a bus is personal preference.&lt;br /&gt;
Some items are a good candidate to be built &amp;quot;on-site&amp;quot; meaning not carried by the bus but rather made where they are needed.&lt;br /&gt;
A good example for this are [[copper cable]]s as they consume more space on a belt than in form of copper plates.&lt;br /&gt;
&lt;br /&gt;
Here are some things people have put on their bus in the past:&lt;br /&gt;
* Several belts of [[Iron plate]]s, usually a multiple of four as that is the length one [[underground belt]] can go underneath of.&lt;br /&gt;
* Some belts of [[Copper plate]]s as well, usually less than Iron plates, as of 0.15 a lot less.&lt;br /&gt;
* [[Iron gear wheel]]s are seen on some buses as of 0.15 as they&#039;re taking up half as much room than iron plates (are denser) and see usage in a lot of recipes.&lt;br /&gt;
* [[Electronic circuit]]s and later on even &lt;br /&gt;
* [[Advanced circuit]]s though that may not be necessary as they just get used up quickly in other steps and aren&#039;t used in that many different products.&lt;br /&gt;
* [[Steel plate]]s.&lt;br /&gt;
* [[Processing unit]]s are rarely seen on a bus as they are used in even less recipes than the other mentioned intermediate products.&lt;br /&gt;
* [[Battery|Batteries]].&lt;br /&gt;
* [[Plastic bar]]s (sometimes replaces [[coal]] from where plastic is produced).&lt;br /&gt;
Each of these Items would get a dedicated line of belts from which one would draw from if there is need for the item.&lt;br /&gt;
&lt;br /&gt;
Some people like to have fluids part of their bus which could include:&lt;br /&gt;
* [[Sulfuric acid]] for processing units.&lt;br /&gt;
* [[Water]] for [[concrete]].&lt;br /&gt;
* [[Lubricant]] for [[express transport belt]].&lt;br /&gt;
&lt;br /&gt;
== Advice and Limitations ==&lt;br /&gt;
Having all possible items on a bus results in a huge wide bus with a lot of belt-buffer for expensive items and standing belts of output-items that wont get used in another process.&lt;br /&gt;
These items are often just put into [[chests]] for personal use rather than on a bus.&lt;br /&gt;
&lt;br /&gt;
The width of the bus can become a problem if it is very wide.&lt;br /&gt;
Players sometimes choose to only build on one side of the bus until they can estimate that they wont need more belts on the bus.&lt;br /&gt;
&lt;br /&gt;
It is advisable to leave &#039;&#039;space&#039;&#039; between the groups of belts of one item for underground belt to surface and for other things to cross the bus.&lt;br /&gt;
A recommended numbers is two free spaces for every group of four belts, although leaving more space can be useful too.&lt;br /&gt;
Same with the production that is to the side of the bus, leave space &#039;&#039;between the builds&#039;&#039; for later expansion or belts that go between, at least three, six to ten is fitting.&lt;br /&gt;
Grouping differing items together can cause problems when splitting them off, hence only groupings of two differing items is recommended. &lt;br /&gt;
Having smaller groups of only one or two is also not a bad thing.&lt;br /&gt;
&lt;br /&gt;
When [[logistic robot]]s are available one might start moving some items by robots instead of using the bus. &lt;br /&gt;
Some players eventually phase out the main bus entirely in favor of robots. &lt;br /&gt;
This may happen at a later stage in the game up to which a bus is a very good tool to reduce clutter. &lt;br /&gt;
But robots have their own difficulties and require a lot more resources and knowledge of the game.&lt;br /&gt;
&lt;br /&gt;
For very large amounts of items [[railway]]s may be a better alternative that can not only carry large amounts of ore but also the intermediate and end-products.&lt;br /&gt;
This can lead to designs of a base consisting of only train-stations with small [[logistic network]]s without any belts.&lt;br /&gt;
For a comparison of belt, logistic robot and railway transport systems, refer to the [[Tutorial:Transport_use_cases|Transport use cases tutorial]].&lt;br /&gt;
&lt;br /&gt;
One [https://redd.it/5gn30r reddit post] mentions the use of [[cargo wagon]]s as a means to increase throughput and reduce the size of a bus.&lt;br /&gt;
&lt;br /&gt;
== Split-off ==&lt;br /&gt;
When one wants to use the items on their bus one could directly take items off the bus as if it is just a belt, though that would mean an extremely long bus and useless lengths of other belts.&lt;br /&gt;
This is sometimes done to get Items crafted into a chest for personal use like [[pipe]] which only uses Iron plates.&lt;br /&gt;
However in most cases a belt is split away from the main bus that can deliver the resource to the factory. These split-off designs aren&#039;t strictly necessary but help immensely. They have the additional property that if the incoming belts are fully saturated then the split-off belt will be full (recall that a single splitter with a single full input belt will output two half-filled belts).&lt;br /&gt;
&lt;br /&gt;
With [[splitter]] priorities that were added in 0.16 it is very simple to split off a belt from a main bus while ensuring good throughput properties. The design shown here makes sure that the belts on the right side are filled first, so belts can be taken from the right every time without the need to further rebalance. Thus up to a full belt can be delivered and the remaining resources can go through on the main bus.&lt;br /&gt;
&lt;br /&gt;
[[File:4-split-priority.png]]&lt;br /&gt;
&lt;br /&gt;
Alternatively, one can make split-off setups without priority splitters. The idea is that one wants to draw from every belt (and lane even) equally to not have too few items at the current planned production and not have empty and at the same time standing belts of items.&lt;br /&gt;
That way at every step along the bus a few items are split off and used up and when the production comes to a stop the items go on to be used by the next production.&lt;br /&gt;
&lt;br /&gt;
The following are 2 designs for a split-off off a 2-wide bus (by reddit user [https://www.reddit.com/user/unique_2 /u/unique_2]).&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=320px &amp;gt;&lt;br /&gt;
File:2-split_variant_a.png|{{BlueprintString|bp-string=0eNqVld9ugyAUxl/FnKstwRbwT1sfY7fL0mhLHIlFh9DMGN99qO1mWrrCFfHI9+NwvgP0UFSaNZILBVkP/FCLFrL3HlpeirwaY6prGGRw5lJpE0Eg8tMYmGeEFAYEXBzZN2RkQB7Kt4WSWpVcsdNC1lRcKSYXsshBpmQu2qaWKixYpRbiePhAwITiirN509NHtxf6VJhlMvKIgaCpWyOrxbiqQYUUQWeGeBgTusFQdwz5BxN5ZxPZMLE3htowiTMGXykIjlyyw/wrtjBT70LdQKkFuvmFamO7LGVtxidY01bXXqq1avTYNXfgrW8hsa2Ou/v2tqS1SubEiA1BsKcX+HnVCPH1lzhAqb8X+M8KLh44QSKHIl6sxavEIVHvQ2I3JvEx13rMSOqCwBeEPYuN72as9wbZ+p5OgzEX7HQZZ4tnBkGVG52J0XDaUyB5+amCl6IL1nqtBf/SbE9fg9xMPTPZTuA0jmmabiihu2H4AQXcOK0=}}&lt;br /&gt;
&lt;br /&gt;
File:2-split_variant_b.png|{{BlueprintString|bp-string=0eNqVlNFugzAMRX8F+WmTwkpSSlc+Y6/TVEEbdZZoYMGphir+fYZOHVrTijwhQu7J9Y3xGcrK6caiIcjPgLvatJC/n6HFgymqYY26RkMOJ7TkeEWAKY7DwmVHrKAXgGavvyGXvQhQvk2UyqtE0seJrKmQSNuJbDlDRrYwbVNbiktd0USc9h8CtCEk1Jeix5dua9yx5GNyeY8hoKlbltVmOJVRMW/t+JH2g6F/GDUbkzygLIPNLH2YNBijfJjVbMzVjIA9Wr27fFIeZnZ707cJvaweuFpfCY6v2B5szc/HWQ++ftumdtS4oUFuuK+hoSU+d5sZ9cXXAqUPIZPA3L1GpAy9Pb8ZFRx38pc2mjthy+BO97tLQ+L2tpNcBXSk30QWWov3p5XrwBHCFJ5t4xzMJxNeQFWwjNdUPFYUWTx8UvRUdtHCLZzBL6e36jkqeetJ23bkZmmqsmytpNr0/Q+uzw2D}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Putting a lane-balancer after a split-off is not necessary most of the time as the rest moves on if the belt has no draw or if only one lane is used. &lt;br /&gt;
If there is enough input for the item to saturate a whole belt then putting a lane-balancer in wont help to get more items later on. &lt;br /&gt;
Putting a lane-balancer after an inherently balanced build that produces the item is also not necessary as then half of the production pauses and the other half fills the moving lane to saturation. &lt;br /&gt;
The following is a split-off off a 4-wide bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=256px &amp;gt;&lt;br /&gt;
File:4-split_l.png|{{BlueprintString|bp-string=0eNqlld1qhDAQhV+lzHUsxv/6DPsGpRTdDUvAjRLjUhHfvaPWVTBbMu1VcPR8OTOTMQOUVScaLZWBfAB5rlUL+fsArbyqoppipm8E5HCX2nQYYaCK2xRYvvAiGBlIdRFfkPOREZSnnTKwKqURt01mdKHaptbGK0VlduLwP+Jo/GAglJFGiiX1+aH/VN2tFBqTejA6VOirrnFdKAyaukVhraZ9EeYFDHpc0NFqo+5M000bHsABAewTuCHFMCeAo2fVPGAfVAsl/kM9+WZPqifuEmd3KxUPHVykFuflXWKBpu5Q7gzNtkloKmkMxo44/zVec7cg3qitCGwU7lMxVjOcuyTEfxLyrYiA2j27k9DBif+rkYg8lS6Hk8f0oXTiJsQO2suWUhpoP0oZofJIwJ/u/IPOdxcQg6pA7xiLvBnyMl0ad6HbZZSyNOBZmPhhNI7frCw6ag==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_lr.png|{{BlueprintString|bp-string=0eNqdld9qgzAUxl9lnOs4TBq19Rl6tdsxhrahBGyUGMuK+O476jqFxpGzq+DR75fv/DHpoaw61VhtHOQ96FNtWsjfe2j1xRTVGHP3RkEON21dhxEGpriOgfmLSMLAQJuz+oKcD8yj1E5dF5mzhWmb2rqoVJVbiYVXvLXtcaXckZRvK6UcPhgo47TTas57erh/mu5aKosZ/ao7VNiLrXGdnTNo6haFtRk3RVgkGNxxQTsPD3Xnmm5M8gksCOCYwN1RDHMCWBLAFG7yjwrzBazNBjfdmrhNKg4gnLVVp/ld6oFmwdDYyxQe5j7cKA82elimvqm0cxh7xsWvyaOeHgSP6R0PaQznwQnz4CJyEZIw/0k49ua7o06Mv2wywEn8p5GEfDYE1T2lHw1B3IzYT3/Z9pQGCi/iQKg8EvDon66mfHUHMqgK9I4xGU2Ql2qE3JRt539NSpGmmeDiMAzfI+ZmDA==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_r.png|{{BlueprintString|bp-string=0eNqlldFugzAMRX9l8nOYcEih5TP2Ok0TbaMqEgQUQjVU8e8LdAy0hirWniIM9+TajsMNjmUnG6O0hfwG6lTrFvL3G7TqootyjNm+kZDDVRnbuQgDXVRj4P5FJGBgoPRZfkGOAyMo31ZK7lUqK6tFZk2h26Y2NjrK0q7EyX/EYvhgILVVVsl76tND/6m76iiNS2qLwaCpWyer9birQ0WcQe+WZBgN/cHwX0znNjYXU7t1AxTPHDYnU3e26UbbD9yEwI2QABYEMIW7I9eT++qZkjHow2TBmHg2w+CsjDzdX3EPc7+c9KZU1rrYo6n4dffE1iHYFgbbwpjeUVw6qvRGQxFD8sWffGNfusip3fRWDZMAJ/FTI4I8pkEl2tGnNIibEs+Jv2wZpYHeacQ9ofKO4O7c6X7OV/8fBmXhvLuYiCbIy8i4StNOiFQInqYZR34Yhm/sYzpB}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taking two belts off of this wont produce two belts worth of output, the middle one only carries &#039;&#039;half a belt&#039;&#039; to each side!&lt;br /&gt;
As of 0.16 Splitters can prioritize one in- and output lane, therefore the above design can supply fully saturated belts, if the splitters are set up in a way that prioritizes the output belt (to earlier production) rather than letting items go on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following are two designs for a split-off off a 4-wide bus that feature an in-line lane-balancer(by reddit user [https://www.reddit.com/user/moomaka /u/moomaka]).&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=224px heights=288px &amp;gt;&lt;br /&gt;
File:4-split_l_lane.png|{{BlueprintString|bp-string=0eNqVllFugzAMhq9S5WmToCUh0JYz7AbTNEGbVdEgQSFUQxV3n4ExsTVs8VOEyf/Z2I7DjRRlK2ojlSXZjciTVg3Jnm+kkReVl4PNdrUgGblKY1uwBETl1WCYdoSc9AGR6iw+SEb7AKF8WiiZUymtqBayupTWCrOQxR4ya3LV1NrYsBClXYh5/xIQoay0UkwfPT50r6qtCnCT0W9GCwpzMRrWiRKQWjcg1GrwC7AQNnewQERzGLq1dTs4vAMzBBjDjRHcCMHla8m8o7KZ6qAk3pTwCwNdQc7SiNP0jjugKRpKf0JTB3R/33OrBafb5H/gAV+Y32F6lOmI98LwXmiE795VN1KteaHehZ0L4eo5yrCty5yYGItxR8PxEyXqPZKV+DRstE1Goju01AMxEyInwefU0D9jOCCz7I7j6D8SphQ7S84iTE6dA49R9ElhHtVmDH3OvbAxon7u78XeE5B4uILH6zpb/IgEpMxBBjYejqFsSvFmNw9Ft9m1u0rrKn/PH2HbVZhmGiicszTdM8qOff8JVpvtyQ==}}&lt;br /&gt;
&lt;br /&gt;
File:4-split_r_lane.png|{{BlueprintString|bp-string=0eNqdlt1ugjAUx1/F9GpLitJDReUxdrssC2jjmkFLSjEjhndfwbkQLabHq4bC/3c+e8qZFGUraiOVJdmZyL1WDcnez6SRR5WXw57takEycpLGtm6HEpVXw8bli4iTnhKpDuKHZKynCOXbRAlepbSimsjqUlorzESWBMisyVVTa2OjQpR2Iub9ByVCWWmluAQ9PnSfqq0KZyZjcwxKat04mVaDVYeKEkq6YekHh24w8I9pnWFzNNqtcyB2BdFrNLq1dTv4fQdOMGBAgDkCHCO4a3RCmS+hKRoDPswmHAMPvNk+UV53UMhBGrG/vIOA3O2eKDbMmZFqxgqLn4gG8NGw8LPlN8J9UMBCb+vggyb3A2juELDlOgDIse0b+9qOrQP8imC5HhHezmVpCIL9IfxebEIQ8UMvtuhpE/cBnbzDptk7JCDGpNk//xn+TEFAhAD4kRDETTA19Ycc3uPxNffuMh4v7mzyS0JJmTuZ2+PR6MvCyOOXXbwU3WLVriqtq/w7f3XfnYRpRmjKOaTpBhjs+v4XLT/v+g==}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way in which materials are split off from the main bus determines which production setups in the factory are prioritized if the bus delivers less input than all the setups combined need. &lt;br /&gt;
The split-offs shown above generally prefer setups near the start of the main bus but will also supply some limited materials to the later setups. &lt;br /&gt;
There are alternative designs, for example using [[splitter]] priorities on can fully prefer the setups near the start of the main bus and only allow materials to go through to a later setup if that earlier setup&#039;s needs are satisfied. &lt;br /&gt;
The priorities can be set in various ways but this should not distract from the fact that more resource input should be added whenever this becomes a concern.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Tutorial:Transport_use_cases|What Transport for which case?]]&lt;br /&gt;
* [[Belt transport system]]&lt;br /&gt;
* [[Logistic network]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Splitter]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:4-split-priority.png&amp;diff=165167</id>
		<title>File:4-split-priority.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:4-split-priority.png&amp;diff=165167"/>
		<updated>2018-11-07T19:52:04Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:4-split-priority.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{screenshot}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:4-split-priority.png&amp;diff=165166</id>
		<title>File:4-split-priority.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:4-split-priority.png&amp;diff=165166"/>
		<updated>2018-11-07T19:47:13Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: {{screenshot}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{screenshot}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Logistic_network&amp;diff=165121</id>
		<title>Logistic network</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Logistic_network&amp;diff=165121"/>
		<updated>2018-11-06T17:46:23Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:RoboTrainStation.gif|thumb|700x560px|right|&#039;&#039;This gif shows how robots can load or unload chests in a train station. The train  delivers items that are filled into [[active provider chest]]s and then put into the [[requester chest]]s to be loaded onto belts.&#039;&#039; Logistics robots are ideal in train stations, since very high item throughput on a short distance is needed.]]&lt;br /&gt;
&lt;br /&gt;
A [[Logistic network]] is a series of different logistics chests and [[Logistic robot]]s all covered by one or more connected [[Roboport]]s. &lt;br /&gt;
&lt;br /&gt;
Depending on the type and configuration of the chests and area of the [[Robotic network]] the robots will transport items between these chests as a power-hungry alternative to moving items manually, or by [[Belt transport system|belts]] or [[Railway]]. However, robots offer much higher mobility, since they can fly over obstacles in a beeline.&lt;br /&gt;
&lt;br /&gt;
The player character can also act as [[Requester chest]] in the [[Logistic network]], allowing them to &#039;request&#039; various items be kept at a set limit within their personal inventory. After [[Research|researching]] [[Character logistic slots (research)|Character logistic slots]], they can configure an amount of items; and [[Logistic robot]]s will start to move the specified items from the network to the character&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
Do not mix up logistics network and [[circuit network]]. They share common components, but are otherwise disconnected and do not exchange any information. Also, do not mix up logistic network with construction network or combinations of the two called [[Robotic network]].&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 220px;&amp;quot; |Entity&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| {{imagelink|Roboport}} || Center of the [[robotic network]] in which the [[Robots]] operate. Roboport coverage defines the area of the logistic network. Robots need to periodically return here to recharge.&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Logistic robot}} || Moves items between logistic chests.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Active provider chest}} || Logistic chest: Pushes stored items into the logistic network.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Passive provider chest}} || Logistic chest: Places stored items at the logistic network&#039;s disposal.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Storage chest}} || Logistic chest: Stores items currently not requested. Can be filtered to only store one type of item. Supplies stored items to the Logistic network.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Requester chest}} || Logistic chest: Will be filled by [[logistic robot]]s until the configured amount is reached, or the chest becomes full. Can request multiple different types of items.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Buffer chest}} || Logistic chest: Functions as both a [[requester chest]] and [[passive provider chest]].&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(1) Default capacity is 1 item per robot. This can be increased by researching [[Worker robot cargo size (research)]].&lt;br /&gt;
&lt;br /&gt;
(2) Logistic chests can also be connected to the [[Circuit network]] with [[red wire]] or [[green wire]].&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To start with, just use passive provider- and requester chests. Place the passive provider chests at the output [[inserters]] of [[assembling machine]]s and requester chests at the input (let them request the needed items). Place a [[roboport]], which covers these chests with the inner orange area. Place some logistic bots in the roboport. The robots will fly out of the top hatch and will begin to work. You can now limit the number of produced item with the [[Stack#Stack limitation|stack limitation]]-feature.&lt;br /&gt;
&lt;br /&gt;
The logistic network is makes it possible to create complex items in a relatively small factory area, but its throughput is limited by how many robot charge points (roboports) exist in the network.&lt;br /&gt;
&lt;br /&gt;
[[File:Roboport_network_gui.png|thumb|right|200px|Supply area 50x50 tiles (orange); Construction area 110x110 tiles (green)]]&lt;br /&gt;
The basic thing needed for item transportation is [[roboport]]s. The roboport shows the orange logistic coverage and the green construction coverage when held in the cursor or hovered after placing.&lt;br /&gt;
&lt;br /&gt;
* The orange zone is the logistic network coverage. This is also the maximum distance for connecting two roboports.&lt;br /&gt;
* The green zone is the construction area.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;For more info on the specifics of how [[roboport]]s work, check the page dedicated to them.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Expanding the logistic zone ===&lt;br /&gt;
&lt;br /&gt;
There can be many separate logistic networks. Two roboports are in the same network only if they are connected, so if their logistic areas are touching. Visually this is represented by a dashed yellow line connecting them.&lt;br /&gt;
To prevent roboports from linking, the player needs to build them far enough away from each other so that the orange zones don&#039;t touch.&lt;br /&gt;
&lt;br /&gt;
Bots do not fly migrate from one network to another, unless their home network is destroyed in some way, for example when all roboports are removed or out of power.&lt;br /&gt;
&lt;br /&gt;
=== Losing bots ===&lt;br /&gt;
&lt;br /&gt;
Logistics robots are a priority target of biters, and the [[enemies]] will prioritize attacking them over many objects in the vicinity of the robots.&lt;br /&gt;
&lt;br /&gt;
Bots are not destroyed when running out of energy, but will be reduced to 20% of their speed, which allows them to slowly fly to the next recharge point.&lt;br /&gt;
&lt;br /&gt;
Robots may run out of charge on longer journeys. When the charging-queue for the bots gets too long, the bots (and their loads) will slow down. Generally, a roboport can charge between 50 and 70 bots per min, 4 at a time, but are not very efficient at charging large queues of bots and can quickly become overworked. Place more roboports near the first one to share the load.&lt;br /&gt;
&lt;br /&gt;
=== Negative numbers ===&lt;br /&gt;
It is possible to notice negative numbers on the &#039;Logistic Network&#039;-Screen when looking at network storage or opening the logistic networks GUI the with {{Keybinding|L}}.&lt;br /&gt;
&lt;br /&gt;
The logistic network numbers report items in provider and storage chests, &#039;&#039;minus the amount of items scheduled to be picked up by robots.&#039;&#039; When negative numbers are shown, it means that more items are being requested than are available in the network. There is a deficit. This can be a problem, or intended, depending on the player&#039;s choice. The negative value is just to explain why items aren&#039;t being delivered. For example, a deficit of 20 iron plates would look like this:&lt;br /&gt;
&lt;br /&gt;
{{icon|iron plate|-20}}&lt;br /&gt;
&lt;br /&gt;
=== Receiving more items than requested ===&lt;br /&gt;
&lt;br /&gt;
The delivered number of items in the requester chest can be higher than requested. This depends on the researched [[Worker robot cargo size (research)|Worker robot cargo size]]-bonus, since bots will always take as much as they can carry if an unlimited amount is available.&lt;br /&gt;
&lt;br /&gt;
== Priorities of robots ==&lt;br /&gt;
&lt;br /&gt;
This overview reflects the priorities in which order the chests are filled/emptied.&lt;br /&gt;
&lt;br /&gt;
Logistic robots on the logistic network look for orders by the chests in this order:&lt;br /&gt;
&lt;br /&gt;
* A requested item is first &#039;&#039;looked up&#039;&#039; in the player&#039;s trash slots, then in active provider chests, then in buffer chests (only for character logistic slot requests), then in the storage chests, then the passive provider chests. So, the active provider chests are emptied first, then the buffer chests, then the storage chests, then the passive provider chests.&lt;br /&gt;
&lt;br /&gt;
* Requests are &#039;&#039;assigned&#039;&#039; first for player logistics, then for requester chests, then for buffer chests.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source Priority &lt;br /&gt;
| {{icon|Character logistic trash slots (research)}}  {{icon|active provider chest}}  {{icon|storage chest}}  {{icon|buffer chest}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;  {{icon|passive provider chest}}&lt;br /&gt;
! Target Priority &lt;br /&gt;
| {{icon|Character logistic slots (research)}} {{icon|requester chest}} {{icon|buffer chest}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(1) Player Logistic Slots Only&lt;br /&gt;
&lt;br /&gt;
Storage chests will be filled with items from active provider chests, from robots that have had their orders cancelled while they were carrying items, and from the player&#039;s logistic trash slots.&lt;br /&gt;
&lt;br /&gt;
* To place items into storage chests, the bots search for a storage chest which has its filter set to the item type, then for one that already stores items of the same type. If that can&#039;t be found, they choose the first storage chest with a free slot from the list, which is sorted by the order they were built in. [https://www.reddit.com/r/factorio/comments/5udwkd/hey_devs_this_is_the_one_thing_that_really_bugs/ddwbr94/] This is to avoid having storage chests with different items inside, allowing greater organisation.&lt;br /&gt;
&lt;br /&gt;
=== Distance ===&lt;br /&gt;
When looking to pick up requested items from multiple chests of equal priority, bots will always choose the closest one. [https://forums.factorio.com/viewtopic.php?f=6&amp;amp;t=40329&amp;amp;p=238918#p238901] This is however only true when an item is being requested, not when an item is sent away. [https://gfycat.com/HatefulUnlawfulErmine] In the case of items being sent into the logistics network distance does not matter, and the rules laid out above matter instead.&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|you-have-got-a-package}}&lt;br /&gt;
{{Achievement|delivery-service}}&lt;br /&gt;
{{Achievement|logistic-network-embargo}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Robotic network]]&lt;br /&gt;
* [[Roboport]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Logistic network]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Logistic_network&amp;diff=165120</id>
		<title>Logistic network</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Logistic_network&amp;diff=165120"/>
		<updated>2018-11-06T17:30:49Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Priorities of robots */  Added Priority Table, Cleanup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
[[File:RoboTrainStation.gif|thumb|700x560px|right|&#039;&#039;This gif shows how robots can load or unload chests in a train station. The train  delivers items that are filled into [[active provider chest]]s and then put into the [[requester chest]]s to be loaded onto belts.&#039;&#039; Logistics robots are ideal in train stations, since very high item throughput on a short distance is needed.]]&lt;br /&gt;
&lt;br /&gt;
A [[Logistic network]] is a series of different logistics chests and [[Logistic robot]]s all covered by one or more connected [[Roboport]]s. &lt;br /&gt;
&lt;br /&gt;
Depending on the type and configuration of the chests and area of the [[Robotic network]] the robots will transport items between these chests as a power-hungry alternative to moving items manually, or by [[Belt transport system|belts]] or [[Railway]]. However, robots offer much higher mobility, since they can fly over obstacles in a beeline.&lt;br /&gt;
&lt;br /&gt;
The player character can also act as [[Requester chest]] in the [[Logistic network]], allowing them to &#039;request&#039; various items be kept at a set limit within their personal inventory. After [[Research|researching]] [[Character logistic slots (research)|Character logistic slots]], they can configure an amount of items; and [[Logistic robot]]s will start to move the specified items from the network to the character&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
Do not mix up logistics network and [[circuit network]]. They share common components, but are otherwise disconnected and do not exchange any information. Also, do not mix up logistic network with construction network or combinations of the two called [[Robotic network]].&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|you-have-got-a-package}}&lt;br /&gt;
{{Achievement|delivery-service}}&lt;br /&gt;
{{Achievement|logistic-network-embargo}}&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;width: 220px;&amp;quot; |Entity&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| {{imagelink|Roboport}} || Center of the [[robotic network]] in which the [[Robots]] operate. Roboport coverage defines the area of the logistic network. Robots need to periodically return here to recharge.&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Logistic robot}} || Moves items between logistic chests.&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Active provider chest}} || Logistic chest: Pushes stored items into the logistic network.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Passive provider chest}} || Logistic chest: Places stored items at the logistic network&#039;s disposal.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Storage chest}} || Logistic chest: Stores items currently not requested. Can be filtered to only store one type of item. Supplies stored items to the Logistic network.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Requester chest}} || Logistic chest: Will be filled by [[logistic robot]]s until the configured amount is reached, or the chest becomes full. Can request multiple different types of items.&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{Imagelink|Buffer chest}} || Logistic chest: Functions as both a [[requester chest]] and [[passive provider chest]].&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(1) Default capacity is 1 item per robot. This can be increased by researching [[Worker robot cargo size (research)]].&lt;br /&gt;
&lt;br /&gt;
(2) Logistic chests can also be connected to the [[Circuit network]] with [[red wire]] or [[green wire]].&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To start with, just use passive provider- and requester chests. Place the passive provider chests at the output [[inserters]] of [[assembling machine]]s and requester chests at the input (let them request the needed items). Place a [[roboport]], which covers these chests with the inner orange area. Place some logistic bots in the roboport. The robots will fly out of the top hatch and will begin to work. You can now limit the number of produced item with the [[Stack#Stack limitation|stack limitation]]-feature.&lt;br /&gt;
&lt;br /&gt;
The logistic network is makes it possible to create complex items in a relatively small factory area, but its throughput is limited by how many robot charge points (roboports) exist in the network.&lt;br /&gt;
&lt;br /&gt;
[[File:Roboport_network_gui.png|thumb|right|200px|Supply area 50x50 tiles (orange); Construction area 110x110 tiles (green)]]&lt;br /&gt;
The basic thing needed for item transportation is [[roboport]]s. The roboport shows the orange logistic coverage and the green construction coverage when held in the cursor or hovered after placing.&lt;br /&gt;
&lt;br /&gt;
* The orange zone is the logistic network coverage. This is also the maximum distance for connecting two roboports.&lt;br /&gt;
* The green zone is the construction area.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;For more info on the specifics of how [[roboport]]s work, check the page dedicated to them.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Expanding the logistic zone ===&lt;br /&gt;
&lt;br /&gt;
There can be many separate logistic networks. Two roboports are in the same network only if they are connected, so if their logistic areas are touching. Visually this is represented by a dashed yellow line connecting them.&lt;br /&gt;
To prevent roboports from linking, the player needs to build them far enough away from each other so that the orange zones don&#039;t touch.&lt;br /&gt;
&lt;br /&gt;
Bots do not fly migrate from one network to another, unless their home network is destroyed in some way, for example when all roboports are removed or out of power.&lt;br /&gt;
&lt;br /&gt;
=== Losing bots ===&lt;br /&gt;
&lt;br /&gt;
Logistics robots are a priority target of biters, and the [[enemies]] will prioritize attacking them over many objects in the vicinity of the robots.&lt;br /&gt;
&lt;br /&gt;
Bots are not destroyed when running out of energy, but will be reduced to 20% of their speed, which allows them to slowly fly to the next recharge point.&lt;br /&gt;
&lt;br /&gt;
Robots may run out of charge on longer journeys. When the charging-queue for the bots gets too long, the bots (and their loads) will slow down. Generally, a roboport can charge between 50 and 70 bots per min, 4 at a time, but are not very efficient at charging large queues of bots and can quickly become overworked. Place more roboports near the first one to share the load.&lt;br /&gt;
&lt;br /&gt;
=== Negative numbers ===&lt;br /&gt;
It is possible to notice negative numbers on the &#039;Logistic Network&#039;-Screen when looking at network storage or opening the logistic networks GUI the with {{Keybinding|L}}.&lt;br /&gt;
&lt;br /&gt;
The logistic network numbers report items in provider and storage chests, &#039;&#039;minus the amount of items scheduled to be picked up by robots.&#039;&#039; When negative numbers are shown, it means that more items are being requested than are available in the network. There is a deficit. This can be a problem, or intended, depending on the player&#039;s choice. The negative value is just to explain why items aren&#039;t being delivered. For example, a deficit of 20 iron plates would look like this:&lt;br /&gt;
&lt;br /&gt;
{{icon|iron plate|-20}}&lt;br /&gt;
&lt;br /&gt;
=== Receiving more items than requested ===&lt;br /&gt;
&lt;br /&gt;
The delivered number of items in the requester chest can be higher than requested. This depends on the researched [[Worker robot cargo size (research)|Worker robot cargo size]]-bonus, since bots will always take as much as they can carry if an unlimited amount is available.&lt;br /&gt;
&lt;br /&gt;
== Priorities of robots ==&lt;br /&gt;
&lt;br /&gt;
This overview reflects the priorities in which order the chests are filled/emptied.&lt;br /&gt;
&lt;br /&gt;
Logistic robots on the logistic network looks for orders by the chests in this order:&lt;br /&gt;
&lt;br /&gt;
* A requested item is first &#039;&#039;looked up&#039;&#039; in the player&#039;s trash slots, then in active provider chests, then in buffer chests (only for character logistic slot requests), then in the storage chests, then the passive provider chests. So, the active provider chests are emptied first, then the buffer chests, then the storage chests, then the passive provider chests.&lt;br /&gt;
&lt;br /&gt;
* Requests are &#039;&#039;assigned&#039;&#039; first for player logistics, then for requester chests, then for buffer chests.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Source Priority &lt;br /&gt;
| {{icon|Character logistic trash slots (research)}}  {{icon|active provider chest}}  {{icon|storage chest}}  {{icon|buffer chest}}(*)  {{icon|passive provider chest}}&lt;br /&gt;
! Target Priority &lt;br /&gt;
| {{icon|Character logistic slots (research)}} {{icon|requester chest}} {{icon|buffer chest}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Player Logistic Slots Only&lt;br /&gt;
&lt;br /&gt;
Storage chests will be filled with items from active provider chests, from robots that have had their orders cancelled while they were carrying items, and from the player&#039;s logistic trash slots.&lt;br /&gt;
&lt;br /&gt;
* To place items into storage chests, the bots search for a storage chest which has its filter set to the item type, then for one that already stores items of the same type. If that can&#039;t be found, they choose the first storage chest with a free slot from the list, which is sorted by the order they were built in. [https://www.reddit.com/r/factorio/comments/5udwkd/hey_devs_this_is_the_one_thing_that_really_bugs/ddwbr94/] This is to avoid having storage chests with different items inside, allowing greater organisation.&lt;br /&gt;
&lt;br /&gt;
=== Distance ===&lt;br /&gt;
When looking to pick up requested items from multiple chests of equal priority, bots will always choose the closest one. [https://forums.factorio.com/viewtopic.php?f=6&amp;amp;t=40329&amp;amp;p=238918#p238901] This is however only true when an item is being requested, not when an item is sent away. [https://gfycat.com/HatefulUnlawfulErmine] In the case of items being sent into the logistics network distance does not matter, and the rules laid out above matter instead.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Robotic network]]&lt;br /&gt;
* [[Roboport]]&lt;br /&gt;
* [[Logistic robot]]&lt;br /&gt;
* [[Construction robot]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Logistic network]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Rail_chain_signal&amp;diff=165119</id>
		<title>Rail chain signal</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Rail_chain_signal&amp;diff=165119"/>
		<updated>2018-11-06T16:36:49Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* See also */  Added link to the train signal tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Rail chain signal}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rail chain signals&#039;&#039;&#039; are used for automated transportation on a [[Railway|railway network]]. With rail chain signals, it is possible to use multiple trains on a single track, or multiple rails that intertwine.&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
* The best prerequisite to understand chain signals is to understand [[Rail signal| signal blocks]].&lt;br /&gt;
* Rail chain signals are placed like block signals at the right side of a [[Railway#Rail Glossary|segment]].&lt;br /&gt;
* They work similar to pre-signals in OpenTTD.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
While normal signal prevents train from entering the occupied block, chain signal prevents train from entering the block also when the exit isn&#039;t free. When more exits exist, the one relevant to the train path is taken into account.&lt;br /&gt;
&lt;br /&gt;
== Usage examples ==&lt;br /&gt;
&#039;&#039;&#039;Regular signal compared to a chain signal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With a regular signal, the block it guards is empty, so the train can go there.&lt;br /&gt;
&lt;br /&gt;
[[File:Regular-signals.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chain signal with one exit doesn&#039;t allow the train to enter the block, as the exit is occupied.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-basic.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simple example with practical usage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The chain signal prevents the train from blocking the other route while waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Double crossing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Double crossings are the cause of train jams often, as trains tend to get blocked in the middle of the crossing. It can even cause total deadlock, which require manual intervention to fix the problem. With chain signals, the non-blocking rails are still separated, but trains won&#039;t stay in the middle of the crossing.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock prevention&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One of the typical situation with train deadlock problem is the usage of single train line for both direction with occasional bypasses. The example of the blocked situation with regular signals.&lt;br /&gt;
&lt;br /&gt;
[[File:train-deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With chain signals, this problem can be totally avoided by preventing the train from going to the shared section unless it can exit it.&lt;br /&gt;
&lt;br /&gt;
[[File:chain-signal-prevents-deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
Some good pictures are at the [http://www.factorio.com/blog/post/fff-81 Friday Facts #81] page.&lt;br /&gt;
&lt;br /&gt;
[[File:railchainsignal_anim.png]]&lt;br /&gt;
&lt;br /&gt;
* If the chain signal has only one exit, it doesn&#039;t allow the train to enter its block, if the exit block (which has a [[rail signal]]) is occupied.&lt;br /&gt;
* If in the block of the chain signal is a crossing, trains that cross the block can pass it, because a train waits before the chain signal, if the exit block isn&#039;t free.&lt;br /&gt;
* If there are more than one chain signal blocks before a regular block, a train waits before the first chain signal if the regular block isn&#039;t free.&lt;br /&gt;
&lt;br /&gt;
* If a chain signal switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#55FF55&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;&#039;&#039;&#039;, all exits are free.&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FFFF55&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt;&#039;&#039;&#039;, the block is reserved for a train and the signals of intersection blocks switch to red (like regular signal).&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#FF5555&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt;&#039;&#039;&#039;, no exit is free.&lt;br /&gt;
* If it switches to &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color:#8888FF&amp;quot;&amp;gt;blue&amp;lt;/span&amp;gt;&#039;&#039;&#039;, at least one exit is free.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Tutorial: Train signals]]&lt;br /&gt;
&lt;br /&gt;
{{LogisticsNav}}&lt;br /&gt;
{{C|Transport}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Rail_signal&amp;diff=165118</id>
		<title>Rail signal</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Rail_signal&amp;diff=165118"/>
		<updated>2018-11-06T16:33:25Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Added link to signal tutorial. Removed section on bypasses.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
{{:Infobox:Rail signal}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;rail signal&#039;&#039;&#039; divides rails into &#039;&#039;blocks&#039;&#039; and allows [[locomotive]]s to react to other locomotives allowing multiple trains use the same rails without colliding. Blocks span all connected rails regardless if a train can actually travel between them.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks.png|thumb|Signals dividing rails into blocks. Each block is highlighted with a different color.]]&lt;br /&gt;
&lt;br /&gt;
== Direction ==&lt;br /&gt;
Which block a signal monitors depends on which side of a rail it is placed. When a signal is on the right-hand side of the track it monitors the block in front of it. When placing rail signals the opposite signal positions will be highlighted in white. If a signal doesn&#039;t have a signal opposite of it locomotives will only be allowed to travel in the direction that has a signal on the right-hand side.&lt;br /&gt;
&lt;br /&gt;
== States ==&lt;br /&gt;
[[File:railsignal_anim.png]]&lt;br /&gt;
&lt;br /&gt;
Rail signals have four states:&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#55FF55&amp;quot;&amp;gt;Green&amp;lt;/span&amp;gt; - The monitored block is empty.&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#de8800&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; - A train is not able to stop before the monitored block and will pass the signal. The [[debug mode|debug option]] &amp;lt;code&amp;gt;show_train_stop_point&amp;lt;/code&amp;gt; can be used to see the distance locomotives need to stop.&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#ee7777&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; - The monitored block is not empty or another signal monitoring it is orange.&lt;br /&gt;
* [[File:blinking_text.gif]] - The signal is not on a rail, or the monitored block is also the block before the signal.&lt;br /&gt;
&lt;br /&gt;
When a signal is red locomotives will stop before it. A [[rail chain signal]] can be used to make locomotives stop earlier.&lt;br /&gt;
&lt;br /&gt;
== Circuit network ==&lt;br /&gt;
[[File:Rail_signal_circuit_network_gui.png|thumb|The interface for configuring a circuit network connection for a rail signal.]]&lt;br /&gt;
A circuit network condition can be configured that when true will make the rail signal red.&lt;br /&gt;
&lt;br /&gt;
A rail signal can also output three different signals depending on if it is in its green, orange or red state. If a rail signal is red because of a circuit network condition the rail signal won&#039;t output a circuit network signal.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
{{history|0.13.0|&lt;br /&gt;
* The rail signal is now connectable to the circuit network.&lt;br /&gt;
* Halved the mining time of the rail signal.&lt;br /&gt;
* Rail signal stop placement indicator added.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.11.4|&lt;br /&gt;
* Rail signal that fails to divide two sections of rail will blink multiple colors.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.9.0|&lt;br /&gt;
* Players no longer collide with the rail signal.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.5.0|&lt;br /&gt;
* Players can now see a visualization of the protected rail area when building/selecting the signal.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.1|&lt;br /&gt;
* Rail signals connect to more than one rail when connected to a junction.}}&lt;br /&gt;
&lt;br /&gt;
{{history|0.4.0|&lt;br /&gt;
* Introduced}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Rail chain signal]]&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Tutorial:Train signals]]&lt;br /&gt;
&lt;br /&gt;
=== External links ===&lt;br /&gt;
* [http://imgur.com/a/zG13U#0 Tutorial image album on rail signals]&lt;br /&gt;
* [http://wiki.openttd.org/Signals#Block_signals Block signals in the game OpenTTD]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Railway_signalling#Block_signalling Block signals in real life]&lt;br /&gt;
&lt;br /&gt;
{{LogisticsNav}}&lt;br /&gt;
{{C|Transport}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Railway&amp;diff=164802</id>
		<title>Railway</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Railway&amp;diff=164802"/>
		<updated>2018-10-09T20:52:56Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Content of the rail signal and deadlocks sections has been moved to the rail signals tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
:&#039;&#039;For the research see [[Railway (research)]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Railway&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
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 upkeep of a larger train network takes time and experience.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Minimum manually operated railway ===&lt;br /&gt;
As a minimum a manually operated railway has to consist of:&lt;br /&gt;
* [[Rail]]s (tracks)&lt;br /&gt;
* [[Locomotive]]s&lt;br /&gt;
&lt;br /&gt;
Locomotives can be entered and then manually operated by standing next to them and pressing the {{Key|ENTER}} button.&lt;br /&gt;
&lt;br /&gt;
=== Switches ===&lt;br /&gt;
* 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.&lt;br /&gt;
* The crossing of two straight tracks is not usable as switch, as trains have a limited turning radius. They do, however, connect [[Rail signal| signal blocks]] which helps prevent collisions.&lt;br /&gt;
* 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)&lt;br /&gt;
&lt;br /&gt;
[[File:fff-140-controlled-gates.gif|thumb|An example of a safe railway crossing.]]&lt;br /&gt;
=== Crossing tracks ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be careful when crossing tracks! Trains are one of the highest damaging entities in the game, and will kill most players instantly on contact.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A checklist of proper track crossing etiquette:&lt;br /&gt;
&lt;br /&gt;
# Zoom out, so that you can see a train coming.&lt;br /&gt;
# Look left, then right.&lt;br /&gt;
# 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.&lt;br /&gt;
# Avoid walking near the tracks, as you do not need to be fully on the tracks to get hit.&lt;br /&gt;
# 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.&lt;br /&gt;
# 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&#039;s energy.&lt;br /&gt;
# 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!&lt;br /&gt;
# 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.&lt;br /&gt;
&lt;br /&gt;
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&#039;t get on the tracks outside the crossing. This is to completely ensure a safe crossing, and is often used on servers.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Trains ==&lt;br /&gt;
Train components:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Locomotive}} || {{Imagelink|Cargo wagon}} || {{Imagelink|Fluid wagon}} || {{Imagelink|Artillery wagon}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Railway-assemble-train.png|thumb|left|300px|Placing a [[Cargo wagon]] so it is attached to the train.]]&lt;br /&gt;
&lt;br /&gt;
* A train consists of at least one locomotive.&lt;br /&gt;
* Trains can have more than one locomotive, and any number of [[Wagon]]s.&lt;br /&gt;
* Locomotives can be &#039;&#039;&#039;manually&#039;&#039;&#039; driven forwards or backwards, however, they are generally slower going backwards. The left and right movement keys are used to change direction at switches.&lt;br /&gt;
* 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.&lt;br /&gt;
* 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 on automatic mode.&lt;br /&gt;
&lt;br /&gt;
The locomotives&#039; 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 either 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 was placed far away from a train. Rolling stock can likewise be disconnected with the rolling stock disconnect key. The cargo wagons can be filled or emptied manually or by up to twelve adjacent [[Inserters]] (six on each side), while fluid wagons can be filled or emptied with up to three [[pump]]s, which will automatically connect to the nipples on top.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
[[File:station-example-1.png|thumb|right|256px|A very minimal train station.]]&lt;br /&gt;
Station Components:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|{{Imagelink|Train stop}} || {{Imagelink|Straight rail|Rail|Rails}} || {{Imagelink|Inserter|Inserters}} or {{Imagelink|pump|pump|Pumps}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;train station&#039;&#039;&#039; is a combination of at least one [[train stop]] plus a [[storage]] and/or distribution system, used to fill or empty [[cargo wagon]]s and/or [[fluid wagon]]s, load [[fuel]] into the [[Locomotive|locomotive(s)]], load ammunition into [[artillery wagon]]s, or repair trains.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Don&#039;t mix up &#039;&#039;train stations&#039;&#039; with &#039;&#039;train stops&#039;&#039;.&#039;&#039;&#039; A train station is a concept, whereas a [[train stop]] is an item.&lt;br /&gt;
&lt;br /&gt;
[[Inserter]]s placed next to train tracks are used to load/unload trains at train stops. Inserters are the only way to automatically get items out of and into cargo and artillery wagons; pumps are the only way to automatically get fluids into and out of fluid wagons.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Signals ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{Imagelink|Rail signal}} || {{Imagelink|Rail chain signal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The [[Tutorial:Train signals|train signals tutorial]] contains an in-depth explanation of rail signals, blocks and deadlocks.&lt;br /&gt;
&lt;br /&gt;
=== Basic Signaling Rules ===&lt;br /&gt;
* There can only be one train in a block at any time. A train spanning multiple blocks occupies them all.&lt;br /&gt;
* A red signal means that the following block is occupied by a train.&lt;br /&gt;
* A yellow signal means that a train is approaching and already has the approval to enter the following block.&lt;br /&gt;
* [[Rail signal]]s separate a new block and reflect its state: green - free, yellow - reserved, red - occupied&lt;br /&gt;
* [[Rail chain signal]]s separate a new block and reflect the state of the next [[Rail signal]](s): see above, blue - at least one of the paths is blocked, but not all&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
== Automated transport ==&lt;br /&gt;
[[File:train-schedule-gui.png|thumb|300px|The scheduale tab in the train GUI: 1 - switch between automatic and manual driving mode; 2 - add new train station; 3 - delete selected station; 4 - send train to selected station; 5 - add wait condition for selected station; 6 - delete selected wait condition; 7 - change logical mode of selected wait condition]]&lt;br /&gt;
&lt;br /&gt;
Trains set on &amp;quot;Automatic&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
This section covers items used to make trains automatically transport items between stations. The player should be familiar with creating a rail system.&lt;br /&gt;
&lt;br /&gt;
First, the player has to setup a rail system with at least two train stops, which are placed in 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, refueling/repair installations).&lt;br /&gt;
&lt;br /&gt;
When you set up the train schedule (see below) and fuel the train, you can start the train on it&#039;s schedule by switching from manual to automatic driving mode.&lt;br /&gt;
&lt;br /&gt;
=== Train schedule ===&lt;br /&gt;
The player can set up a list of train stations in the upper window. The train will route to stops in the given order, if it&#039;s at the end it will continue with the first. Currently, it&#039;s not possible to make a one-time schedule. Stations can be added by clicking button 2 (see picture). A pop-up appears with a list of all stop names. If you select one, another pop-up appears for you to select a wait condition.&lt;br /&gt;
&lt;br /&gt;
Wait conditions are used to tell the train when to leave the station. There are 7 types of wait conditions:&lt;br /&gt;
* &#039;&#039;&#039;Time passed&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Inventory full&#039;&#039;&#039; – All inventories of the train are full.&lt;br /&gt;
* &#039;&#039;&#039;Inventory empty&#039;&#039;&#039; – Same as above, but empty.&lt;br /&gt;
* &#039;&#039;&#039;Item count&#039;&#039;&#039; – The train (all cargoes summed) contains a specific amount of a certain item.&lt;br /&gt;
* &#039;&#039;&#039;Circuit condition&#039;&#039;&#039; – The train stop is connectable to the [[Circuit network]], so the signals can used for wait conditions.&lt;br /&gt;
* &#039;&#039;&#039;Inactivity&#039;&#039;&#039; – No items were added or removed for the specified amount of seconds.&lt;br /&gt;
* &#039;&#039;&#039;Fluid count&#039;&#039;&#039; – The train (all fluid wagons summed) contains a specific amount of a certain fluid.&lt;br /&gt;
&lt;br /&gt;
Hereafter the word &amp;quot;term&amp;quot; is used to describe &#039;&#039;one&#039;&#039; type of wait condition, and the words &amp;quot;wait condition&amp;quot; are used to describe the whole set of terms (it turns a bit into maths).&lt;br /&gt;
&lt;br /&gt;
If you add more than one term, you can change the connection of those using the logical operators AND and OR (button 7). 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
Expand for examples&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
Wait until full, up to 30 seconds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until cargo full, &#039;&#039;or&#039;&#039; circuit condition Oil &amp;gt; 3000:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Full cargo inventory&lt;br /&gt;
OR Circuit condition - Oil &amp;gt; 3000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until empty, &#039;&#039;and&#039;&#039; 30 seconds passed, &#039;&#039;and&#039;&#039; 5 seconds of inactivity:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Empty cargo inventory&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
AND 5 seconds of inactivity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait until iron ore is low, &#039;&#039;or&#039;&#039; copper ore is low &#039;&#039;and&#039;&#039; at least 30 seconds passed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cargo: Iron ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
OR Cargo: Copper ore &amp;lt; 500&lt;br /&gt;
AND 30 seconds passed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Factorio&#039;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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 AND 30 seconds passed) OR (Cargo: Copper ore &amp;lt; 500 AND 30 seconds passed))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which is the same as this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;((Cargo: Iron ore &amp;lt; 500 OR Cargo: Copper ore &amp;lt; 500) AND 30 seconds passed)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is no way to write that shorter form in the current UI.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
Below are some things to verify if a rail system or train is not working.&lt;br /&gt;
&lt;br /&gt;
* Is the train fueled? Ensure that the locomotive has [[fuel]] of some kind.&lt;br /&gt;
* Misplaced or non-functional switches? Ensure that the train can plan a path through the switches.&lt;br /&gt;
* Another train on the same [[Railway#Block|block]]? Make sure the path of the train is unobstructed.&lt;br /&gt;
* Train stops placed correctly? Make sure that the yellow arrows when hovering on the stop point towards the end or exit of the stop.&lt;br /&gt;
* Is the train allowed to enter signals from the right direction? Are the signals set correctly?&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==== No path ====&lt;br /&gt;
When trains cannot reach the target, a &amp;quot;no path&amp;quot; symbol pops up over the locomotive. Check:&lt;br /&gt;
* Can the train reach its current destination by &#039;&#039;&#039;only driving forward&#039;&#039;&#039;? Build turning slopes or place a locomotive at both ends of a train!&lt;br /&gt;
* Are the train stops standing in the right direction? Train stops must be on the right hand side of the track.&lt;br /&gt;
* If you use rail signals, check that the signals are all allowing traffic in the correct direction.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
If you are still having problems, consider:&lt;br /&gt;
* 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.&lt;br /&gt;
[http://imgur.com/a/Nq2Yk A pictorial summary of typical problems].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- These tutorials are no longer included because they are outdated. However, this section can be put back into the article when there are newer or in-wiki tutorials&lt;br /&gt;
&lt;br /&gt;
== User tips and tricks ==&lt;br /&gt;
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. &#039;&#039;&#039;&#039;&#039;Be warned that much of the info below could be outdated/incorrect.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
==== Videos ====&lt;br /&gt;
We recommend viewing some videos of how to build a simple railway, which makes the basic steps very simple.&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=mXr7y02ZG00 Rail Signaling - Easy Rules for Placing Signals]&lt;br /&gt;
* [http://www.factorioforums.com/forum/viewtopic.php?f=54&amp;amp;t=6984 Factorio Tutorial: Signals and Multi-train Networks] by Gepwin (read the whole article!)&lt;br /&gt;
* [http://www.factorioforums.com/forum/viewtopic.php?f=8&amp;amp;t=5451 Factorio Traintorial, all about trains] by Gepwin.&lt;br /&gt;
* &#039;&#039;v0.10, English [http://www.youtube.com/watch?v=XSGYSbEPpbM Rail basics tutorial] by MangledPork Gaming.&lt;br /&gt;
** And the second part of the tutorial [http://www.youtube.com/watch?v=k6wxl4FdSuQ Factorio Rail Tutorial Part 2: Signals]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;[http://www.reddit.com/r/factorio/comments/26igal/train_signal_tutorial/ A train-signal tutorial with pictures].&lt;br /&gt;
* v0.8, English [http://www.youtube.com/watch?v=RmyOdxi5hR4 Inzainia Plays: Factorio ver 0.8.0 EP:8 (Trains, Trains, Trains!!!)]&lt;br /&gt;
* v0.6, German [http://www.youtube.com/watch?v=idOaZpX8lnA Silver&#039;s Factorio Basic Train Tutorial]&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Achievements ==&lt;br /&gt;
{{Achievement|trans-factorio-express}}&lt;br /&gt;
&lt;br /&gt;
== Connection to [http://www.openttd.org/ OpenTTD] ==&lt;br /&gt;
Factorio&#039;s railway system works basically exactly like [http://wiki.openttd.org/Signals#Block_signals≈ the block signals in Open Transport 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.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Locomotive]]&lt;br /&gt;
* [[Cargo wagon]]&lt;br /&gt;
* [[Tutorial:Train signals]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Station-example-1.png&amp;diff=164801</id>
		<title>File:Station-example-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Station-example-1.png&amp;diff=164801"/>
		<updated>2018-10-09T20:37:19Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Screenshot}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=File:Station-example-1.png&amp;diff=164800</id>
		<title>File:Station-example-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=File:Station-example-1.png&amp;diff=164800"/>
		<updated>2018-10-09T20:37:04Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: Unique 2 uploaded a new version of File:Station-example-1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Screenshot}}&lt;br /&gt;
{{outdated image}}&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164786</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164786"/>
		<updated>2018-10-09T16:56:13Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in Factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture (there are a total of 11 blocks in the picture). Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line which leads to a traffic jam in the network and can cause deadlocks. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164774</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164774"/>
		<updated>2018-10-08T19:48:30Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture (there are a total of 11 blocks in the picture). Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164773</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164773"/>
		<updated>2018-10-08T19:32:01Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Regular Signals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture (there are a total of 11 blocks in the picture). Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before and on, regular after&#039; rule. The junctions in this example are very close to each other so two regular signals between the intersections had to be replaced with chain signals. The blueprints contain the normal intersections without the replacement chain signal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=480px heights=400px&amp;gt;&lt;br /&gt;
File:Rail_entering_main_line.png|{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
&lt;br /&gt;
File:Rail_leaving_main_line.png|{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164772</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164772"/>
		<updated>2018-10-08T19:29:57Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Regular Signals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture (there are a total of 11 blocks in the picture). Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before and on, regular after&#039; rule. The junctions in this example are very close to each other so two regular signals between the intersections had to be replaced with chain signals. The blueprints contain the normal intersections without the replacement chain signal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=480px heights=400px&amp;gt;&lt;br /&gt;
File:Rail_entering_main_line.png|{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
&lt;br /&gt;
File:Rail_leaving_main_line.png|{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164771</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164771"/>
		<updated>2018-10-08T19:25:38Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Waiting area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before and on, regular after&#039; rule. The junctions in this example are very close to each other so two regular signals between the intersections had to be replaced with chain signals. The blueprints contain the normal intersections without the replacement chain signal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=480px heights=400px&amp;gt;&lt;br /&gt;
File:Rail_entering_main_line.png|{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
&lt;br /&gt;
File:Rail_leaving_main_line.png|{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164770</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164770"/>
		<updated>2018-10-08T19:24:22Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Single Split Off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before and on, regular after&#039; rule. The junctions in this example are very close to each other so two regular signals between the intersections had to be replaced with chain signals. The blueprints contain the normal intersections without the replacement chain signal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=480px heights=400px&amp;gt;&lt;br /&gt;
File:Rail_entering_main_line.png|{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
&lt;br /&gt;
File:Rail_leaving_main_line.png|{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). It is particularly suitable to mining outposts. Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164766</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164766"/>
		<updated>2018-10-08T19:03:11Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Single Split Off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Upper Junction (entering main line):&lt;br /&gt;
{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
Lower Junction (leaving main line):&lt;br /&gt;
{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before and on, regular after&#039; rule. The junctions are very close to each other in this example so the regular signal leading out of the lower intersection towards north had to be replaced by a chain signal. The blueprints contain the normal intersections without the replacement chain signal.&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). It is particularly suitable to mining outposts. Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164765</id>
		<title>Tutorial:Train signals</title>
		<link rel="alternate" type="text/html" href="https://wiki.factorio.com/index.php?title=Tutorial:Train_signals&amp;diff=164765"/>
		<updated>2018-10-08T18:56:24Z</updated>

		<summary type="html">&lt;p&gt;Unique 2: /* Single Split Off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
Rail signals are necessary to run a functioning rail system in factorio. This tutorial explains why and when signals are used, what deadlocks are and where they can happen. The aim is to enable the reader to keep a rail system running smoothly and fix common issues. Examples of frequent use cases are shown. &lt;br /&gt;
&lt;br /&gt;
For beginners who are just learning the usage of signals it is recommended to place radars near all intersections to help identify issues quickly. It is also recommended to set up automation for fuelling trains as soon as possible whenever a new train or station is added to the system. Trains can either be fuelled at one stop on their usual schedule (this may or may not involve transporting fuel to a station) or by adding a separate fuel station to the schedule. &lt;br /&gt;
&lt;br /&gt;
== Regular Signals ==&lt;br /&gt;
&lt;br /&gt;
Whenever there is more than one train on a track, there is the possibility that trains can crash into one another. To prevent trains from doing this, we place signals at intervals along the track and at crossings. A regular signal protects the rail block behind it, up to the next signal or the end of the track. Rail blocks are shown with colors when a player has a signal in hand, as in the picture. Signals ensure that only one train can be in any block. Whenever a second train would enter a block that already has a train in it, the train will wait at the signal leading into the block instead. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_blocks_example.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
A regular signal is green when there is no train on the block behind it. When a train enters the block, all signals going into the block will turn red. When a train is in the process of entering the block, the signal turns yellow for a short time before turning red.&lt;br /&gt;
&lt;br /&gt;
Signals are placed on the right side of the track. Trains are only allowed to go past signals that are on the right hand side from direction of travel. A train in automatic mode will not drive on a track if it would pass a signal on the left side unless there is also a signal on the right side at that signal. This can sometimes cause a &amp;quot;no path&amp;quot; error where the track appears to be connected, but part of the connection is a one way track.&lt;br /&gt;
&lt;br /&gt;
In the image, the tracks are from top to bottom: &lt;br /&gt;
# left to right, &lt;br /&gt;
# right to left, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional, &lt;br /&gt;
# bidirectional on the left side, splitting into a right to left (upper) and a left to right track (lower).&lt;br /&gt;
&lt;br /&gt;
[[File:Signal_directions.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Chain Signals ==&lt;br /&gt;
&lt;br /&gt;
Using signals prevents trains from crashing into each other but brings with itself other potential issues. Every train will wait until the block in front of it is cleared, so trains are waiting for other trains. This becomes a problem when a train starts waiting on an intersection. In that case other trains will have to wait even if they are not going in the same direction. These trains may in turn cause other trains to wait, resulting in a slowdown of the entire system. Traffic systems should avoid having trains waiting on intersections. In Factorio, chain signals are used to ensure that this cannot happen.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain-signal-guards-crossroad.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The most important rule is that a train cannot wait for an extended period of time in a block &#039;&#039;after&#039;&#039; a chain signal, whereas it can wait in a block after a regular signal. Since trains should not wait on crossings, this leads to the commonly stated rule: Use chain signals on and before crossings and use regular signals at the exits of crossings. In general, whenever a waiting train would block another train that is going on a different track, a chain signal should be used to prevent the train from waiting.&lt;br /&gt;
&lt;br /&gt;
[[File:Double-crossing.gif|1000px]]&lt;br /&gt;
&lt;br /&gt;
How do chain signals work? To determine if a train is allowed to drive past a chain signal, consider the path the train will take from that signal up to the next regular signal or until it reaches the station, whichever comes first. The train is only allowed to go through if all rail blocks on this path are free. If the train goes through, it will reserve all blocks on this path and not allow other trains to pass through a block until it leaves the block. A chain signal which leads to a block that has only one outgoing signal will always have the same color as that signal. If a rail line splits up, it can happen that one outgoing signal is red and the other is green. In that case the chain signal leading into the block will turn blue to indicate that some paths are free while others are not.&lt;br /&gt;
&lt;br /&gt;
[[File:Chain_signal_colors.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
If the rail network contains many chain signals it is possible that a very large number of blocks is reserved when a train drives by a chain signal. This would restrict other trains, reducing throughput in general. Hence it is often suggested to use regular signals whenever possible and chain signals only where they are necessary.&lt;br /&gt;
&lt;br /&gt;
== Deadlocks ==&lt;br /&gt;
&lt;br /&gt;
Using signals can lead to trains waiting for other trains. As a consequence, there might be a chain of trains, each waiting for the next, with the last waiting for the first. This situation is called a deadlock, because the trains will wait forever or until the situation is resolved manually. It should be avoided and resolved as soon as possible because every train going through the area will get stuck. The most frequent causes of deadlocks are &lt;br /&gt;
# trains waiting on intersections and &lt;br /&gt;
# a rail network that does not allow enough space for trains. &lt;br /&gt;
&lt;br /&gt;
[[File:Signal_deadlock.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image above shows a deadlock caused by missing chain signals since only regular rail signals were used. As a result trains can wait on a crossing which leads to a deadlock. Note that a deadlock can happen with as few as two trains. The positions where the regular signals should be replaced by chain signals are marked with hazard concrete.&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_too_many_trains.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The deadlock in the image happened because there is a circle in the network which was used by more trains than can fit into the circle. To fix the source of the deadlock the circle must be removed.&lt;br /&gt;
&lt;br /&gt;
== Signal Spacing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Deadlock_signal_space.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
The image shows a deadlock between two T-junctions. It happened because while a train was waiting at the intersection, its tail end was still in the last intersection. The junctions when taken individually are signalled correctly, however they are too close to each other. One might argue that they form a single big intersection. There are two ways to fix this: the regular signals between the two junctions could be turned into chain signals or the junctions could be moved further away from each other. &lt;br /&gt;
&lt;br /&gt;
After an exit signal of a junction, the next signal must be at least far enough away to fit the &#039;&#039;longest&#039;&#039; train in the rail system between the signals. In general, after every regular signal there should be at least that much space.&lt;br /&gt;
&lt;br /&gt;
== Splitting Rail Blocks == &lt;br /&gt;
&lt;br /&gt;
The following aims to explain where signals should be placed. Long uninterrupted rail tracks should have signals at regular intervals because this allows more trains to move on the track simultaneously leading to higher throughput. Crossings should be separated from uninterrupted rails with signals. Inside crossings, signals should be used so that multiple trains can pass through the crossing without slowing down - for example trains going in opposite directions should not have to slow down for each other, so they need to pass through different blocks inside an intersection. The examples below all follow these rules.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The most common way to build a rail system is using two parallel rails, one for each direction. The examples mostly follow this architecture. A single bidirectional rail line should not be used for &#039;main&#039; rail lines in most situations.&lt;br /&gt;
&lt;br /&gt;
=== T-Junction ===&lt;br /&gt;
&lt;br /&gt;
The image shows a basic three way junction. Rail signals have been placed inside the junction to ensure that more than one train can enter the junction in some cases. For example for one train going left to right and one going right to left, the trains will pass through different blocks: the first will go through the left yellow, the blue and the lower right yellow block; the second will use the upper yellow and upper red blocks. Because they use different blocks, they can use the junction simultaneously. While this is not strictly necessary for a junction to work, it will allow better throughput at a low cost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=800px heights=800px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:T_junction_9.png|{{BlueprintString|bp-string=0eNqVmOtuqkAUhd9lfmPDHuYCvkrTnFglLYmiAWyOMbz7gaJN4WzjWv9Enc81sy9rO1fzvj+Xp6aqO7O+mmp7rFuzfr2atvqoN/vxve5yKs3aVF15MImpN4fxqdlUe9Mnpqp35V+zlv4tMWXdVV1VTuu/Hy5/6vPhvWyGL8xWrm70xJyO7bDmWI8/NHBW8uITcxleFC9+wO+qptxOn9s++Y9qf6htN3A/PrvVtzCFGyZs/hya4VAHQx0OtTDU49AUhoYf6PbcfJW7R8hbnOKcmCnECMvMYZU5zMQDX8BMPO7jwYNQPO4iWIwyNURBI8KVhCeSwIVE7ByuIyJEcBnhqSQBZeIpL3AdEdUucCERfUngSiI6qE3JFHVzZtSYwlbnAioa1LJeF5Zep3VRm82x289NVT+Gpw/hqmYHdv1bSxEA6TGk3IkaAzUj0XWp5xjpocEC2ZnTUwNCLeixAaBmKT03IFRhbR6BWtbnEWjGGj0CdWwrQaCe7HkIM5C2jDAjacsIMydtGWEWYE8StZ1ok5NLSacHZDphnR6BWtbpEWjGOj0CdWx/ss/tyHnKPsPdPtOlfapJQI579vlo4iI2RXhOaE426YVSrzELkgnMUD4FZ6j79u2we40jXBMBZkZvmUTKfumboZ2Gzji19vm04x14kMVNaLYUqp6Bpy4JohqaQLqwUymR+SscgczLOXvUVRXYqcdHh67VWUjJAwuatCDc/nSIJaXkKoW8INAhjpQiqYrxnJaR8pZMl6LrX3eoifkqm3bqv3m0Npcijbbv/wGVhQXf}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Single Split Off ===&lt;br /&gt;
&lt;br /&gt;
Stations should never be on a main rail line as trains waiting there would block other trains for extended periods of time. So usually a single line is split off from the main line to make a station there. If a station is used by more than one train, it should have a &#039;&#039;&#039;waiting area&#039;&#039;&#039; which has been left out in the image for clarity and will be explained later. &lt;br /&gt;
&lt;br /&gt;
[[File:Rail_split_double.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Blueprint of the junction: &lt;br /&gt;
{{BlueprintString|bp-string=0eNqV2N1uozAQBeB38TVUjH8w8CrVqkoTq7WUkAhItVHEuxdCNlvoRJy5TFu+DozHx+Gq3vfncGpi3anqquL2WLeqer2qNn7Um/34s+5yCqpSsQsHlah6cxg/NZu4V32iYr0Lf1VF/Z9EhbqLXQzT9bcPl7f6fHgPzfAHsyvTu56o07EdrjnW4z8anOzFJeqiqrR8cYO+i03YTr/WffIL1Q+07Qb247NLb3X9YlPSE1uso+aBbs/NV9g9I/0k+rloGNHiZWZwmQ5GC9jMYTOHTQ+bFjYL2MTbXqIm3qKxm5iJl0mELU9+deacCE8R3iAyqIkvJILHCF/wBE+RYDIJHiPBrkTiObJzlDi0wHblVP/blt1yW+b2Oyrn7PZzE+un+HObK1lnwtW6eAyeM8GZSmkiqecQjSEPY/1W0SQqWZLrjLbixNRADDtxwCFqLk04BPXSiEPQQjqbCFpKQw5ATSZMOcQkYcohpjSTEFOaSYhpsRHlJ5RLY+OEKYdUmUtTDkG9NOUQtBCOp17fRo0ojf5HXbaMI65dNsMS1MpUki1VvZ5xVgv3qIXpONMITeBIYi14JKH7Ex36xcWxdZKu/8RmJVqOzmWbE3ACsV5GauBLJ3q2c/d7N8t7ZwstRUclz7XGZZKTkl9fM45kqWbZqjT2vJ4+Lm5CnJFVlrOVWRlSsIiTIZT14yud20uf6sc7okR9haaddq7Ca11QmXnd9986QP+/}}&lt;br /&gt;
&lt;br /&gt;
In the image above, a train can enter and leave the station through the same junction. The train will need to have locomotives facing in both directions for this to work. The image below shows a variation where the train enters and leaves via different junctions.&lt;br /&gt;
&lt;br /&gt;
[[File:Rail_splits.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Upper Junction (entering main line):&lt;br /&gt;
{{BlueprintString|bp-string=0eNqV192OgjAQBeB36TUapi0UeJXNZoPYaBOtBtCsMbz78qNmxRrP3Inaj0mnPZSrWO1O9lg734riKlx18I0ovq6icRtf7obv2svRikK41u5FJHy5H67q0u1EFwnn1/ZXFNR9R8L61rXOTuPHi8uPP+1Xtu7/8DRycdMjcTw0/ZiDH27UO4tkmUTi0n/Il0nPr11tq+l32UUvqnyo1ak+2/ViLOtVzSfTPIsqIKqH2LQ9ttm270ySE5p9LlPjaAyjCYxmsJnCZgqbBjY1bGawiTcpR028RUM3MRMvkwg18ekkiZp42wneSfjyJHgjMfYRJdxoSufRFAoSYu8l/YxSCDVg4KmJpC6EZOyMk8A05uyQA1QZc1MOQYnbGgSV3JxDUMUNOgTVzKRDzISZdIiZYovd3Nf6k5iGRMPMTqTKjJmdiJkzsxMwVczNTgSdHeuqben8+wTV9wSN5wka6paSvG7N6jUhUmFZT7xCNW/xa6DQhDWx8a1eOS9Xh+yUV64ETs3oc4lG0Xx+0inuEU+HHnUqx/qtbvOn5vOXhE7zMbO0NFSaJqaSBRXJVCjuhle18WWu+PfuF4mzrZtpiWdGyozy2Miu+wPUsqK7}} &lt;br /&gt;
Lower Junction (leaving main line):&lt;br /&gt;
{{BlueprintString|bp-string=0eNqV19uOgjAQBuB3mWsw9ESBV9lsNh4abaLVAJo1hndfENYsWrP/XKL2s7Qzf+FGq/3ZnWofWqpu5NfH0FD1caPGb8NyP3zWXk+OKvKtO1BCYXkYruql31OXkA8b902V6D4TcqH1rXfj+PvF9SucDytX9z+YjUwnPaHTsenHHMPwR72TLUxCV6rScmF6feNrtx6/ll3ygsoH2rQ9u9216X1eL2wq5MgW/6MKRzMY1TBawKaBzRw2c9jUsGlhE9+kAjXxLSpREp/lUCCTuT7XF7d5I9pRtHMxj4kCnSW+PwJuI7yOBNxFeL0LuIkYjSnMPJjWu6UPb+NJ/saTeY4nEbNz5mbpuWljpsVKSoyiAGZZYGJaRkkVI0t2MEsg7TN2MiOq4EYzgkpuNiOo4oYzgmpuOiOoYcYzYubMfEZMy2xQxCyYaYqYJTNNAVNl3DRFUMGse/l/PinJSej0EdHZc0THzlOlsOdSzVM1s1OflsHETMM0NbC0OXb3qZhuv1/cLuZY0DGTo55XMXbUKfRgGs86G51ZyUsiHUN0xkPyKCJ4SBFFJA8RWTe8mN1f3ao/b3oJXVzdjPVbWCkLUWZWdt0PlkGdWQ==}}&lt;br /&gt;
&lt;br /&gt;
The signals in all the examples are done according to the &#039;chain before, regular after&#039; rule. Notice that the junctions are very close to each other in this example so two regular signals had to be replaced by chain signals. The blueprints contain the normal intersections without these additional chain signals.&lt;br /&gt;
&lt;br /&gt;
=== Waiting area ===&lt;br /&gt;
&lt;br /&gt;
If multiple trains use the same station, the trains will wait on the main rail line, which leads a traffic jam in the network. One way to avoid this is to add waiting areas for trains at each station.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area.png|800px]] &lt;br /&gt;
&lt;br /&gt;
The image shows a shared waiting area for two stations. The signals leading into the waiting areas are regular signals because this is where trains are expected to wait for an extended time. The signals leading out of the waiting areas are chain signals because the track from the waiting areas to the stations should not be blocked. The stations are also in different blocks to make sure that all stations can be used simultaneously.&lt;br /&gt;
&lt;br /&gt;
There are two ways to design waiting areas, parallel (as above) and sequential. The parallel version is easily extendable, takes less space and multiple stations can share a parallel waiting area. The sequential version as shown below is easier to set up but cannot be shared by multiple stations (and has very minor UPS benefits). It is particularly suitable to mining outposts. Waiting areas are often referred to as stackers.&lt;br /&gt;
&lt;br /&gt;
[[File:Train_waiting_area_sequential.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Four Way Junctions ===&lt;br /&gt;
&lt;br /&gt;
The four way junction shown here is serviceable and has decent throughput. The second junction is a roundabout, which provides a convenient and easy to remember way to make an extendable intersection. However compared to other intersections they only allow low throughput and in very rare scenarios they can cause deadlocks.&lt;br /&gt;
&lt;br /&gt;
There are other junction designs with more throughput, however the size of the junction goes up immensely. There is a [https://forums.factorio.com/viewtopic.php?t=46855 forum post] where a number of four way junctions and their throughput parameters are collected. However for normal gameplay the intersection shown here is usually more than enough.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Four_way_junction_compact.png|{{BlueprintString|bp-string=0eNqlXO1uWjsQfJfzG668629e5aq6oslReyQgEZDqRlHevVA4tMC6zMC/pi2T8drr9Y7HfHRfF2/963pYbbvZRzc8vaw23ezfj24zfFvNF/u/276/9t2sG7b9spt0q/ly/9N6Piy6z0k3rJ77/7uZfH6ZdP1qO2yH/vD5Xz+8/7d6W37t17v/cPrkZjlfLKaL+fJ1h/b6stl95GW1/z07mKnqP3HSvR//9Pk5uQLSE9DT2/pH/zz9xeQayR9gpO5IPg/r/unwj8GA9L+5bXdo375vW6Bh5GYxCxgzglhEienfeCUo9Lcjn+kwOQumsIMyUSpLRooFI45k04CRs8SYHpPnCiSOMZa8i/HZ/HsLVulRJpMevMLdCeaMXLRAAwsazkHFAmWXfGPACYVJxIAzC4oMuNBTHMwR1/MV+PR9Pqya63DqTgvRXy7EbG26dJqE2/FUYUH1djxVeaYWjMcS2p/iGC7jaG3oCudMIeIYWVAkjgmss8fxV4AnXUDErGdaMGqCM4OrSbAjaIF6xy9vC0ZYbu727Ho4S8QRI/Y0KsI10MvGPDF4urTYMInZaE/7Q0W2WU9XGAfMSiFBCzAncMKI4kyDY1EBqkHY5WOe8AJbV2wUT27VBYgaW1MSEDQ4VyTgRBMLijDNYJ2SYznw55hqYRas+O+T+gAaL7PbpIr3LPZMWS1ChHNmelyY4fY+FOmcMU/hUVluyIA9mYg2tcCWKqBBiJEFBRqEiGdNwpmCWbPvKoykMdcMmDT7zreRNOZ0c33NqcEOtoaRHJjaaQS66o+sHSPRCaO3I5ro7j/cjmfyPKgFE6hpkWY0rdWZIgPuuJlK5PZhDz/fdQj0SI+YCoOdudHT5zag/8z0sQ3oP7MwUdh330QYMioij/uf3E6sjCeW2mEwmeLNjzocFS5UUyk4asJRE46KqwYScFRcdhNitvATnuCzVfAj3iGs7nZtKcKeRRGiShK9BLXyqvgHQU2m4cF6bYJGHtSCSeypGeGWSbEewaRvcgDMSmNal0OO1MwAZlWwmmFXjGQhKinMICxZgQHBpHslBJRWGAABsqYHTyIm00wyBTTNWh4cvUm0sp0iACoOP90VAhW/+3EEKi7SKYHq2XMNcL4VFzjhyiNMI1nVHXAH7dJdHbizG3Bx7C2Qs2HI4tNAqff0cQ5p4wS3FpiLJpuYoM9AmlRtWCV3DkDMlz9MB4jG5BGege0FFCEaQU3oFFWBzBuSWLaIX0Ao6WE66gOKCC9CuxHUdsOQ96mAJC2sBcFmpnJPwgsi7wtuPTDXpm0A8pxSAZmKAqtUBKD24C6EUamAUBOrVEComa3oECqtKQDimmh9cBcxueLmhJErcBcnuFehEQGbq7KqCoTqybMSBBpIsQICZXUFCDTRoCZMJsUKiBt5tktA+cAdC/gSCmRJAq5nJMhDmDZPZTFNFP9QUbeZBUZUibc1FcGdC3gC4sYFfKcImRRVINBC6h8QaCW1CgQUty0QBRi3LRBnBdzEQBxrCBMDPlExsKeaghiyI3fTO97EXd3um+kaE1vbEaN25HqkylEuLGUozPf5HGJDZUmOLO8NGz3VLk2VCiTubzDDaJb55O+ywUP+LUnkiwfAzSQpsmcdE+UuU2qCdKxLr0MLlUv8RLpSocmvqJAzqiIZkseyY1uwgrwmERYVcUtLVrKvgbiyzRJGNVBv+UQQTLZZst9z5cQ85sOYZS7TG8RokQFxXgvjXDjCIpcctHUBIlvkrlpZIdWWNjFggWBtd/bjA8GNC/pXmMi9V6yQelzowxzyqkRKpmGhh3es1o2RZR+mQlyr47maOKS60IJhawzyjE0qXWQQTbIG8FAwrnVpWIelRlLrwkad+AVj4uS7HLnX7z/NXRE3LIxjh+aGdPs03mo61NRdxkEn7NGrUG8gpdrsWBu3/aRZnWeePbbIsPWjwYU9ZdnP5tWRbuwWDOspsL9TQFlTQQumkl920fyuC2H3ffsbIFTIfb8Fo9xXSRzG9WVy+O6Q2R9fNTLpfvTrzaE9LFm17Epc3v3Sn4igZ5Q=}}&lt;br /&gt;
&lt;br /&gt;
File:Roundabout.png|{{BlueprintString|bp-string=0eNqVmNtuo0AMht9lriGaMwyvsqpWaYJapIREQKqNIt59IRy2pGbxfxXlwBd77N/2+CHeT7f8WhVlI7KHKA6XshbZr4eoi49yf+o/a+7XXGSiaPKziES5P/fvqn1xEm0kivKY/xGZat8ikZdN0RT58Pzzzf13eTu/51X3g/nJuume/fhs4iciEtdL3T11Kfu/6kixjcS9e9G6baMfGM3F6P9RDGyMpDAWNYakONQYlVIYDxpDU5KZcrhVX/lxzRQ3QkyXAseiyg/Dl45ApouciQ+f+6KMx+wiwLsJ7XeOsjDwLDS0gZYgKrm0cM02szBtG6sgx+VMN690TdE1GCm1ZHqKabCzfUEaCsnWSJwO1HQJTSioQ6FKMkxlK8jTUCr5VQJCX9xXFDNlhl6NgeKkU+AyFcmk7NSSHaZegoT3VJg0u5PQCUVFSTPFFCbfKQZTPCsHSOW5trzC9CxII5VTO7RDKpOyGJwto1iPrcgyqAmfKvnUlJ+hKZ8auFTl2VDDFhNgqWFrCThUo6G+p/61VbrhG4OVJkbHNxbRO2PGMZii1OSy5AwSBlaUZkQJFhQHCuuJAw1YuzPbPcRKqFab7dHJKlDzDMetBiXPYRpQ8RymxQQ/Nasfcy55sA4dIvz2ZGI9NkP47V5tE16vnrspz/sUnHT9dq2yAWQyRlInodtI2D5Pp5C7SNjOUqexSZxxD3EGQ/rtyuQsdJDdFYyCOOTsXq9xZHw9JvHdZB4nyR1TOvNuoNcQ6Te0ajDfaZtN2AVwTaM8uaWR2JpmhYJu01ZWRuA2bYWCbtPoNZgHt2k95S0atpLZtyVmJL7yqh6SLU20TlWQiW7bv0mF1mM=}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Railway]]&lt;br /&gt;
* [[Rail signal]]&lt;br /&gt;
* [[Rail chain signal]]&lt;/div&gt;</summary>
		<author><name>Unique 2</name></author>
	</entry>
</feed>