RE:NODE

Руководства13 мин чтения

Моды для сервера Project Zomboid: Workshop ID, порядок загрузки и карты

Установка модов на сервер Project Zomboid: WorkshopItems и Mods, как найти настоящий ID мода, порядок загрузки, моды карт и регионы спавна, папки Build 42.

0 прочтений

Три строки в одном файле решают, будут ли на сервере Project Zomboid моды: WorkshopItems, Mods и Map в <servername>.ini. WorkshopItems - это список чисел, который говорит серверу, что скачать. Mods - список имён, который говорит, что загрузить. Map - список папок карт в порядке приоритета, где ванильная карта стоит последней. Это три разных списка, и значения друг друга они не принимают, что и есть самая частая причина, по которой мод установлен, скачан, лежит на диске и при этом не делает абсолютно ничего.

В этом руководстве разобрано, куда попадают файлы, как найти ID, который на самом деле нужен моду, что порядок загрузки исправляет, а что нет, как работают моды карт и регионы спавна, что Build 42 изменил в папках модов и какие сбои следуют за обновлением мода. Сами параметры песочницы и сервера описаны в статье настройки сервера Project Zomboid; учётная запись администратора и команды, которые понадобятся, когда мод ведёт себя плохо, - в статье команды администратора Project Zomboid.

Как сервер вообще находит мод#

Выделенный сервер Project Zomboid (приложение Steam 380870) читает моды из нескольких мест:

  • Загрузки из Workshop. Всё, что перечислено в WorkshopItems, сервер скачивает сам при запуске в steamapps/workshop/content/108600/<workshopID>/. Обратите внимание на идентификатор приложения: 108600 - это игра, а не сервер, потому что контент Workshop принадлежит игре.
  • Локальные моды. Папки, которые вы загружаете сами, в Zomboid/mods/<ModID>/. Так запускают мод, которого никогда не было в Workshop, или закрепляют версию, которую автор с тех пор заменил.

Шаг загрузки - причина, по которой установщик просит аккаунт Steam. Выделенный сервер Project Zomboid, как и Arma 3, DayZ и 7 Days to Die, нельзя установить или обновлять с анонимным входом Steam, и контент Workshop тоже. На RE:NODE сервер создаётся сразу, а установка ждёт на вкладке Setup, пока вы не введёте эти данные; они сохраняются так, как вы их набрали, поэтому используйте запасной аккаунт, которому принадлежит игра, а не основной.

числовые IDID мода из mod.infoсписок при входеservertest.iniWorkshopItems и ModsЗагрузка Steamконтент app 108600Игра игрокатянет те же элементыПапка модасодержит mod.infoСписок Mods=порядок загрузки слева напра
Что сервер делает с Workshop ID при запуске

Всё, о чём идёт речь в этом руководстве, происходит в Zomboid/, каталоге данных сервера: ~/Zomboid/ в Linux, %USERPROFILE%\Zomboid\ в Windows и та папка, в которую вас помещает панель на управляемом хостинге. Файлы конфигурации лежат в Zomboid/Server/, логи - в Zomboid/Logs/, сохранения - в Zomboid/Saves/Multiplayer/<servername>/.

Workshop ID или ID мода: разница, которая ломает установку#

Элемент Workshop и мод - это не одно и то же.

Workshop ID - число в адресе элемента после ?id=. Оно идентифицирует загрузку. В одном элементе Workshop может быть несколько модов, и во многих так и есть: наборы карт, сборки модов, опубликованные как один элемент, моды, поставляющие необязательное дополнение в той же загрузке.

ID мода - строка, объявленная внутри самого мода, в файле mod.info:

mod.info
name=Better Firearmsposter=poster.pngid=BetterFirearmsdescription=Adds a set of civilian firearms.require=CommonLibrarymodversion=2.4.1

id= - это то, что идёт в Mods=. Он чувствителен к регистру и часто совсем не похож на отображаемое название на странице Workshop. Надёжный способ его узнать - открыть скачанную папку и посмотреть, а не гадать по названию: после первого запуска выведите список содержимого steamapps/workshop/content/108600/ и прочитайте каждый mod.info. Многие авторы указывают ID мода и на странице Workshop, обычно ближе к низу, и доверять этому стоит лишь потому, что вы можете сверить его с файлом.

require= перечисляет ID других модов, которые нужны этому. Сервер не разрешает их за вас: если моду нужна общая библиотека, у библиотеки должен быть свой Workshop ID в WorkshopItems и свой ID мода в Mods раньше него.

Три строки, которые важны в servertest.ini#

Главный файл конфигурации сервера называется по имени сервера, поэтому установка по умолчанию даёт вам Zomboid/Server/servertest.ini вместе с servertest_SandboxVars.lua и servertest_spawnregions.lua. Строки для модов выглядят так:

servertest.ini
WorkshopItems=2392709985;2169435993;2875848298Mods=CommonLibrary;BetterFirearms;RavenCreekMap=Raven Creek;Muldraugh, KY

Записи разделяются точкой с запятой во всех трёх строках, без пробелов после неё. Точка с запятой важнее, чем кажется: в названиях карт бывают запятые (Muldraugh, KY - это одна карта), поэтому список через запятую был бы неоднозначным, и игра его не принимает.

Ещё несколько ключей в том же файле связаны с модами:

КлючПо умолчаниюЧто делает
CheckModsNeedUpdatefalseСервер опрашивает Steam на обновления Workshop и пишет в лог, когда одно появляется
BackupsOnStarttrueДелает backup сохранения при каждом запуске, в том числе после изменения модов
BackupsOnVersionChangetrueДелает его при смене версии игры
BackupsCount5Сколько таких копий хранить
OpentrueСоздаётся ли учётная запись при первом входе или она должна уже существовать
DefaultPort16261Игровой порт UDP
UDPPort16262Порт UDP для прямого подключения

Включите CheckModsNeedUpdate. Это ничего не стоит, и это единственное предупреждение, которое вы получите до того, как молча обновившийся мод сломает следующий перезапуск. Учтите, что регистр букв в ini непоследователен для всех ключей файла - копируйте ключ из файла, который сгенерировал сервер, а не из руководства, включая это.

Редактируйте файл при остановленном сервере. Project Zomboid перезаписывает свой ini при штатном завершении, поэтому изменение, внесённое в работающий сервер, обычно затирается в тот момент, когда вы нормально его перезапускаете. Как править файлы на месте, описано в статье SFTP и файловый менеджер; редактор файлов в панели делает то же самое с подсветкой синтаксиса.

Порядок загрузки и конфликты#

Моды загружаются в том порядке, в каком они стоят в Mods=, слева направо. Когда два мода меняют один и тот же файл, побеждает загруженный позже. Отсюда рабочее правило порядка:

  1. Сначала библиотеки и фреймворки - всё, что другие моды объявляют в require=.
  2. Затем моды с контентом: оружие, транспорт, предметы, профессии.
  3. Правки и переопределения в конце, потому что их смысл именно в том, чтобы перебить то, что уже загружено.
  4. Моды карт - где угодно в списке. Их позиция в Mods= почти не важна; важна Map=, это отдельный порядок, о нём ниже.

Честное ограничение этого правила: порядок загрузки разрешает лишь конфликты между модами, которые вносят правки аккуратно. Мод на Lua, заменяющий целую ванильную функцию, побеждает независимо от того, где стоит, а два мода, заменяющие одну и ту же функцию, всегда сломают друг друга - более поздний просто скрывает ущерб до тех пор, пока кто-то не воспользуется тем, что изменил более ранний. Если известно, что два мода конфликтуют, никакой порядок этого не исправит, и ответ - убрать один из них.

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

Моды карт, строка Map и регионы спавна#

Моды карт - это то, в чём люди понимают только половину. Мод карты обычно бывает двумя вещами сразу: обычным модом (значит, его ID нужен в Mods=) и картой (значит, имя его папки нужно в Map=). Установите только что-то одно, и получите один из двух классических симптомов: карта не появляется или появляется, но в зданиях нет нестандартной мебели.

Значение в Map= - это имя папки внутри media/maps/ мода, а ванильная запись должна стоять последней:

ini
Map=Raven Creek;Grapeseed;Muldraugh, KY

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

Ещё две детали:

  • Наборы тайлов. Большинство пользовательских карт зависят от общего мода с тайлами, указанного как обязательный элемент на их странице Workshop. Без него вы получите невидимые стены, пропавшую мебель или блоки пурпурного цвета. Добавьте Workshop ID и ID мода набора тайлов, как любую другую зависимость.
  • Точки появления. То, что карта загружена, не делает её местом, где игроки могут начать игру. Регионы спавна объявляются в <servername>_spawnregions.lua:
servertest_spawnregions.lua
function SpawnRegions()    return {        { name = "Muldraugh, KY", file = "media/maps/Muldraugh, KY/spawnpoints.lua" },        { name = "Riverside, KY", file = "media/maps/Riverside, KY/spawnpoints.lua" },        { name = "Raven Creek", file = "media/maps/Raven Creek/spawnpoints.lua" },    }end

Путь file отсчитывается от папок media игры, и мод карты должен на самом деле содержать spawnpoints.lua - не все содержат, а карту без него можно только дойти пешком. Если ваша пользовательская карта не появляется в списке при создании персонажа, в девяти случаях из десяти дело в этом файле.

Что изменил Build 42#

Build 42 вышел в стабильную ветку в июле 2026 года и принёс с собой мультиплеер, так что большинство новых серверов теперь работают на 42, а не на 41. Для администрирования модов важно изменение структуры папок.

  • Build 41 кладёт mod.info, poster.png и media/ в корень папки мода.
  • Build 42 использует подпапки версий. Мод поставляет папку 42/ с mod.info и media/ рядом с папкой common/ для содержимого, общего для сборок. Игра загружает common/ плюс ближайшую поддерживаемую папку версии.

Практическое следствие: мод для Build 41, положенный на сервер Build 42, не виден вообще. Он не выдаёт ошибку и не предупреждает так, чтобы вы заметили, он просто никогда не появляется в списке загруженных. Если мода, который вы точно установили, нет в выводе консоли при запуске, откройте его папку и проверьте, есть ли в ней 42/.

Поскольку две сборки хотят разную структуру, хорошо поддерживаемый мод поддерживает обе, а заброшенный - нет. Прежде чем добавлять что-либо, проверьте на странице Workshop указанную сборку и ждите, что промежуточные выпуски после стабильного запуска ещё какое-то время будут что-нибудь ломать: мод, работающий на одном патче 42.x, может перестать работать на следующем. Общий вариант этой проблемы описан в статье что делать, когда обновление мода всё сломало.

Клиенты, синхронизация и несовпадение модов#

Project Zomboid справляется с раздачей модов клиентам лучше большинства игр. Когда клиент Steam подключается к серверу с заданным WorkshopItems, он подписывается на эти элементы и скачивает их до входа. Вам не нужно раздавать список модов или архив.

Чего он не терпит, так это несовпадений. Если у игрока другая версия мода, чем на сервере, или загружены лишние моды, меняющие тот же контент, его отключает при подключении или вскоре происходит рассинхронизация. Два случая повторяются постоянно:

  • Игрок подписался вручную, и у Steam устаревшая копия. Решение - отписаться, проверить целостность и дать списку сервера скачать мод заново.
  • Сервер обновил мод, а игрок не перезапускал Steam. Steam обновляет контент Workshop лениво. Надёжное решение - полный перезапуск клиента, а не только игры.

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

Обновления, удаления и вайп, которого вы не планировали#

Удаление мода на работающем сервере стирает его контент из сохранения. Предметы из этого мода пропадают из каждого контейнера и каждого инвентаря игроков при следующей загрузке соответствующих чанков. Транспорт из мода на транспорт исчезает вместе со всем, что в нём было. Это ожидаемое поведение, а не повреждение, но без backup оно необратимо, и единственный разумный способ попробовать мод - попробовать там, где потерю не жалко.

Практическая последовательность:

  1. Остановите сервер штатно. Штатная остановка записывает ini и сбрасывает сохранение.
  2. Сделайте backup и храните его не на сервере. BackupsOnStart даёт локальную копию, которая защищает от плохого мода, но не от потери машины - см. backup, которые действительно восстанавливаются.
  3. Меняйте что-то одно. Один мод добавлен или один убран за перезапуск.
  4. Запустите и прочитайте консоль. Список загруженных модов и все ошибки Lua печатаются в первые тридцать секунд.
  5. Зайдите сами один раз, прежде чем кому-либо говорить, что сервер вернулся.

На RE:NODE шаги 2 и 5 - те, в которых панель помогает: слоты backup есть на каждом тарифе Project Zomboid и восстанавливаются кнопкой, консоль показывает вывод без фильтрации с нетронутыми трассировками стека Lua, а вкладка Schedules умеет делать backup перед ночным перезапуском, так что всегда есть свежая копия из времени до последнего изменения модов. Backup хранятся вне машины, которую они защищают, и это как раз та половина, которая важна, когда дело не в моде.

Моды стоят и памяти. Базовый сервер чувствует себя комфортно в 3 ГБ для небольшой группы; список из двадцати модов с контентом, пользовательской карты и набора транспорта - это сервер на 6-8 ГБ, и рост в основном приходится на кучу Java, а не на сохранение. Если контейнер упирается в лимит памяти, его останавливают и запускают заново с чистого листа, а не оставляют работать на swap, поэтому список модов, переросший тариф, проявляется как повторяющиеся перезапуски, а не как медленная игра. Общие правила гигиены есть в статье как держать сервер с модами в чистоте; о том, как устроена загрузка в разных играх, - в статье моды Steam Workshop на выделенных серверах.

Диагностика#

Мод скачан, но не загружен. ID мода в Mods= неверный, либо в элементе Workshop другой ID, чем вы предполагали. Прочитайте mod.info в скачанной папке.

Сервер запускается, а затем завершается с ошибкой Lua. Мод несовместим со сборкой или с другим модом. Последнее имя мода, напечатанное перед трассировкой стека, обычно, хотя и не всегда, и есть виновник. Убирайте моды половинами, а не по одному.

Мод карты загружается, но появиться там никто не может. Нет записи в <servername>_spawnregions.lua, или у карты нет spawnpoints.lua.

Половина города с модами пропала. Два мода карт претендуют на одни и те же клетки. Тот, что позже в Map=, проиграл. Проверьте координаты на страницах Workshop обоих.

Игроков выкидывает с сообщением о несовпадении модов. Расхождение версий. Пусть полностью перезапустят Steam; если не помогло, пусть отпишутся и заново подпишутся на мод, названный в сообщении.

Вчера всё работало. За ночь обновился элемент Workshop. При CheckModsNeedUpdate=true консоль сообщила бы об этом. Это довод в пользу того, чтобы хранить копию каждой рабочей папки мода, чтобы вернуть версию вручную.

Сервер зависает на минуты при запуске. Это нормально при длинном списке модов и пользовательской карте в первый раз, потому что карту нужно проиндексировать. Если так происходит при каждом запуске, один из модов делает при загрузке работу, которой делать не должен.

FAQ#

Где найти ID мода, а не его Workshop ID?

В mod.info внутри папки мода, в строке id=. После того как сервер один раз скачал элемент, папка лежит в steamapps/workshop/content/108600/<workshopID>/. Страница Workshop часто тоже его указывает, но авторитетом остаётся файл.

Должны ли игроки сами устанавливать моды?

Нет. Клиент Steam, заходящий на сервер с заданным WorkshopItems, скачивает и включает эти элементы автоматически. Вручную им приходится действовать только тогда, когда Steam закэшировал устаревшую версию, что обычно лечится полным перезапуском Steam.

Можно ли добавить мод карты в мир, в котором уже играют?

Да, добавление безопасно: новые клетки пусты, пока кто-нибудь в них не зайдёт. Убирать мод карты из работающего сохранения небезопасно, а изменение того, какие карты пересекаются, фактически равносильно вайпу пересекающейся области.

Сколько модов может запускать сервер Project Zomboid?

Жёсткого предела нет, люди запускают и по пятьдесят. Практические пределы - память и время запуска. Закладывайте примерно 3 ГБ для ванильной игры с группой и 6-8 ГБ, когда у вас двадцать модов с контентом и пользовательская карта.

Почему мои предметы пропали после перезапуска?

Мод был убран или не загрузился, и сохранение выбросило всё, что ему принадлежало. Восстановите backup, сделанный до изменения, верните мод в той же версии и только потом решайте, хотите ли вы всё-таки его убрать.

Важен ли порядок загрузки для модов карт?

В Mods= он почти не важен. В Map= он решает всё: первая запись побеждает в любой клетке, на которую претендуют две карты, а Muldraugh, KY стоит последней, чтобы ванильный мир заполнил то, что моды не разместили.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000