Skip to content

DayZ Modding Glossary & Page Index

Home | Glossary & Index


Полный справочник терминов, используемых в этой вики и в моддинге DayZ.


A

Action (Действие) --- Взаимодействие игрока с предметом или миром (еда, открытие дверей, ремонт). Действия создаются с использованием ActionBase с условиями и этапами обратных вызовов. См. Главу 6.12.

Addon Builder --- Приложение DayZ Tools, которое упаковывает файлы мода в PBO-архивы. Обрабатывает бинаризацию, подписание файлов и сопоставление префиксов. См. Главу 4.6.

autoptr --- Сильный ссылочный указатель с областью видимости в Enforce Script. Объект, на который ссылается autoptr, автоматически уничтожается при выходе из области видимости. Редко используется в моддинге DayZ (предпочитайте явный ref). См. Главу 1.8.


B

Binarize (Бинаризация) --- Процесс преобразования исходных файлов (config.cpp, .p3d, .tga) в оптимизированные форматы, готовые для движка (.bin, ODOL, .paa). Выполняется автоматически Addon Builder или инструментом Binarize в DayZ Tools. См. Главу 4.6.

bikey / biprivatekey / bisign --- См. Подписание ключами.


C

CallQueue --- Утилита движка DayZ для планирования отложенных или повторяющихся вызовов функций. Доступна через GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM). См. Главу 6.7.

CastTo --- См. Class.CastTo.

Central Economy (CE) --- Центральная экономика --- Система распределения лута и персистентности DayZ. Настраивается через XML-файлы (types.xml, mapgrouppos.xml, cfglimitsdefinition.xml), определяющие что, где и как часто спавнится. См. Главу 6.10.

CfgMods --- Класс верхнего уровня в config.cpp, регистрирующий мод в движке. Определяет имя мода, директории скриптов, необходимые зависимости и порядок загрузки аддонов. См. Главу 2.2.

CfgPatches --- Класс config.cpp, регистрирующий отдельные аддоны (пакеты скриптов, модели, текстуры) внутри мода. Массив requiredAddons[] управляет порядком загрузки между модами. См. Главу 2.2.

CfgVehicles --- Иерархия классов config.cpp, определяющая все игровые сущности: предметы, здания, транспорт, животных и игроков. Несмотря на название, содержит гораздо больше, чем транспортные средства. См. Главу 2.2.

Class.CastTo --- Статический метод для безопасного приведения типов вниз по иерархии в Enforce Script. Возвращает true при успешном приведении. Необходим, так как в Enforce Script нет ключевого слова as. Использование: Class.CastTo(result, source). См. Главу 1.9.

CommunityFramework (CF) --- Сторонний фреймворк-мод от Jacob_Mango, предоставляющий управление жизненным циклом модулей, логирование, RPC-помощники, утилиты файлового ввода-вывода и структуры данных на основе двусвязных списков. Многие популярные моды зависят от него. См. Главу 7.2.

config.cpp --- Центральный конфигурационный файл каждого мода DayZ. Определяет CfgPatches, CfgMods, CfgVehicles и другие иерархии классов, которые движок читает при запуске. Это НЕ код C++, несмотря на расширение файла. См. Главу 2.2.


D

DamageSystem (Система урона) --- Подсистема движка, обрабатывающая регистрацию попаданий, зоны урона, значения здоровья/крови/шока и расчеты брони сущностей. Настраивается через класс DamageSystem в config.cpp с зонами и компонентами попаданий. См. Главу 6.1.

DayZ Tools --- Бесплатное приложение Steam, содержащее официальный набор инструментов для моддинга: Object Builder, Terrain Builder, Addon Builder, TexView2, Workbench и управление диском P:. См. Главу 4.5.

DayZPlayer --- Базовый класс для всех сущностей игроков в движке. Предоставляет доступ к системам перемещения, анимации, инвентаря и ввода. PlayerBase расширяет этот класс и является типичной точкой входа для моддинга. См. Главу 6.1.

Dedicated Server (Выделенный сервер) --- Автономный безголовый серверный процесс (DayZServer_x64.exe), используемый для мультиплеерного хостинга. Выполняет только серверные скрипты. В отличие от Listen Server.


E

EEInit --- Метод-событие движка, вызываемый при инициализации сущности после создания. Переопределите его в классе сущности для выполнения логики настройки. Вызывается как на клиенте, так и на сервере. См. Главу 6.1.

EEKilled --- Метод-событие движка, вызываемый при достижении здоровья сущности нуля. Используется для логики смерти, выпадения лута и отслеживания убийств. См. Главу 6.1.

EEHitBy --- Метод-событие движка, вызываемый при получении сущностью урона. Параметры включают источник урона, пораженный компонент, тип урона и зоны урона. См. Главу 6.1.

EEItemAttached --- Метод-событие движка, вызываемый при присоединении предмета к слоту инвентаря сущности (например, присоединение прицела к оружию). Парный метод: EEItemDetached. См. Главу 6.1.

Enforce Script --- Проприетарный скриптовый язык Bohemia Interactive, используемый в DayZ и играх на движке Enfusion. C-подобный синтаксис, похожий на C#, но с уникальными ограничениями (нет тернарного оператора, нет try/catch, нет лямбд). См. Часть 1.

EntityAI --- Базовый класс для всех «интеллектуальных» сущностей в DayZ (игроки, животные, зомби, предметы). Расширяет Entity интерфейсами инвентаря, системы урона и ИИ. Большинство модов предметов и персонажей начинаются отсюда. См. Главу 6.1.

EventBus (Шина событий) --- Паттерн «издатель-подписчик» для развязанной коммуникации между системами. Модули подписываются на именованные события и получают обратные вызовы при срабатывании событий, без прямых зависимостей. См. Главу 7.6.


F

File Patching (Патчинг файлов) --- Параметр запуска (-filePatching), позволяющий движку загружать отдельные файлы с диска P: вместо упакованных PBO. Необходим для быстрой итерации при разработке. Должен быть включен и на клиенте, и на сервере. См. Главу 4.6.

Fire Geometry --- Специализированный LOD в 3D-модели (.p3d), определяющий поверхности, по которым пули могут попадать и наносить урон. Отличается от View Geometry и Geometry LOD. См. Главу 4.2.


G

GameInventory --- Класс движка, управляющий системой инвентаря сущности. Предоставляет методы для добавления, удаления, поиска и передачи предметов между контейнерами и слотами. См. Главу 6.1.

GetGame() --- Глобальная функция, возвращающая синглтон CGame. Точка входа для доступа к миссии, игрокам, очередям вызовов, RPC, погоде и другим системам движка. Доступна повсюду в скрипте. См. Главу 6.1.

GetUApi() --- Глобальная функция, возвращающая синглтон UAInputAPI для системы ввода. Используется для регистрации и опроса пользовательских назначений клавиш. См. Главу 6.13.

Geometry LOD --- LOD 3D-модели, используемый для физического обнаружения столкновений (перемещение игрока, физика транспорта). Отличается от View Geometry и Fire Geometry. См. Главу 4.2.

Guard Clause (Проверка-ограждение) --- Паттерн защитного программирования: проверка предусловий в начале метода с ранним возвратом при несоответствии. Необходим в Enforce Script, так как try/catch отсутствует. См. Главу 1.11.


H

Hidden Selections (Скрытые выделения) --- Именованные слоты текстур/материалов на 3D-модели, которые можно менять в рантайме через скрипт. Используются для вариантов камуфляжа, командных цветов, состояний повреждения и динамического изменения внешнего вида. Определяются в config.cpp и именованных выделениях модели. См. Главу 4.2.

HUD --- Heads-Up Display: экранные элементы интерфейса, видимые во время игры (индикаторы здоровья, панель быстрого доступа, компас, уведомления). Создаются с помощью файлов .layout и скриптовых классов виджетов. См. Главу 3.1.


I

IEntity --- Интерфейс сущности самого низкого уровня в движке Enfusion. Предоставляет доступ к трансформации (позиция/вращение), визуалу и физике. Большинство моддеров работают с EntityAI или более высокими классами. См. Главу 6.1.

ImageSet --- XML-файл (.imageset), определяющий именованные прямоугольные области внутри атласа текстур (.edds или .paa). Используется для ссылок на иконки, графику кнопок и элементы интерфейса без отдельных файлов изображений. См. Главу 5.4.

InventoryLocation --- Класс движка, описывающий конкретную позицию в системе инвентаря: какая сущность, какой слот, какой ряд/колонка груза. Используется для точного манипулирования инвентарем и передач. См. Главу 6.1.

ItemBase --- Стандартный базовый класс для всех внутриигровых предметов (расширяет EntityAI). Оружие, инструменты, еда, одежда, контейнеры и вложения наследуют от ItemBase. См. Главу 6.1.


J

JsonFileLoader --- Утилитарный класс движка для загрузки и сохранения JSON-файлов в Enforce Script. Важный подводный камень: JsonLoadFile() возвращает void --- необходимо передать заранее созданный объект по ссылке, а не присваивать возвращаемое значение. См. Главу 6.8.


K

Key Signing --- Подписание ключами (.bikey, .biprivatekey, .bisign) --- Система верификации модов DayZ. .biprivatekey используется для подписания PBO (создавая файлы .bisign). Соответствующий открытый ключ .bikey помещается в папку keys/ сервера. Серверы загружают только моды, чьи подписи совпадают с установленным ключом. См. Главу 4.6.


L

Layout (Макет, файл .layout) --- XML-файл определения интерфейса, используемый системой GUI DayZ. Определяет иерархию виджетов, позиционирование, размеры и свойства стилей. Загружается в рантайме с помощью GetGame().GetWorkspace().CreateWidgets(). См. Главу 3.2.

Listen Server --- Сервер, размещенный внутри игрового клиента (игрок выступает одновременно сервером и клиентом). Полезен для одиночного тестирования. Некоторые пути кода отличаются от выделенных серверов --- всегда тестируйте оба варианта. См. Главу 8.1.

LOD (Level of Detail --- Уровень детализации) --- Несколько версий 3D-модели с разным количеством полигонов. Движок переключается между ними в зависимости от расстояния камеры для оптимизации производительности. Модели DayZ также имеют специализированные LOD: Geometry, Fire Geometry, View Geometry, Memory и Shadow. См. Главу 4.2.


M

Managed --- Ключевое слово Enforce Script, указывающее, что экземпляры класса подсчитываются по ссылкам и автоматически собираются сборщиком мусора. Большинство классов DayZ наследуют от Managed. В отличие от Class (ручное управление). См. Главу 1.8.

Memory Point (Точка памяти) --- Именованная точка, встроенная в Memory LOD 3D-модели. Используется скриптами для определения позиций на объекте (точка вспышки дула, точки крепления, позиции прокси). Доступна через GetMemoryPointPosition(). См. Главу 4.2.

Mission (Миссия --- MissionServer / MissionGameplay) --- Контроллер состояния игры верхнего уровня. MissionServer работает на сервере, MissionGameplay --- на клиенте. Переопределяйте их для подключения к запуску игры, подключениям игроков и завершению работы. См. Главу 6.11.

mod.cpp --- Файл, помещаемый в корневую папку мода, определяющий его метаданные для Steam Workshop: имя, автор, описание, иконка и URL действия. Не путать с config.cpp. См. Главу 2.3.

Modded Class (Модифицированный класс) --- Механизм Enforce Script (modded class X extends X) для расширения или переопределения существующих классов без изменения исходных файлов. Движок автоматически выстраивает цепочку из всех определений модифицированных классов. Это основной способ взаимодействия модов с ванильным кодом и другими модами. См. Главу 1.4.

Module (Модуль) --- Самостоятельная единица функциональности, зарегистрированная в менеджере модулей (например, PluginManager CF). Модули имеют методы жизненного цикла (OnInit, OnUpdate, OnMissionFinish) и являются стандартной архитектурой для систем модов. См. Главу 7.2.


N

Named Selection (Именованное выделение) --- Именованная группа вершин/граней в 3D-модели, созданная в Object Builder. Используется для Hidden Selections (смена текстур), зон урона и целей анимации. См. Главу 4.2.

Net Sync Variable (Переменная сетевой синхронизации) --- Переменная, автоматически синхронизируемая от сервера ко всем клиентам системой сетевой репликации движка. Регистрируется через методы RegisterNetSyncVariable*() и получается в OnVariablesSynchronized(). См. Главу 6.9.

notnull --- Модификатор параметра Enforce Script, сообщающий компилятору, что ссылочный параметр не должен быть null. Обеспечивает безопасность на этапе компиляции и документирует намерение. Использование: void DoWork(notnull MyClass obj). См. Главу 1.3.


O

Object Builder --- Приложение DayZ Tools для создания и редактирования 3D-моделей (.p3d). Используется для определения LOD, именованных выделений, точек памяти и компонентов геометрии. См. Главу 4.5.

OnInit --- Метод жизненного цикла, вызываемый при первой инициализации модуля или плагина. Используется для регистрации, подписки на события и одноразовой настройки. См. Главу 7.2.

OnUpdate --- Метод жизненного цикла, вызываемый каждый кадр (или с фиксированным интервалом) для модулей и определенных сущностей. Используйте экономно --- покадровый код влияет на производительность. См. Главу 7.7.

OnMissionFinish --- Метод жизненного цикла, вызываемый при завершении миссии (выключение сервера, отключение). Используется для очистки, сохранения состояния и освобождения ресурсов. См. Главу 6.11.

Override (Переопределение) --- Ключевое слово override в Enforce Script, помечающее метод, который заменяет метод родительского класса. Обязательно (или настоятельно рекомендуется) при переопределении виртуальных методов. Всегда вызывайте super.MethodName() для сохранения поведения родителя, если только намеренно не заменяете его. См. Главу 1.3.


P

P: Drive (Workdrive --- Диск P:) --- Виртуальная буква диска, назначенная DayZ Tools на каталог проекта мода. Движок использует пути P:\ для нахождения исходных файлов во время разработки. Настраивается через DayZ Tools или командами subst. См. Главу 4.5.

PAA --- Проприетарный формат текстур Bohemia (.paa). Конвертируется из исходных файлов .tga или .png с помощью TexView2 или шага бинаризации Addon Builder. Поддерживает сжатие DXT1, DXT5 и ARGB. См. Главу 4.1.

PBO --- Packed Bohemia Object (.pbo): формат архива для распространения контента модов DayZ. Содержит скрипты, конфигурации, текстуры, модели и файлы данных. Создается с помощью Addon Builder или сторонних инструментов. См. Главу 4.6.

PlayerBase --- Основной класс сущности игрока, с которым работают моддеры. Расширяет DayZPlayer и предоставляет доступ к инвентарю, урону, эффектам статуса и всей функциональности, связанной с игроком. См. Главу 6.1.

PlayerIdentity --- Класс движка, содержащий метаданные подключенного игрока: Steam UID, имя, сетевой ID и пинг. Доступен на стороне сервера из PlayerBase.GetIdentity(). Необходим для инструментов администрирования и персистентности. См. Главу 6.9.

PPE (Post-Process Effects --- Пост-процессные эффекты) --- Система движка для визуальных эффектов экранного пространства: размытие, цветокоррекция, хроматическая аберрация, виньетирование, зернистость пленки. Управляется через классы PPERequester. См. Главу 6.5.

Print --- Встроенная функция для вывода текста в лог скриптов (файлы логов в %localappdata%/DayZ/). Полезна для отладки, но должна быть удалена или обернута в проверки в продакшн-коде. См. Главу 1.11.

Proto Native --- Функции, объявленные с proto native, реализованы в движке C++, а не в скрипте. Они связывают Enforce Script с внутренними механизмами движка и не могут быть переопределены. См. Главу 1.3.


Q

Quaternion (Кватернион) --- Четырехкомпонентное представление вращения, используемое внутри движка. На практике моддеры DayZ обычно работают с углами Эйлера (vector из pitch/yaw/roll), а движок конвертирует внутренне. См. Главу 1.7.


R

ref --- Ключевое слово Enforce Script, объявляющее сильную ссылку на управляемый объект. Предотвращает сборку мусора, пока ссылка существует. Используйте ref для владения; обычные ссылки для невладеющих указателей. Остерегайтесь циклов ref (A ссылается на B, B ссылается на A), которые вызывают утечки памяти. См. Главу 1.8.

requiredAddons --- Массив в CfgPatches, указывающий, какие аддоны должны загрузиться до вашего. Управляет порядком компиляции скриптов и наследования конфигурации между модами. Неправильная настройка вызывает ошибки «missing class» или тихие сбои загрузки. См. Главу 2.2.

RPC (Remote Procedure Call --- Удаленный вызов процедуры) --- Механизм отправки данных между сервером и клиентом. DayZ предоставляет GetGame().RPCSingleParam() и ScriptRPC для пользовательской коммуникации. Требует совпадения отправителя и получателя на правильной машине. См. Главу 6.9.

RVMAT --- Файл определения материала (.rvmat), используемый рендерером DayZ. Задает текстуры, шейдеры и свойства поверхности для 3D-моделей. См. Главу 4.3.


S

Scope (config) --- Область видимости (конфиг) --- Целочисленное значение в CfgVehicles, управляющее видимостью предмета: 0 = скрытый/абстрактный (никогда не спавнится), 1 = доступен только через скрипт, 2 = виден в игре и может спавниться Центральной экономикой. См. Главу 2.2.

ScriptRPC --- Класс Enforce Script для создания и отправки пользовательских RPC-сообщений. Позволяет записывать несколько параметров (int, float, string, vector) в один сетевой пакет. См. Главу 6.9.

SEffectManager --- Синглтон-менеджер визуальных и звуковых эффектов. Управляет созданием частиц, воспроизведением звуков и жизненным циклом эффектов. Используйте SEffectManager.PlayInWorld() для позиционных эффектов. См. Главу 6.1.

Singleton (Синглтон) --- Паттерн проектирования, гарантирующий существование только одного экземпляра класса. В Enforce Script обычно реализуется статическим методом GetInstance(), хранящим экземпляр в переменной static ref. См. Главу 7.1.

Slot (Слот) --- Именованная точка крепления на сущности (например, "Shoulder", "Hands", "Slot_Magazine"). Определяется в config.cpp под InventorySlots и массивом attachments[] сущности. См. Главу 6.1.

stringtable.csv --- CSV-файл, предоставляющий локализованные строки для до 13 языков. Ссылки в коде через ключи с префиксом #STR_. Движок автоматически выбирает правильный языковой столбец. См. Главу 5.1.

super --- Ключевое слово, используемое внутри переопределения метода для вызова реализации родительского класса. Всегда вызывайте super.MethodName() в переопределенных методах, если только намеренно не хотите пропустить логику родителя. См. Главу 1.3.


T

TexView2 --- Утилита DayZ Tools для просмотра и конвертации текстур между форматами .tga, .png, .paa и .edds. Также используется для инспекции сжатия PAA, мипмапов и альфа-каналов. См. Главу 4.5.

typename --- Тип Enforce Script, представляющий ссылку на класс в рантайме. Используется для рефлексии, фабричных паттернов и динамической проверки типов. Получается из экземпляра через obj.Type() или напрямую из имени класса: typename t = PlayerBase;. См. Главу 1.9.

types.xml --- XML-файл Центральной экономики, определяющий номинальное количество, время жизни, поведение пополнения, категории спавна и зоны уровней для каждого спавнящегося предмета. Находится в папке db/ миссии. См. Главу 6.10.


U

UAInput --- Класс движка, представляющий одно действие ввода (назначение клавиш). Создается из GetUApi().RegisterInput() и используется для обнаружения нажатий, удержаний и отпусканий клавиш. Определяется совместно с inputs.xml. См. Главу 6.13.

Unlink --- Метод для безопасного уничтожения и разыменования управляемого объекта. Предпочтительнее установки в null, когда нужна немедленная очистка. Вызывается как GetGame().ObjectDelete(obj) для сущностей. См. Главу 1.8.


V

View Geometry --- LOD 3D-модели, используемый для тестов визуальной окклюзии (проверки видимости ИИ, линия видимости игрока). Определяет, блокирует ли объект обзор. Отличается от Geometry LOD (столкновения) и Fire Geometry (баллистика). См. Главу 4.2.


W

Widget (Виджет) --- Базовый класс для всех элементов интерфейса в системе GUI DayZ. Подтипы включают TextWidget, ImageWidget, ButtonWidget, EditBoxWidget, ScrollWidget и типы контейнеров, такие как WrapSpacerWidget. См. Главу 3.1.

Workbench --- IDE DayZ Tools для редактирования скриптов, конфигураций и запуска игры в режиме разработки. Предоставляет компиляцию скриптов, точки останова и обозреватель ресурсов. См. Главу 4.5.

WrapSpacer --- Виджет-контейнер, размещающий дочерние элементы с переносом в строки/столбцы (аналогично CSS flexbox wrap). Необходим для динамических списков, сеток инвентаря и любых макетов, где количество дочерних элементов меняется. См. Главу 3.4.


X

XML Configs (XML-конфигурации) --- Собирательный термин для многочисленных XML-файлов конфигурации серверов DayZ: types.xml, globals.xml, economy.xml, events.xml, cfglimitsdefinition.xml, mapgrouppos.xml и другие. См. Главу 6.10.


Z

Zone (Damage Zone --- Зона урона) --- Именованный регион на модели сущности с независимым отслеживанием здоровья. Определяется в config.cpp под DamageSystem классом class DamageZones. Типичные зоны на игроках: Head, Torso, LeftArm, LeftLeg и т.д. См. Главу 6.1.


Не нашли термин? Создайте issue или отправьте pull request.

Released under CC BY-SA 4.0 | Code examples under MIT License