MAATRIX GAMES / Блог / Кастомные карты для Mordhau

Кастомные карты для Mordhau

MAATRIX GAMES

Нашёл в Steam Workshop карту получше дефолтного Grad, прописал вроде бы всё правильно — а сервер после рестарта как ни в чём не бывало грузит старую ротацию? Кастомные карты в Mordhau не копируются файлами вручную, как в некоторых старых играх — они подключаются через Workshop ID, и этот ID должен оказаться сразу в двух местах конфига, иначе сервер её просто не увидит. Если сервер уже поднят по базовой инструкции по Mordhau, добавить кастомную карту в ротацию — дело на десять минут.

Где искать карты: Steam Workshop Mordhau

Мастерская Mordhau живёт на steamcommunity.com/app/629800/workshop/ — 629800 это тот же app id, что и у самой игры в Steam. Внутри можно сортировать список по "Most Subscribed" (проверенная временем классика) или "Trending" (что набирает подписки прямо сейчас), но для сервера важнее не популярность, а актуальность.

Перед тем как брать карту в ротацию, обязательно открой страницу мода и посмотри:

  • Дату последнего обновления. Заброшенные два-три года назад карты нередко несовместимы со свежим патчем движка — геометрия может конфликтовать с обновлёнными системами коллизий.
  • Раздел комментариев. Игроки обычно честно пишут про застревания, дыры в текстурах и вылеты — если под картой десяток жалоб на один и тот же баг, это сэкономит тебе час тестирования.
  • Описание автора. Там же обычно указано точное имя карты для конфига (с префиксом режима) — угадывать его не нужно, всё написано на странице мода.

Workshop ID и подключение к серверу

ID карты — это число из адресной строки на странице мода:

https://steamcommunity.com/sharedfiles/filedetails/?id=XXXXXXXXX

Подключить его к серверу можно двумя способами, и на практике надёжнее использовать оба сразу. Первый — строка Mods в секции [/Script/Mordhau.MordhauGameSession] конфига Game.ini (того самого, что лежит в Mordhau/Saved/Config/LinuxServer/ — в комьюнити его иногда называют MordhauGame.ini, но по факту это тот же Game.ini, что и для остальных настроек сервера):

[/Script/Mordhau.MordhauGameSession]
Mods=1234567890,2233445566

Второй способ — передать те же ID параметром запуска:

./MordhauServer.sh FL_Grad -log -mods=1234567890,2233445566

Как и с любой другой правкой Game.ini, редактировать файл нужно на остановленном сервере — иначе при следующем штатном завершении процесс перезапишет конфиг своей версией из памяти, и список модов молча исчезнет. Параметр -mods в команде запуска (или в ExecStart твоего systemd-юнита) гарантирует, что карта докачается уже на первом старте, а Mods= в конфиге фиксирует список на случай перезапуска через панель управления или скрипт, который не всегда передаёт параметры командной строки напрямую.

Поднять сервер Mordhau за пару минут

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

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

Добавляем карту в MapRotation

Сама карта в ротацию добавляется точно так же, как официальная — построчно в секции [/Script/Mordhau.MordhauGameMode]. Разница только в том, что точное имя кастомной карты нужно взять со страницы Workshop, а не придумывать самому — автор почти всегда указывает его в описании:

[/Script/Mordhau.MordhauGameMode]
MapRotation=FL_Grad
MapRotation=FL_CustomVillage
MapRotation=SKM_MyCustomArena

Префикс имени (FL_, SKM_, FFA_, TDM_ и так далее) у кастомных карт работает так же, как у официальных — по нему сервер определяет режим. Большинство карт от сообщества делают именно под существующие режимы и следуют этой же конвенции именования, но встречаются исключения без явного префикса — в этом случае режим смотри прямо в описании мода, не угадывай по названию.

Важный нюанс: если ID карты прописан в MapRotation, но забыт в Mods, сервер при старте не найдёт файлы уровня и либо откатится на карту по умолчанию, либо вовсе не поднимется — смотри лог, если ротация после рестарта выглядит короче, чем ты прописал.

Ротация из нескольких кастомных карт

Никаких ограничений мешать кастомные и официальные карты в одной ротации нет — MapRotation просто читает список построчно сверху вниз, а голосование в конце матча (или линейный порядок, если включён bDisableMapVote=True) работает одинаково для всех карт в списке:

[/Script/Mordhau.MordhauGameSession]
Mods=1234567890,2233445566,3344556677

[/Script/Mordhau.MordhauGameMode]
MapRotation=FL_Grad
MapRotation=FL_CustomVillage
MapRotation=SKM_Taiga
MapRotation=SKM_MyCustomArena
MapRotation=FFA_ThePit
bDisableMapVote=False

Все ID модов перечисляются в Mods через запятую, порядок здесь не влияет на очерёдность — а вот порядок строк MapRotation задаёт линейную последовательность, если голосование выключено. Не стоит сразу тащить в паблик-ротацию десяток непроверенных карт от сообщества — каждая лишняя карта это лишние мегабайты на диске у сервера и у каждого клиента, а риск нарваться на кривую геометрию растёт с числом карт быстрее, чем кажется. Разумный старт — одна-две проверенные кастомные карты вперемешку с официальными, дальше расширяешь по мере тестирования.

Похожий принцип подключения контента через числовой Workshop ID используется и в ARK: Survival Evolved — там тоже ID модов и карт прописываются и в параметре запуска, и в конфиге, только секция называется иначе. А вот в Rust кастомные карты работают совсем по-другому — там нет Workshop ID, карта грузится по прямой ссылке или seed-у, так что переносить логику между играми напрямую не получится.

Как карта докачивается у игроков

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

На практике это означает, что первое подключение к серверу с новой кастомной картой (или переход на неё в ротации) может занять заметно дольше обычного — особенно если карта весит несколько сотен мегабайт, а у игрока небыстрый канал. В это время в клиенте обычно виден прогресс загрузки. Стоит предупредить постоянных игроков сервера заранее (в Discord, в описании сервера в браузере серверов) — иначе первый вопрос после смены ротации будет "почему завис на загрузке карты".

Тестируй карту на пустом сервере перед паблик-ротацией

Это тот шаг, который экономит больше всего нервов и тебе, и игрокам. Карты от сообщества сильно различаются по качеству — кто-то полирует свою работу месяцами, а кто-то выкладывает первую версию, собранную за выходные. Самые частые проблемы у карт от сообщества:

  • Баги коллизий — невидимые стены там, где их быть не должно, или, наоборот, отсутствие коллизии там, где игрок должен упираться в стену.
  • Застревания в геометрии — угловые выступы, лестницы и декоративные объекты, в которых персонаж намертво заклинивает и не может выбраться без respawn.
  • Дыры в текстурах или под картой — можно провалиться сквозь пол в местах, где карта не была протестирована на границах.
  • Кривые точки спавна — спавн в зоне обстрела, за пределами игровой территории или прямо в объекте.
  • Проблемы с путями осадной техники — для Frontline-карт стоит отдельно проверить, что лестницы, тараны и требушеты (если они есть на карте) корректно взаимодействуют с ландшафтом.

Проверять карту стоит не в одиночку — подними тестовый инстанс (или временно поставь ServerPassword на боевом сервере) и пройди с парой друзей всю территорию карты пешком, включая края и укромные углы, а не только основной маршрут между точками. Для Frontline отдельно погоняйте захват флагов и осадную технику — именно там чаще всего всплывают баги, которые не видны при простой прогулке по карте. Если баг нашли — доработать карту на своей стороне не получится (файлы мода не твои), но можно написать автору в комментариях на странице Workshop; если карта давно заброшена и автор не отвечает — честнее не тащить её в паблик-ротацию вообще, каким бы красивым ни было превью.

Поднять сервер Mordhau за пару минут

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

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

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

Нужно ли игрокам подписываться на карту через Steam Workshop заранее?

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

Сервер после рестарта откатился на дефолтную карту, хотя ID прописан в MapRotation — почему?

Скорее всего, ID карты забыт в Mods (или в параметре -mods команды запуска) — без него сервер не может докачать файлы уровня. Проверь, что ID есть в обоих местах, и посмотри лог на ошибки загрузки.

Можно ли позже убрать кастомную карту из ротации?

Да, просто удали её строку из MapRotation и её ID из Mods (если карта больше нигде не используется), затем перезапусти сервис — переустановка сервера не нужна.

Ломает ли смена набора кастомных карт прогресс игроков?

В Mordhau нет персистентных построек или инвентаря на карте, как в песочницах — смена ротации не затрагивает прогресс аккаунта, но может слетать личная статистика по конкретной сессии на карте, если она была не сохранена вовремя.

Сколько кастомных карт можно держать в ротации одновременно?

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