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

Multiplayer/ru: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Перевод 2ой части, осталось только переделать гайд под Debian)
(removed section that was just advertising random service outside of the game - same as en page)
 
(18 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
[[File:players_colored_preview.png|190px|right]]


Сам мультиплеер появился в 0.11.x версии игры и до сих пор (0.12.32) он играбелен только в сетях, с низкой задержкой (LAN). Т.е. игра между игроком из Москвы и игроком из Владивостока будет по крайней мере не очень приятной, т.к. игра принимает скорость (тик-тайм) для всех исходя из наиболее большой задержки между игроками. Во всяком случае с 0.12.0 версии появилась функция "скрытия задержки", что позволило игре быть более плавной, без сильных скачков тик-тайма.
Сам мультиплеер появился в 0.11.x версии игры и до сих пор (0.12.32) он играбелен только в сетях, с низкой задержкой (LAN). Т.е. игра между игроком из Москвы и игроком из Владивостока будет по крайней мере не очень приятной, т.к. игра принимает скорость (тик-тайм) для всех исходя из наиболее большой задержки между игроками. Во всяком случае с 0.12.0 версии появилась функция "скрытия задержки", что позволило игре быть более плавной, без сильных скачков тик-тайма.
Line 18: Line 19:
* Все игроки должны иметь одинаковые версии игры и модов.
* Все игроки должны иметь одинаковые версии игры и модов.
* Желательно всем игрокам, кроме хоста выключить автосохранение.
* Желательно всем игрокам, кроме хоста выключить автосохранение.
* По умолчанию factorio использует порт '''34197'''. Порт можно изменить [[Application Directory|тут]].
* По умолчанию factorio использует порт '''34197'''. Порт можно изменить [[Application directory|тут]].
* Factorio использует протокол '''UDP''', так что убедитесь, что ваш роутер сконфигурирован корректно.
* Factorio использует протокол '''UDP''', так что убедитесь, что ваш роутер сконфигурирован корректно.
** В игре реализован свой протокол доставки пакетов, построенный на UDP протоколе, для уменьшения потерь пакетов и проблем с порядком доставки пакетов
** В игре реализован свой протокол доставки пакетов, построенный на UDP протоколе, для уменьшения потерь пакетов и проблем с порядком доставки пакетов
Line 25: Line 26:
** Так же можно использовать различные ПО, предоставляющее VPN туннели, между игроками. В таком случае ваша сеть превращается в LAN over Internet, что не убирает проблему задержек, но убирает проблему с NAT'ом. [https://forums.factorio.com/viewtopic.php?f=30&p=51201#p50553 ''Невозможность игры при 3+ игроков одновременно.]''
** Так же можно использовать различные ПО, предоставляющее 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]. :)  
* Теоретический лимит игроков равен [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586 65535]. :)  
=== Голосовой Чат ===
* Рекомендуется использовать TeamSpeak, Skype, RaidCall, Discord, т.к. в игре желательно активное координация действий (постройка, отражение атак и т.д.). Сервера TeamSpeak можно найти [https://forums.factorio.com/viewforum.php?f=53 на форуме].
=== Поиск игроков ===
* Можно поискать игроков на [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]


== Сервер factorio или почему p2p ==
== Сервер factorio или почему p2p ==
Line 48: Line 40:


== Dedicated/Headless сервер ==
== Dedicated/Headless сервер ==
{{Experimental|0.12.X}}


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


==== Windows ====
==== Windows/Steam версия ====
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Откройте Steam и выберите factorio
* Нажмите на неё правой кнопкой мыши и выберите пункт 'Cвойства'
* Далее выберите вкладку 'ЛОКАЛЬНЫЕ ФАЙЛЫ'
* И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
* Перейдите в папку bin/x64 или bin/x32


==== Windows/Обычная версия ====
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Откройте папку установки factorio
* Откройте папку установки factorio
** Если у вас Steam версия игры, то:
* Для x64 систем по умолчанию
*** Откройте Steam и выберите factorio
C:\Program Files\Factorio\bin\x64\
*** нажмите на неё правой кнопкой мыши и выберите пункт 'Cвойства'
* Для x32 систем по умолчанию
*** Далее выберите вкладку 'ЛОКАЛЬНЫЕ ФАЙЛЫ'
C:\Program Files\Factorio\bin\x32\
*** И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
 
*** Перейдите в папку bin/x64 или bin/x32
==== Далее не имеет значение, Steam или обычная у вас версия игры ====
** Если у вас не Steam версия, то:
*** Откройте папку установки игры.
*** Для x64 систем по умолчанию 'C:\Program Files\Factorio\bin\x64\'
*** Для x32 систем по умолчанию 'C:\Program Files\Factorio\bin\x32\'
* Создайте текстовый файл и откройте его для редактирования Notepad'ом
* Создайте текстовый файл и откройте его для редактирования Notepad'ом
* Скопируйте в него следующее, без кавычек: 'Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip'
* Скопируйте в него следующее
* Замените 'ВАШЕСОХРАНЕНИЕ' на ваше название мира
Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip
* Сохраните файл, назвав его server.bat. ВАЖНО: При сохранении выберите тип файла 'Все файлы'.
* Замените '''ВАШЕСОХРАНЕНИЕ''' на ваше название мира
* Сохраните файл, назвав его server.bat. '''ВАЖНО: При сохранении выберите тип файла 'Все файлы'.'''
* Используйте server.bat, чтобы запустить сервер.
* Используйте server.bat, чтобы запустить сервер.
* Чтобы закрыть сервер, используйте сочетание клавиш Ctrl+C. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением.
* Чтобы закрыть сервер, используйте сочетание клавиш '''Ctrl+C'''. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением.
 


==== Linux ====
==== Linux ====


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.
Данный гайд был проверен на Debian версии 8.2 jessie. Так же он не объясняет настройку firewall, в Debian этим промышляет старый добрый iptables, а для этого есть Google.
Так же данный гайд подразумевает, что у вас есть хоть какое-то представление о работе 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.
И так, вы решили использовать headless сервер на Linux, в нашем случае на Debian, ну что ж, приступим:
 
* Скачиваете [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 только для авторизованных пользователей])
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)
Распаковывайте её
 
  tar -xzf factorio.tar.gz
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].
* Создайте папки mods, saves
 
  mkdir factorio/mods
* 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
mkdir factorio/saves
* Extract the package to /opt/factorio
* Загрузите предварительно созданный мир в ''factorio/saves''
  <nowiki>#cd /opt/
* Скорее всего вам потребуется установить ''libasound2''
#tar -xzf /tmp/factorio.tar.gz</nowiki>
aptitude install libasound2
* Check the binary to find if you need any libs installed
* Попробуйте запустить сервер
  <nowiki>#ldd /opt/factorio/bin/x64/factorio
  factorio/bin/x64/factorio --start-server world.zip
        libasound.so.2 => not found
* Если сервер не запустился, ругаясь на отсутствие нужных библиотек, то установить их можно просто поискав в репозиториях из консоли
        libX11.so.6 => not found
aptitude search название_библиотеки
        truncated ....
* С большой вероятностью эта библиотека найдётся в репозиториях, если нет, то поищите в Google или напишите на нашем форуме.
</nowiki>
* Установить библиотеку можно командой
* Install each of the missing libs, i.e the ones labelled "not found" using your distro's package handler
aptitude install название_библиотеки
** 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
  ldd factorio/bin/x64/factorio
Repo        : base
Matched from:
Provides    : libasound.so.2
 
# yum install alsa-lib libX11 <and all other "not found" libs in your case</nowiki>
 
* Add a new user to your system and assign ownership of the Factorio dir to it (please, do not run as the root user)
<nowiki>#useradd factorio
#chown -R factorio:factorio /opt/factorio</nowiki>
 
* Try the binary
  <nowiki>#su factorio
#/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 сервер для 0.11.X версии ====
==== Dedicated/Headless сервер для 0.11.X версии ====
Line 132: Line 113:
* [https://forums.factorio.com/viewtopic.php?f=53&t=6449 Linux Headless сервер / VNC]
* [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 серверу]
* [https://forums.factorio.com/viewtopic.php?f=53&t=6585 гайд по Dedicated/Headless серверу]


== Игровые режимы ==
== Игровые режимы ==
Line 143: Line 123:


* [https://forums.factorio.com/viewtopic.php?f=14&t=8352 PvP с возможностью создавать своих кусак (устаревший)]
* [https://forums.factorio.com/viewtopic.php?f=14&t=8352 PvP с возможностью создавать своих кусак (устаревший)]
* Сейчас (0.12.x) можно вручную, через игровую консоль, поменять [[Lua/Force|группировку]] для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой:
* Сейчас (0.12.x) можно вручную, через игровую консоль, поменять группировку] для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой:
  /c game.local_player.force = "neutral"
  /c game.local_player.force = "neutral"


== [[Lua/Force|Группировки]] ==
== Группировки ==


Так же вы можете создавать свои группировки (всего их может быть 64 штуки, включая 3 родные player, neutral, enemy). [https://forums.factorio.com/viewtopic.php?f=3&t=13512&start=80#p92087 Тут более детально об этом.]
Так же вы можете создавать свои группировки (всего их может быть 64 штуки, включая 3 родные player, neutral, enemy). [https://forums.factorio.com/viewtopic.php?f=3&t=13512&start=80#p92087 Тут более детально об этом.]
Line 176: Line 156:


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


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


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

Latest revision as of 10:16, 31 October 2022

Players colored preview.png

Сам мультиплеер появился в 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. :)

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

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

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

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

Dedicated/Headless сервер

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

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

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

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

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

Windows/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. Тут можно посмотреть распространённые цвета.

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