WorldGen: редактор биомов и статических префабов Build 42.20
- Tools > WorldGen Biome Editor / Preview...
- Tools > WorldGen Prefab Editor...
Это два отдельных окна WorldEd, намеренно не объединённых. Окно биомов содержит процедурный предпросмотр размером 2×2 чанка, реестр биомов, итоговые правила с учётом наследования и инструменты биомных особенностей. В окне префабов доступны только выбор, просмотр, рисование/импорт настоящих статических префабов и подготовка файлов. Оба окна используют один путь игры только для чтения и дерево WorldGen проекта.
Документ также описывает ограничения выполнения Build 42.20, которые автор сверял с Lua-определениями игры и Java-считывателем WorldGen. Функция доступна только при открытом сохранённом проекте WorldEd. Выбранный каталог WorldGen Project Zomboid является источником только для чтения; всё, что создаёт редактор, хранится за пределами базовой игры.
Как понимать пометки о доказательствах и ограничениях
Помечено как подтверждённое игрой по локальным Lua-определениям Build 42.20 и Java-считывателю: чанк 8×8, область отложенной генерации 16×16, уровни размеров особенностей, реестры биомов и родительские данные, четыре слота схемы статического префаба, нумерация ссылок на тайлы с единицы, применение на z=0 и поведение прямоугольника static-module.
Лимит авторинга префаба 256×256, строгие отказы конвертации, атомарная запись файлов проекта и запрет записи внутрь установки игры помечены как защитные политики инструмента. Это не представляется как уменьшенные константы движка.
Изображение биома — репрезентативный предпросмотр. В следующих разделах отдельно указано, что поведение авторской карты, шум сохранения, дорог, эрозии и упаковки намеренно не охвачено.
Пути проекта и порядок загрузки
Определения проекта хранятся внутри каталога, где находится файл проекта .pzw. Структура из документа:
<project>/
└── media/
└── lua/
└── server/
└── WorldGen/
├── features/
│ ├── ground/
│ ├── plant/
│ ├── bush/
│ ├── tree/
│ └── ore/
├── prefabs/
└── biomes/
├── map/
├── subbiomes/
└── worldgen/
Предпросмотр загружает биомные особенности игры, особенности биомов проекта, статические префабы игры, статические префабы проекта, суббиомы, биомы игры и биомы проекта. Запись проекта с тем же ключом реестра заменяет в предпросмотре запись игры. Интерфейс отмечает действующий источник как Game или Project.
Этот порядок загрузки служит только предпросмотру редактора. Для работы во время игры проект всё ещё нужно упаковать или подключить как мод/карту, чтобы Lua-файлы были доступны.
Процедурный биом и биом карты
WorldGen выбирает процедурный биом по параметрам окружающей среды и цепочке родителей. Его особенности с весами задают возможные варианты земли, растений, кустов, деревьев и руды. Предпросмотр 16×16 — репрезентативный образец выбранного биома, принудительно построенный для него.
Биом карты используется там, где данные созданной карты/Biomemap просят WorldGen применить конкретный биом карты или контекст замены. Он может наследовать параметры биома и использовать взвешенные особенности, но итог зависит от созданной клетки и правил замены/защиты. Пустой синтетический предпросмотр не воспроизводит весь этот контекст.
Ни один из этих типов не является нарисованной клеткой TMX. Биом — это набор правил, используемый при создании или замене клеток игрой.
Биомная особенность и статический префаб
Это два разных формата Build 42, хотя в старых метках предпросмотра PZWorldEd оба назывались “prefabs”.
| Элемент | Реестр игры | Назначение | Подтверждённый лимит |
|---|---|---|---|
| Биомная особенность | worldgen.features.<CATEGORY> | Вероятностный тайл или узор тайлов, выбираемый биомом | Размер узора не более 8×8 |
| Статический префаб | worldgen.prefabs | Детерминированная схема z=0, применяемая прямоугольником worldgen.static_modules | Небольшой константы размера в Java нет; этот редактор отдельно ограничивает создание/импорт размером 256×256 |
Расстановщик особенностей WorldGen пробует целевые размеры 8, 4, 2 и 1. Он использует массив отложенных клеток 16×16 — ровно четыре чанка Build 42, расположенных сеткой 2×2. Код не может разместить особенность размером больше 8×8.
Статический префаб читается в формате Lua, показанном ниже; пример сохранён как код источника:
local prefab = {
dimensions = { width, height },
zombies = 0.01,
tiles = {
"tileset_name_0",
"tileset_name_1"
},
schematic = {
Floor = {
"1,1,0",
"1,1,0"
},
FloorFurniture = {
"0,0,0",
"0,0,0"
},
FloorOverlay = {
"0,2,0",
"0,0,0"
},
Furniture = {
"0,0,0",
"0,0,0"
}
}
}
worldgen.prefabs["example"] = prefab
Ссылки на тайлы — индексы в массиве tiles, нумерация начинается с единицы; ноль означает пусто. Ноль в Floor особый: движок просит активный биом сгенерировать здесь землю. Остальные три нулевых значения ничего не добавляют.
В Build 42.20 считываются только четыре слота: Floor, FloorFurniture, FloorOverlay и Furniture. Порядок применения определяется названиями категорий. При этом TileDef спрайта по-прежнему определяет, ведёт ли себя применённый спрайт как пол, стена, объект, растительность и т. п.
Лимиты чанка, клетки и высоты z
Чанки WorldGen в Build 42 имеют размер 8×8 игровых тайлов. Стандартные ячейки WorldEd — 256×256 тайлов, то есть 32×32 чанка.
Применение статического префаба вычисляется для каждого игрового тайла отдельно. Java-код берёт смещение тайла по модулю ширины и высоты префаба, поэтому тот может пересекать границу чанка 8×8. Прямоугольник static-module также может пересечь границу ячейки WorldEd 256×256 тайлов, если все затронутые ячейки принадлежат активной карте.
Само пересечение границы чанка или клетки ошибкой не является. Диалог подготовки показывает первые и последние тайл, чанк и клетку карты, чтобы автор карты мог проверить нужное покрытие.
Префабы WorldGen применяются на z=0. Они не содержат:
- верхние или нижние этажи;
- комнаты или определения комнат;
- объекты BuildingEd и поведение объектов;
- двери/окна как семантические объекты зданий;
- крыши, лестницы или метаданные зданий;
- зоны, лоты, свойства или слои объектов.
Редактор PZWorldEd ограничивает префаб размером 256×256 как явной политикой авторинга и защиты памяти. Это не выдаётся за меньшую константу движка.
Работа с биомами и предпросмотр
- Загрузите проект WorldEd и сохраните его.
- Откройте Tools > WorldGen Biome Editor / Preview...
- Выберите путь WorldGen игры только для чтения.
- С помощью селектора биомов изучите итоговые параметры с учётом наследования и создайте репрезентативный предпросмотр биома 16×16.
- Выберите Biome feature, чтобы создать особенность или проектный вариант особенности игры.
В окне биомов нет элементов управления статическими префабами. Предпросмотр и дерево итоговых определений с учётом наследования относятся к процедурным биомам и биомам карт.
Работа со статическими префабами
- Загрузите проект WorldEd и сохраните его.
- Откройте Tools > WorldGen Prefab Editor...
- Выберите путь WorldGen игры только для чтения.
- Выберите игровой или проектный префаб, чтобы изучить его размеры, шанс зомби, каталог спрайтов и число размещений.
- Создайте префаб, скопируйте игровой префаб в проект или импортируйте ограниченный источник TMX/TBX.
- Рисуйте и проверяйте четыре runtime-слота, затем сохраните префаб в дереве WorldGen проекта.
- При необходимости выберите Stage for Game / Mod..., чтобы подготовить префаб и его переопределение static-module за пределами базовой игры.
Редактор префабов показывает по одной сетке для каждого из четырёх runtime-слотов. Палитрой Tiles выбранный спрайт рисуется в одной или нескольких клетках. Изометрическая вкладка объединяет все четыре слота в порядке глубины и показывает оранжевые линии проверки через каждые восемь клеток. Изображения спрайтов сохраняют фактический размер в пикселях, поэтому высокие и XL/XXL Tiles могут перекрывать соседние якоря и не обрезаются до значка в одну клетку.
Изменение игрового определения никогда не переписывает Lua-файл игры. Подтверждение изменения создаёт новую копию в проекте. Определения проекта, созданные редактором, можно менять на месте с атомарной заменой файла.
Конвертация TMX и TBX
Import TMX/TBX... намеренно строгий: формат префаба намного меньше любого из исходных форматов. Конвертер:
- принимает TMX Project Zomboid, в котором тайловые слои явно задают level="0", или TBX с одним этажом;
- сохраняет имена спрайтов тайлов z=0 и порядок слоёв;
- переносит один явно заданный тайл Floor в слот Floor префаба;
- переносит до трёх оставшихся тайлов клетки в FloorFurniture, FloorOverlay и Furniture;
- останавливается, если в клетке несколько явно заданных тайлов Floor;
- останавливается, если клетке требуется больше трёх слотов, отличных от Floor;
- останавливается, если непустой тайловый слой выше или ниже z=0;
- останавливается при превышении лимита редактора 256×256;
- до открытия редактора сообщает об игнорируемых слоях объектов и потерянных метаданных здания.
Многоэтажное здание не конвертируется молча с ложным сообщением об успехе. Сложный TBX следует оставить зданием/лотом либо намеренно упростить сначала до тайловой схемы z=0.
Обычный TMX Tiled без атрибута Project Zomboid level отклоняется штатной ошибкой парсера, а не угадывается и не приводит к аварийному завершению приложения.
Подготовка для игровой карты или мода
Команда Stage for Game / Mod... запрашивает корень проекта или мода, целевую папку media/maps/<MapName> и глобальные координаты начала префаба в клетках.
Она записывает два файла:
<target>/media/lua/server/WorldGen/prefabs/<name>.lua
<target>/media/maps/<MapName>/WorldGenOverride.lua
Созданное переопределение подключает префаб и добавляет один включительный прямоугольник worldgen.static_modules, размеры которого точно совпадают с одним экземпляром префаба. PZWorldEd обрамляет блок комментариями начала/конца с именем. Повторная подготовка того же префаба заменяет отмеченный блок; несвязанное содержимое файла сохраняется.
PZWorldEd запрещает целевой путь внутри выбранной установки Project Zomboid. Защита распознаёт оба поддерживаемых расположения данных игры: <game>/media/lua/server/WorldGen и распакованное эталонное расположение <root>/lua/server/WorldGen.
Подготовка создаёт структуру каталогов, готовую для игры; полные метаданные мода, упаковка Workshop, порядок зависимостей и экспорт релиза относятся к отдельному процессу.
Статические модули чувствительны к порядку: во время выполнения используется первый модуль, содержащий клетку. Если модули пересекаются, проверьте итоговый WorldGenOverride.lua.
Область предпросмотра
Детерминированный предпросмотр отвечает на вопрос: «Как выглядят текущие правила биома и Tiles?» Это не снимок игрового сохранения.
Предпросмотр не заявляет точного совпадения для шума сохранения и состояния соседних клеток, контекста замены/защиты созданной карты, разворачивания каждого маркера $subbiome, дорог и эрозии.
Руководство WorldGen Editor and Prefabs