Перенос собственной 3D-модели в DayZ — реквизита, постройки, предмета одежды, оружия или обвеса — всегда проходит по одной и той же цепочке. Движок Enfusion загружает только свои собственные модели .p3d, текстуры .paa и материалы .rvmat, упакованные в .pbo, поэтому скачанный FBX нельзя вставить напрямую; вы проводите его через Blender, Object Builder и конфиг, затем упаковываете и тестируете. Это руководство проходит весь процесс по порядку — что вы делаете, каким инструментом пользуетесь и на что обращать внимание на каждом шаге. Одни и те же базовые шаги собирают любую модель, но каждый тип контента расходится — в своём скелете, LOD-ах, точках памяти и конфиге — и финальный шаг плюс FAQ покрывают эти различия.
Выполняйте по порядку: найдите и подготовьте модель, соберите её в Object Builder с текстурами, материалами и LOD-ами, добавьте коллизию, точки памяти и прокси, которые заставляют её работать, опишите её в конфиге, упакуйте и протестируйте — затем разберитесь со спецификой типа контента на последнем шаге. Средние шаги — LOD-ы — это где идёт настоящая работа: именно они дают модели её коллизию, попадания пуль и точки крепления.
01
Найдите low-poly модель
Инструмент / гдеCGTrader / Poly Haven / Blender
Почему это важноЧистая low-poly импортируется лучше всего
Скачайте модель в FBX (или OBJ) с её базовыми текстурами цвета или соберите свою в Blender. Бесплатных, готовых к играм моделей полно — CGTrader, Poly Haven (CC0), Kenney, Sketchfab, BlenderKit — и вы также можете перенести одежду или снаряжение из Arma 3, чья оснастка и весовая привязка обычно переиспользуемы в DayZ (проверьте скелет и выделения). Держите low-poly: реквизит должен быть около 1–5k треугольников, оружие 10–20k на самом детальном LOD, одежда в нижних тысячах, потому что движок отрисовывает тысячи объектов и несколько LOD-ов одновременно, а лишняя геометрия стоит FPS — нагрузка на отрисовку у клиента, плюс нагрузка на объекты и физику у сервера.
Хорошо импортируется чистая топология, логические части, смоделированные как отдельные элементы, корректная UV-развёртка и реальный масштаб; избегайте n-gon-ов, перекрывающихся UV и запечённых анимаций. FBX — предпочтительный формат обмена в Object Builder, потому что он несёт несколько объектов, нормали и материалы — OBJ работает, но теряет иерархию и структуру LOD.
Всегда проверяйте лицензию. Условия различаются, а пожертвования или перки могут сделать модовый сервер коммерческим использованием, поэтому предпочитайте CC0 или ассеты с коммерческой royalty-free лицензией — и никогда не вырывайте модели из другой игры или мода, что является самой частой причиной обращения о снятии (takedown).
02
Очистите и подготовьте её в Blender
Инструмент / гдеBlender + Arma Toolbox
Почему это важноМасштаб, части, UV, ориентация
Откройте модель в Blender, удалите всё ненужное — случайные меши земли, лишние LOD-ы, запечённые анимации — и назовите логические части как отдельные компоненты, потому что и коллизия, и анимация позже опираются на это разделение. Сделайте чистую UV-развёртку, триангулируйте, проверьте нормали и резкие рёбра, исправьте начало координат и ориентацию и применяйте трансформации через Ctrl+A после каждого изменения.
Если вы портируете одежду, именно здесь вы подгоняете её под тело DayZ: привяжите её по весам к скелету персонажа, проверьте мужскую/женскую посадку на клиппинг и обрежьте до одного предмета (движок делит одежду на штаны, куртку и снаряжение), используя Sculpt → Grab, чтобы убрать просвечивание тела сквозь модель. Для источника из Arma 3 вы сначала дебинаризируете PBO (Crowbar) и импортируете MLOD с помощью Arma Toolbox.
Экспортируйте в FBX. Экспорт FBX из Blender обычно приходит в Object Builder слишком крупным; вы не исправляете это здесь — вы компенсируете при импорте на следующем шаге мастер-масштабом 0.01, сверяя результат с известным ванильным объектом.
Почему это важноПереносимые, относительные пути ассетов
DayZ Tools — это бесплатный официальный набор инструментов (Steam App 830640), и в нём есть всё, что вам нужно: Object Builder, ImageToPAA, TexView, Addon Builder и Bulldozer. В Settings укажите ему диск проекта, выполните один раз Tools → Extract Game Data (несколько минут), затем Tools → Mount Drive P. Ваш собственный мод тоже живёт на этом диске P:, в своей папке.
Разложите папку мода сейчас: корень вроде P:\MyMod, содержащий config.cpp, model.cfg, файл $PBOPREFIX$ с внутренним префиксом пути и подпапку на каждый ассет с папкой data для текстур .paa и материалов .rvmat. Упакованный результат будет @MyMod\addons\mymod.pbo плюс @MyMod\keys\mykey.bikey.
Диск P: важен, потому что он даёт каждому ассету относительный, переносимый путь. Сошлитесь на текстуру по абсолютному пути C:\ — и она загрузится только на вашей машине, а у любого, кто скачает мод, текстуры будут отсутствовать. Файл $PBOPREFIX$ должен существовать заранее, поскольку пути к вашей модели, материалу и конфигу разрешаются через него.
Выберите File → Import → FBX и установите Master scale в 0.01 — это восстанавливает корректный, точный до метра размер. Снимите галочку с опции анимации и установите FPS в 0, иначе модель не отобразится в Bulldozer. Сохраните как .p3d в папку вашего мода.
Чтобы задать размер точно, заспавните прокси похожего ванильного объекта — для оружия прокси M4 — и выровняйте свою модель относительно него, сопоставляя спусковые крючки, длину и общий масштаб, затем удалите прокси. Всегда перепроверяйте размер в игре относительно известного ванильного объекта, потому что ощущение масштаба внутри Object Builder обманчиво. Правый клик перетаскивает модель, Alt+right-click вращает вид.
05
Конвертируйте текстуры в PAA
Инструмент / гдеImageToPAA / TexView
Почему это важноДвижок читает .paa, а не PNG
Конвертируйте ваши PNG в .paa с помощью ImageToPAA или TexView в папку data мода. DayZ использует три типа карт: _CO (цвет), _NOHQ (нормали) и _SMDI (спекуляр, чьи каналы несут уровень блеска и глянец). Скачанную PBR-модель нужно конвертировать, а не просто переименовать — albedo становится _CO, normal становится _NOHQ, а metallic вместе с roughness запекаются в _SMDI.
Держите текстуры в размерах, кратных степени двойки (512 / 1024 / 2048, максимум 4096), потому что инструменты и движок этого ожидают — нестандартные размеры могут не сконвертироваться или вести себя плохо; если корректная текстура всё равно отказывается, откройте её напрямую в TexView. Оружие или прицельная сетка также могут переиспользовать ванильные текстуры и материалы стекла — например lens_glass — ссылаясь прямо из другого PBO вместо поставки своей копии.
06
Соберите материал (rvmat)
Инструмент / гдеObject Builder + текстовый редактор
Почему это важноКак поверхность выглядит и реагирует
Материалы живут в файлах .rvmat, которые связывают Super shader движка с вашими текстурными стадиями. Не пишите их вручную — скопируйте ванильный rvmat от похожего материала или типа объекта (не rvmat оружия для статичного реквизита) и перепропишите строки его стадий на ваши текстуры: стадия 1 — это _NOHQ, стадия 5 — _SMDI, а _CO применяется на самой модели.
Предметам, которые получают урон — оружию, инструментам, разрушаемым объектам — нужны три варианта: основной rvmat плюс _damage и _destruct, которые движок перекрёстно смешивает по мере деградации предмета от идеального до разрушенного. На модели выделите грани, нажмите E, укажите их на .paa и .rvmat и нажмите Apply, затем проверьте в Bulldozer, чтобы убедиться, что текстура сидит корректно.
Модель отображается через несколько Resolution LOD-ов, которые движок переключает по дистанции до камеры: LOD 0 — это полный меш, и каждый следующий LOD примерно вдвое уменьшает количество полигонов вплоть до очень грубого уровня ~500 полигонов. Простому реквизиту нужны один или два; оружию и детализированным объектам нужны четыре или пять.
Быстрый способ собрать их — в Blender с помощью Arma Toolbox: продублируйте основной LOD несколько раз и примените модификатор Decimate к каждому, понижая коэффициент шаг за шагом — около 50%, затем 38%, затем ниже. Импортируйте их обратно в Object Builder и переопределите скрытое выделение каждого LOD, чтобы материал по-прежнему привязывался. Децимация может ломать UV, резкие рёбра и именованные выделения, поэтому перепроверяйте секции материала после каждого LOD; чем меньше секций на LOD, тем всегда лучше.
Resolution LOD-ы — это только видимые. Готовая модель также несёт функциональные LOD-ы, рассматриваемые на следующих шагах — Geometry, Fire Geometry и Memory — и, в зависимости от типа контента, View Geometry (линия видимости), View Pilot (вид от первого лица), Roadway (проходимые поверхности) и Shadow Volume. Добавляйте только те LOD-ы, которые типу действительно нужны.
08
Добавьте Geometry LOD (коллизия)
Инструмент / гдеObject Builder, дублировать + задать тип
Почему это важноВы упираетесь в неё, а не проходите сквозь
Продублируйте resolution LOD и задайте его тип Geometry, затем уберите с него текстуры — геометрии они не нужны. Разбейте её на Component01, Component02… через Structure → Topology → Find Components, дайте каждому массу, держите каждый компонент закрытым и выпуклым и добавьте именованное свойство autocenter = 0 к первым resolution и geometry LOD-ам.
Коллизия строится из компонентов, а не из одной большой коробки: выделяйте логические части — сцепку прицепа, его кузов, каждую ступеньку — по отдельности, иначе движок слепит всё в сплошной блок. Интерьер постройки проходим только если стены, пол и крыша — отдельные компоненты, и есть практический предел около 99 на LOD, поэтому берите целую стену одним выделением, а не по окнам.
Есть также более лёгкий метод коробок: очистите меш в geometry LOD, включите фоновый LOD и четыре вида и нарисуйте простые коллайдеры Create Box вокруг формы, каждому дав компонент и массу. Для полов, лестниц и крыш, на которых игрок должен стоять и ходить, также добавьте Roadway LOD поверх этих поверхностей — без него персонажи соскальзывают или не могут по ним пройти.
09
Добавьте Fire Geometry LOD
Инструмент / гдеObject Builder
Почему это важноПули и звуки попаданий
Продублируйте geometry и задайте ей Fire Geometry — это то, по чему пули и ближний бой на самом деле трассируются. Без неё выстрелы проходят прямо сквозь объект без попадания, а компонент Fire Geometry, оставленный без материала, заставляет бинаризатор падать.
Выделите компоненты, нажмите E и назначьте материал пробития из P:\DZ\data\penetration — metal_plate является обычным выбором и даёт металлический звук попадания. Существуют два вида: нормальные материалы, чья толщина равна смоделированной части, и материалы-пластины с фиксированной толщиной независимо от геометрии. Для оружия вы обычно строите несколько коробок вдоль корпуса, чтобы попадания регистрировались точно.
10
Разместите точки памяти (Memory)
Инструмент / гдеObject Builder, Memory LOD
Почему это важноОси, точки крепления и эффектов
Memory LOD содержит неотрисовываемые именованные точки и оси, которые заставляют объект работать. Для любого предмета вы задаёте ограничивающий бокс, ce_center, ce_radius и точку inview — последняя управляет тем, насколько крупной и приближённой выглядит иконка инвентаря.
Что ещё вы размещаете, полностью зависит от ванильного класса, который вы наследуете, поэтому работайте от похожей ванильной модели: оружие добавляет точку eye, точку дула (usti hav) на стволе для выстрела и вспышки, точку направления (konic hav) и точки начала и конца выброса гильзы; дверь или лестница добавляет свои оси вращения и точки шагов; оптика добавляет точки удаления выходного зрачка и выравнивания прицельной сетки. Имена должны быть точными — движок ищет их по имени.
11
Добавьте прокси и сопоставьте именованные выделения
Инструмент / гдеObject Builder
Почему это важноОбвес, слоты, магазины
Всё, что сложнее статичного реквизита, держится на прокси и именованных выделениях, и эти два различаются по типу. Оружие приносит отдельные прокси для своего магазина, оптики, глушителя и прочего обвеса, выровненные на модели и скопированные в каждый LOD; одежда и хранилища вместо этого опираются на именованные выделения для своих слотов и на весовую привязку к скелету из шага 2. Создайте прокси, расположите его и дайте ему имя выделения вроде magazine.
Критическое правило в том, что скрытое выделение — ZBYTEK на модели, затвор, слот камуфляжа — должно точно совпадать в .p3d, model.cfg и hiddenSelections конфига. Несовпадение там — это именно почему текстура, обвес или анимация молча не срабатывают.
12
Напишите config.cpp и model.cfg
Инструмент / гдеNotepad++ / VS Code
Почему это важноОбъявляет класс, привязывает скелет
config.cpp сообщает игре, что такое ваш мод и какой .p3d загружать. CfgPatches регистрирует аддон (units, requiredAddons вроде DZ_Data, requiredVersion); сам класс задаёт scope = 2, путь к модели (относительный, с убранным P:\ через Copy as path) и displayName. Наследование выбирает поведение: статичный объект от HouseNoDestruct, хранилище от Inventory_Base, одежда от Clothing_Base, оружие или оптика от ближайшего ванильного класса — наследование ванили это то, что позволяет вам обойтись без скриптинга.
model.cfg привязывает модель к её скелету и анимациям, и имя его класса должно точно совпадать с именем файла .p3d, иначе модель не свяжется. Ретекстур управляется из конфига, а не запекается в модель: объявите hiddenSelections и предоставьте hiddenSelectionsTextures / hiddenSelectionsMaterials на каждый вариант. Поля класса сверх этого зависят от типа контента — рассмотрено в финальном шаге.
13
Упакуйте это в PBO
Инструмент / гдеpboProject (или Addon Builder)
Почему это важноСоздаёт загружаемый мод
Упакуйте папку мода с диска P: в .pbo. pboProject — надёжный выбор: он проверяет каждую ссылку (пути конфига, rvmat и текстур) и точно сообщает об ошибках, а одна опечатка в стадии rvmat остановит сборку — тогда как Addon Builder работает для простых паков, но менее строг и даёт более слабую диагностику на сложных моделях. Читайте лог бинаризации, чтобы найти точный файл, когда сборка падает.
Серверы на Linux чувствительны к регистру, поэтому держите имена каждой папки, файла и пути в нижнем регистре и единообразными. Подпишите PBO с помощью DSUtils — держите приватный ключ приватным и поставляйте только публичный .bikey в папке keys мода, и переподписывайте после каждого изменения — чтобы серверы с verifySignatures его принимали. Готовая раскладка — это @MyMod\addons\*.pbo плюс @MyMod\keys\*.bikey.
14
Протестируйте в игре и итерируйте
Инструмент / гдеDayZ Community Offline Mode
Почему это важноБыстрые проверки без сервера
Тестируйте с помощью DayZ Community Offline Mode, бесплатного общественного инструмента — скачайте его с GitHub (Arkensor): https://github.com/Arkensor/DayZCommunityOfflineMode, положите в папку DayZ Missions и запустите вложенный .bat. Внутри нажмите Y → Object, введите имя класса и разместите объект — вы мгновенно видите размер, коллизию и звук попадания, без поднятия сервера. Тестируйте по типу ассета: статичный реквизит на размещение, коллизию и попадания пуль; постройку на её интерьер, лестницы, двери и приставные лестницы; оружие на досылание, стрельбу, перезарядку, обвес и звуки; одежду на надевание, сброс, просвечивание и иконку инвентаря. Чтобы разместить статичные объекты на живой карте, вы затем используете JSON Object Spawner или экспорт из террейн/редактора.
Исправляйте, перепаковывайте, перетестируйте, пока не заработает как надо. Частые исправления — это просвечивающая область (выделите проблемную грань, скопируйте её, нажмите W, вставьте), неправильный затвор (переопределите его) или забытый скрипт магазина. Если что-то отсутствует или отрисовывается белым, логи в %localappdata%\DayZ называют точную отсутствующую модель, текстуру, неверный путь или сломанный класс конфига — читайте их первыми.
15
Специфика типов контента: оружие, одежда, постройки, оптика
Инструмент / гдеConfig + model.cfg + DayZ-Samples
Почему это важноГде типы расходятся
Оружию нужно больше всего сверх модели. Вы создаёте магазин и боеприпас — CfgMagazines для магазина, CfgAmmo для снаряда (попадание и урон, initSpeed, airFriction) — затем объявляете совместимые magazines[] и досылание на оружии и наследуете отдачу и разброс от близкой ванильной винтовки. Его анимации перезарядки и стрельбы обычно наследуются от той ванильной модели через model.cfg, а не скриптуются.
Пользовательские звуки — это свой собственный слой: конфиг CfgSoundShaders + CfgSoundSets определяет звуки выстрела и выстрела с глушителем (в идеале с вариантами хвоста и интерьера), на которые оружие затем ссылается в своих режимах одиночного и полностью автоматического огня. Три звуковых шейдера должны соответствовать звуковым наборам; отсутствующая ссылка просто беззвучна в игре, поэтому проверяйте логи.
Одежда расходится раньше всех — ещё в Blender — с весовой привязкой к скелету и посадкой по телу из шага 2, плюс правильными именованными выделениями. Её конфиг наследует Clothing_Base с itemSize, itemsCargoSize, heatIsolation и clothingType, а цветовые варианты идут из hiddenSelectionsTextures, а не из отдельных моделей. Проходимая постройка опирается на компоненты Geometry и Roadway LOD; её двери и приставные лестницы управляются осями и точками Memory LOD, привязанными к анимациям model.cfg и действиям конфига — копируйте DayZ-Samples от Bohemia (Test_Building, Test_Ladders).
Оптика (прицел) — это небольшая сборка сама по себе: прицельная сетка — это отдельный тонкий p3d с материалом стекла/линзы, вы размещаете точки eye и выравнивания в Memory LOD, а класс наследует ItemOptics для своих режимов зума, пристрелки и кратности. Делайте просто, основываясь на ближайшей ванильной оптике и меняя только то, что вам нужно (например диапазон зума).
Сам проект Unity — нет, DayZ не использует Unity. Но 3D-модель, экспортированная из Unity в FBX или OBJ, проходит обычную цепочку: конвертация текстур в PAA, сборка LOD-ов, написание конфига. Материалы, шейдеры, префабы и скрипты Unity не переносятся — материал вы пересобираете как .rvmat.
Можно ли импортировать модель из Blender в DayZ?
Да — Blender здесь стандартный инструмент моделирования. Экспортируйте в FBX (помогает Arma Toolbox), импортируйте в Object Builder, конвертируйте текстуры в PAA и напишите конфиг. Весь процесс выше — именно это.
Можно ли добавить пользовательские модели или оружие на консольный (Xbox или PlayStation) сервер DayZ?
Нет. Моды с пользовательскими моделями только для ПК. Консольный DayZ работает на санкционированных серверах без клиентского пользовательского контента, поэтому импортированные модели, оружие и одежда работают на ПК-серверах, а не на Xbox или PlayStation.
Нужно ли уметь программировать, чтобы сделать мод для DayZ?
Для статичного реквизита или ретекстура — нет, это просто модель, текстуры и небольшой config.cpp. Оружие и продвинутые предметы могут использовать немного Enforce-скрипта, но большая часть поведения наследуется от близкого ванильного класса, так что можно далеко продвинуться без скриптинга.
Бесплатен ли моддинг DayZ и какое ПО нужно?
Да. Основные инструменты бесплатны: DayZ Tools (бесплатно в Steam, если у вас есть DayZ) и Blender. Дополнительные опции, как pboProject от Mikero, имеют бесплатные уровни. Платное ПО для импорта модели не нужно.
Можно ли использовать модели из другой игры (GTA, Garry’s Mod) в DayZ?
Только если лицензия это явно разрешает — а почти ни одна не разрешает. Вытаскивание моделей из другой игры или мода нарушает авторские права и является самой частой причиной удаления мода DayZ; используйте ассеты CC0 или с коммерческой лицензией.
Могу ли я просто переименовать текстуры скачанной модели в _CO / _NOHQ / _SMDI?
Нет. Albedo и карта нормалей примерно соответствуют _CO и _NOHQ, но _SMDI — это карта спекуляра/глянца; metallic и roughness нужно сконвертировать или запечь в неё, а не переименовать. Текстуры также должны быть размеров, кратных степени двойки (1024 / 2048 / 4096).
У моего объекта нет коллизии или пули проходят сквозь него — почему?
Отсутствие коллизии означает, что нет Geometry LOD или у его частей нет компонентов или массы. Пули проходят насквозь — значит нет Fire Geometry LOD с материалом пробития. А если персонажи соскальзывают с пола или лестницы, отсутствует Roadway LOD. Каждый LOD выполняет свою отдельную работу.
Почему мои текстуры загружаются на моём ПК, но не у других игроков?
Вы сослались на них по абсолютному пути C:\. Всегда используйте относительный путь папки мода на диске P:, чтобы ассеты разрешались на любой машине.
Чем оружие отличается от статичного реквизита?
Это та же цепочка плюс многое в конце: дополнительные точки памяти (eye, muzzle, выброс гильзы), прокси для магазина, оптики и глушителя, пользовательский боеприпас (CfgMagazines / CfgAmmo), пользовательские звуки (CfgSoundShaders / CfgSoundSets) и CfgWeapons. Анимация обычно наследуется от близкого ванильного оружия — самое сложное это сопоставить model.cfg, точки памяти и выделения, а не скриптинг.
Как мне сделать пользовательскую одежду или ретекстур?
Одежда привязывается по весам к скелету DayZ и подгоняется по телу в Blender, обрезается до одного предмета, затем наследует Clothing_Base с itemSize, грузом, heatIsolation и clothingType. Ретекстур (цветовой вариант) управляется из hiddenSelections + hiddenSelectionsTextures в конфиге, а не запекается в модель.
Могу ли я перенести модель из Arma 3?
Да, если лицензия это позволяет. Дебинаризируйте PBO (Crowbar), импортируйте MLOD с помощью Arma Toolbox, обрежьте до единственного предмета одежды DayZ и исправьте просвечивание тела. Оснастка и веса Arma обычно переиспользуемы в DayZ, но проверьте скелет и выделения. Никогда не используйте ассеты, на распространение которых у вас нет лицензии.
Сколько полигонов должно быть у моей модели?
Примерно 1–5k треугольников для реквизита, 10–20k для самого детального LOD оружия, нижние тысячи для одежды, причём каждый следующий Resolution LOD примерно вдвое меньше предыдущего, а самый грубый около 500. Держите текстуры кратными степени двойки до 4096.
Нужны ли мне все типы LOD?
Нет. Простому реквизиту нужны Resolution, Geometry и в идеале Fire Geometry. View Geometry, View Pilot, Roadway, Shadow и дополнительные точки памяти добавляются только тогда, когда тип контента — одежда, оружие, проходимая постройка — действительно их требует.