MAATRIX GAMES / Блог / Mount & Blade II: Bannerlord: установка модов на сервер

Mount & Blade II: Bannerlord: установка модов на сервер

MAATRIX GAMES

Ванильный Bannerlord мультиплеер быстро приедается — хочется новую культуру, честный баланс осад или хотя бы фикс раздражающего бага из ванили. С модами на сервере всё не так просто, как в одиночной кампании: нет лаунчера с чекбоксами, порядок модулей приходится держать в голове, а часть модов с Nexus Mods вообще не предназначена для dedicated-сервера. Разберём по шагам, как поставить мод правильно с первого раза — от скачивания до проверки, что сервер реально его подхватил.

Откуда брать моды и что проверить заранее

Основной источник модов для Bannerlord — Nexus Mods (nexusmods.com/mountandblade2bannerlord). Steam Workshop тоже существует и частично пересекается по контенту, но у мультиплеерных модпаков и оверхолов подавляющее большинство актуальных версий лежит именно на Nexus — авторы чаще выкладывают туда сначала, а в Workshop дублируют с задержкой или не дублируют вовсе.

Прежде чем качать, проверьте на странице мода три вещи:

  • Заявлена ли поддержка мультиплеера или dedicated-сервера. Если в описании ни слова про multiplayer или Persistent Kingdoms — по умолчанию мод писан под одиночную кампанию и обращается к классам Campaign/Hero, которых на сервере просто нет. Такой мод либо не загрузится, либо уронит процесс на инициализации.
  • Под какую версию движка собран мод. TaleWorlds регулярно меняет внутренние структуры между патчами (например e1.2.9 → e1.2.11), и мод, честно работавший вчера, может отказаться грузиться после апдейта игры — не по вине автора мода, а из-за смены API под капотом.
  • Список зависимостей в разделе Requirements. Почти всегда там будут Harmony, иногда Bannerlord.UIExtenderEx или ButterLib — без них мод не стартует вовсе, даже если формально его файлы на месте.

Если ещё выбираете, стоит ли вообще заводить модовый сервер вместо чистого ванильного — сравнение плюсов и минусов разобрано в статье ванильный или модифицированный сервер — что выбрать. Если сервера ещё нет, сначала поднимите базовую установку по гайду как поднять сервер Mount & Blade II: Bannerlord — этот материал считает, что рабочий DedicatedCustomServer.Starter у вас уже есть, и мы ставим моды поверх.

Скачивание и распаковка в Modules

Nexus Mods не даёт анонимно тянуть архивы напрямую curl-ом или wget — для скачивания нужен залогиненный аккаунт (у премиум-пользователей работает быстрая ссылка, у бесплатных — таймер и капча на сайте). Поэтому типичный рабочий процесс — скачать архив в браузере на своём ПК и перекинуть на сервер через scp:

# на локальной машине после скачивания с Nexus
scp SomeGreatMod-1.4.2.zip bannerlord@ваш-сервер:/home/bannerlord/server/Modules/

Дальше распаковываем прямо в Modules/ — это папка рядом с исполняемым файлом сервера, и внутри неё каждый мод должен лежать отдельной подпапкой:

cd /home/bannerlord/server/Modules
unzip ~/SomeGreatMod-1.4.2.zip -d /tmp/mod-tmp

Здесь первая частая грабля: многие архивы с Nexus запакованы с лишним уровнем вложенности — внутри zip не сразу лежит папка мода, а сначала ещё одна обёртка (SomeGreatMod-1.4.2/SomeGreatMod/... вместо SomeGreatMod/...). Проверяйте структуру перед переносом:

find /tmp/mod-tmp -maxdepth 3 -iname "SubModule.xml"

Файл SubModule.xml должен лежать на первом уровне внутри папки мода — если команда нашла его на глубине в два-три уровня, поднимайте содержимое соответствующей папки, а не всё как есть:

mv /tmp/mod-tmp/SomeGreatMod-1.4.2/SomeGreatMod /home/bannerlord/server/Modules/
rm -rf /tmp/mod-tmp

В итоге в Modules/ должна появиться папка ровно с именем мода и файлом SubModule.xml прямо внутри неё, без промежуточных вложений. Здесь же вторая грабля, специфичная именно для Linux-серверов: имя папки мода должно точь-в-точь, с учётом регистра, совпадать со значением Id из SubModule.xml. На Windows файловая система нечувствительна к регистру и прощает опечатку вроде somegreatmod вместо SomeGreatMod, а Linux — нет, и сервер просто не найдёт модуль при сканировании Modules/, не выдав внятной ошибки.

Поднять сервер Mount & Blade II: Bannerlord за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Порядок загрузки: зависимости идут первыми

Экосистема модов Bannerlord почти целиком стоит на нескольких общих библиотеках, которые ставятся так же, как обычные моды — отдельными папками в Modules/:

БиблиотекаЗачем нужна
HarmonyПатчинг методов в рантайме — база для большинства геймплейных модов
Bannerlord.ButterLibОбщая инфраструктура логирования и сервисов для крупных модпаков
Bannerlord.UIExtenderExРасширение UI, нужно модам со своими экранами и элементами интерфейса
Bannerlord.MCMЭкран настроек модов в игре, у многих числится опциональной, но по факту нужна

Порядок загрузки на сервере определяется порядком, в котором модули перечислены в списке загрузки, а не просто наличием папок в Modules/. Управляется этот список либо переменной окружения вида _MODULES_*Native*Harmony*Bannerlord.ButterLib*Bannerlord.UIExtenderEx*ИмяМода1*ИмяМода2*_MODULES_, которую прописывают в Environment= systemd-юнита рядом с ExecStart, либо обёрточным shell-скриптом перед запуском бинарника — конкретный механизм зависит от того, как оформлен ваш стартовый скрипт при установке.

Практическое правило: Native всегда первым, дальше инфраструктурные библиотеки строго в порядке Harmony → ButterLib → UIExtenderEx → MCM, и только после них — сами геймплейные моды в порядке их взаимных зависимостей (смотрите тег <DependedModules> в SubModule.xml каждого мода — там перечислены Id модулей, которые должны загрузиться раньше). Если библиотеку поставить в списке ниже зависящего от неё мода, краш будет выглядеть загадочно: файлы вроде бы все на месте, а сервер всё равно падает на инициализации, потому что в момент загрузки зависимого мода библиотека ещё не подключена.

Подключаем моды к конфигу сервера

Сам по себе список загрузки модулей — это ещё не всё: часть модов (особенно оверхолы с новыми картами или режимами) требуют строк в вашем ds_config_*.txt внутри Modules/Native/, например регистрации новой карты через add_map_to_usable_maps под нужный GameType. Смотрите файл SubModule.xml мода и readme на странице Nexus — если мод добавляет карты или режимы, там почти всегда указано, что добавить в конфиг вручную.

После правки списка модулей и конфига — перезапуск и проверка лога, а не бездумный restart в фоне:

sudo systemctl daemon-reload
sudo systemctl restart bannerlord
journalctl -u bannerlord -f

Смотрите в первых строках лога перечень загруженных модулей — движок обычно построчно пишет, какой SubModule подключился, а на каком упал:

[SubModule] Loading module: Native
[SubModule] Loading module: Harmony
[SubModule] Loading module: Bannerlord.UIExtenderEx
[SubModule] Loading module: SomeGreatMod

Если этой цепочки нет вообще или обрывается на середине без исключения — сервер, скорее всего, падает раньше, чем логгер успевает дописать файл, и тогда быстрее временно вынести подозрительный мод из Modules/ в соседнюю папку и перезапустить с чистым списком, чем гадать по обрывочным строкам. Подробный разбор бисекции по модам и типичных причин краша — в статье краш при загрузке мода в Bannerlord.

Синхронизация версий: сервер и клиенты должны совпадать

Это, пожалуй, главный источник жалоб «не могу зайти на модовый сервер» именно в Bannerlord. Мод должен быть установлен и на сервере, и у каждого игрока, причём строго одной и той же версией — контентные моды меняют структуры данных, участвующие в сетевом обмене, и рассинхрон версий либо не пускает клиента в лобби, либо роняет сессию при первой синхронизации данных.

Тег <ModuleVersion> в SubModule.xml — версия конкретного мода, но сверять нужно не только его: убедитесь, что версия самой игры на сервере (видна в логе при старте или в номере сборки после app_update через SteamCMD) совпадает с версией движка, под которую собран каждый установленный мод.

Практика, которая экономит часы разборов: заведите закреплённое сообщение в Discord-сервере комьюнити со списком модов и точными версиями, обновляйте его при каждом апдейте модпака и просите игроков сверяться перед подключением. Если предпочитаете автоматизировать обновление модов на сервере, а не следить руками — посмотрите материал про автообновление модов на сервере, но учтите: слепое автообновление одной стороны (только сервера или только клиентов) без синхронного апдейта другой — сама по себе частая причина версионных рассинхронов, которые выглядят как случайные баги.

Типичные ошибки при установке

Собрали по опыту то, на чём чаще всего спотыкаются при первой установке модов на dedicated-сервер:

  • Лишний уровень вложенности после распаковки архива. SubModule.xml оказывается на глубине в два уровня вместо одного — сервер не находит модуль. Проверяйте структуру командой find из раздела про распаковку.
  • Регистр в имени папки не совпадает с Id в SubModule.xml. На Linux это не опечатка, а поломка — модуль просто не найдётся при сканировании.
  • Библиотека-зависимость ниже по списку загрузки, чем мод, который её использует. Harmony, ButterLib, UIExtenderEx и MCM должны идти в самом начале, сразу после Native.
  • Мод не предназначен для dedicated-сервера. Писался под одиночную кампанию, обращается к отсутствующим на сервере классам — падает на инициализации независимо от порядка загрузки.
  • Версия мода на сервере и у игрока отличается. Даже на один патч — итог непредсказуем, от отказа в подключении до десинхрона посреди боя.
  • Мод скачан и вручную с Nexus, и через Steam Workshop одновременно. Дублирующиеся файлы модуля в двух местах — источник странного поведения, когда движок грузит не ту копию, которую вы правили последней.

Если после установки конкретного мода сервер перестал появляться в браузере серверов клиента, хотя процесс запущен и логи чистые — вероятнее всего дело не в модах, а в портах или конфиге; разбор по шагам есть в статье сервер Bannerlord не отображается в списке серверов.

Поднять сервер Mount & Blade II: Bannerlord за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Можно ли ставить моды через Vortex прямо на Linux-сервер?

Нет, Vortex — desktop-приложение под Windows/клиентскую машину, на headless Linux-сервере его не запустить. На сервере моды распаковываются вручную в Modules/ через unzip, как описано выше.

Обязательно ли качать моды именно с Nexus, а не из Steam Workshop?

Нет, оба источника рабочие, но не смешивайте их для одного и того же мода — держите либо Nexus-версию, либо Workshop-версию, не обе одновременно, чтобы не получить дублирующиеся файлы модуля.

Сколько модов реально можно поставить на сервер без потери стабильности?

Жёсткого лимита нет, ограничение практическое — чем больше геймплейных модов патчат одни и те же системы через Harmony, тем выше риск конфликтов между ними. Крупные модпаки стоит сначала прогонять на тестовом инстансе, а не сразу в паблик-ротации.

Нужно ли перезапускать сервер после каждого добавленного мода?

Да, список модулей и порядок загрузки читаются один раз при старте процесса — на лету добавить или убрать мод без перезапуска нельзя.

Что делать, если мод требует более новую версию Bannerlord, чем стоит на сервере?

Обновите сервер через SteamCMD (app_update без validate для апдейта) и только потом ставьте мод — установка мода поверх устаревшей версии движка сама по себе не поможет, если авторская сборка рассчитана на более новый патч.