На других языках: Deutsch English Español 日本語 Українська 简体中文

Multiplayer/ru: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
(Turning a page from fully translated into half translated is not desirable)
Line 1: Line 1:
{{Languages}}
{{Languages}}


В дополнение к однопользовательской игре, Factorio также поддерживает многопользовательский режим, позволяя многим игрокам сотрудничать и помогать друг другу, или работать друг против друга в pvp. На этой странице описано, как настроить многопользовательскую игру, и как войти в неё. По умолчанию многопользовательские игры запускают CO-OP [[Game modes and options|свободный сценарий]] где все игроки работают вместе, чтобы запустить ракету со спутником в космос. Другие сценарии, включая PvP-карты, доступны для загрузки с [https://forums.factorio.com/viewforum.php?f=36&sid=93d1fbe9336d31d6bac60847b6c97985|форума о картах и сценариях].
Сам мультиплеер появился в 0.11.x версии игры и до сих пор (0.12.32) он играбелен только в сетях, с низкой задержкой (LAN). Т.е. игра между игроком из Москвы и игроком из Владивостока будет по крайней мере не очень приятной, т.к. игра принимает скорость (тик-тайм) для всех исходя из наиболее большой задержки между игроками. Во всяком случае с 0.12.0 версии появилась функция "скрытия задержки", что позволило игре быть более плавной, без сильных скачков тик-тайма.


== Настройка многопользовательской игры ==
В данное время мультиплеер в игре работает по схеме p2p (клиент-клиент), что означает отсутствие необходимости в сервере, хотя и присутствует сборка игры, без графического функционала (headless).


Мультиплеерные игры можно объединить, размещенный во время игры, или размещенный на выделенном сервере. Многопользовательские игры можно открывать другим игрокам в одной и той же локальной сети или во всем мире.
Для любых серьёзных функций (сохранение, заход в игру и т.д.) игра останавливается, чтобы синхронизироваться между всеми игроками. Это означает, что если какой-нибудь из игроков имеет настройку автосохранение раз в 1 минуту, то у всех игроков, даже у тех, кого эта настройка выключена, игра будет сохранятся раз в минуту.


Используйте ''Мультиплеер'' в меню ''Играть'', чтобы начать играть в многопользовательскую игру, выберете ''Новый'' или ''Загрузить'' или ''Сценарии'' для сервера и играйте, или ''Смотреть'' или ''Играть в LAN'' для подключения к уже запущенной игре. Хост так-же можно не открывать для всех, для этого Вам понадобится сервер (публичный или иной доступный) IP адресс; Вы можете ''Подключиться'' прямо к нему для для входа в игру.
Любой игрок может зайти в существующую игру по известному ему IP адресу и порту. Когда игрок подключается к игре, игра ставиться на паузу автоматическии, и игрок получает карту. В случае, если хост игры закончит играть, то остальные игроки могут продолжить играть ([не проверено] в одиночной игре) не прерывая игру.


Примечания и советы:
Иногда во время игры происходит рассинхронизация. Причины рассинхронизации могут быть разными, от потери пакетов в сети, до разных версий модов. До 0.12.30 игра проверяла только версии модов и не проверяла их hash, и некоторые игроки могли изменять файлы игры и модов, не говоря об этом другим игрокам, что могло с большой вероятностью вызвать рассинхронизацию. Когда происходит рассинхронизация, игра ставится на паузу и все игроки скачивают карту у хоста-игры заного, и после этого игра автоматически продолжается.


* Все экземпляры нуждаются в установке ''точно так же'' как версия игры и модификации к ней.
* Сервер Factorio использует порт '''34197'''. Порт можно изменить в файлах [[Application directory|настройках]].
* Factorio использует '''Только UDP'''. Убедитесь, что вы правильно настроили перенаправление портов маршрутизатора. (Игра создает собственный слой ''надежной доставки'', построенный на UDP, для решения проблем с потерей пакетов и переупорядочения.)
** Убедитесь, что нет брандмауэра или антивируса, блокирующего UDP-пакеты.
* Жесткий лимит для количества игроков [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586| 65,535]. Однако практический предел для этого намного ниже, популярным стримерам удалось чуть более ста игроков.


"Sorry, there's no more time for further translation now."
== Игра через LAN / Интернет ==


=== Dedicated/Headless server ===
Игра через интернет не гарантируется в 0.11.x версии игры. Количество лагов в игре зависят от скорости соединения и задержек между всеми игроками. С 0.12.x версии стало более комфортно играть через интернет, т.к. появилась функция "скрытия задержки", но она по прежнему не идеальна из-за схемы p2p, где принимается наихудшее соединение из игроков для всех.


As of Factorio version 0.12.0 onwards, 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.
* Все игроки должны иметь одинаковые версии игры и модов.
* Желательно всем игрокам, кроме хоста выключить автосохранение.
* По умолчанию factorio использует порт '''34197'''. Порт можно изменить [[Application directory|тут]].
* Factorio использует протокол '''UDP''', так что убедитесь, что ваш роутер сконфигурирован корректно.
** В игре реализован свой протокол доставки пакетов, построенный на UDP протоколе, для уменьшения потерь пакетов и проблем с порядком доставки пакетов
** Убедитесь, что у вас правильно сконфигурирован firewall и ваше антивирусное ПО не блокирует UDP пакеты.
** Хосту игры обязательно иметь белый (видно из интернета) IP адрес, чтобы другие игроки могли подключиться к вам.
** Так же можно использовать различные ПО, предоставляющее VPN туннели, между игроками. В таком случае ваша сеть превращается в LAN over Internet, что не убирает проблему задержек, но убирает проблему с NAT'ом. [https://forums.factorio.com/viewtopic.php?f=30&p=51201#p50553 ''Невозможность игры при 3+ игроков одновременно.]''
* Теоретический лимит игроков равен [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586 65535]. :)


In the headless mode:
=== Голосовой чат ===
* Graphics are not initialized (faster start up, less memory usage, works on completely headless servers)
* Рекомендуется использовать TeamSpeak, Skype, RaidCall, Discord, т.к. в игре желательно активное координация действий (постройка, отражение атак и т.д.). Сервера TeamSpeak можно найти [https://forums.factorio.com/viewforum.php?f=53 на форуме].
* 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:
* Можно поискать игроков на [https://forums.factorio.com/viewforum.php?f=53 форуме] или в вашей любимой соцсети, к примеру Facebook или VK.
* Большинство игроков не имеют белый IP адрес и активно используют различное ПО, предоставляющее VPN туннели, между игроками, к примеру Hamachi или Evolve.
* Так же можно поискать [https://forums.factorio.com/viewtopic.php?f=5&t=9136 в Steam]


<pre>
== Сервер factorio или почему p2p ==
./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:
Правда с 0.12.x версии появилась сборка headless, которая эмулирует поведение сервера, но по прежнему им не является, а просто становится хостом игры.
* '''map-gen-settings''' to set parameters used by the map generator such as width and height, ore patch frequency and size, etc. (Added in 0.13)
* '''map-settings''' to control pollution spread, biter expansion and evolution, and more (Added in 0.15)
* '''server-settings''' which consolidated several command-line options into a single file (Added in 0.14.12)
Example files for each of these parameters are included in the data subdirectory.


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:
* [http://www.factorioforums.com/forum/viewtopic.php?f=38&p=74091#p73402 Информация от разработчиков]
* [http://www.factorioforums.com/forum/viewtopic.php?f=5&t=6077#p47283 Более старая информация]
* [http://www.factorioforums.com/forum/viewtopic.php?f=38&p=70874 Хорошее объяснение]


<pre>./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json</pre>
== Dedicated/Headless сервер ==


To start a server and a client on the same computer you need to launch the client with the following launch option:
С 0.12.0 версии headless/dedicated сервер может быть запущен из командной строки, с опцией '--start-server ВАШМИР.zip'.
<pre>--no-log-rotation</pre>


=== Setting up a Linux Factorio server ===
В этом режиме:
* Графическая часть игры не инициализируется совсем (быстрее загрузка, уменьшенное потребление памяти, полностью работает на серверах, где нет графической оболочки. К примеру можно запустить headless сервер на Debian)
* Игра запускается мгновенно и загружает сохранение(мир), который был передан в опциях запуска.
* Сервер не помещает игрока в игре, как это делает обычный хост.
* Игра останавливается, когда на сервере отсутствуют игроки.
* При закрытие сервера, сохраняется игра. (так же нормально функционирует автосейв)


'''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.
Чуть ниже расположена инструкция для запуска сервера на Windows или Linux


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.
==== Windows/Steam версия ====
[[File:Factorio-steam-config-headless.gif|thumb|right|Создание server.bat для Steam версии игры]]
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Откройте Steam и выберите factorio
* Нажмите на неё правой кнопкой мыши и выберите пункт 'Cвойства'
* Далее выберите вкладку 'ЛОКАЛЬНЫЕ ФАЙЛЫ'
* И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
* Перейдите в папку bin/x64 или bin/x32


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/stable 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.
==== Windows/Обычная версия ====
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Откройте папку установки factorio
* Для x64 систем по умолчанию
C:\Program Files\Factorio\bin\x64\
* Для x32 систем по умолчанию
  C:\Program Files\Factorio\bin\x32\


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)
==== Далее не имеет значение, Steam или обычная у вас версия игры ====
* Создайте текстовый файл и откройте его для редактирования Notepad'ом
* Скопируйте в него следующее
Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip
* Замените '''ВАШЕСОХРАНЕНИЕ''' на ваше название мира
* Сохраните файл, назвав его server.bat. '''ВАЖНО: При сохранении выберите тип файла 'Все файлы'.'''
* Используйте server.bat, чтобы запустить сервер.
* Чтобы закрыть сервер, используйте сочетание клавиш '''Ctrl+C'''. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением.


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].
==== Linux ====


* 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
Данный гайд был проверен на Debian версии 8.2 jessie. Так же он не объясняет настройку firewall, в Debian этим промышляет старый добрый iptables, а для этого есть Google.
* Extract the package in /tmp to /opt/factorio
Так же данный гайд подразумевает, что у вас есть хоть какое-то представление о работе Linux, иначе вы обречены ;)
<pre>
$cd /opt/


$sudo tar -xzf /tmp/factorio.tar.gz # Use the correct file name. It includes the factorio version number
И так, вы решили использовать headless сервер на Linux, в нашем случае на Debian, ну что ж, приступим:
$sudo tar -xJf /tmp/factorio.tar.xz # if you downloaded a .tar.xz file (ver 0.15.x)</pre>
* Скачиваете [https://www.factorio.com/download/experimental последнюю версию игры отсюда], в нашем случае сейчас это [https://www.factorio.com/get-download/0.12.33/alpha/linux64 Generic Linux tar package (64 bit .tar.gz)] (Внимание: [https://www.factorio.com/login только для авторизованных пользователей])
Распаковывайте её
tar -xzf factorio.tar.gz
* Создайте папки mods, saves
mkdir factorio/mods
mkdir factorio/saves
* Загрузите предварительно созданный мир в ''factorio/saves''
* Скорее всего вам потребуется установить ''libasound2''
aptitude install libasound2
* Попробуйте запустить сервер
factorio/bin/x64/factorio --start-server world.zip
* Если сервер не запустился, ругаясь на отсутствие нужных библиотек, то установить их можно просто поискав в репозиториях из консоли
aptitude search название_библиотеки
* С большой вероятностью эта библиотека найдётся в репозиториях, если нет, то поищите в Google или напишите на нашем форуме.
* Установить библиотеку можно командой
aptitude install название_библиотеки
* Попробуйте снова запустить сервер, если он опять не запустился, повторите предыдущие два пункта
* Можно посмотреть список используемых библиотек сервером
ldd factorio/bin/x64/factorio


* 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)
==== Dedicated/Headless сервер для 0.11.X версии ====
<pre>
$useradd factorio
$chown -R factorio:factorio /opt/factorio</pre>


* Try the binary
Как ни странно, есть способ запуска сервера в 0.11.X версии игры, но он немного требует доработки.
<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.
Что необходимо сделать 0.11.x:


=== How to list a server-hosted game on the matching server ===
* [https://forums.factorio.com/viewtopic.php?f=53&t=6449 Linux Headless сервер / VNC]
* [https://forums.factorio.com/viewtopic.php?f=53&t=6585 гайд по Dedicated/Headless серверу]


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 brief description of your server
; 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 ===
[https://forums.factorio.com/viewtopic.php?f=53&t=6501 Такой режим игры стоит по умолчанию и не требует никаких телодвижений, для его активации.]


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


* [http://www.factorio.com/blog/post/fff-76 Lock step architecture]
* [https://forums.factorio.com/viewtopic.php?f=14&t=8352 PvP с возможностью создавать своих кусак (устаревший)]
* [http://www.factorio.com/blog/post/fff-99 Client-server connections]
* Сейчас (0.12.x) можно вручную, через игровую консоль, поменять группировку] для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой:
* [http://www.factorio.com/blog/post/fff-143 NAT punching, introduced in 0.13]
/c game.local_player.force = "neutral"


=== More Guides ===
== Группировки ==


* [https://www.chef.io/blog/2016/03/21/building-a-factorio-multiplayer-server-on-digital-ocean/ How to set up Factorio server with cookbook]
Так же вы можете создавать свои группировки (всего их может быть 64 штуки, включая 3 родные player, neutral, enemy). [https://forums.factorio.com/viewtopic.php?f=3&t=13512&start=80#p92087 Тут более детально об этом.]
* [http://youtube.com/watch?v=MqsqRWNsbPM How To set up a Factorio Multiplayer Server | Guide | Tutorial], by Teaspoon
* [https://forums.factorio.com/viewtopic.php?f=53&t=6720 Tips to connect in multiplayer], by Nondre


=== Miscellaneous Tips ===
/c game.create_force('force 1')
* 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.
:Создаём группировку с названием "force 1".
* Set the player's color using the command
:группировка "player" используется для всех игроков по умолчанию
  /c game.players["player_name"].color = {r=0.7, g=0.5, b=0.1, a=0.9}
:группировка "enemy" используется для кусак
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.
:группировка "neutral" особенная, она не вражеская, может взаимодействовать с другими группировками и так же её могут использовать другие группировки.
/c game.get_player('friend 1').force = game.forces['force 1']
:Изменяет игроку с именем "friend 1" группировку на "force 1"
  /c game.forces['force 1'].set_cease_fire('force 2', true)
:даёт указание группировке "force 1" атаковать другую группировку с именем "force 2", но не наоборот.
/c for v in pairs(game.forces) do game.local_player.print(v) end
:список всех группировок, существующих в данном мире


== 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.
* [http://www.factorio.com/blog/post/fff-76 Статья: пятничные факты #76]


Players wishing to join a game may do so in multiple ways:
== Больше информации/инструментов ==
* Используйте моды: [https://forums.factorio.com/viewtopic.php?f=14&t=6788 basic planner], [https://forums.factorio.com/viewtopic.php?f=14&t=4022 Planning-Tool-Mod]...
* Можете заглянуть к нам [https://forums.factorio.com/viewforum.php?f=53 на форум], возможно на ваш вопрос уже дан ответ.
* [https://github.com/jjasghar/factorio-cookbook Cookbook] для настройки headless сервера.


* Joining by directly inputting a public IP and port into Factorio.
''И помните, что factorio 0.11.x не рассчитана на игру в интернет сетях с большой задержкой.
* Selecting the server from the active public server menu.
* Joining through Steam's services.
* Playing a local LAN game.


It is recommended that players use voice chat (TeamSpeak, Discord, Mumble) 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]. The public Discord of the Factorio community can be found [https://discord.gg/yGQWgy5 here].
== Больше гайдов ==


=== Joining by IP ===
* [https://www.chef.io/blog/2016/03/21/building-a-factorio-multiplayer-server-on-digital-ocean/ Как настроить factorio сервер с помощью cookbook]
* [http://youtube.com/watch?v=MqsqRWNsbPM Как настроить factorio сервер | Гайд | Туториал], автор Teaspoon
* [https://forums.factorio.com/viewtopic.php?f=53&t=6720 Советы для мультиплеера], автор Nondre


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.
== Больше советов ==
* клавиша для [[Console commands|консоли]] открывает чат, для мультиплеера. Чтобы выполнить команду, вам нужно написать '/c ' перед самой командой.
* Можно поменять цвет игрока следующей командой
/c game.players[game.get_player('friend 1')].color = {r=0.7, g=0.5, b=0.1, a=0.9}
Где "friend 1" никнейм игрока. '''r''', '''g''' и '''b''' для красных, зелёных и синих цветов соответственно. '''a''' для альфа канала. Возможны значения '''от 0 до 1'''. [http://prideout.net/archive/colors.php Тут можно посмотреть распространённые цвета.]


If the server has been set up correctly to accept public connections, you should be able to join the game.
== ПО для настройки маршрутизации ==


=== Joining via server list ===
* https://forums.factorio.com/viewtopic.php?f=53&t=6393
 
* https://forums.factorio.com/viewtopic.php?f=53&t=6386
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.
* https://forums.factorio.com/viewtopic.php?f=53&t=7690
 
* [https://forums.factorio.com/viewtopic.php?f=53&t=7714 Гайд, для игры через Evolve]
=== 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.
 
=== Finding Other Players ===
 
* Use the [https://forums.factorio.com/viewforum.php?f=53 multiplayer board in the forum].
* 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.
* There is an external [http://serverlist.lgms.nl/ server browser] with various search options.
* Tell your friends to buy Factorio, then play with them!
 
 
=== 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 ([[Multiplayer#Playing_over_LAN_.2F_Internet|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 [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=7714 A guide for connecting with Evolve]
* [http://steamcommunity.com/sharedfiles/filedetails/?id=653628496 A guide for connecting with Hamachi]
 
== 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 [[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.
 
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.
 
# 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]].
# Launch Factorio
# Click ''Play''
# Click ''Multiplayer''
# Click ''Scenario''
# Choose the PvP scenario you want and click ''Create''
# Choose latency and other settings, then click ''Play''
# 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:
 
<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"
 
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
</pre>
 
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.
;Cable and wire connection
: Players can freely connect and disconnect [[Copper_cable|Copper cable]]s and [[Green_wire|Red/Green wire]]s from any entity that supports them, regardless of force membership. Electricity does not belong to a specific force, and it's possible to power structures with electricity from an opposing force's generators. Similarly, it's possible to read and write signals into a [[Circuit_network|Circuit network]] consisting mostly of an opposing force's devices.
 
== 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.
 
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. Latency hiding is enabled by default, but it can be enabled or disabled in Options → Other → Enable multiplayer latency hiding. Not every action is a part of latency hiding – most notably, car or train driving and shooting are not a part of it. It is recommended to keep this on, as many actions will be very stuttery on a low end internet connection.
 
=== 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.
 
{{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.
}}
 
{{history|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.}}
 
{{history|0.14.11|
* Multiplayer user names can only consist of letters, and <code> -_. </code> characters.}}
 
{{history|0.14.10|
* Disabled 32bit (x86) multiplayer. All hosts and members must be running the 64bit (x86_64) version of the game.}}
 
{{history|0.14.8|
* More than 10 players in one game will reduce the rate the game is saved to the server.}}
 
{{history|0.14.6|
* Username is now set to username setting, not email.}}
 
{{history|0.14.5|
* Added AFK Auto kick interval to multiplayer host settings (with never as default).}}
 
{{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).
}}
 
{{history|0.14.2|
* Can specify limit of upload speed when hosting.}}
 
{{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).
}}
 
{{history|0.13.10|
* Server stdout messages now contain time stamps and message-type tags}}
 
{{history|0.13.2|
* Limit multiplayer player name to 60 characters.}}
 
{{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.
}}
 
{{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.}}
 
{{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.}}
 
{{history|0.12.28|
* Added --port to specify which network port the game should use, when hosting with --start-server or --mp-load-game.}}
 
{{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}}
 
{{history|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.}}
 
{{history|0.12.9|
* Added resume button to multiplayer game menu}}
 
{{history|0.12.7|
*New command line options for the headless server: --disallow-commands and --peer-to-peer}}
 
{{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.
}}
 
{{history|0.12.4|
* Simple mechanism for multiplayer relaying via the server.
* Less annoying glitches when running and shooting in multiplayer with latency hiding.}}
 
{{history|0.12.0|
* Multiplayer latency hiding (gives impression that some common tasks are performed immediately)
* Factorio can run as a dedicated server without graphics (http://www.factorioforums.com/wiki/index.php?title=Multiplayer#Headless_server).
* 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.
}}
 
 
{{history|0.11.19|
* Multiplayer dropping threshold is doubled during map upload / download.}}
 
{{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.}}
 
{{history|0.11.16|
* Revived character (after dying in multiplayer) are placed on the spawn point instead of the center of the map.}}
 
{{history|0.11.2|
*  Mods that don't affect game state are not needed to be synchronized when playing multiplayer game or replaying game.}}
 
{{history|0.11.0|
* Introduced}}

Revision as of 09:53, 11 February 2018


Сам мультиплеер появился в 0.11.x версии игры и до сих пор (0.12.32) он играбелен только в сетях, с низкой задержкой (LAN). Т.е. игра между игроком из Москвы и игроком из Владивостока будет по крайней мере не очень приятной, т.к. игра принимает скорость (тик-тайм) для всех исходя из наиболее большой задержки между игроками. Во всяком случае с 0.12.0 версии появилась функция "скрытия задержки", что позволило игре быть более плавной, без сильных скачков тик-тайма.

В данное время мультиплеер в игре работает по схеме p2p (клиент-клиент), что означает отсутствие необходимости в сервере, хотя и присутствует сборка игры, без графического функционала (headless).

Для любых серьёзных функций (сохранение, заход в игру и т.д.) игра останавливается, чтобы синхронизироваться между всеми игроками. Это означает, что если какой-нибудь из игроков имеет настройку автосохранение раз в 1 минуту, то у всех игроков, даже у тех, кого эта настройка выключена, игра будет сохранятся раз в минуту.

Любой игрок может зайти в существующую игру по известному ему IP адресу и порту. Когда игрок подключается к игре, игра ставиться на паузу автоматическии, и игрок получает карту. В случае, если хост игры закончит играть, то остальные игроки могут продолжить играть ([не проверено] в одиночной игре) не прерывая игру.

Иногда во время игры происходит рассинхронизация. Причины рассинхронизации могут быть разными, от потери пакетов в сети, до разных версий модов. До 0.12.30 игра проверяла только версии модов и не проверяла их hash, и некоторые игроки могли изменять файлы игры и модов, не говоря об этом другим игрокам, что могло с большой вероятностью вызвать рассинхронизацию. Когда происходит рассинхронизация, игра ставится на паузу и все игроки скачивают карту у хоста-игры заного, и после этого игра автоматически продолжается.


Игра через LAN / Интернет

Игра через интернет не гарантируется в 0.11.x версии игры. Количество лагов в игре зависят от скорости соединения и задержек между всеми игроками. С 0.12.x версии стало более комфортно играть через интернет, т.к. появилась функция "скрытия задержки", но она по прежнему не идеальна из-за схемы p2p, где принимается наихудшее соединение из игроков для всех.

  • Все игроки должны иметь одинаковые версии игры и модов.
  • Желательно всем игрокам, кроме хоста выключить автосохранение.
  • По умолчанию factorio использует порт 34197. Порт можно изменить тут.
  • Factorio использует протокол UDP, так что убедитесь, что ваш роутер сконфигурирован корректно.
    • В игре реализован свой протокол доставки пакетов, построенный на UDP протоколе, для уменьшения потерь пакетов и проблем с порядком доставки пакетов
    • Убедитесь, что у вас правильно сконфигурирован firewall и ваше антивирусное ПО не блокирует UDP пакеты.
    • Хосту игры обязательно иметь белый (видно из интернета) IP адрес, чтобы другие игроки могли подключиться к вам.
    • Так же можно использовать различные ПО, предоставляющее VPN туннели, между игроками. В таком случае ваша сеть превращается в LAN over Internet, что не убирает проблему задержек, но убирает проблему с NAT'ом. Невозможность игры при 3+ игроков одновременно.
  • Теоретический лимит игроков равен 65535. :)

Голосовой чат

  • Рекомендуется использовать TeamSpeak, Skype, RaidCall, Discord, т.к. в игре желательно активное координация действий (постройка, отражение атак и т.д.). Сервера TeamSpeak можно найти на форуме.

Поиск игроков

  • Можно поискать игроков на форуме или в вашей любимой соцсети, к примеру Facebook или VK.
  • Большинство игроков не имеют белый IP адрес и активно используют различное ПО, предоставляющее VPN туннели, между игроками, к примеру Hamachi или Evolve.
  • Так же можно поискать в Steam

Сервер factorio или почему p2p

Уже довольно много было дискуссий на тему, почему игра не использует клиент-сервер модель. Решено было оставить модель клиент-клиент.

Правда с 0.12.x версии появилась сборка headless, которая эмулирует поведение сервера, но по прежнему им не является, а просто становится хостом игры.

Немного ссылок:

Dedicated/Headless сервер

С 0.12.0 версии headless/dedicated сервер может быть запущен из командной строки, с опцией '--start-server ВАШМИР.zip'.

В этом режиме:

  • Графическая часть игры не инициализируется совсем (быстрее загрузка, уменьшенное потребление памяти, полностью работает на серверах, где нет графической оболочки. К примеру можно запустить headless сервер на Debian)
  • Игра запускается мгновенно и загружает сохранение(мир), который был передан в опциях запуска.
  • Сервер не помещает игрока в игре, как это делает обычный хост.
  • Игра останавливается, когда на сервере отсутствуют игроки.
  • При закрытие сервера, сохраняется игра. (так же нормально функционирует автосейв)

Вам необходимо создать мир в простой игре, т.к. сервер не умеет создавать миры и ему необходим уже созданный мир, для запуска.

Чуть ниже расположена инструкция для запуска сервера на Windows или Linux

Windows/Steam версия

File:Factorio-steam-config-headless.gif
Создание server.bat для Steam версии игры
  • Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
  • Откройте Steam и выберите factorio
  • Нажмите на неё правой кнопкой мыши и выберите пункт 'Cвойства'
  • Далее выберите вкладку 'ЛОКАЛЬНЫЕ ФАЙЛЫ'
  • И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
  • Перейдите в папку bin/x64 или bin/x32

Windows/Обычная версия

  • Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
  • Откройте папку установки factorio
  • Для x64 систем по умолчанию
C:\Program Files\Factorio\bin\x64\
  • Для x32 систем по умолчанию
C:\Program Files\Factorio\bin\x32\

Далее не имеет значение, Steam или обычная у вас версия игры

  • Создайте текстовый файл и откройте его для редактирования Notepad'ом
  • Скопируйте в него следующее
Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip
  • Замените ВАШЕСОХРАНЕНИЕ на ваше название мира
  • Сохраните файл, назвав его server.bat. ВАЖНО: При сохранении выберите тип файла 'Все файлы'.
  • Используйте server.bat, чтобы запустить сервер.
  • Чтобы закрыть сервер, используйте сочетание клавиш Ctrl+C. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением.

Linux

Данный гайд был проверен на Debian версии 8.2 jessie. Так же он не объясняет настройку firewall, в Debian этим промышляет старый добрый iptables, а для этого есть Google. Так же данный гайд подразумевает, что у вас есть хоть какое-то представление о работе Linux, иначе вы обречены ;)

И так, вы решили использовать headless сервер на Linux, в нашем случае на Debian, ну что ж, приступим:

Распаковывайте её

tar -xzf factorio.tar.gz
  • Создайте папки mods, saves
mkdir factorio/mods
mkdir factorio/saves
  • Загрузите предварительно созданный мир в factorio/saves
  • Скорее всего вам потребуется установить libasound2
aptitude install libasound2
  • Попробуйте запустить сервер
factorio/bin/x64/factorio --start-server world.zip
  • Если сервер не запустился, ругаясь на отсутствие нужных библиотек, то установить их можно просто поискав в репозиториях из консоли
aptitude search название_библиотеки
  • С большой вероятностью эта библиотека найдётся в репозиториях, если нет, то поищите в Google или напишите на нашем форуме.
  • Установить библиотеку можно командой
aptitude install название_библиотеки
  • Попробуйте снова запустить сервер, если он опять не запустился, повторите предыдущие два пункта
  • Можно посмотреть список используемых библиотек сервером
ldd factorio/bin/x64/factorio

Dedicated/Headless сервер для 0.11.X версии

Как ни странно, есть способ запуска сервера в 0.11.X версии игры, но он немного требует доработки.

Что необходимо сделать 0.11.x:


Игровые режимы

Кооператив

Такой режим игры стоит по умолчанию и не требует никаких телодвижений, для его активации.

PvP

/c game.local_player.force = "neutral"

Группировки

Так же вы можете создавать свои группировки (всего их может быть 64 штуки, включая 3 родные player, neutral, enemy). Тут более детально об этом.

/c game.create_force('force 1')
Создаём группировку с названием "force 1".
группировка "player" используется для всех игроков по умолчанию
группировка "enemy" используется для кусак
группировка "neutral" особенная, она не вражеская, может взаимодействовать с другими группировками и так же её могут использовать другие группировки.
/c game.get_player('friend 1').force = game.forces['force 1']
Изменяет игроку с именем "friend 1" группировку на "force 1"
/c game.forces['force 1'].set_cease_fire('force 2', true)
даёт указание группировке "force 1" атаковать другую группировку с именем "force 2", но не наоборот.
/c for v in pairs(game.forces) do game.local_player.print(v) end
список всех группировок, существующих в данном мире

Технические подробности

Больше информации/инструментов

И помните, что factorio 0.11.x не рассчитана на игру в интернет сетях с большой задержкой.

Больше гайдов

Больше советов

  • клавиша для консоли открывает чат, для мультиплеера. Чтобы выполнить команду, вам нужно написать '/c ' перед самой командой.
  • Можно поменять цвет игрока следующей командой
/c game.players[game.get_player('friend 1')].color = {r=0.7, g=0.5, b=0.1, a=0.9}

Где "friend 1" никнейм игрока. r, g и b для красных, зелёных и синих цветов соответственно. a для альфа канала. Возможны значения от 0 до 1. Тут можно посмотреть распространённые цвета.

ПО для настройки маршрутизации