Сервер Space Age для мультиплеера - это обычный headless-сервер Factorio 2.0 с тремя включёнными модами дополнения: space-age, quality и elevated-rails. Пакет headless уже содержит данные дополнения, поэтому самому серверу лицензия не нужна, но каждый игрок, который заходит, должен владеть Space Age. Меняется масштаб: каждая планета и каждая космическая платформа - отдельная поверхность, которая симулируется постоянно, так что зрелая игра в Space Age ведёт себя как несколько заводов, работающих в одном тике. Закладывайте 4-6 GB памяти на долгую игру, более крупные сохранения и долгие подключения, а также одно ядро CPU, которое должно тянуть все планеты сразу. В этой статье - как включить дополнение, начать новую карту или перевести старую, во что обходится каждая планета и как удержать частоту обновлений на 60.
Сам headless-сервер - загрузка, server-settings.json, порты, админы - описан в руководстве по headless-серверу Factorio, а общая теория UPS и модов - в статье моды Factorio и UPS. Эта статья - слой Space Age поверх них.
Что такое Space Age с точки зрения сервера#
Space Age - платное дополнение, вышедшее вместе с Factorio 2.0. Технически оно поставляется как три официальных мода, которые лежат рядом с base:
| Мод | Что добавляет | Кому нужно им владеть |
|---|---|---|
space-age | Планеты, космические платформы, новые науки, новые враги | Каждому игроку |
quality | Уровни качества для предметов и машин | Каждому игроку |
elevated-rails | Рампы и опоры эстакадных рельсов | Каждому игроку |
Все три входят в платное дополнение. Их можно включать по отдельности - сервер может работать с эстакадами и качеством, но без планет, - однако игрок, не купивший дополнение, не сможет зайти на сервер, где включён хотя бы один из них.
Бесплатное обновление 2.0 - это всё остальное: изменения движка, переработанная система жидкостей, новое строительство рельсов, удалённый обзор и улучшения интерфейса. Сервер со всеми тремя выключенными модами дополнения - это сервер базовой игры 2.0, и зайти на него может любой владелец Factorio.
Пакет headless-сервера с factorio.com включает папки данных дополнения - data/space-age, data/quality, data/elevated-rails - рядом с data/base. Ничего дополнительно скачивать для сервера не нужно.
Как включить дополнение на headless-сервере#
Активно ли дополнение, решает mods/mod-list.json - точно так же, как для любого другого мода:
{ "mods": [ { "name": "base", "enabled": true }, { "name": "elevated-rails", "enabled": true }, { "name": "quality", "enabled": true }, { "name": "space-age", "enabled": true } ]}Эти моды не обязаны лежать в папке mods как zip-файлы - они загружаются из data/. mod-list.json лишь включает или выключает их. Если файла ещё нет, сервер создаст его при первом запуске; в текущих релизах 2.0 моды дополнения включены по умолчанию, если данные на месте, так что проверьте файл, а не полагайтесь на догадки в любую сторону.
Если вы хотите игру в Space Age с самого начала, дополнение должно быть включено при создании карты:
$ cd /opt/factorio$ ./bin/x64/factorio --create ./saves/space.zip \ --map-gen-settings ./data/map-gen-settings.json$ ./bin/x64/factorio --start-server-load-latest \ --server-settings ./data/server-settings.json--start-server-load-latest загружает самое новое сохранение в saves/, включая автосохранения, - именно это нужно после любой некорректной остановки. Остальные аргументы описаны в руководстве по headless-серверу.
На RE:NODE карта генерируется при первой загрузке, а папка mods есть с самого начала, так что включение или выключение дополнения - это правка mod-list.json в файловом менеджере, а затем новая карта, если оно нужно вам с первого дня.
Начать заново или добавить Space Age в существующую карту
У компании, у которой уже есть карта базовой игры 2.0, два варианта:
Начать новую карту Space Age. Все проходят прогрессию дополнения с самого начала, а карта сразу генерируется с изменениями дополнения на Наувисе. Так поступает большинство компаний.
Включить дополнение в существующем сохранении. Factorio поддерживает загрузку сохранения базовой игры с включённым дополнением: новые технологии появляются в дереве, а другие планеты становятся доступны, когда до них доходит исследование. Ваша база на Наувисе сохраняется. Сделайте backup перед этим, потому что чистого пути назад нет: как только сохранение загрузили с дополнением и поиграли, повторное выключение дополнения удаляет всё, что из него пришло.
Сохранения из 1.1 тоже загружаются в 2.0, с миграциями. Проблема там в модах: многие моды для 1.1 так и не обновили до 2.0, и сохранение 1.1, зависящее от такого мода, не перейдёт дальше, не отказавшись от него. В статье моды Factorio и UPS объясняется, почему удаление контентного мода из сохранения так разрушительно.
Поверхности: почему одна игра Space Age - это несколько заводов#
Поверхность в Factorio - это отдельная карта. В игре 1.1 она была одна - Наувис. В игре Space Age их по одной на каждую планету, до которой вы добрались, и по одной на каждую построенную космическую платформу.
Отсюда два факта.
Каждая поверхность симулируется постоянно. Завод на Вулканусе продолжает производить, пока все игроки на Наувисе. Платформа продолжает лететь и отбиваться от астероидов, даже если на борту никого. Это необходимо, чтобы игра работала, и это значит, что стоимость игры Space Age - сумма всех её баз, а не только той, на которую смотрят игроки.
Все поверхности делят одно обновление. На весь сервер один игровой тик. Если база на Глебе настолько дорогая, что тик выходит за 16.67 миллисекунды, замедляется вся игра - каждая планета, каждая платформа - для всех. Медленная планета замедляет всю вселенную.
Космические платформы заслуживают отдельного слова. Платформа - это движущийся завод: хаб, сборщики астероидов, дробилки, двигатели, турели и всё производство, которое вы на ней разместили. Платформы в пути постоянно сражаются с астероидами. Несколько платформ - это дёшево; тридцать забытых платформ на орбите, которые всё ещё собирают и дробят астероиды в заполненные хабы, - уже нет.
Во что обходится каждая планета#
Планеты стоят неодинаково. У каждой есть механика, которая по-своему проявляется на сервере.
| Поверхность | Что стоит ресурсов | Что помогает |
|---|---|---|
| Наувис | Кусаки, загрязнение, главная база | Как в 1.1: меньше ботов, разумная оборона |
| Вулканус | Крупная добыча и литейные производства | Большие буры и литейные цеха - меньше сущностей |
| Фульгора | Цепочки переработки лома, молнии | Компактная переработка, громоотводы где нужно |
| Глеба | Порча предметов, сельское хозяйство, атаки пентаподов | Короткие быстрые линии, меньше буферов |
| Аквило | Сети обогрева, криогеника | Держите сети тепловых труб аккуратными |
| Платформы | Сбор астероидов, турели, двигатели | Меньше платформ, и каждая с целью |
Глеба - планета, которая чаще всего преподносит серверу сюрпризы. Многие её продукты со временем портятся, так что у предметов есть таймеры порчи, а длинные буферы, забитые скоропортящимися товарами, - это и расточительство, и работа для симуляции. Короткие и быстрые базы на Глебе лучше и для игры, и для сервера.
Движок 2.0 местами помогает. Система жидкостей переписана так, чтобы быть дешевле и предсказуемее, а большие новые машины - литейные цеха, электромагнитные заводы, большие буры - делают на одну сущность гораздо больше, чем их аналоги из 1.1. Завод Space Age, построенный на новых зданиях, может содержать меньше сущностей, чем завод 1.1 с той же производительностью.
Память, сохранения и подключение#
| Этап | RAM | Размер сохранения | Примечания |
|---|---|---|---|
| Только Наувис, начало игры | 1-2 GB | 5-20 MB | Как базовая игра 2.0 |
| Две-три планеты | 2-4 GB | 20-60 MB | Работают первые платформы |
| Все планеты, несколько платформ | 4-6 GB | 60-150 MB | Типичная долгая игра |
| Большая поздняя игра, много платформ | 6 GB+ | 150 MB+ | Измеряйте, а не угадывайте |
Память растёт с каждой поверхностью, потому что Factorio держит в памяти всю карту каждой поверхности. Исследование планеты радаром открывает больше её карты, и открытые данные карты остаются.
Сохранению ненадолго нужно больше памяти, чем работе. Сервер на 90% лимита скорее всего упрётся в него именно во время автосохранения. На RE:NODE контейнер, достигший лимита памяти, останавливается и перезапускается начисто, а не уходит в swap - для машины это нормально, но теряется всё с момента последнего автосохранения. Тарифы Factorio в RE:NODE - от 1 GB до 6 GB, этого хватает большинству компаний в Space Age; очень большая поздняя игра может перерасти старший тариф, и график памяти покажет это заранее. Признаки описаны в статье когда пора повышать тариф.
Сохранения важны и для подключения. Подключающийся игрок скачивает всё сохранение - каждую поверхность, - а затем догоняет текущий тик. Сохранение на 100 MB при скромном соединении качается долго, а догонять приходится дольше, если сервер близок к своему бюджету тика. На загруженном сервере уменьшите max_upload_slots в server-settings.json, чтобы подключения шли по одному-два и каждое проходило быстрее.
Как удержать UPS на 60#
UPS - updates per second, обновления в секунду - единственный показатель производительности, который важен для Factorio, и у сервера есть 16.67 мс на тик, чтобы обновить каждую поверхность. Правило однопоточности из 1.1 по-прежнему действует: больше ядер не поднимают UPS, а более быстрое ядро - поднимает.
Прежде чем что-то менять, измерьте. Бинарник headless может прогнать сохранение с максимальной скоростью и сообщить время на тик:
$ ./bin/x64/factorio --benchmark ./saves/space.zip \ --benchmark-ticks 1000 --benchmark-runs 3 --benchmark-verbose allС дополнением подробная разбивка охватывает все поверхности вместе, так что планета, которая внезапно стала дорогой, видна как скачок в соответствующей подсистеме. Полная методика бенчмарка - в статье моды Factorio и UPS.
Дальше примерно в таком порядке:
- Списывайте ненужные платформы. Каждая платформа - это поверхность. Разбирайте те, что больше не нужны, а не оставляйте на стоянке.
- Используйте новые большие машины. Литейные цеха, электромагнитные заводы и большие буры заменяют одной сущностью много старых.
- Укорачивайте линии на Глебе. Меньше буферов со скоропортящимися товарами.
- Обуздайте ботов на Наувисе. Главная шина на ботах обходится гораздо дороже конвейеров, как и всегда.
- Меньше радаров. Удалённому обзору не нужны радары повсюду.
- Регулярно перезапускайте сервер, чтобы память оставалась ровной. Аргументы про выбор времени - в статье расписания перезапусков, которые помогают.
Удалённый обзор, позволяющий игрокам смотреть на любую планету или платформу, рендерится машиной каждого игрока. Он стоит FPS клиента, а не тика сервера, так что игрок, жалующийся на низкий FPS при просмотре Фульгоры, описывает свой ПК.
Настройки сервера, которые стоит пересмотреть для Space Age#
Несколько ключей server-settings.json ведут себя в игре Space Age иначе:
| Ключ | По умолчанию | Что учесть в Space Age |
|---|---|---|
auto_pause | true | Когда никто не подключён, платформы останавливаются посреди пути, а планеты перестают производить. Обычно это то, что нужно |
autosave_interval | 10 | Большие сохранения дольше записываются; не задирайте интервал, чтобы это компенсировать |
autosave_slots | 5 | Пять копий большого сохранения занимают ощутимое место на диске |
max_upload_slots | 5 | Уменьшите на большом сохранении, чтобы подключения проходили быстрее |
afk_autokick_interval | 0 | Игроки в долгих полётах на платформах иногда AFK намеренно |
Консольная команда /config set меняет большинство из них на работающем сервере - /config set max-upload-slots 2 действует сразу. Справочник по консоли - в статье команды сервера Factorio и администрирование.
Совместная игра на разных планетах#
Space Age меняет то, как компания играет на одном сервере, и некоторые из этих изменений стоит знать до первой ракеты.
Игроки расходятся. В начале все на Наувисе; к середине игры нормально, когда один игрок строит литейные цеха на Вулканусе, другой сортирует лом на Фульгоре, а третий летит между ними на платформе. Для сервера это нормально - он и так симулирует каждую поверхность, - но значит, что любой игрок может устроить бардак на планете, за которой никто больше не следит. Группы прав и чёткая договорённость о том, кто за какую планету отвечает, избавят от споров позже.
Перелёты занимают реальное время. Полёт платформы между планетами - путешествие на минуты, и игрок на борту недоступен для остального завода, пока не прилетит. С включённым auto_pause полёт, начатый прямо перед тем, как все вышли, просто дождётся следующей сессии.
Космические платформы - общая собственность. Любой игрок фракции может изменить расписание платформы, её запросы и то, что она строит, - это мультиплеерная версия того, как кто-то перенаправляет поезда. Договоритесь о названиях и назначении платформ и относитесь к изменению чужой платформы так же, как к перекладке чужих конвейеров.
Бэкапы перед каждым обновлением#
Factorio 2.0 всё ещё получает патчи, а сохранения Space Age содержат много состояния, которое миграции должны переносить вперёд. Перед каждым обновлением headless-сервера сделайте копию сохранения. Перед включением дополнения на существующей карте сделайте копию. Перед добавлением или удалением мода сделайте копию.
Автосохранения - не бэкапы: они лежат рядом с сохранением на том же диске и перезаписываются по кругу. Статья бэкапы, которые действительно восстанавливаются объясняет, зачем нужны настоящие копии, которые вы время от времени проверяете. На RE:NODE слоты для бэкапов входят в каждый тариф Factorio, хранятся вне машины и восстанавливаются кнопкой, а вкладка Schedules может по cron-выражению отправить консольную команду /server-save и сразу после неё сделать backup.
FAQ#
Нужна ли headless-серверу Factorio лицензия Space Age?
Нет. Загрузка headless включает данные дополнения и работает без лицензии. Каждый игрок, заходящий на сервер, где включён хотя бы один мод дополнения, должен владеть Space Age.
Могут ли игроки без Space Age зайти на сервер Space Age?
Нет. Они могут зайти только на сервер, где space-age, quality и elevated-rails все выключены, - то есть на сервер базовой игры 2.0.
Можно ли добавить Space Age в нашу существующую карту 2.0?
Да. Включите три мода в mod-list.json и загрузите сохранение; новые технологии и планеты станут доступны. Сначала сделайте backup, потому что если позже снова выключить дополнение, всё, что оно добавило, будет удалено.
Почему вся игра замедлилась после того, как мы освоили Глебу?
Все поверхности делят один игровой тик. Если база на одной планете дорогая, тик длится дольше для всех. Запустите бенчмарк, затем посмотрите на длинные буферы скоропортящихся продуктов и на размер базы на Глебе.
Сколько RAM нужно серверу Space Age?
2-4 GB на первых планетах, 4-6 GB для долгой игры со всеми планетами и несколькими платформами. Следите за графиком памяти во время автосохранений, когда потребление ненадолго достигает пика.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.