Установка модов через Steam Workshop
Голый ванильный Zomboid хорош, но рано или поздно компания захочет либо больше контента (новое оружие, транспорт, локации), либо просто удобства — авто-сортировку лута, улучшенный интерфейс, читаемые тултипы. Всё это лежит в Steam Workshop, и подключить моды к серверу можно без танцев с бубном — если понимать, что сервер и клиент используют для этого два разных, но связанных механизма. Ниже — рабочая последовательность действий с конкретными параметрами и типичными граблями, на которых спотыкается почти каждый, кто делает это в первый раз.
Если сервера ещё нет — сначала прочитайте как поднять сервер Project Zomboid, там разобрана установка через SteamCMD и базовая структура конфигов. Эта статья продолжает с того момента, где servertest.ini уже существует и сервер хотя бы раз запускался.
Содержание
Два разных ID мода — и почему их путают
Самая частая причина, по которой моды "не встают", — путаница между Workshop ID и Mod ID. Это два независимых идентификатора одного и того же мода, и сервер требует оба, в разных параметрах конфига.
- Workshop ID — числовой ID страницы мода в Steam Workshop. Он виден прямо в адресной строке браузера, когда открыта страница мода:
https://steamcommunity.com/sharedfiles/filedetails/?id=2727579637— число после?id=и есть Workshop ID. Он нужен, чтобы SteamCMD знал, *какой архив скачать* с серверов Steam. - Mod ID — внутренний идентификатор, который прописан автором мода в файле
mod.infoвнутри самого архива. Именно по нему движок Zomboid *подключает* уже скачанный мод в игру. Mod ID — это текстовая строка (например,BrutalHordesилиTrueMusicMod), а не число, и она не обязана совпадать с названием мода на странице Workshop.
Разница ощутима на практике: указать в конфиге только Workshop ID — мод скачается, но не заработает, потому что движок не поймёт, какую папку внутри архива подключать (в одном Workshop-архиве иногда лежит сразу несколько модов с разными Mod ID). Указать только Mod ID без Workshop ID — взять мод неоткуда, скачивать нечего.
Найти Mod ID мода почти всегда можно прямо на странице Workshop — авторы обычно пишут его в описании (Mod ID: BrutalHordes) или в разделе с требованиями. Если автор поленился указать явно, придётся скачать архив вручную и заглянуть в mod.info — но такое встречается редко у популярных модов.
Два параметра в servertest.ini
В файле ~/Zomboid/Server/servertest.ini за моды отвечают две строки, соответствующие двум ID выше:
WorkshopItems=2727579637;2694001598;2707169381
Mods=BrutalHordes;TrueMusicMod;AutoTsar
Правила заполнения:
- Значения разделяются точкой с запятой
;, без пробелов вокруг разделителя. - Порядок в
Modsне обязан совпадать с порядком вWorkshopItemsпострочно, но проще всего вести их синхронно — так легче потом найти, где ошибка, если что-то не грузится. - Один Workshop-архив (
WorkshopItems) может содержать несколько Mod ID — тогда вModsчерез;перечисляются все подмодули из этого архива. Например, некоторые крупные модпаки-компиляции работают именно так: одна страница Workshop, три-четыре Mod ID внутри. - Если мод требует зависимость (другой мод как библиотеку) — она тоже должна быть прописана в обоих параметрах, сервер сам зависимости не подтягивает.
Пример на реальных модах — если вы ставите Filibuster Rhymes' Vehicle Pack (расширение транспорта) и Immersive Overhaul HUD (интерфейс), в конфиге должно быть по одной записи в WorkshopItems и по одной (или больше, если мод раскладывается на подмодули) в Mods для каждого.
Поднять сервер Project Zomboid за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверКак узнать точные ID перед правкой конфига
Не гадайте и не берите ID из старых форумных постов — версии модов меняются, а с ними иногда и Mod ID. Порядок такой:
- Откройте страницу мода в Steam Workshop, скопируйте число из URL — это Workshop ID.
- Прокрутите описание мода — почти все авторы популярных модов сейчас пишут блок вида:
Mod ID: ExampleModName
Workshop ID: 2727579637
- Если блока нет — посмотрите раздел комментариев или обсуждений, там часто уже кто-то спросил и автор ответил.
- Крайний случай — скачать архив мода через SteamCMD в отдельную тестовую папку и открыть
mod.infoтекстовым редактором, там первая строка обычноid=ИмяМода.
Держите список модов с обоими ID в отдельном текстовом файле у себя — при следующем добавлении мода или переустановке сервера это сэкономит четверть часа беготни по Workshop.
Автоматическая загрузка модов SteamCMD при старте сервера
Хорошая новость: вручную скачивать архивы модов через SteamCMD не нужно. Если параметр WorkshopItems заполнен в servertest.ini, встроенный в Project Zomboid Dedicated Server SteamCMD-клиент сам подтягивает и обновляет перечисленные моды при каждом запуске сервера — точно так же, как он подтягивает обновления самой игры.
Это удобно (не нужен отдельный шаг синхронизации), но у автоматизма есть цена: при большом количестве тяжёлых модов (карты-дополнения особенно) первый запуск после добавления новых WorkshopItems может занять заметно дольше обычного — сервер стоит и качает архивы, прежде чем поднять мир. Если у вас systemd-юнит с Restart=on-failure и коротким таймаутом, убедитесь, что таймаут не сработает раньше, чем закончится скачивание — иначе получите петлю перезапусков на ровном месте.
Проверить вручную, что нужный мод действительно доступен через SteamCMD (без изменения конфига сервера), можно так:
cd ~/steamcmd
./steamcmd.sh +login anonymous +workshop_download_item 108600 2727579637 +quit
Здесь 108600 — app id самой игры Project Zomboid (клиентский, отличается от app id выделенного сервера 380870), а второе число — Workshop ID мода. Команда скачает архив мода в ~/Steam/steamapps/workshop/content/108600/ — полезно для быстрой проверки, что мод вообще существует и не удалён автором, до того как прописывать его в боевой конфиг.
Порядок загрузки и конфликты между модами
Моды в Mods= подключаются в том порядке, в котором перечислены в строке. Это важно, если один мод переопределяет ресурсы или скрипты другого (типичный случай — модпаки на баланс лута или зомби-спавна, которые правят одни и те же таблицы). Общее практическое правило: библиотеки и зависимости — в начале списка, крупные оверхолы геймплея — ближе к концу, чтобы они "выигрывали" при конфликте правил.
Если после добавления нескольких модов сервер стартует, но в игре творится что-то странное (не тот лут, сломанные рецепты крафта) — первое, что стоит попробовать, это не откат всех модов разом, а бинарный поиск: отключить половину списка, проверить, добавить обратно по одному. Это быстрее, чем кажется, и почти всегда находит виновника за 15-20 минут.
Учитывайте и версии: мод, который автор не обновлял год-два, может не работать с текущим билдом Project Zomboid (движок регулярно меняется, особенно между крупными версиями сборки Build 41 → 42). Дата последнего обновления мода видна на странице Workshop справа от кнопки подписки — если там висит несколько лет без изменений, а игра тем временем обновилась, тестируйте такой мод осторожно и в первую очередь.
Подписка клиентов на те же моды
Здесь кроется грабля, о которую бьётся почти каждый новичок в администрировании: сервер скачивает моды сам, но это не делает их видимыми у клиентов автоматически. Каждый игрок, который хочет зайти на сервер с модами, обязан:
- Открыть каждую страницу мода в Steam Workshop (те же Workshop ID, что в
WorkshopItemsна сервере). - Нажать Subscribe («Подписаться») — Steam-клиент игрока сам скачает и обновит архив мода локально.
- Запустить Project Zomboid, зайти в меню Mods в главном меню игры и включить (поставить галочку) каждый подписанный мод — подписка в Workshop ещё не значит, что мод активен в самой игре.
Если хотя бы один мод у игрока не подписан или не включён, при попытке подключения сервер обычно отклоняет соединение с ошибкой о несовпадении списка модов (Mod mismatch или похожим текстом в клиентском логе подключения) — это защита от рассинхрона версий контента между сервером и клиентом, а не баг.
Практический совет для админа сообщества: заведите текстовый файл или страницу (хоть в Discord сервера) со списком прямых ссылок на все моды сервера — это резко сокращает количество вопросов "почему не подключаюсь" в первый день после того, как вы обновили список модов.
Проверка, что моды реально загрузились
Не полагайтесь на то, что конфиг просто "должен сработать" — проверяйте лог запуска. Если сервер запущен через systemd (как описано в статье про базовую установку), смотрите живой лог:
journalctl -u pzserver -f
При старте с модами в логе должны последовательно появиться строки о загрузке Workshop-контента (что-то вроде LOG : General, ... Downloading Workshop Item... для каждого ID из WorkshopItems), а затем — строки подключения самих модов по их Mod ID (LOG : General, ... Mod ID BrutalHordes loaded successfully или аналогичного смысла — точный формат может немного отличаться между версиями сборки). Если вместо этого в логе видна ошибка вида Mod not found рядом с конкретным Mod ID — почти всегда это опечатка в строке Mods= (регистр важен, Mod ID регистрозависим) или мод, который был удалён/переименован автором в Workshop.
Если сервер поднимается без ошибок, но конкретный мод визуально не работает у всех игроков сразу (не только у одного человека с забытой подпиской) — проверьте порядок в Mods= на конфликт с другим модом (см. раздел выше) и совместимость с текущей версией игры на странице Workshop.
Поднять сервер Project Zomboid за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли поставить мод без Steam Workshop, просто скопировав файлы вручную?
Да, для модов, распространяемых архивом отдельно от Workshop — их кладут в папку ~/Zomboid/mods/ на сервере и клиенте, а в Mods= указывают Mod ID так же, как для Workshop-модов, но WorkshopItems= для них не заполняется. Такой способ реже, но встречается для старых или экспериментальных модов.
Что будет, если у сервера и клиента разные версии одного и того же мода?
Steam обычно синхронизирует версию мода у клиента с тем, что подписано, при каждом запуске игры — но если клиент давно не открывал Steam, локальный кэш может быть устаревшим. Решение простое — попросить игрока перезапустить Steam-клиент, это форсирует проверку обновлений подписанных модов.
Сколько модов можно поставить на сервер без потери производительности?
Жёсткого лимита нет, но каждый мод — это дополнительная нагрузка на Lua-скрипты при загрузке мира и иногда на RAM. Десяток лёгких косметических модов почти не заметен, а несколько тяжёлых оверхолов геймплея одновременно стоит тестировать на живом составе игроков перед тем, как объявлять сервер официально запущенным.
Нужно ли перезапускать сервер после добавления нового мода в конфиг?
Да, изменения в WorkshopItems= и Mods= в servertest.ini подхватываются только при следующем запуске сервера — на лету новые моды не подключаются.
Как убрать мод, который сломал сервер?
Удалите его Workshop ID из WorkshopItems= и Mod ID из Mods=, сохраните конфиг и перезапустите сервис. Уже скачанные файлы мода можно не трогать — они просто не будут подключаться, пока не пропишете ID обратно.