Avorion: установка модов на сервер
Поставили сервер Avorion, нашли в Steam Workshop мод на новый набор турелей или улучшенный UI станций — и застряли: кинутый в папку архив ничего не меняет, а игроки при заходе либо не видят мод вообще, либо получают ошибку рассинхрона версий и вылетают в меню. У Avorion своя, довольно простая логика подключения модов: один текстовый файл со списком Workshop ID, автоматическая скачка при старте сервера и чёткое разделение — что обязательно ставить всем, а что можно оставить только у себя. Разберём весь путь от поиска ID мода до рабочей связки сервер-клиенты.
Содержание
Как Avorion работает с модами: Workshop и ручная установка
У игры два разных Steam-приложения: клиент с app id 445220 и отдельный dedicated-сервер с app id 565060 (его вы уже качали через SteamCMD при установке сервера — см. инструкцию по установке сервера Avorion, если ещё не подняли базовую галактику). Для модов это важно: сервер обращается к Steam Workshop не через игровой клиент, а напрямую — тем же анонимным механизмом, каким качал сам себя через SteamCMD, — и складывает скачанные моды в свою рабочую папку.
Есть два источника модов:
- Steam Workshop — рекомендованный разработчиками способ. Сервер сам скачивает и обновляет моды по списку ID, клиентам не нужно вручную подписываться в Steam — игра предложит скачать нужный мод при заходе на сервер.
- Ручные моды — архивы не из Workshop (например, с форумов или GitHub). Их нужно вручную класть в папку сервера и вручную же обновлять — автоматики тут нет.
В обоих случаях управление идёт через один файл — modconfig.lua.
Готовим modconfig.lua
Файл лежит в папке галактики — там же, где server.ini (на Linux это что-то вроде ~/.local/share/Avorion/galaxies/<ИмяГалактики>/). Если файла modconfig.lua там ещё нет, создайте его сами — сервер прочитает его при следующем запуске.
Базовый шаблон:
modLocation = ""
forceEnabling = false
mods =
{
{workshopid = ""},
}
allowed =
{
}
- modLocation — необязательный префикс пути для ручных модов (используется вместе с
path, см. ниже). - forceEnabling — обязательность модов для клиентов (разберём отдельно).
- mods — список модов, которые сервер грузит и рассылает клиентам.
- allowed — список модов, разрешённых только на стороне клиента (без требования к серверу).
Синтаксис Lua тут капризный к мелочам: каждая строка мода — в фигурных скобках, значение ID — в кавычках, после каждой строки запятая, кроме последней. Одна лишняя или недостающая запятая — и сервер либо не стартует, либо тихо игнорирует список модов, так что после правки стоит сверить файл построчно с примером.
Остановите сервер перед правкой (штатной командой сохранения и выхода из консоли), отредактируйте файл, запустите заново — изменения в modconfig.lua применяются только при старте.
Поднять сервер Avorion за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверДобавляем моды по Workshop ID
ID мода — это число в конце ссылки на страницу мода в Steam Workshop, вида https://steamcommunity.com/sharedfiles/filedetails/?id=XXXXXXXXX (или через раздел мастерской игры на её странице в Steam). Подписываться на мод в Steam клиенту заранее не нужно — сервер скачает его сам по ID.
Добавьте нужные ID в секцию mods:
mods =
{
{workshopid = "XXXXXXXXX"},
{workshopid = "YYYYYYYYY"}
}
Замените XXXXXXXXX и YYYYYYYYY на реальные ID из URL нужных вам модов — единого «стандартного» набора модов для Avorion нет, набор всегда собирается под конкретную галактику. При первом запуске после добавления записи сервер скачает содержимое мода в подпапку workshop/content/445220/<ID>/ внутри папки галактики — сама структура появляется автоматически, руками её создавать не нужно. Прогресс скачивания и любые ошибки (например, мод удалён автором или недоступен) видно прямо в консоли сервера при старте — если мод не подтянулся, первым делом проверяйте лог именно там.
Обновление модов из Workshop тоже автоматическое: при следующем перезапуске сервер сверяет версии и докачивает изменения — вручную удалять и качать заново обычно не требуется. Если хотите временно выключить мод, не удаляя запись, закомментируйте строку двумя дефисами (--) — так проще потом вернуть его обратно, чем восстанавливать ID по памяти.
forceEnabling и allowed: что обязательно, а что можно оставить только себе
Не все моды одинаково критичны для синхронизации. Разработчики разделили их на две категории прямо в структуре файла:
forceEnabling = true— сервер требует, чтобы у каждого подключающегося клиента были установлены все моды из спискаmods. Это нужно для геймплейных модов: новых блоков, турелей, механик — если они не совпадают на клиенте и сервере, мир и логика боя рассинхронизируются.- Секция
allowed— сюда идут моды, которые меняют только клиентскую сторону (UI, иконки, звук, локализация) и никак не влияют на данные, которыми обмениваются клиент и сервер. Такие моды разрешены, но не обязательны — игрок может зайти и без них.
Если у вас смешанная команда — кто-то хочет косметику, а кто-то играет «из коробки» — держите геймплейные изменения в mods с forceEnabling = true, а чисто визуальные плюшки выносите в allowed. Это избавляет от ситуации, когда игрок без желания ставить косметический мод не может зайти на сервер вовсе.
Ручные моды не из Workshop
Для модов, которых нет в Steam Workshop (или которые вы правите сами), используется path вместо workshopid:
mods =
{
{path = modLocation .. "mymod"}
}
Сам файл или папку мода нужно вручную положить в подпапку mods/ рядом с modconfig.lua (если её нет — создайте), а в modLocation указать путь-префикс до неё. Дальше сервер загрузит мод локально при старте — но, в отличие от Workshop-модов, обновлять его придётся руками: скачали новую версию с форума или GitHub — заменили файлы — перезапустили сервер.
Есть и гибридный вариант — указать одновременно path и workshopid для одной записи: сервер загрузит мод локально с диска, но при этом сообщит клиентам его Workshop ID, чтобы они сами скачали себе клиентскую версию из мастерской. Удобно, если вы держите на сервере доработанную копию мода, а игрокам раздаёте оригинал из Workshop.
Синхронизация версий клиент-сервер и типичные ошибки
Самая частая жалоба после установки модов — игрок видит сервер в списке, пытается зайти и получает ошибку рассинхрона версий или мода. Разбираться стоит по порядку:
- Сервер и клиент на разных версиях самой игры. Мод тут ни при чём — сначала обновите Avorion на сервере (через SteamCMD,
+app_update 565060 validate) и убедитесь, что версия клиента в Steam та же. Расхождение версий движка — самая частая причина ошибок при подключении в принципе, не только из-за модов. - modconfig.lua менялся, но сервер не перезапускали. Файл читается только при старте — правка «на горячую» не применяется. После любой правки — рестарт.
- Порядок модов различается у клиента и сервера. Известная особенность движка: порядок загрузки модов не всегда гарантированно совпадает между клиентом и сервером (это подтверждённый баг-репорт, а не редкий случай) — если пара модов друг с другом конфликтует по порядку инициализации, у части игроков могут вылезать нестабильные баги, которых нет у других с виду с тем же набором модов. Если словили такое — попробуйте временно упростить список модов и добавлять их по одному, чтобы найти виновника.
- Мод обновился у автора, а сервер не успел докачать новую версию. Проверьте консоль сервера на предмет ошибок скачивания при последнем старте.
Перед тем как заливать новый пак модов на боевую галактику с игроками, сделайте бэкап папки галактики целиком — если что-то пойдёт не так, откатитесь одной командой, а не будете чинить мир руками (о том, как вообще устроены сохранения Avorion и какие с ними бывают проблемы, — в статье про ошибки сохранения). А если после установки нескольких тяжёлых модов сервер начал заметно тормозить при росте флотов и станций — это уже вопрос ресурсов конкретных модов, а не самого механизма Workshop; общий разбор того, чего стоит ждать от модифицированного сервера по нагрузке, — в статье про модded и vanilla-производительность.
Если хочется, чтобы весь этот процесс шёл сам по себе при каждом обновлении модов — без ручных рестартов по расписанию, — посмотрите на схему автообновления модов на сервере, она разобрана отдельно в статье про автообновление модов.
Поднять сервер Avorion за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Нужно ли подписываться на мод в Steam, чтобы он заработал на сервере?
Нет. Сервер скачивает моды по Workshop ID сам, без участия Steam-клиента админа. Подписка нужна только если вы хотите протестировать мод локально перед тем, как ставить его на сервер.
Где взять Workshop ID мода?
В URL страницы мода в Steam Workshop, в параметре id= — это число и есть искомый ID, его подставляют в modconfig.lua в кавычках.
Можно ли играть без некоторых модов, если сервер их использует?
Да, если мод описан в секции allowed (чисто клиентский, косметика/UI). Если мод в основном списке mods с forceEnabling = true — нет, его нужно установить, иначе клиент не подключится.
Почему после добавления мода в modconfig.lua ничего не изменилось?
Скорее всего, сервер не был перезапущен после правки файла, либо в самом файле нарушен синтаксис (пропущена запятая или кавычка) — стоит перепроверить файл построчно и посмотреть лог сервера при старте.
Что делать, если игроков выкидывает с ошибкой рассинхрона версий модов?
Сначала проверьте, что версия игры совпадает у сервера и клиента, затем — что modconfig.lua на сервере актуален и сервер был перезапущен после последней правки списка модов.