In other languages: Deutsch Español 日本語 Русский Українська 简体中文

Multiplayer: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
m (→‎PvP: grammar correction)
(Clarify that headless build is for Linux servers only)
 
(106 intermediate revisions by 32 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
[[File:players_colored_preview.png|190px|right]]In addition to being a single-player game, Factorio also supports multiplayer, allowing many [[player]]s to cooperate and assist each other, or work against each other in pvp. This page documents how to set up a multiplayer game, how to join one, and the Multiplayer Admin features for managing other users and the server. By default, multiplayer games run the CO-OP [[Game modes and options|freeplay scenario]] where all players work together to launch a rocket with a satellite into space. Other scenarios, including PvP maps, are available for download from the [https://forums.factorio.com/viewforum.php?f=36&sid=93d1fbe9336d31d6bac60847b6c97985 Maps and Scenarios forum].


Factorio supports multiplayer games in additional to the single-player campaign and scenarios. By default, multiplayer games run the CO-OP [[Game modes and options|freeplay scenario]] where all players work together to launch a rocket with a satellite into space. Other scenarios, including PvP maps, are available for download from the [https://forums.factorio.com/viewforum.php?f=36&sid=93d1fbe9336d31d6bac60847b6c97985 Maps and Scenarios forum].
== Setting Up a Multiplayer Game ==
 
[[File:multiplayer_game_night.png|thumb|250px|A multiplayer game.]]Multiplayer games can be joined, hosted while playing, or hosted by a dedicated server.  Multiplayer games can be advertised to other players on the same LAN or worldwide.
 
To start playing a multiplayer game, select the Multiplayer button from the main menu. Then, choose one of these options to host and play:
 
* '''Host new game''': Specify the desired scenario, adjust the [[Map generator|map generator]] settings, and set the server visibility. The server visibility determines how your game will be advertised to other players. You can choose from:
** '''Public''': Your game will be listed on the public games list.
** '''Steam''': Enables or disables the "Join Game" feature through Steam.
** '''LAN''': Your game will be listed on your local network.
* '''Host saved game''': Pick a saved game from the list and set the server visibility as above.
 
To join an existing game, choose one of these options:
 
* '''Browse public games''': Search for and join any public game that meets your criteria.
* '''Browse LAN games''': Join any game that is hosted on your local network.
* '''Connect to address''': Join any game by entering the server’s IP address. This option is useful if the host does not use any server visibility.
 
Notes and tips:
 
* All game instances need the installation of ''exactly the same'' game-versions and mods.
* Factorio servers use port '''34197'''. The port can be changed in the [[Application directory|config]] file.
* Factorio uses '''UDP only'''. The game builds its own "reliable delivery" layer built on UDP to deal with packet loss and reordering issues.
** Make sure you configure your router's port forwarding correctly for port '''34197'''.
** Make sure your router does not [https://doc.pfsense.org/index.php/Static_Port randomize the source port] on packets outbound from '''34197'''.  Some routers do this and require [https://forum.pfsense.org/index.php?PHPSESSID=3k4h9n5o2tksgqv910fknf7qt7&topic=142188.msg798594#msg798594 additional configuration] to prevent it.
** Make sure there is no firewall or anti-virus blocking the UDP-packets.
* The hard limit for the number of players is [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586 65,535]. However, practical limit for this is much lower, popular streamers have managed to get well over a hundred players.
 
=== Dedicated/Headless server ===
 
A dedicated (or headless) server can be started using the --start-server command line option. You can run factorio --help to get a list of all command-line arguments that Factorio accepts. Any version of the game can be run in headless mode, though for Linux servers it may be preferable to use the Headless version of the game, which does not include graphics to reduce download size. This can be found on the [https://www.factorio.com/download factorio.com Downloads page].
 
In the headless mode:
* Graphics are not initialized (faster start up, less memory usage, works on completely headless servers)
* Game starts immediately and loads a save given as a parameter to the command
* The server has no character in game
* Game is paused while there are no players connected (though this can be overridden using the no-auto-pause option in the server-settings.json)
* Saves the game on exit (and autosaves normally)
 
''0.13 onwards expects --start-server to be followed by a path to a save file.''
 
You will need to create your save file before you start the server, as the dedicated server REQUIRES a save file to be provided. This can easily be done using the --create command-line argument. For example:
 
<pre>
./bin/x64/factorio --create ./saves/my-save.zip      # This creates a new save, as if by clicking the New Game button in the GUI
</pre>
 
<pre>
./bin/x64/factorio --start-server ./saves/my-save.zip # This starts a server that will host the file created on the previous line
</pre>
 
There are several JSON configuration files that factorio can make use of to change the server and map settings:
* '''map-gen-settings''' to set parameters used by the [[map generator]] such as width and height, ore patch frequency and size, etc.
* '''map-settings''' to control [[pollution]] spread, [[Enemies#Expansions|biter expansion]] and [[evolution]], and more
* '''server-settings''' which consolidated several command-line options into a single file
Example files for each of these parameters are included in the data subdirectory, and are also visible on Wube's github here: https://github.com/wube/factorio-data
 
The --map-gen-settings and --map-settings options must be used with the --create option when you create a new map.  For example:
<pre>./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json</pre>
 
Starting the factorio server requires you to specify the location of the server-settings.json file. By default this is in the factorio data folder. For example to start factorio using the most recent saved map, you would run:
 
<pre>./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json</pre>
 
On windows, it may be useful to start the server with a .bat file. The bat file should have the following content:
 
<pre>start /wait .\bin\x64\factorio.exe --start-server-load-latest --server-settings .\data\server-settings.json</pre>
 
Running a headless Windows server can prevent you from opening another instance of the game to play. This is resolved by running the batch file as an other user (Shift-Right Click the batch file to get that option). This allows you to run a server and a client on the same machine.
 
''See [[Command_line_parameters]] for more command line parameters.''
 
=== Setting up a Linux Factorio server ===
 
'''Note:''' Factorio now requires <tt>glibc</tt> version 2.18, but CentOS/RHEL 7 only ship with version 2.17 so this guide will no longer work without [https://forums.factorio.com/viewtopic.php?t=54654#p324493 manually compiling <tt>glibc</tt> 2.18].
 
This step-by-step guide has been verified on fresh CentOS 7 and RHEL 7 installs but should be applicable with little to no changes on most distributions.
 
The guide assumes you will install the headless server under '''/opt/factorio''', adjust paths according to your own setup. We will also suggest that you run the Factorio server as a separate user to harden security of your setup.
 
Note that there are two distinct packages for Linux that can be used to run a headless server. First is the usual Linux download, that contains the full game. The other is the special  [https://www.factorio.com/download headless package]. The headless package does not contain any files irrelevant for a pure server, such as graphics and sounds. It is also not linked against libraries that may not be present on a server machine, such as Xlib, libGL or libasound. This option should be selected if running in a 3rd party hosted server.
 
This guide does not handle firewall/port forwarding since this can be done in various ways on Linux (make sure to read up how this is done as a Linux admin on your particular distribution)
 
==== Basic installation ====


Currently, joining a multiplayer game requires either that all players be on the same LAN or that the host have a public IP address. The next version of Factorio, 0.13, will support a public multiplayer game lobby for locating games as well as [https://www.factorio.com/blog/post/fff-76 NAT punching] to make connecting to a server without a public IP address more seamless.
* Download the selected package -- either full game or the headless package -- and upload the Linux tar.gz or tar.xz package to your server /tmp
* Extract the package in /tmp to /opt/factorio
<pre>
$cd /opt/


== History ==
$sudo tar -xzf /tmp/factorio.tar.gz # Use the correct file name. It includes the factorio version number
$sudo tar -xJf /tmp/factorio.tar.xz # if you downloaded a .tar.xz file (ver 0.15.x)</pre>
 
* Add a new user to your system and assign ownership of the factorio dir to it (please, do not run as the root user, sudo may be needed)
<pre>
$useradd factorio
$chown -R factorio:factorio /opt/factorio</pre>
 
* Try the binary
<pre>
$su factorio
$/opt/factorio/bin/x64/factorio --start-server savename</pre>
 
As long as it fails saying it cannot find/open the savename.zip you are set! Just upload a save from your own computer and put it in the /opt/factorio/saves directory, or use the --create ./saves/newgame.zip argument.
 
=== How to list a server-hosted game on the matching server ===
 
In order to publish the game to the matching server, Factorio needs to be given some more information than just the save file location. These information are provided in a ''server settings file''.
 
To create a server settings file, look at the example file located in '''data/server-settings.example.json''' in the Factorio [[Application directory]]. The recommended way is to make a copy of this example file and edit the copy.
 
The following values can be changed:
; Name: This will be the name under which the server will be listed in the server browser
; Description: A description of your server. May contain up to 5000 characters. [https://factorio.com/blog/post/fff-304 MP server description]
; Tags: A list of game tags
; Max Players: Allows you to limit the number of players that can be connected to the server at the same time. If you want no limit, just set max_players to 0.
* Visibility for server browser: May be either public, LAN or hidden.
** Public: The server will appear in the public server list. This requires the login credentials below to be filled in.
** LAN: The server will not appear in the public server list, but will be available through the Play On LAN button
** Hidden: Clients will have to connect using the server's IP address
* User credentials using a username and password or authentication token (found on the factorio website or in the player-data.json): These are necessary if you wish to make the server public. Otherwise, they can be left empty.
** For security reasons it is recommended to use authentication token as this document is stored as plain text. Though it should be noted that an authentication token is a sensitive piece of information as well, and you are well-advised to keep it secret.
* Server Password
** Field name is game_password
* Whether to verify user identity
(There are additional values in v0.14 of factorio.)
 
=== Technical Implementation Details ===
 
Notes about some technical details surrounding multiplayer have been published by the development team in several Friday Facts blog posts:
 
* [http://www.factorio.com/blog/post/fff-76 Lock step architecture]
* [http://www.factorio.com/blog/post/fff-99 Client-server connections]
* [http://www.factorio.com/blog/post/fff-143 NAT punching, introduced in 0.13]
 
=== DNS SRV Records ===
Factorio supports [https://www.cloudflare.com/learning/dns/dns-records/dns-srv-record/ DNS SRV records] since 1.1.67.
 
This makes it easier to have multiple Factorio servers on a single host and allow users to connect to them with distinct subdomains instead of having to enter port numbers.
 
The service name is <code>_factorio</code> and it only supports <code>_udp</code> protocol.
 
'''Example:'''
 
<pre>
Domain: subdomain.domain.tld
IP:    192.0.2.2
Port:  10002
 
DNS records:
subdomain.domain.tld    IN A  192.0.2.2
_factorio._udp.subomain.domain.tld IN SRV 0 0 10002 subomain.domain.tld.
</pre>
 
Now a Factorio client connecting to <code>subdomain.domain.tld</code> will actually connect to <code>subdomain.domain.tld:10002</code>
 
'''Example screenshot of config in Cloud Flare:'''
 
[[File:Screenshot of SRV record settings Cloudflare dashboard.png]]
 
'''Log Entries:'''
 
* Factorio will log a "DNS SRV lookup returned [...]" message when it found a SRV record for the given domain
* With verbose logging Factorio will also log "DNS SRV lookup for [domain] didn't return any usable records" when there's no SRV record
 
=== Miscellaneous Tips ===
* The key for [[Console|console commands]] is also used initiate chat in multiplayer. To execute a command instead of chatting, you need to type ''/c'' before the command. Commands executed are ''visible to all players''. Additionally, the multiplayer game must have been started with commands allowable for commands to work.
* Set the player's color using the command
/color r g b
r, g and b are for red, green and blue respectively (possible values are between 0 and 1, use [https://www.w3schools.com/colors/colors_converter.asp this site] to convert colors to rgb numbers).
* To give yourself admin access, you need to create a server-adminlist.json in the same directory as factorio-current.log. The file should contain a list of admins, like so: <code>[ "user1", "user2" ]</code>
 
This file will be created if you promote a player through the console.
 
== Joining a Multiplayer game ==
 
As of version 0.13, players no longer necessarily have to port-forward to play with others. Players may join each other through Steam, or by just the port-forwarded host.
 
Players wishing to join a game may do so in multiple ways:
 
* Joining by directly inputting a public IP and port into Factorio.
* Selecting the server from the active public server menu.
* Joining through Steam's services.
* Playing a local LAN game.


Multiplayer games were introduced to Factorio with version 0.11.0. The only connection method available was peer-to-peer mode which meant a low latency connection was required between all players. Gameplay was optimal on LANs, especially with more then two players, as otherwise there could be a noticeable lag between player actions and those actions happening. As of version 0.12.0 the game features "latency hiding" mechanics which make the lag less noticeable or hide it entirely. There is also support for a running dedicated server in headless mode (no graphics) in versions 0.12.0 and beyond. Starting with 0.12.4, peer-to-peer connections are optional as all the server can relay messages from one client to the other clients.
=== Joining by IP ===


Because of the potentially immense amount of activity on a map, the game engine utilizes a [https://www.factorio.com/blog/post/fff-76 lock step architecture]. All instances of the game run full simulations of the entire world and only player actions are transferred across the network.
To join a multiplayer game by IP, you will need to know the public IP of a valid server. You can find this through social media, websites, or by word of mouth. After acquiring the IP and port, simply go to play -> Multiplayer -> Connect to server, and provide all the information it asks for.


== Setting Up a Multiplayer Game ==
If the server has been set up correctly to accept public connections, you should be able to join the game.


Use the ''Multiplayer'' button in the game menu to start a multiplayer game. One player starts the game and acts as the host. That player should provide the other players with his or her IP address. They can then use that IP address to join the host's game.
=== Joining via server list ===


Other notes and tips:
Factorio's devs keep a list of all public servers that declare themselves to the service, allowing players to join directly through Factorio. Most of these servers will be password-requiring, but many completely public servers can be connected to. To join via server list, go to Play -> Multiplayer -> Browse public games. Provide your Factorio.com login if asked, and a list of public servers will appear. Simply select one.


* All game instances need the installation of exactly the same game-versions and mods.
=== Joining through Steam ===
* Factorio uses the port '''34197'''. The port can be changed in the [[Application Directory|config]] file.
* Factorio uses '''UDP only'''. Make sure you configure your router's port forwarding correctly. (The game builds it's own "reliable delivery" layer built on UDP to deal with packet loss and reordering issues.)
** Make sure there is no firewall or anti-virus blocking the UDP-packets.
* See the [[#Connecting to a Server Behind NAT|section below]] for help configuring your networking set up.
* The hard limit for the number of players is [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586 65535]. :)


=== Voice Chat ===
Steam provides a "game invite" system, simply use that to join. You can find more info about how to use steam in it's documentation. ''This is the most recommended way for the average player to use multiplayer with their friends, as it allows Steam to handle everything''.
* It is recommended that players use voice chat (TeamSpeak, Skype) because you need to talk a lot to coordinate connections, building, handling attacks, etc. TeamSpeak servers are posted in the [https://forums.factorio.com/viewforum.php?f=53 multiplayer forum].


=== Finding Other Players ===
=== Joining a local LAN game ===


* Use the [https://forums.factorio.com/viewforum.php?f=53 multiplayer board in the forum].
If you have some friends on the same internet connection as you (in the same building or network), you may play a LAN game. Simply go to Play -> Multiplayer -> Play on LAN.
* Many players use other software like Evolve to meet other players. This also has the "advantage" of creating a virtual LAN among the players. See down under software.
* Some also use [https://forums.factorio.com/viewtopic.php?f=5&t=9136 Steam] to find other players.
* Tell your friends to buy Factorio, then play with them!


=== Connecting to a Server Behind NAT ===
=== Connecting to a Server Behind NAT ===


Factorio requires that the server (in client-server mode) or all peers (in peer-to-peer mode) have a publicly accessible IP address or that all players are on the same LAN. If you are behind NAT, you must set up port forwarding ([[Multiplayer#Playing_over_LAN_.2F_Internet|see above]] for port number) or use virtual LAN software such as Hamachi or Evolve.
Factorio requires that the server (in client-server mode) have a publicly accessible IP address or that all players are on the same LAN. If you are behind NAT, you must set up port forwarding ([[Multiplayer#Playing_over_LAN_.2F_Internet|see above]] for port number) or use virtual LAN software such as Hamachi or Evolve.


By default, multiplayer games will be launched in client-server mode (also also [http://www.factorio.com/blog/post/fff-99 multiplayer forwarding] mode). In this mode, all clients send their network traffic to the server and the server forwards the traffic to the other clients. The advantage of this is that it allows games where some players are inside a LAN and others are outside. The disadvantage may be slightly more lag as packets must travel an extra hop (through the server). Multiplayer games may be launched in peer-to-peer mode to disable this forwarding behavior by checking the ''Use peer-to-peer communication'' box when starting the game as the host. The setting should, in theory, not make a difference in two-player games.
Multiplayer games will be launched in client-server mode (also [http://www.factorio.com/blog/post/fff-99 multiplayer forwarding] mode). In this mode, all clients send their network traffic to the server and the server forwards the traffic to the other clients. The advantage of this is that it allows games where some players are inside a LAN and others are outside. The disadvantage may be slightly more lag as packets must travel an extra hop (through the server).


* [https://forums.factorio.com/viewtopic.php?f=53&t=6393 Forwarding ports without logging into your router]
* [https://forums.factorio.com/viewtopic.php?f=53&t=6393 Forwarding ports without logging into your router]
Line 44: Line 216:
* [http://steamcommunity.com/sharedfiles/filedetails/?id=653628496 A guide for connecting with Hamachi]
* [http://steamcommunity.com/sharedfiles/filedetails/?id=653628496 A guide for connecting with Hamachi]


== Game Types ==
== PvP ==


=== Co-op ===
In PvP mode, players can be on different forces. Each force can have one (free-for-all) or more players (teams). Each force has its own independent research progression. Additionally, each force's [[Military units and structures]] will attack other players as enemies, unless a cease fire is set. Note that, depending on the scenario, cease fires may be unidirectional — setting a cease fire with an opposing force does not guarantee a cease fire from them in return.


In co-op mode, all players are on the same force which means all players share the same research progression, any player can access items stored in a container built by any other player, and defensive structures built by any player will not target any other player.
To start a PvP game, you can select the 'PvP' scenario from the 'Play' menu, or download a custom scenario which also supports PvP.


To start a co-op game:
After downloading a PvP scenario, you need to move it to your application directory, and create the multiplayer game using the scenario.


# Download the scenario and place the scenario directory in the ''scenarios'' directory within your [[user data directory]].
# Launch Factorio
# Launch Factorio
# Click ''Play''
# Click ''Play''
# Click ''Multiplayer''
# Click ''Multiplayer''
# Click ''New game''
# Click ''Scenario''
# Select map generator options, then click ''Generate''
# Choose the PvP scenario you want and click ''Create''
# Choose latency and other settings, then click ''Play''
# Choose latency and other settings, then click ''Play''
# Other players can now join the game
# Other players can now join the game


=== PvP ===
=== Forces ===


In PvP mode, players can be on different forces. Each force can have one (free-for-all) or more players (teams). Each force has its own independent research progression. Additionally, each force's [[Turret|turrets]] and [[Combat Robot Capsules|combat bots]] will attack other players as enemies, unless a cease fire is set. Note that, depending on the scenario, cease fires may be unidirectional — setting a cease fire with an opposing force does not guarantee a cease fire from them in return.
Forces can be manually created via the console. This allows any map/scenario to be used for PvP. This may not be as convenient as a pre-made PvP scenario, as there will be no way for players to turn on/off cease fires other than through the console.


To start a PvP game, you must have a PvP-compatible scenario downloaded (or use the console commands to manually assign players to different forces, [[#Forces|see below]]). PvP scenarios can be found in the [https://forums.factorio.com/viewforum.php?f=36&sid=93d1fbe9336d31d6bac60847b6c97985 Maps and Scenarios forum].
Each created force has its own research progression and different forces may attack each other.


'''Example PvP scenarios:'''
The console commands for setting up and controlling forces are below:
 
<pre>
game.create_force("Name")
--Creates the force "Name"
 
game.players["Player_name"].force = game.forces["Name"]
--Sets this player to the new force
 
game.forces["Name"].set_cease_fire("Other_force_name", true)
--Sets the new force ceasefire to the "other force"


* [https://forums.factorio.com/viewtopic.php?f=36&t=21023 PvP_Ruins by Siapran]
game.forces["Name"].set_spawn_position({x = 10, y = 20}, game.surfaces[1])
* [https://forums.factorio.com/viewtopic.php?f=36&t=15052 Various scenarios by Klonan]
--Sets the spawn position of the force


After downloading a PvP scenario, you need to start the scenario as a single player custom scenario, save it, then load it as a multiplayer game. Otherwise, Factorio will launch the default freeplay scenario in co-op mode. In detail:
game.print(#game.forces)
--Prints the number of forces


# Download the scenario and place the scenario directory in the ''scenarios'' directory within your [[Application_directory#Directory_locations_by_OS_and_installation_method|user data directory]].
for name, force in pairs (game.forces) do
# Launch Factorio
  game.print(name)
# Click ''Play''
end
# Click ''Custom scenario''
--Prints the name of all the forces
# Choose the PvP scenario you want under ''User scenarios'' and click ''Create''
</pre>
# (Depending on the scenario, you may need to set the map generation settings and click ''Generate'')
 
# Hit Escape and click ''Save game''
The ability of players and entities belonging to one force to interact with structures belonging to another, non-friendly force is limited. However, some types of interactions are still possible:
# Type a save game name and click ''Save''
 
# Click ''Quit game''
;Manual pickup from belts
# Click ''Play''
: Players can pick up items traveling along a transport belt that belongs to an opposing force. Note however that this can't be automated: Inserters will ''not'' take items from an opposing force's belts.
# Click ''Multiplayer''
;Belt network connection
# Click ''Load game''
: Belts will connect to each other regardless of force membership, so it's possible to extend an opposing force's belt line, and items will flow to them. It is also possible to side-load into, and place items onto (with inserters) an opposing force's belt line.
# Choose the save game you just created and click ''Load''
;Fluid network connection
# Choose latency and other settings, then click ''Play''
: Pipes (and storage tanks, and pumps, &c) will connect to each other regardless of force membership. For example, it's possible to pump fluids out of or into a storage tank belonging to an opposing force.
# Other players can now join the game
;Power leeching
: Players can draw power from an opposing force's electric network, by building structures inside the coverage area of a power pole belonging to an opposing force. Power poles that you build next to a power pole belonging to an opposing force will automatically connect to it, but will be impossible to connect or disconnect manually.
 
== History ==
 
=== Narrative history ===
 
Because of the potentially immense amount of activity on a map, the game engine utilizes a [https://www.factorio.com/blog/post/fff-76 lock step architecture]. All instances of the game run full simulations of the entire world and only player actions are transferred across the network.
 
Multiplayer games were introduced to Factorio with version 0.11.0. The only connection method available was peer-to-peer mode which meant every player had to be able to directly communicate with every other player. In version 0.12.4, a client-server mode of communication was introduced in which the server (either a dedicated one or the player who hosted the game) relays messages to all peers. This means that direct connection between all players is no longer necessary. As of version 0.13, P2P connecting is completely removed.


== Forces ==
As of version 0.12.0, the game features "latency hiding" mechanics where the game simulates some of the player's actions locally to make some common interactions (such as moving the player's character) more fluid.  Not every action is a part of latency hiding – most notably, car or train driving and shooting are not a part of it.


Forces can be manually created via the console. This allows any map/scenario to be used for PvP. This may not be as convenient as a pre-made PvP scenario, as there will be no way for players to turn on/off cease fires other than through the console.
=== Version history ===


Each created force has its own research progression and different forces may attack each other.
Maintainer note: The following history may not be fully up to date, or comprehensive. Factorio's multiplayer has undergone a great deal of small changes since its inception, however this history will provide a rough overview.


The console commands for setting up and controlling forces are below:
{{history|0.14.14|
* Added multiplayer server option "Autosave only on server".
* Deconstructing/canceling deconstruction sets the "last user" on an entity.
* Decreased the size of connection accept message with lot of mod which could help some people with 50+ mod multiplayer games.
}}


;game.create_force('force 1')
{{history|0.14.13|
:Creates a force with name "force 1". Default forces are "player", "enemy", and "neutral".
* Reconnecting to multiplayer game that the player is already in (due to being dropped, most often) instantly closes the previous connection and connects the player.}}
:"player" is the default force for players
:"enemy" is alien force
:"neutral" is special: it is not attacked and can use all / be used by all other forces (e.g., neutral storage containers can be accessed by all)
;game.get_player('friend 1').force = game.forces['force 1']
:Changes the force of "friend 1" to "force 1"
;game.forces['force 1'].set_cease_fire('force 2', true)
:Makes "force 1" cease fire against "force 2". The reverse has to be done separately.
;game.forces['force 1'].set_spawn_position({x=10, y=20}, game.get_surface(1))
:Sets the spawn/respawn point for a particular force to x = 10, y = 20. By default, all players from all forces will spawn at {x = 0, y = 0}.
;for v in pairs(game.forces) do game.local_player.print(v) end
:list all existing forces


== Dedicated/Headless server ==
{{history|0.14.11|
{{Experimental|0.12.X}}
* Multiplayer user names can only consist of letters, and <code> -_. </code> characters.}}


As of Factorio version 0.12.0 onwards, a dedicated (or headless) server can be started using the '--start-server' command line option.
{{history|0.14.10|
* Disabled 32bit (x86) multiplayer. All hosts and members must be running the 64bit (x86_64) version of the game.}}


In this mode:
{{history|0.14.8|
* Graphics are not initialized (faster start up, less memory usage, works on completely headless servers)
* More than 10 players in one game will reduce the rate the game is saved to the server.}}
* Game starts immediately and loads a save given as a parameter to the command
* The server has no character in game
* Game is paused while there are no players connected
* Saves the game on exit (and autosaves normally)


You will need to create your save file before you start the server, as the dedicated server REQUIRES a save file to be provided. This can easily be done by loading up a game in Single-Player and saving it right away.
{{history|0.14.6|
* Username is now set to username setting, not email.}}


Below are basic instructions for starting a dedicated server on Windows and Linux.
{{history|0.14.5|
* Added AFK Auto kick interval to multiplayer host settings (with never as default).}}


==== Windows ====
{{history|0.14.3|
* When save of scenario is loaded in multiplayer, it's scenario is saved in user scenarios.
* Added <code>/time</code> command to print the current map age.
* Added option to host multiplayer game with scenario (it only had new game/load game there).
}}


* Go to your Factorio.exe folder (Probably 'C:\Program Files\Factorio\bin\x64\')
{{history|0.14.2|
* Create a text document and write into it 'Factorio.exe --start-server YOURSAVEGAME.zip'
* Can specify limit of upload speed when hosting.}}
** If you haven't already done, replace YOURSAVEGAME with your savegame name
* Save the file as server.bat. Important: At 'Save as type:' select 'All Files'
* Use the server.bat to start your server.
* The console log will be shown in the window.
* To close the server, select the console window press Control+C. If you just close it without pressing this, it will not save your game.
* Forward Ports: You will find detailed instructions for your specific router on the web


{{history|0.14.0|
* Server doesn't stop/slow down the game when some client is too slow, stops communicating or saves the game longer than the server.
* Players automatically quit game after 3 desyncs.
* Removed the option to enable/disable latency hiding, it is always on on clients (and off on the server).
}}


==== Linux ====
{{history|0.13.10|
* Server stdout messages now contain time stamps and message-type tags}}


This step-by-step guide has been verified on fresh CentOS 7 and RHEL 7 installs but should be applicable with little to no changes on most distribution.
{{history|0.13.2|
* Limit multiplayer player name to 60 characters.}}


The guide assumes you will install the headless server under '''/opt/factorio''', adjust paths according to your own setup. We will also suggest that you run the Factorio server as a separate user to harden security of your setup.
{{history|0.13.0|
* Improved Multiplayer game UX
* Server games are published to the server and clients can browse existing games.
* Removed multiplayer peer-to-peer mode.
* Building sound is played also for other players in multiplayer.
}}


This guide does not handle firewall/port forwarding since this can be done in various ways on Linux (make sure to read up how this is done as a Linux admin on your particular distribution)
{{history|0.12.31|
* Human readable error notice when multiplayer connection wasn't successful. (https://forums.factorio.com/23132)
* Improved map download speed when connecting to multiplayer game.}}


You can use the [https://github.com/Bisa/factorio-init Linux factorio-init script] to start/stop your headless server in a much better way. The script will ensure you only ever use the most recent save when your server starts (even if that was an auto-save) while also letting you set a number of other settings like Autosave frequency and Latency settings. This script will also simplify updating the server when combined with the [https://github.com/narc0tiq/factorio-updater Linux factorio-updater script].
{{history|0.12.30|
* Mod checksums are calculated when the game starts and are compared with other peers when joining a multiplayer game. This is to ensure everyone has exactly the same mod in order to prevent desyncs caused by local changes made to mod files.}}


* Download the at least v 0.12.0 [https://www.factorio.com/download/experimental Experimental Version] and upload the linux tar.gz package to your server /tmp
{{history|0.12.28|
* Extract the package to /opt/factorio
* Added --port to specify which network port the game should use, when hosting with --start-server or --mp-load-game.}}
<nowiki>#cd /opt/
#tar -xzf /tmp/factorio.tar.gz</nowiki>
* Check the binary to find if you need any libs installed
<nowiki>#ldd /opt/factorio/bin/x64/factorio
        libasound.so.2 => not found
        libX11.so.6 => not found
        truncated ....
</nowiki>
* Install each of the missing libs, i.e the ones labelled "not found" using your distro's package handler
** It will ask to install graphics and audio libraries as well, but will not use them in headless mode.
<nowiki># yum whatprovides libasound.so.2
alsa-lib-1.0.28-2.el7.i686 : The Advanced Linux Sound Architecture (ALSA) library
Repo        : base
Matched from:
Provides    : libasound.so.2


# yum install alsa-lib libX11 <and all other "not found" libs in your case</nowiki>
{{history|0.12.27|
* The report of different mods when trying to connect to multiplayer game is now scroll-able when needed.
* Better message when the server leaves a multiplayer game}}


* Add a new user to your system and assign ownership of the Factorio dir to it (please, do not run as the root user)
{{history|0.12.11|
<nowiki>#useradd factorio
* Added --no-auto-pause: When running as a server, --no-auto-pause will prevent stopping the game when no players are connected.}}
#chown -R factorio:factorio /opt/factorio</nowiki>


* Try the binary
{{history|0.12.9|
<nowiki>#su factorio
* Added resume button to multiplayer game menu}}
#/opt/factorio/bin/x64/factorio --start-server savename</nowiki>
As long as it fails saying it cannot find/open the savename.zip you are set! Just upload a save from your own computer and put it in the /opt/factorio/saves directory


==== Dedicated/Headless server in version 0.11.X ====
{{history|0.12.7|
*New command line options for the headless server: --disallow-commands and --peer-to-peer}}


It was still possible to achieve a Dedicated server in version 0.11.X, but it required some workarounds.  
{{history|0.12.5|
* Multiplayer broadcast (heartbeats) is done via a single message when not using peer2peer.
* Further optimizations in size of the Multiplayer heartbeat (message sent every tick).
* LatencyState is suspended when player is killed (and waiting for respawn) in Multiplayer.
}}


Workarounds in version 0.11.x:
{{history|0.12.4|
* Simple mechanism for multiplayer relaying via the server.
* Less annoying glitches when running and shooting in multiplayer with latency hiding.}}


* Linux Headless server / VNC: https://forums.factorio.com/viewtopic.php?f=53&t=6449
{{history|0.12.0|
* [https://forums.factorio.com/viewtopic.php?f=53&t=6585 Dedicated Multiplayer Server Guide]
* Multiplayer latency hiding (gives impression that some common tasks are performed immediately)
* Factorio can run as a dedicated server without graphics.
* Basic PvP: New forces can now be created and merged back together; a cease-fire can be agreed upon between forces
* IPv6 support for multiplayer.
* DNS names can be used when connecting to multiplayer game.
* Player's logistic filters are now remembered after respawn in multiplayer
* Smaller multiplayer heartbeat packet size.
}}


== Technical Implementation Details ==
{{history|0.11.19|
* Multiplayer dropping threshold is doubled during map upload / download.}}


Notes about some technical details surrounding multiplayer have been published by the development team in several Friday Facts blog posts:
{{history|0.11.17|
* Autosaves in multiplayer are performed at the same time by all clients (interval is set by hosting player).
* Progress bar is shown when non-responsive peers are about to be dropped from the game in the Multiplayer.
* Progress bar is shown when other peers in multiplayer are saving map.}}


* [http://www.factorio.com/blog/post/fff-76 Lock step architecture]
{{history|0.11.16|
* [http://www.factorio.com/blog/post/fff-99 Client-server connections]
* Revived character (after dying in multiplayer) are placed on the spawn point instead of the center of the map.}}
* [http://www.factorio.com/blog/post/fff-143 NAT punching, coming in 0.13]


== More Guides ==
{{history|0.11.2|
*  Mods that don't affect game state are not needed to be synchronized when playing multiplayer game or replaying game.}}


* [https://www.chef.io/blog/2016/03/21/building-a-factorio-multiplayer-server-on-digital-ocean/ How to set up Factorio server with cookbook]
{{history|0.11.0|
* [http://youtube.com/watch?v=MqsqRWNsbPM How To set up a Factorio Multiplayer Server | Guide | Tutorial], by Teaspoon
* Introduced}}
* [https://forums.factorio.com/viewtopic.php?f=53&t=6720 Tips to connect in multiplayer], by Nondre


== Miscellaneous Tips ==
{{C|Main}}
* The key for [[Console commands]] is also used initiate chat in multiplayer. To execute a command instead of chatting, you need to type ''/c'' before the command. Commands executed are visible to all players. Additionally, the multiplayer game must have been started with commands allowable for commands to work.
* Set the player's color using the command
/c game.get_player("''x''").color = {r=0.7, g=0.5, b=0.1, a=0.9}
Where ''x'' is the player's name. r, g and b are for red, green and blue respectively (possible values are between 0 and 1, use the right-most column on http://prideout.net/archive/colors.php to convert colors to rgb numbers). a is alpha channel aka Transparency of the color to the base texture. For single player, replace ''get_player("x")'' with ''player'' to set the color.

Latest revision as of 20:08, 14 November 2024

Players colored preview.png

In addition to being a single-player game, Factorio also supports multiplayer, allowing many players to cooperate and assist each other, or work against each other in pvp. This page documents how to set up a multiplayer game, how to join one, and the Multiplayer Admin features for managing other users and the server. By default, multiplayer games run the CO-OP freeplay scenario where all players work together to launch a rocket with a satellite into space. Other scenarios, including PvP maps, are available for download from the Maps and Scenarios forum.

Setting Up a Multiplayer Game

A multiplayer game.

Multiplayer games can be joined, hosted while playing, or hosted by a dedicated server. Multiplayer games can be advertised to other players on the same LAN or worldwide.

To start playing a multiplayer game, select the Multiplayer button from the main menu. Then, choose one of these options to host and play:

  • Host new game: Specify the desired scenario, adjust the map generator settings, and set the server visibility. The server visibility determines how your game will be advertised to other players. You can choose from:
    • Public: Your game will be listed on the public games list.
    • Steam: Enables or disables the "Join Game" feature through Steam.
    • LAN: Your game will be listed on your local network.
  • Host saved game: Pick a saved game from the list and set the server visibility as above.

To join an existing game, choose one of these options:

  • Browse public games: Search for and join any public game that meets your criteria.
  • Browse LAN games: Join any game that is hosted on your local network.
  • Connect to address: Join any game by entering the server’s IP address. This option is useful if the host does not use any server visibility.

Notes and tips:

  • All game instances need the installation of exactly the same game-versions and mods.
  • Factorio servers use port 34197. The port can be changed in the config file.
  • Factorio uses UDP only. The game builds its own "reliable delivery" layer built on UDP to deal with packet loss and reordering issues.
    • Make sure you configure your router's port forwarding correctly for port 34197.
    • Make sure your router does not randomize the source port on packets outbound from 34197. Some routers do this and require additional configuration to prevent it.
    • Make sure there is no firewall or anti-virus blocking the UDP-packets.
  • The hard limit for the number of players is 65,535. However, practical limit for this is much lower, popular streamers have managed to get well over a hundred players.

Dedicated/Headless server

A dedicated (or headless) server can be started using the --start-server command line option. You can run factorio --help to get a list of all command-line arguments that Factorio accepts. Any version of the game can be run in headless mode, though for Linux servers it may be preferable to use the Headless version of the game, which does not include graphics to reduce download size. This can be found on the factorio.com Downloads page.

In the headless mode:

  • Graphics are not initialized (faster start up, less memory usage, works on completely headless servers)
  • Game starts immediately and loads a save given as a parameter to the command
  • The server has no character in game
  • Game is paused while there are no players connected (though this can be overridden using the no-auto-pause option in the server-settings.json)
  • Saves the game on exit (and autosaves normally)

0.13 onwards expects --start-server to be followed by a path to a save file.

You will need to create your save file before you start the server, as the dedicated server REQUIRES a save file to be provided. This can easily be done using the --create command-line argument. For example:

./bin/x64/factorio --create ./saves/my-save.zip       # This creates a new save, as if by clicking the New Game button in the GUI
./bin/x64/factorio --start-server ./saves/my-save.zip # This starts a server that will host the file created on the previous line

There are several JSON configuration files that factorio can make use of to change the server and map settings:

  • map-gen-settings to set parameters used by the map generator such as width and height, ore patch frequency and size, etc.
  • map-settings to control pollution spread, biter expansion and evolution, and more
  • server-settings which consolidated several command-line options into a single file

Example files for each of these parameters are included in the data subdirectory, and are also visible on Wube's github here: https://github.com/wube/factorio-data

The --map-gen-settings and --map-settings options must be used with the --create option when you create a new map. For example:

./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json

Starting the factorio server requires you to specify the location of the server-settings.json file. By default this is in the factorio data folder. For example to start factorio using the most recent saved map, you would run:

./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json

On windows, it may be useful to start the server with a .bat file. The bat file should have the following content:

start /wait .\bin\x64\factorio.exe --start-server-load-latest --server-settings .\data\server-settings.json

Running a headless Windows server can prevent you from opening another instance of the game to play. This is resolved by running the batch file as an other user (Shift-Right Click the batch file to get that option). This allows you to run a server and a client on the same machine.

See Command_line_parameters for more command line parameters.

Setting up a Linux Factorio server

Note: Factorio now requires glibc version 2.18, but CentOS/RHEL 7 only ship with version 2.17 so this guide will no longer work without manually compiling glibc 2.18.

This step-by-step guide has been verified on fresh CentOS 7 and RHEL 7 installs but should be applicable with little to no changes on most distributions.

The guide assumes you will install the headless server under /opt/factorio, adjust paths according to your own setup. We will also suggest that you run the Factorio server as a separate user to harden security of your setup.

Note that there are two distinct packages for Linux that can be used to run a headless server. First is the usual Linux download, that contains the full game. The other is the special headless package. The headless package does not contain any files irrelevant for a pure server, such as graphics and sounds. It is also not linked against libraries that may not be present on a server machine, such as Xlib, libGL or libasound. This option should be selected if running in a 3rd party hosted server.

This guide does not handle firewall/port forwarding since this can be done in various ways on Linux (make sure to read up how this is done as a Linux admin on your particular distribution)

Basic installation

  • Download the selected package -- either full game or the headless package -- and upload the Linux tar.gz or tar.xz package to your server /tmp
  • Extract the package in /tmp to /opt/factorio
$cd /opt/

$sudo tar -xzf /tmp/factorio.tar.gz # Use the correct file name. It includes the factorio version number
$sudo tar -xJf /tmp/factorio.tar.xz # if you downloaded a .tar.xz file (ver 0.15.x)
  • Add a new user to your system and assign ownership of the factorio dir to it (please, do not run as the root user, sudo may be needed)
$useradd factorio
$chown -R factorio:factorio /opt/factorio
  • Try the binary
$su factorio
$/opt/factorio/bin/x64/factorio --start-server savename

As long as it fails saying it cannot find/open the savename.zip you are set! Just upload a save from your own computer and put it in the /opt/factorio/saves directory, or use the --create ./saves/newgame.zip argument.

How to list a server-hosted game on the matching server

In order to publish the game to the matching server, Factorio needs to be given some more information than just the save file location. These information are provided in a server settings file.

To create a server settings file, look at the example file located in data/server-settings.example.json in the Factorio Application directory. The recommended way is to make a copy of this example file and edit the copy.

The following values can be changed:

Name
This will be the name under which the server will be listed in the server browser
Description
A description of your server. May contain up to 5000 characters. MP server description
Tags
A list of game tags
Max Players
Allows you to limit the number of players that can be connected to the server at the same time. If you want no limit, just set max_players to 0.
  • Visibility for server browser: May be either public, LAN or hidden.
    • Public: The server will appear in the public server list. This requires the login credentials below to be filled in.
    • LAN: The server will not appear in the public server list, but will be available through the Play On LAN button
    • Hidden: Clients will have to connect using the server's IP address
  • User credentials using a username and password or authentication token (found on the factorio website or in the player-data.json): These are necessary if you wish to make the server public. Otherwise, they can be left empty.
    • For security reasons it is recommended to use authentication token as this document is stored as plain text. Though it should be noted that an authentication token is a sensitive piece of information as well, and you are well-advised to keep it secret.
  • Server Password
    • Field name is game_password
  • Whether to verify user identity

(There are additional values in v0.14 of factorio.)

Technical Implementation Details

Notes about some technical details surrounding multiplayer have been published by the development team in several Friday Facts blog posts:

DNS SRV Records

Factorio supports DNS SRV records since 1.1.67.

This makes it easier to have multiple Factorio servers on a single host and allow users to connect to them with distinct subdomains instead of having to enter port numbers.

The service name is _factorio and it only supports _udp protocol.

Example:

Domain: subdomain.domain.tld
IP:     192.0.2.2
Port:   10002

DNS records:
subdomain.domain.tld     IN A   192.0.2.2 
_factorio._udp.subomain.domain.tld IN SRV 0 0 10002 subomain.domain.tld.

Now a Factorio client connecting to subdomain.domain.tld will actually connect to subdomain.domain.tld:10002

Example screenshot of config in Cloud Flare:

Screenshot of SRV record settings Cloudflare dashboard.png

Log Entries:

  • Factorio will log a "DNS SRV lookup returned [...]" message when it found a SRV record for the given domain
  • With verbose logging Factorio will also log "DNS SRV lookup for [domain] didn't return any usable records" when there's no SRV record

Miscellaneous Tips

  • The key for console commands is also used initiate chat in multiplayer. To execute a command instead of chatting, you need to type /c before the command. Commands executed are visible to all players. Additionally, the multiplayer game must have been started with commands allowable for commands to work.
  • Set the player's color using the command
/color r g b

r, g and b are for red, green and blue respectively (possible values are between 0 and 1, use this site to convert colors to rgb numbers).

  • To give yourself admin access, you need to create a server-adminlist.json in the same directory as factorio-current.log. The file should contain a list of admins, like so: [ "user1", "user2" ]

This file will be created if you promote a player through the console.

Joining a Multiplayer game

As of version 0.13, players no longer necessarily have to port-forward to play with others. Players may join each other through Steam, or by just the port-forwarded host.

Players wishing to join a game may do so in multiple ways:

  • Joining by directly inputting a public IP and port into Factorio.
  • Selecting the server from the active public server menu.
  • Joining through Steam's services.
  • Playing a local LAN game.

Joining by IP

To join a multiplayer game by IP, you will need to know the public IP of a valid server. You can find this through social media, websites, or by word of mouth. After acquiring the IP and port, simply go to play -> Multiplayer -> Connect to server, and provide all the information it asks for.

If the server has been set up correctly to accept public connections, you should be able to join the game.

Joining via server list

Factorio's devs keep a list of all public servers that declare themselves to the service, allowing players to join directly through Factorio. Most of these servers will be password-requiring, but many completely public servers can be connected to. To join via server list, go to Play -> Multiplayer -> Browse public games. Provide your Factorio.com login if asked, and a list of public servers will appear. Simply select one.

Joining through Steam

Steam provides a "game invite" system, simply use that to join. You can find more info about how to use steam in it's documentation. This is the most recommended way for the average player to use multiplayer with their friends, as it allows Steam to handle everything.

Joining a local LAN game

If you have some friends on the same internet connection as you (in the same building or network), you may play a LAN game. Simply go to Play -> Multiplayer -> Play on LAN.

Connecting to a Server Behind NAT

Factorio requires that the server (in client-server mode) have a publicly accessible IP address or that all players are on the same LAN. If you are behind NAT, you must set up port forwarding (see above for port number) or use virtual LAN software such as Hamachi or Evolve.

Multiplayer games will be launched in client-server mode (also multiplayer forwarding mode). In this mode, all clients send their network traffic to the server and the server forwards the traffic to the other clients. The advantage of this is that it allows games where some players are inside a LAN and others are outside. The disadvantage may be slightly more lag as packets must travel an extra hop (through the server).

PvP

In PvP mode, players can be on different forces. Each force can have one (free-for-all) or more players (teams). Each force has its own independent research progression. Additionally, each force's Military units and structures will attack other players as enemies, unless a cease fire is set. Note that, depending on the scenario, cease fires may be unidirectional — setting a cease fire with an opposing force does not guarantee a cease fire from them in return.

To start a PvP game, you can select the 'PvP' scenario from the 'Play' menu, or download a custom scenario which also supports PvP.

After downloading a PvP scenario, you need to move it to your application directory, and create the multiplayer game using the scenario.

  1. Download the scenario and place the scenario directory in the scenarios directory within your user data directory.
  2. Launch Factorio
  3. Click Play
  4. Click Multiplayer
  5. Click Scenario
  6. Choose the PvP scenario you want and click Create
  7. Choose latency and other settings, then click Play
  8. Other players can now join the game

Forces

Forces can be manually created via the console. This allows any map/scenario to be used for PvP. This may not be as convenient as a pre-made PvP scenario, as there will be no way for players to turn on/off cease fires other than through the console.

Each created force has its own research progression and different forces may attack each other.

The console commands for setting up and controlling forces are below:

game.create_force("Name")
--Creates the force "Name"

game.players["Player_name"].force = game.forces["Name"]
--Sets this player to the new force

game.forces["Name"].set_cease_fire("Other_force_name", true)
--Sets the new force ceasefire to the "other force"

game.forces["Name"].set_spawn_position({x = 10, y = 20}, game.surfaces[1])
--Sets the spawn position of the force

game.print(#game.forces)
--Prints the number of forces

for name, force in pairs (game.forces) do
   game.print(name)
end
--Prints the name of all the forces

The ability of players and entities belonging to one force to interact with structures belonging to another, non-friendly force is limited. However, some types of interactions are still possible:

Manual pickup from belts
Players can pick up items traveling along a transport belt that belongs to an opposing force. Note however that this can't be automated: Inserters will not take items from an opposing force's belts.
Belt network connection
Belts will connect to each other regardless of force membership, so it's possible to extend an opposing force's belt line, and items will flow to them. It is also possible to side-load into, and place items onto (with inserters) an opposing force's belt line.
Fluid network connection
Pipes (and storage tanks, and pumps, &c) will connect to each other regardless of force membership. For example, it's possible to pump fluids out of or into a storage tank belonging to an opposing force.
Power leeching
Players can draw power from an opposing force's electric network, by building structures inside the coverage area of a power pole belonging to an opposing force. Power poles that you build next to a power pole belonging to an opposing force will automatically connect to it, but will be impossible to connect or disconnect manually.

History

Narrative history

Because of the potentially immense amount of activity on a map, the game engine utilizes a lock step architecture. All instances of the game run full simulations of the entire world and only player actions are transferred across the network.

Multiplayer games were introduced to Factorio with version 0.11.0. The only connection method available was peer-to-peer mode which meant every player had to be able to directly communicate with every other player. In version 0.12.4, a client-server mode of communication was introduced in which the server (either a dedicated one or the player who hosted the game) relays messages to all peers. This means that direct connection between all players is no longer necessary. As of version 0.13, P2P connecting is completely removed.

As of version 0.12.0, the game features "latency hiding" mechanics where the game simulates some of the player's actions locally to make some common interactions (such as moving the player's character) more fluid. Not every action is a part of latency hiding – most notably, car or train driving and shooting are not a part of it.

Version history

Maintainer note: The following history may not be fully up to date, or comprehensive. Factorio's multiplayer has undergone a great deal of small changes since its inception, however this history will provide a rough overview.

  • 0.14.14:
    • Added multiplayer server option "Autosave only on server".
    • Deconstructing/canceling deconstruction sets the "last user" on an entity.
    • Decreased the size of connection accept message with lot of mod which could help some people with 50+ mod multiplayer games.
  • 0.14.13:
    • Reconnecting to multiplayer game that the player is already in (due to being dropped, most often) instantly closes the previous connection and connects the player.
  • 0.14.11:
    • Multiplayer user names can only consist of letters, and -_. characters.
  • 0.14.10:
    • Disabled 32bit (x86) multiplayer. All hosts and members must be running the 64bit (x86_64) version of the game.
  • 0.14.8:
    • More than 10 players in one game will reduce the rate the game is saved to the server.
  • 0.14.6:
    • Username is now set to username setting, not email.
  • 0.14.5:
    • Added AFK Auto kick interval to multiplayer host settings (with never as default).
  • 0.14.3:
    • When save of scenario is loaded in multiplayer, it's scenario is saved in user scenarios.
    • Added /time command to print the current map age.
    • Added option to host multiplayer game with scenario (it only had new game/load game there).
  • 0.14.2:
    • Can specify limit of upload speed when hosting.
  • 0.14.0:
    • Server doesn't stop/slow down the game when some client is too slow, stops communicating or saves the game longer than the server.
    • Players automatically quit game after 3 desyncs.
    • Removed the option to enable/disable latency hiding, it is always on on clients (and off on the server).
  • 0.13.10:
    • Server stdout messages now contain time stamps and message-type tags
  • 0.13.2:
    • Limit multiplayer player name to 60 characters.
  • 0.13.0:
    • Improved Multiplayer game UX
    • Server games are published to the server and clients can browse existing games.
    • Removed multiplayer peer-to-peer mode.
    • Building sound is played also for other players in multiplayer.
  • 0.12.30:
    • Mod checksums are calculated when the game starts and are compared with other peers when joining a multiplayer game. This is to ensure everyone has exactly the same mod in order to prevent desyncs caused by local changes made to mod files.
  • 0.12.28:
    • Added --port to specify which network port the game should use, when hosting with --start-server or --mp-load-game.
  • 0.12.27:
    • The report of different mods when trying to connect to multiplayer game is now scroll-able when needed.
    • Better message when the server leaves a multiplayer game
  • 0.12.11:
    • Added --no-auto-pause: When running as a server, --no-auto-pause will prevent stopping the game when no players are connected.
  • 0.12.9:
    • Added resume button to multiplayer game menu
  • 0.12.7:
    • New command line options for the headless server: --disallow-commands and --peer-to-peer
  • 0.12.5:
    • Multiplayer broadcast (heartbeats) is done via a single message when not using peer2peer.
    • Further optimizations in size of the Multiplayer heartbeat (message sent every tick).
    • LatencyState is suspended when player is killed (and waiting for respawn) in Multiplayer.
  • 0.12.4:
    • Simple mechanism for multiplayer relaying via the server.
    • Less annoying glitches when running and shooting in multiplayer with latency hiding.
  • 0.12.0:
    • Multiplayer latency hiding (gives impression that some common tasks are performed immediately)
    • Factorio can run as a dedicated server without graphics.
    • Basic PvP: New forces can now be created and merged back together; a cease-fire can be agreed upon between forces
    • IPv6 support for multiplayer.
    • DNS names can be used when connecting to multiplayer game.
    • Player's logistic filters are now remembered after respawn in multiplayer
    • Smaller multiplayer heartbeat packet size.
  • 0.11.19:
    • Multiplayer dropping threshold is doubled during map upload / download.
  • 0.11.17:
    • Autosaves in multiplayer are performed at the same time by all clients (interval is set by hosting player).
    • Progress bar is shown when non-responsive peers are about to be dropped from the game in the Multiplayer.
    • Progress bar is shown when other peers in multiplayer are saving map.
  • 0.11.16:
    • Revived character (after dying in multiplayer) are placed on the spawn point instead of the center of the map.
  • 0.11.2:
    • Mods that don't affect game state are not needed to be synchronized when playing multiplayer game or replaying game.