Перейти к содержанию

Как перемещать карты модов в Project Zomboid с Zomboid Map Mover

Как проверить конфликты и порядок загрузки карт, переместить копии модов и выполнить пробную загрузку в Windows для Steam-версии Build 42.

Zomboid Map Mover — настольное приложение для модов карт Project Zomboid Build 42. Оно показывает карты из списка модов на сетке клеток поверх ванильного Кентукки. Карты, конфликтующие за одни клетки, можно перетащить на свободное место, затем нажать Apply: приложение создаёт перемещённые копии модов и направляет список модов на них.

Все активные карты на сетке Кентукки

Зачем нужен Map Mover

Большинство карт Кентукки рассчитаны на одно место в мире; многие популярные моды выбрали одни и те же свободные клетки. Когда две карты занимают клетку, игра загружает только одну, из-за чего может пропасть часть города. Иногда новый мир вообще не загружается. Перемещение карты означает сдвиг координат во всех её файлах: lot-файлах, данных карты мира, изображении ландшафта, map.info и Lua-скриптах, которые создают объекты в заданных местах. Делать это вручную для десятков модов неудобно.

Возможности

  • Перетаскивание по сетке клеток. Каждая карта отображается по собственному изображению ландшафта, а если его нет — по lot-файлам. Красным отмечены клетки, где на одном участке пересекаются две карты. Стрелки сдвигают карту на одну клетку, Ctrl+Z отменяет действие.
  • Слои. Если карты должны перекрываться, разместите одну выше другой: она будет занимать все клетки, где у неё есть данные. Apply сортирует блок maps { } в соответствии с этим порядком.
  • Проверка сбоя при загрузке. В Build 42 новый мир аварийно завершается, если первая папка карты, покрывающая чанк, не содержит эту клетку. Приложение пересобирает порядок папок игры, перечисляет такие места и сообщает, как исправить каждое.
  • Связи дорог. Выберите конец дороги на одной карте и дорогу на другой; приложение проложит соединение в обход зданий и по узким участкам воды. Apply выкладывает дорогу отдельным небольшим модом, загружаемым сверху.
  • Включение и отключение карт. У каждой карты есть флажок. Выключенная карта исключается из списка модов при следующем Apply, но её позиция и перемещённая копия сохраняются на случай повторного включения.
  • Пробная загрузка. Запускает скрытый выделенный сервер игры и просит его создать новый мир из списка модов. По утверждению автора, успешная пробная загрузка указывает, что новый мир должен загрузиться; это не гарантия для каждой конфигурации. Проверка работает в отдельной папке, поэтому сохранения и настройки пользователя остаются вне неё.
  • Сохранение порядка карт. Кнопка Accept в игровом меню модов сбрасывает порядок maps { }, когда карты не занимают общие клетки — что после перемещения происходит всегда; порядок самой игры может привести к сбою нового мира. Apply добавляет небольшой мод mapmover_orderkeeper, который восстанавливает порядок до того, как игра сохранит или использует список.
  • Изображение мира. Сохраняет весь мир в PNG — один пиксель на игровой тайл — так, как, по описанию, его формирует игра после последнего Apply, с названиями карт поверх. Для большого списка модов получается изображение примерно 26 000 × 37 000 пикселей.
Концы дорог и нарисованная вручную связь от Greenport к ванильной дороге

Папки Workshop не изменяются. Перемещённые копии записываются в пользовательскую папку Zomboid/mods под именами <id>_moved. Перед каждым Apply создаётся резервная копия default.txt.

Предварительный просмотр Apply
Пробная загрузка прошла дальше экрана загрузки

Изображение мира

Кнопка World image сохраняет все активные карты в одно изображение, чтобы видеть их расположение и маршруты. Перемещённые копии находятся там, куда их поместил Apply; для каждой клетки берётся первая по порядку загрузки карта, у которой есть данные в этой клетке; связи дорог рисуются поверх. Названия карт маленькие, тонкие и полупрозрачные, чтобы не закрывать города.

Диалог создания изображения мира
Готовое изображение мира

Весь мир, уменьшенный в 24 раза:

Весь мир в уменьшенном масштабе

Фрагмент изображения примерно в треть от полного размера:

Фрагмент изображения мира

Первый запуск считывает клетки всех карт и занимает несколько минут. Последующие запуски — около минуты. Для отрисовки полного размера требуется примерно 6 ГБ памяти; на менее мощном компьютере выберите Half или Quarter. Инструмент также запускается отдельно от приложения командой: python -m mapmover.worldpng out.png --scale 2.

Запуск

Требуются Windows, Python 3 (приложение собрано на 3.12) и Project Zomboid Build 42 из Steam. README предлагает установить зависимости командой pip install -r requirements.txt, затем создать ярлык командой python -m mapmover.shortcut или запустить приложение через python -m mapmover.desktop.

Приложение открывается как локальная веб-страница в отдельном окне (pywebview на WebView2). Без pywebview она открывается в браузере. run.bat запускает консольную версию. Сервер слушает только 127.0.0.1. Pillow и numpy нужны только для изображения мира; остальная часть приложения работает без них.

Приложение автоматически ищет Steam, игру и папку Zomboid. Чтобы задать их вручную, положите config.json рядом с run.bat. Пример из README: {"game_dir":"D:/SteamLibrary/steamapps/common/ProjectZomboid","workshop_dir":"D:/SteamLibrary/steamapps/workshop/content/108600","mods_dir":"C:/Users/you/Zomboid/mods","testload_dir":"D:/ZomboidMapMoverTest"}.

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

Информация
После перемещения карт начните новое сохранение. Существующее сохранение оставляет уже сгенерированные клетки на прежних местах.

Ограничения

  • Связи дорог выкладывают обычные дорожные клетки на уровне земли. Бордюры, разметка и тротуары не включены; внутриигровая карта мира их не показывает.
  • Координаты Lua, жёстко заданные вне файлов карты, не сдвигаются. В каждой перемещённой копии есть заметка о сборке со списком пропущенных изменений.
  • Когда карта из Workshop обновляется, её перемещённая копия обновляется при следующем Apply.

Проект Zomboid Map Mover на GitHub