Установка модов на DayZ-сервер
Голый ванильный DayZ быстро приедается — рано или поздно хочется базы на колёсах, нормальный трейдер или хотя бы админ-панель, чтобы не телепортировать читеров руками через RCON. Но установка модов на DayZ-сервер устроена не так, как в большинстве других игр: моды берутся из Steam Workshop, а качаются мимо клиента Steam, отдельной командой и без привязки к вашему аккаунту. Если вы уже поднимали сервер DayZ с нуля, эта статья — логичное продолжение: разберём, откуда брать моды, чем -mod= отличается от -serverMod= и почему сервер иногда падает сразу после обновления игры.
Содержание
Где брать моды и почему это не как в других играх
Все моды DayZ живут на Steam Workshop — той же площадке, что и, например, карты и мод-меню для ARK: Survival. Но есть нюанс: чтобы поставить мод на сервер, вам не нужно подписываться на него в клиенте и не нужен купленный аккаунт с игрой. Сервер скачивает файлы мода анонимным логином через SteamCMD — точно так же, как скачивал сам дедик-сервер.
Практически это значит следующее: зайдите на страницу мода в Steam Workshop (в браузере, через steamcommunity.com), скопируйте его Workshop ID из адресной строки — это набор цифр после id= в URL вида ...?id=1559212036. Дальше этот ID пойдёт в команду скачивания. Название мода в самом Workshop и то, как он будет называться на сервере в виде папки — разные вещи, привязка идёт именно по числовому ID, так что не полагайтесь на память, сохраняйте ID сразу.
Скачивание мода через SteamCMD
Мод скачивается той же утилитой SteamCMD, что и сам сервер, командой workshop_download_item с указанием App ID игры (у DayZ это 221100 — App ID клиента, Workshop у DayZ отдельного ID не имеет) и Workshop ID конкретного мода:
su - steam
cd ~/steamcmd
./steamcmd.sh +login anonymous +workshop_download_item 221100 1559212036 +quit
Файлы мода лягут в ~/steamcmd/steamapps/workshop/content/221100/1559212036/. Это ещё не готовый к работе мод для сервера — его нужно перенести в папку сервера и переименовать в формат, который сервер понимает: @НазваниеМода. Символ @ в начале — не эстетика, а конвенция, по которой удобно отличать модовые папки от системных в файловом менеджере:
mkdir -p ~/dayzserver/@CF
cp -r ~/steamcmd/steamapps/workshop/content/221100/1559212036/* ~/dayzserver/@CF/
Если качаете несколько модов, повторяйте для каждого свой Workshop ID — можно собрать это в один bash-скрипт, чтобы не набирать команды руками при каждом обновлении сборки.
Поднять сервер DayZ за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверКлючи подписи: без них сервер не пустит игроков
DayZ проверяет подпись каждого мода при подключении клиента (это тот самый verifySignatures = 2 в serverDZ.cfg, который лучше не трогать). Каждый мод содержит свой .bikey-файл, обычно в подпапке keys/ внутри скачанного мода. Сервер ищет все ключи в собственной папке keys/ в корне установки — если ключ мода туда не попал, игроки при подключении будут получать ошибку You were kicked off the game. (BE ban) или просто не смогут зайти с сообщением о недостающем ключе.
find ~/dayzserver/@CF -iname "*.bikey" -exec cp {} ~/dayzserver/keys/ \;
Это действие нужно повторять при каждой установке нового мода и — важный момент — при каждом обновлении, если автор вдруг перевыпустил ключ (редко, но случается при смене подписи мода после серьёзного релиза).
-mod= против -serverMod=: в чём разница и когда что использовать
Вот здесь чаще всего путаются новички, и это уже вопрос не технический, а архитектурный. У DayZ два разных параметра запуска для модов, и они решают разные задачи:
| Параметр | Что делает | Нужен ли мод клиенту |
|---|---|---|
-mod= | Загружает мод, который меняет то, что видит игрок: новые предметы, текстуры, карты, звуки | Да, игрок обязан скачать тот же мод, иначе сервер не пустит (несовпадение сигнатур) |
-serverMod= | Загружает мод, который работает только в логике сервера | Нет, клиент ничего не скачивает и не знает о существовании мода |
Проще говоря: если мод добавляет новый скин рюкзака или новую машину — это -mod=, и без установки этого же мода у себя игрок на сервер не зайдёт. А если мод — это, например, античит-надстройка, инструменты админа для телепортации и бана, или серверная экономика трейдеров, которая не рисует ничего нового на экране игрока — это кандидат на -serverMod=. Такой мод игроку скачивать не нужно вообще, и это снижает порог входа: не все готовы вручную ставить десяток модов через Steam Workshop только чтобы зайти к вам на сервер.
Частая ошибка — засовывать в -serverMod= мод, который на самом деле добавляет клиентский контент. В таком случае сервер запустится без ошибок, но у игроков без этого мода начнутся десинки или краши при взаимодействии с новыми предметами, которых физически нет в их локальных файлах игры. Если сомневаетесь, читайте описание мода в Workshop — авторы обычно прямо пишут, "server-side only" мод или нет.
Собираем команду запуска с несколькими модами
Оба параметра принимают список папок через точку с запятой, без пробелов. Итоговая команда запуска с модами выглядит так:
./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles -dologs -adminlog -netlog -freezecheck \
-mod=@CF;@Windstride;@Namalsk \
-serverMod=@VPPAdminTools;@CFRemoteExec
Порядок модов в -mod= важен для некоторых сборок: если один мод зависит от другого (классический пример — @CF, Community Framework, от которого зависит куча других модов), зависимость обычно должна идти первой в списке. Автор мода почти всегда пишет требуемый порядок загрузки на странице Workshop — не игнорируйте этот пункт, иначе сервер упадёт при старте с ошибкой вида Addon '...' requires addon '...'.
Если вы используете systemd-юнит для автозапуска (как в статье про базовую установку сервера), не забудьте прописать те же параметры -mod= и -serverMod= прямо в ExecStart= — иначе после ребута сервер поднимется без модов, и игроки, зашедшие на карту с модовым контентом, увидят дыры в мире и невозможность подобрать предметы.
Обновление модов вместе с патчем игры
Вот самая частая причина, по которой модовый DayZ-сервер падает или не запускается на следующий день после патча: Bohemia выкатили обновление игры, сервер обновился (или обновится сам, если вы гоняете +app_update 223350 validate по крону), а автор мода ещё не успел выпустить совместимую версию. DayZ жёстко проверяет соответствие версий — при рассинхроне сервер либо не стартует, либо не пускает игроков с ошибкой BattlEye: Client not responding или падает в краш при загрузке карты.
Обновлять моды нужно тем же способом, что и скачивать — повторным workshop_download_item, SteamCMD сам подтянет новую версию, если она вышла:
./steamcmd.sh +login anonymous +workshop_download_item 221100 1559212036 +quit
Практика, которая реально экономит нервы: не обновляйте продакшн-сервер сразу в день патча DayZ. Разверните тестовый инстанс (можно временный, на минимальном тарифе), накатите обновление игры и модов туда первым, погоняйте полчаса сами или с парой доверенных игроков — и только потом переносите на боевой сервер. Авторы популярных модов обычно выкатывают совместимость в течение суток-двух после патча, но не всегда синхронно с релизом самой игры, и это нормально — не их вина, просто DayZ иногда меняет структуру данных без предупреждения даже в мелких патчах.
Если хочется автоматизировать процесс полностью — оберните обновление сервера и всех модов в один shell-скрипт с остановкой службы перед началом и стартом после:
#!/bin/bash
systemctl stop dayzserver
cd ~/steamcmd
./steamcmd.sh +login anonymous \
+force_install_dir ~/dayzserver +app_update 223350 validate \
+workshop_download_item 221100 1559212036 \
+workshop_download_item 221100 1234567890 \
+quit
systemctl start dayzserver
Это не отменяет ручную проверку после крупных патчей, но снимает рутину с мелких обновлений. Похожая логика — через отдельный загрузчик модов, а не Steam Workshop напрямую — работает и в установке модов на сервер Valheim через BepInEx: подход другой, но грабля с рассинхроном версий после патча общая для всех модовых серверов.
Поднять сервер DayZ за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Игроки должны сами подписываться на моды в Steam Workshop, чтобы зайти на сервер?
Да, для модов из -mod= — при первом подключении к серверу с модами клиент DayZ обычно сам предлагает скачать недостающие моды через Steam, но если этого не произошло, игроку нужно вручную подписаться на них в Workshop.
Можно ли смешивать моды из Workshop и моды, скачанные вручную с других сайтов?
Технически да — сервер не проверяет источник, важна только структура папки @Модname с корректными файлами и ключами. Но моды не из Workshop не обновляются автоматически и чаще ломаются на патчах — используйте с осторожностью.
Что делать, если сервер не стартует после добавления мода?
Смотрите свежий лог в profiles/script_*.log и profiles/*.RPT — там почти всегда написана конкретная причина: недостающая зависимость, битые файлы после обрыва скачивания или неверный порядок модов в -mod=.
Нужно ли перезапускать сервер при каждом обновлении мода игроком на своей стороне?
Нет, сервер и клиенты обновляются независимо — но если версии разойдутся сильнее, чем на один патч, подключение просто не пройдёт, поэтому обновляйте сервер оперативно вслед за модом.
Сколько модов реально можно поставить без просадки производительности?
Жёсткого лимита нет, но каждый мод — это дополнительная нагрузка на CPU при загрузке карты и чуть больше потребление RAM на профиль сервера; сборки из 15-20 модов на слабом железе уже ощутимо увеличивают время старта сервера.