Multiplayer/ru: Difference between revisions
(removed section that was just advertising random service outside of the game - same as en page) |
|||
(16 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 | * По умолчанию 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]. :) | ||
== Сервер 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 | ||
* Для x64 систем по умолчанию | |||
C:\Program Files\Factorio\bin\x64\ | |||
* Для x32 систем по умолчанию | |||
C:\Program Files\Factorio\bin\x32\ | |||
==== Далее не имеет значение, Steam или обычная у вас версия игры ==== | |||
* Создайте текстовый файл и откройте его для редактирования Notepad'ом | * Создайте текстовый файл и откройте его для редактирования Notepad'ом | ||
* Скопируйте в него следующее | * Скопируйте в него следующее | ||
* Замените 'ВАШЕСОХРАНЕНИЕ' на ваше название мира | Factorio.exe --start-server ВАШЕСОХРАНЕНИЕ.zip | ||
* Сохраните файл, назвав его server.bat. ВАЖНО: При сохранении выберите тип файла 'Все файлы'. | * Замените '''ВАШЕСОХРАНЕНИЕ''' на ваше название мира | ||
* Сохраните файл, назвав его server.bat. '''ВАЖНО: При сохранении выберите тип файла 'Все файлы'.''' | |||
* Используйте server.bat, чтобы запустить сервер. | * Используйте server.bat, чтобы запустить сервер. | ||
* Чтобы закрыть сервер, используйте сочетание клавиш Ctrl+C. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением. | * Чтобы закрыть сервер, используйте сочетание клавиш '''Ctrl+C'''. Только этим способом вы завершите сервер нормально и он сохранит игру перед завершением. | ||
==== Linux ==== | ==== Linux ==== | ||
Данный гайд был проверен на Debian версии 8.2 jessie. Так же он не объясняет настройку firewall, в Debian этим промышляет старый добрый iptables, а для этого есть Google. | |||
Так же данный гайд подразумевает, что у вас есть хоть какое-то представление о работе Linux, иначе вы обречены ;) | |||
* | И так, вы решили использовать 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 только для авторизованных пользователей]) | |||
Распаковывайте её | |||
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 версии ==== | ==== 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) можно вручную, через игровую консоль, поменять | * Сейчас (0.12.x) можно вручную, через игровую консоль, поменять группировку] для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой: | ||
/c game.local_player.force = "neutral" | /c game.local_player.force = "neutral" | ||
== | == Группировки == | ||
Так же вы можете создавать свои группировки (всего их может быть 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 Как настроить | * [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
Сам мультиплеер появился в 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, ну что ж, приступим:
- Скачиваете последнюю версию игры отсюда, в нашем случае сейчас это Generic Linux tar package (64 bit .tar.gz) (Внимание: только для авторизованных пользователей)
Распаковывайте её
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
- PvP с возможностью создавать своих кусак (устаревший)
- Сейчас (0.12.x) можно вручную, через игровую консоль, поменять группировку] для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой:
/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
- список всех группировок, существующих в данном мире
Технические подробности
Больше информации/инструментов
- Используйте моды: basic planner, Planning-Tool-Mod...
- Можете заглянуть к нам на форум, возможно на ваш вопрос уже дан ответ.
- Cookbook для настройки headless сервера.
И помните, что factorio 0.11.x не рассчитана на игру в интернет сетях с большой задержкой.
Больше гайдов
- Как настроить factorio сервер с помощью cookbook
- Как настроить factorio сервер | Гайд | Туториал, автор Teaspoon
- Советы для мультиплеера, автор Nondre
Больше советов
- клавиша для консоли открывает чат, для мультиплеера. Чтобы выполнить команду, вам нужно написать '/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. Тут можно посмотреть распространённые цвета.