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

Multiplayer/ru: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(removed section that was just advertising random service outside of the game - same as en page)
 
(14 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 62: Line 54:
Чуть ниже расположена инструкция для запуска сервера на Windows или Linux
Чуть ниже расположена инструкция для запуска сервера на Windows или Linux


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


==== Windows/Обычная версия ====
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
* Откройте папку установки factorio
* Откройте папку установки factorio
** Если у вас Steam версия игры, то: [[File:Factorio-steam-config-headless.gif|thumb|right|Создание server.bat для 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.
 
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)
 
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].
 
* 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
* Extract the package to /opt/factorio
<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>


* Add a new user to your system and assign ownership of the Factorio dir to it (please, do not run as the root user)
И так, вы решили использовать headless сервер на Linux, в нашем случае на Debian, ну что ж, приступим:
<nowiki>#useradd factorio
* Скачиваете [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 только для авторизованных пользователей])
#chown -R factorio:factorio /opt/factorio</nowiki>
Распаковывайте её
 
tar -xzf factorio.tar.gz
* Try the binary
* Создайте папки mods, saves
  <nowiki>#su factorio
  mkdir factorio/mods
#/opt/factorio/bin/x64/factorio --start-server savename</nowiki>
mkdir factorio/saves
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
* Загрузите предварительно созданный мир в ''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 версии ====
==== Dedicated/Headless сервер для 0.11.X версии ====
Line 130: 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 141: 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 174: 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 181: 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. Тут можно посмотреть распространённые цвета.

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