Factorio Руководство

Совместимость модов с Factorio Space Age: как обновлять сборки и устранять краши инвентаря

Совместимость модов с Factorio Space Age 2.0: разбор манифеста info.json, анализ ошибок загрузки прототипов в логе factorio-current.log и безопасное отключение сборок в mod-list.json.

Совместимость модов с Factorio Space Age: как обновлять сборки и устранять краши инвентаря

Выход масштабного дополнения Space Age и базового обновления Factorio 2.0 принёс кардинальные изменения в архитектуру движка симуляции. Множество популярных модификаций эпохи 1.1 оказались несовместимы с новой версией из-за переработки прототипов инвентаря, появления нескольких планетных поверхностей (surfaces) и механики качества. При попытке запустить устаревшую сборку сервер Factorio аварийно завершает работу ещё на этапе инициализации данных.

В этом практическом руководстве мы разберём ключевые причины сбоев модов в Factorio 2.0, структуру файла манифеста info.json, анализ журналов загрузки прототипов и безопасное отключение проблемных расширений в mod-list.json без потери прогресса фабрики.

Ключевые изменения движка Factorio 2.0 и Space Age#

Движок версии 2.0 ввёл строгую проверку совместимости. Если модификация не обновлена разработчиком под актуальное ядро, игра отказывается её загружать:

  1. Версия движка в манифесте: в файле info.json поле factorio_version теперь обязано иметь значение "2.0". Сборки с меткой "1.1" вызывают немедленный отказ загрузчика.
  2. Многопланетная структура поверхностей: в Space Age мир больше не ограничен одной поверхностью nauvis. Появились поверхности vulcanus, gleba, fulgora, aquilo и орбитальные платформы. Моды, использующие устаревшие глобальные вызовы вида game.surfaces[1], вызывают фатальные ошибки десинхронизации (desync).
  3. Новые типы инвентаря: посадочные площадки (cargo landing pad) и узлы платформ имеют специфическую структуру слотов, что приводит к падению модов на сортировку и фильтрацию сундуков.

Проверить версию установленного мода можно просмотром его манифеста:

bash
cat /opt/factorio/mods/example-mod/info.json

Анализ журнала загрузки и поиск виновника краша#

При фатальном падении сервера в процессе старта Factorio подробно записывает трассировку ошибки в файл factorio-current.log. Большинство сбоев происходит на этапах Loading prototype data или Applying migrations:

bash
grep -E "Error|Failed|Crash" /opt/factorio/factorio-current.log | tail -n 20

Строка вида Error ModManager.cpp:1624: Failed to load mod: Error while loading entity prototype "..." прямо указывает имя сбойного мода и строку в его скриптах, которая вызвала исключение.

Проверка статуса модов в mod-list.json#

Управление активностью установленных пакетов на выделенном сервере осуществляется через файл конфигурации /opt/factorio/mods/mod-list.json. Чтобы проверить, включена ли проблемная модификация, выполните фильтрацию через jq:

bash
jq '.mods[] | select(.name == "problematic-mod")' /opt/factorio/mods/mod-list.json

В выводе отобразится текущее состояние флага "enabled".

Безопасное отключение сбойного мода#

Вместо полного удаления файлов модификации с диска (что может помешать откату при выходе хотфикса) рекомендуется деактивировать её в списке модов:

bash
sed -i 's/"name": "problematic-mod", "enabled": true/"name": "problematic-mod", "enabled": false/' /opt/factorio/mods/mod-list.json

После отключения несовместимого мода перезапустите системную службу сервера и убедитесь, что этап инициализации прототипов завершился успехом:

bash
sudo systemctl restart factorio && sudo journalctl -u factorio -n 25 --no-pager

Если вы хотите запускать крупные космические фабрики и не тратить часы на ручной поиск конфликтов модов в терминале, надёжный хостинг серверов Factorio обеспечивает автоматическую проверку зависимостей через Mod Portal API и восстановление мира при сбоях.

Источники#