Сам мультиплеер появился в 0.11.x версии игры и до сих пор (0.12.32) он играбелен только в сетях, с низкой задержкой (LAN). Т.е. игра между игроком из Москвы и игроком из Владивостока будет по крайней мере не очень приятной, т.к. игра принимает скорость (тик-тайм) для всех исходя из наиболее большой задержки между игроками. Во всяком случае с 0.12.0 версии появилась функция "скрытия задержки", что позволило игре быть более плавной, без сильных скачков тик-тайма.
В данное время мультиплеер в игре работает по схеме p2p (клиент-клиент), что означает отсутствие необходимости в сервере, хотя и присутствует сборка игры, без графического функционала (headless).
Для любых серьёзных функций (сохранение, заход в игру и т.д.) игра останавливается, чтобы синхронизироваться между всеми игроками. Это означает, что если какой-нибудь из игроков имеет настройку автосохранение раз в 1 минуту, то у всех игроков, даже у тех, кого эта настройка выключена, игра будет сохранятся раз в минуту.
Любой игрок может зайти в существующую игру по известному ему IP адресу и порту. Когда игрок подключается к игре, игра ставиться на паузу автоматическии, и игрок получает карту. В случае, если хост игры закончит играть, то остальные игроки могут продолжить играть ([не проверено] в одиночной игре) не прерывая игру.
Иногда во время игры происходит рассинхронизация. Причины рассинхронизации могут быть разными, от потери пакетов в сети, до разных версий модов. До 0.12.30 игра проверяла только версии модов и не проверяла их hash, и некоторые игроки могли изменять файлы игры и модов, не говоря об этом другим игрокам, что могло с большой вероятностью вызвать рассинхронизацию. Когда происходит рассинхронизация, игра ставится на паузу и все игроки скачивают карту у хоста-игры заного, и после этого игра автоматически продолжается.
Игра через интернет не гарантируется в 0.11.x версии игры. Количество лагов в игре зависят от скорости соединения и задержек между всеми игроками. С 0.12.x версии стало более комфортно играть через интернет, т.к. появилась функция "скрытия задержки", но она по прежнему не идеальна из-за схемы p2p, где принимается наихудшее соединение из игроков для всех.
Все игроки должны иметь одинаковые версии игры и модов.
Желательно всем игрокам, кроме хоста выключить автосохранение.
По умолчанию factorio использует порт 34197. Порт можно изменить тут.
Factorio использует протокол UDP, так что убедитесь, что ваш роутер сконфигурирован корректно.
В игре реализован свой протокол доставки пакетов, построенный на UDP протоколе, для уменьшения потерь пакетов и проблем с порядком доставки пакетов
Убедитесь, что у вас правильно сконфигурирован firewall и ваше антивирусное ПО не блокирует UDP пакеты.
Хосту игры обязательно иметь белый (видно из интернета) IP адрес, чтобы другие игроки могли подключиться к вам.
Так же можно использовать различные ПО, предоставляющее VPN туннели, между игроками. В таком случае ваша сеть превращается в LAN over Internet, что не убирает проблему задержек, но убирает проблему с NAT'ом. Невозможность игры при 3+ игроков одновременно.
Рекомендуется использовать TeamSpeak, Skype, RaidCall, Discord, т.к. в игре желательно активное координация действий (постройка, отражение атак и т.д.). Сервера TeamSpeak можно найти на форуме.
Поиск игроков
Можно поискать игроков на форуме или в вашей любимой соцсети, к примеру Facebook или VK.
Большинство игроков не имеют белый IP адрес и активно используют различное ПО, предоставляющее VPN туннели, между игроками, к примеру Hamachi или Evolve.
С 0.12.0 версии headless/dedicated сервер может быть запущен из командной строки, с опцией '--start-server ВАШМИР.zip'.
В этом режиме:
Графическая часть игры не инициализируется совсем (быстрее загрузка, уменьшенное потребление памяти, полностью работает на серверах, где нет графической оболочки. К примеру можно запустить headless сервер на Debian)
Игра запускается мгновенно и загружает сохранение(мир), который был передан в опциях запуска.
Сервер не помещает игрока в игре, как это делает обычный хост.
Игра останавливается, когда на сервере отсутствуют игроки.
При закрытие сервера, сохраняется игра. (так же нормально функционирует автосейв)
Вам необходимо создать мир в простой игре, т.к. сервер не умеет создавать миры и ему необходим уже созданный мир, для запуска.
Чуть ниже расположена инструкция для запуска сервера на Windows или Linux
Windows
Создайте мир в обычной игре, если у вас его ещё нет. Сохраните его и запомните его название.
нажмите на неё правой кнопкой мыши и выберите пункт 'Cвойства'
Далее выберите вкладку 'ЛОКАЛЬНЫЕ ФАЙЛЫ'
И наконец нажмите на кнопку ПРОСМОТРЕТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ
Перейдите в папку bin/x64 или bin/x32
Если у вас не Steam версия, то:
Откройте папку установки игры.
Для x64 систем по умолчанию 'C:\Program Files\Factorio\bin\x64\'
Для x32 систем по умолчанию 'C:\Program Files\Factorio\bin\x32\'
Создайте текстовый файл и откройте его для редактирования 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, ну что ж, приступим:
Сейчас (0.12.x) можно вручную, через игровую консоль, поменять группировку для каждого из игроков. К примеру для игрока (в одиночной игре) можно поменять группировку на 'нейтралы' следующей командой:
Где "friend 1" никнейм игрока. r, g и b для красных, зелёных и синих цветов соответственно. a для альфа канала. Возможны значения от 0 до 1. Тут можно посмотреть распространённые цвета.