Глава 8.13: Диагностическое меню (Diag Menu)
Главная | << Назад: Создание торговой системы | Диагностическое меню
Краткое содержание: Diag Menu -- это встроенный диагностический инструмент DayZ, доступный только через исполняемый файл DayZDiag. Он предоставляет счётчик FPS, профилирование скриптов, отладку рендера, свободную камеру, визуализацию физики, управление погодой, инструменты центральной экономики, отладку навигации ИИ и диагностику звука. Эта глава документирует каждую категорию меню, опцию и сочетание клавиш на основе официальной документации Bohemia Interactive.
Содержание
- Что такое Diag Menu?
- Как получить доступ
- Управление навигацией
- Горячие клавиши быстрого доступа
- Обзор категорий меню
- Статистика
- Рендерер Enfusion
- Мир Enfusion (физика)
- Рендер DayZ
- Игра
- ИИ
- Звуки
- Полезные функции для моддеров
- Когда использовать Diag Menu
- Типичные ошибки
- Следующие шаги
Что такое Diag Menu?
Diag Menu -- это иерархическое отладочное меню, встроенное в диагностический исполняемый файл DayZ. Оно содержит опции для отладки скриптов и ассетов игры в семи основных категориях: Statistics, Enfusion Renderer, Enfusion World, DayZ Render, Game, AI и Sounds.
Diag Menu недоступно в розничном исполняемом файле DayZ (DayZ_x64.exe). Необходимо использовать DayZDiag_x64.exe -- диагностическую сборку, которая поставляется вместе с розничной версией в каталоге установки DayZ или DayZ Server.
Как получить доступ
Требования
- DayZDiag_x64.exe -- Диагностический исполняемый файл. Находится в папке установки DayZ рядом с обычным
DayZ_x64.exe. - Вы должны находиться в игре (не на экране загрузки). Меню доступно в любом 3D-окне просмотра.
Открытие меню
Нажмите Win + Alt, чтобы открыть Diag Menu.
Альтернативное сочетание клавиш -- Ctrl + Win, но оно конфликтует с системным сочетанием Windows 11 и не рекомендуется на этой платформе.
Включение курсора мыши
Некоторые опции Diag Menu требуют взаимодействия с экраном через мышь. Курсор мыши переключается нажатием:
LCtrl + Numpad 9
Эта привязка клавиш зарегистрирована через скрипт (PluginKeyBinding).
Управление навигацией
После открытия Diag Menu:
| Клавиша | Действие |
|---|---|
| Стрелка вверх / вниз | Навигация между пунктами меню |
| Стрелка вправо | Войти в подменю или переключить значение опции |
| Стрелка влево | Переключить значение опции в обратном направлении |
| Backspace | Выйти из текущего подменю (вернуться на уровень назад) |
Когда опции показывают несколько значений, они перечислены в порядке появления в меню. Первая опция обычно является значением по умолчанию.
Горячие клавиши быстрого доступа
Эти сочетания работают в любой момент при запуске DayZDiag, без необходимости открывать меню:
| Сочетание | Функция |
|---|---|
| LCtrl + Numpad 1 | Переключить счётчик FPS |
| LCtrl + Numpad 9 | Переключить курсор мыши на экране |
| RCtrl + RAlt + W | Переключить режим отладки рендера |
| LCtrl + LAlt + P | Переключить эффекты постобработки |
| LAlt + Numpad 6 | Переключить визуализацию физических тел |
| Page Up | Свободная камера: переключить движение игрока |
| Page Down | Свободная камера: заморозить/разморозить камеру |
| Insert | Телепортировать игрока к позиции курсора (в режиме свободной камеры) |
| Home | Переключить свободную камеру / отключить и телепортировать игрока к курсору |
| Numpad / | Переключить свободную камеру (без телепорта) |
| End | Отключить свободную камеру (вернуться к камере игрока) |
Примечание: Любое упоминание "Cheat Inputs" в официальной документации относится к вводам, жёстко закодированным на стороне C++, недоступным через скрипт.
Обзор категорий меню
Diag Menu содержит семь категорий верхнего уровня:
- Statistics -- Счётчик FPS и профилировщик скриптов
- Enfusion Renderer -- Освещение, тени, материалы, окклюзия, постобработка, ландшафт, виджеты
- Enfusion World -- Визуализация и отладка физического движка (Bullet)
- DayZ Render -- Рендер неба, диагностика геометрии
- Game -- Погода, свободная камера, транспорт, бой, центральная экономика, звуки поверхностей
- AI -- Навигационная сетка, поиск пути, поведение агентов ИИ
- Sounds -- Отладка воспроизводимых семплов, информация о звуковой системе
Статистика
Структура меню
Statistics
FPS [LCtrl + Numpad 1]
Script profiler UI
> Script profiler settings
Always enabled
Flags
Module
Update interval
Average
Time resolution
(UI) Scale2
3
4
5
6
7
8
9
10
11
FPS
Включает счётчик FPS в верхнем левом углу экрана.
Значение FPS рассчитывается из времени между последними 10 кадрами, поэтому отражает короткое скользящее среднее, а не мгновенное значение.
Script Profiler UI
Включает экранный профилировщик скриптов, отображающий данные производительности выполнения скриптов в реальном времени.
Профилировщик показывает шесть секций данных:
| Секция | Что показывает |
|---|---|
| Time per class | Общее время всех вызовов функций, принадлежащих классу (топ 20) |
| Time per function | Общее время всех вызовов конкретной функции (топ 20) |
| Class allocations | Количество аллокаций класса (топ 20) |
| Count per function | Количество вызовов функции (топ 20) |
| Class count | Количество живых экземпляров класса (топ 40) |
| Stats and settings | Текущая конфигурация профилировщика и счётчики кадров |
Панель Stats and settings показывает:
| Поле | Значение |
|---|---|
| UI enabled (DIAG) | Активен ли UI профилировщика скриптов |
| Profiling enabled (SCRP) | Работает ли профилирование, даже когда UI не активен |
| Profiling enabled (SCRC) | Происходит ли профилирование фактически |
| Flags | Текущие флаги сбора данных |
| Module | Текущий профилируемый модуль |
| Interval | Текущий интервал обновления |
| Time Resolution | Текущее разрешение времени |
| Average | Отображаются ли средние значения |
| Game Frame | Всего прошедших кадров |
| Session Frame | Всего кадров в этой сессии профилирования |
| Total Frames | Всего кадров за все сессии профилирования |
| Profiled Sess Frms | Профилированных кадров в этой сессии |
| Profiled Frames | Профилированных кадров за все сессии |
Важно: Профилировщик скриптов профилирует только скриптовый код. Proto (привязанные к движку) методы не измеряются как отдельные записи, но их время выполнения включено в общее время скриптового метода, который их вызывает.
Важно: API EnProfiler и сам профилировщик скриптов доступны только в диагностическом исполняемом файле.
Настройки профилировщика скриптов
Эти настройки контролируют, как собираются данные профилирования. Их также можно настроить программно через API EnProfiler (документирован в EnProfiler.c).
Always Enabled
Сбор данных профилирования не включён по умолчанию. Этот переключатель показывает, активен ли он в данный момент.
Чтобы включить профилирование при запуске, используйте параметр запуска -profile.
UI профилировщика скриптов игнорирует эту настройку -- он всегда принудительно включает профилирование, пока UI видим. Когда UI выключается, профилирование снова останавливается (если "Always enabled" не установлено в true).
Флаги
Контролируют способ сбора данных. Доступны четыре комбинации:
| Комбинация флагов | Область | Время жизни данных |
|---|---|---|
SPF_RESET | SPF_RECURSIVE | Выбранный модуль + дочерние | Покадрово (сброс каждый кадр) |
SPF_RECURSIVE | Выбранный модуль + дочерние | Накопление между кадрами |
SPF_RESET | Только выбранный модуль | Покадрово (сброс каждый кадр) |
SPF_NONE | Только выбранный модуль | Накопление между кадрами |
- SPF_RECURSIVE: Включает профилирование дочерних модулей (рекурсивно)
- SPF_RESET: Очищает данные в конце каждого кадра
Module
Выбирает, какой скриптовый модуль профилировать:
| Опция | Скриптовый слой |
|---|---|
| CORE | 1_Core |
| GAMELIB | 2_GameLib |
| GAME | 3_Game |
| WORLD | 4_World |
| MISSION | 5_Mission |
| MISSION_CUSTOM | init.c |
Update Interval
Количество кадров ожидания перед обновлением отсортированного отображения данных. Это также задерживает сброс, вызванный SPF_RESET.
Доступные значения: 0, 5, 10, 20, 30, 50, 60, 120, 144
Average
Включить или отключить отображение средних значений.
- С
SPF_RESETи без интервала: значения -- это сырые покадровые данные - Без
SPF_RESET: делит накопленное значение на количество кадров сессии - С установленным интервалом: делит на интервал
Количество классов никогда не усредняется -- оно всегда показывает текущее количество экземпляров. Аллокации покажут среднее количество созданий экземпляра.
Time Resolution
Устанавливает единицу времени для отображения. Значение представляет знаменатель (n-я доля секунды):
| Значение | Единица |
|---|---|
| 1 | Секунды |
| 1000 | Миллисекунды |
| 1000000 | Микросекунды |
Доступные значения: 1, 10, 100, 1000, 10000, 100000, 1000000
(UI) Scale
Настраивает визуальный масштаб экранного профилировщика для различных размеров экрана и разрешений.
Диапазон: от 0.5 до 1.5 (по умолчанию: 1.0, шаг: 0.05)
Рендерер Enfusion
Структура меню
Enfusion Renderer
Lights
> Lighting
Ambient lighting
Ground lighting
Directional lighting
Bidirectional lighting
Specular lighting
Reflection
Emission lighting
Shadows
Terrain shadows
Render debug mode [RCtrl + RAlt + W]
Occluders
Occlude entities
Occlude proxies
Show occluder volumes
Show active occluders
Show occluded
Widgets
Postprocess [LCtrl + LAlt + P]
Terrain
> Materials
Common, TreeTrunk, TreeCrown, Grass, Basic, Normal,
Super, Skin, Multi, Old Terrain, Old Roads, Water,
Sky, Sky clouds, Sky stars, Sky flares,
Particle Sprite, Particle Streak2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Lights
Переключает реальные источники света (такие как PersonalLight или игровые предметы вроде фонариков). Это не влияет на освещение окружающей среды -- для этого используйте подменю Lighting.
Подменю Lighting
Каждый переключатель контролирует конкретный компонент освещения:
| Опция | Эффект при отключении |
|---|---|
| Ambient lighting | Убирает общий окружающий свет сцены |
| Ground lighting | Убирает свет, отражённый от земли (заметен на крышах, подмышках персонажа) |
| Directional lighting | Убирает основной направленный (солнце/луна) свет. Также отключает двунаправленное освещение |
| Bidirectional lighting | Убирает компонент двунаправленного освещения |
| Specular lighting | Убирает зеркальные блики (заметны на блестящих поверхностях вроде шкафов, машин) |
| Reflection | Убирает отражённое освещение (заметно на металлических/глянцевых поверхностях) |
| Emission lighting | Убирает эмиссию (самосвечение) материалов |
Эти переключатели полезны для изоляции конкретных вкладов освещения при отладке визуальных проблем в пользовательских моделях или сценах.
Shadows
Включает или отключает рендер теней. Отключение также убирает отсечение дождя внутри объектов (дождь будет проходить сквозь крыши).
Terrain Shadows
Контролирует, как генерируются тени ландшафта.
Опции: on (slice), on (full), no update, disabled
Render Debug Mode
Переключает между режимами визуализации рендера для инспекции геометрии мешей в игре.
Опции: normal, wire, wire only, overdraw, overdrawZ
Различные материалы отображаются разными цветами каркаса:
| Материал | Цвет (RGB) |
|---|---|
| TreeTrunk | 179, 126, 55 |
| TreeCrown | 143, 227, 94 |
| Grass | 41, 194, 53 |
| Basic | 208, 87, 87 |
| Normal | 204, 66, 107 |
| Super | 234, 181, 181 |
| Skin | 252, 170, 18 |
| Multi | 143, 185, 248 |
| Terrain | 255, 127, 127 |
| Water | 51, 51, 255 |
| Ocean | 51, 128, 255 |
| Sky | 143, 185, 248 |
Окклюдеры
Набор переключателей для системы отсечения по окклюзии:
| Опция | Эффект |
|---|---|
| Occluders | Включить/отключить окклюзию объектов |
| Occlude entities | Включить/отключить окклюзию сущностей |
| Occlude proxies | Включить/отключить окклюзию прокси |
| Show occluder volumes | Делает снимок и рисует отладочные фигуры для визуализации объёмов окклюзии |
| Show active occluders | Показывает текущие активные окклюдеры отладочными фигурами |
| Show occluded | Визуализирует заслонённые объекты отладочными фигурами |
Widgets
Включить или отключить рендер всех UI-виджетов. Полезно для создания чистых скриншотов или изоляции проблем рендера.
Postprocess
Включить или отключить эффекты постобработки (bloom, цветокоррекция, виньетка и т.д.).
Terrain
Включить или отключить рендер ландшафта целиком.
Подменю Materials
Переключить рендер конкретных типов материалов. Большинство интуитивно понятны. Примечательные записи:
- Super -- Общий переключатель, охватывающий каждый материал, связанный с шейдером "super"
- Old Terrain -- Охватывает материалы Terrain и Terrain Simple
- Water -- Охватывает каждый материал, связанный с водой (океан, берег, реки)
Мир Enfusion (физика)
Структура меню
Enfusion World
Show Bullet
> Bullet
Draw Char Ctrl
Draw Simple Char Ctrl
Max. Collider Distance
Draw Bullet shape
Draw Bullet wireframe
Draw Bullet shape AABB
Draw obj center of mass
Draw Bullet contacts
Force sleep Bullet
Show stats
Show bodies [LAlt + Numpad 6]2
3
4
5
6
7
8
9
10
11
12
13
14
Примечание: "Bullet" здесь относится к физическому движку Bullet, а не к боеприпасам.
Show Bullet
Включает отладочную визуализацию физического движка Bullet.
Подменю Bullet
| Опция | Описание |
|---|---|
| Draw Char Ctrl | Визуализировать контроллер персонажа игрока. Зависит от "Draw Bullet shape" |
| Draw Simple Char Ctrl | Визуализировать контроллер персонажа ИИ. Зависит от "Draw Bullet shape" |
| Max. Collider Distance | Максимальное расстояние от игрока для визуализации коллайдеров (значения: 0, 1, 2, 5, 10, 20, 50, 100, 200, 500). По умолчанию 0 |
| Draw Bullet shape | Визуализировать формы физических коллайдеров |
| Draw Bullet wireframe | Показать коллайдеры только каркасом. Зависит от "Draw Bullet shape" |
| Draw Bullet shape AABB | Показать ограничивающие прямоугольники коллайдеров по осям |
| Draw obj center of mass | Показать центры масс объектов |
| Draw Bullet contacts | Визуализировать контактирующие коллайдеры |
| Force sleep Bullet | Перевести все физические тела в спящий режим |
| Show stats | Показать отладочную статистику (опции: disabled, basic, all). Статистика остаётся видимой 10 секунд после отключения |
Внимание: Max. Collider Distance по умолчанию равна 0, потому что эта визуализация ресурсоёмка. Установка большого расстояния вызовет значительное падение производительности.
Show Bodies
Визуализация физических тел Bullet. Опции: disabled, only, all
Рендер DayZ
Структура меню
DayZ Render
> Sky
Space
Stars
> Planets
Sun
Moon
Atmosphere
> Clouds
Far
Near
Physical
Horizon
> Post Process
God Rays
> Geometry diagnostic
diagnostic mode2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Подменю Sky
Переключение отдельных компонентов рендера неба:
| Опция | Что контролирует |
|---|---|
| Space | Фоновая текстура за звёздами |
| Stars | Рендер звёзд |
| Sun | Солнце и его эффект гало (не лучи бога) |
| Moon | Луна и её эффект гало (не лучи бога) |
| Atmosphere | Текстура атмосферы в небе |
| Far (Clouds) | Верхние/дальние облака. Не влияют на лучи света (менее плотные) |
| Near (Clouds) | Нижние/ближние облака. Более плотные, действуют как окклюзия для лучей света |
| Physical (Clouds) | Устаревшие объектные облака. Удалены из Черноруссии и Ливонии в DayZ 1.23 |
| Horizon | Рендер горизонта. Горизонт блокирует лучи света |
| God Rays | Постобработка эффекта световых лучей |
Geometry Diagnostic
Включает отрисовку отладочных форм для визуализации геометрии объекта в игре.
Типы геометрии: normal, roadway, geometry, viewGeometry, fireGeometry, paths, memory, wreck
Режимы отрисовки: solid+wire, Zsolid+wire, wire, ZWire, geom only
Это чрезвычайно полезно для моддеров, создающих пользовательские модели -- вы можете проверить правильность настройки fire geometry, view geometry и memory points, не выходя из игры.
Игра
Структура меню
Game
> Weather & environment
Display
Force fog at camera
Override fog
Distance density
Height density
Distance offset
Height bias
Free Camera
FrCam Player Move [Page Up]
FrCam NoClip
FrCam Freeze [Page Down]
> Vehicles
Audio
Simulation
> Combat
DECombat
DEShots
DEHitpoints
DEExplosions
> Legacy/obsolete
DEAmbient
DELight
DESurfaceSound
> Central Economy
> Loot Spawn Edit
Spawn Volume Vis
Setup Vis
Edit Volume
Re-Trace Group Points
Spawn Candy
Spawn Rotation Test
Placement Test
Export Group
Export All Groups
Export Map
Export Clusters
Export Economy [csv]
Export Respawn Queue [csv]
> Loot Tool
Deplete Lifetime
Set Damage = 1.0
Damage + Deplete
Invert Avoidance
Project Target Loot
> Infected
Infected Vis
Infected Zone Info
Infected Spawn
Reset Cleanup
> Animal
Animal Vis
Animal Spawn
Ambient Spawn
> Building
Building Stats
Vehicle&Wreck Vis
Loot Vis
Cluster Vis
Dynamic Events Status
Dynamic Events Vis
Dynamic Events Spawn
Export Dyn Event
Overall Stats
Updaters State
Idle Mode
Force Save2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Weather & Environment
Отладочный функционал для системы погоды.
Display
Включает отладочную визуализацию погоды. Показывает на экране отладку тумана/дальности видимости и открывает отдельное окно реального времени с подробными данными о погоде.
Для включения отдельного окна при запуске как сервер используйте параметр запуска -debugweather.
Настройки окна хранятся в профилях как weather_client_imgui.ini / weather_client_imgui.bin (или weather_server_* для серверов).
Force Fog at Camera
Принудительно устанавливает высоту тумана на высоту камеры игрока. Имеет приоритет над настройкой Height bias.
Override Fog
Включает переопределение значений тумана ручными настройками:
| Параметр | Диапазон | Шаг |
|---|---|---|
| Distance density | 0 -- 1 | 0.01 |
| Height density | 0 -- 1 | 0.01 |
| Distance offset | 0 -- 1 | 0.01 |
| Height bias | -500 -- 500 | 5 |
Свободная камера
Свободная камера отсоединяет обзор от персонажа игрока и позволяет летать по миру. Это один из самых полезных инструментов отладки для моддеров.
Управление свободной камерой
| Клавиша | Источник | Функция |
|---|---|---|
| W / A / S / D | Inputs (xml) | Движение вперёд / влево / назад / вправо |
| Q | Inputs (xml) | Движение вверх |
| Z | Inputs (xml) | Движение вниз |
| Мышь | Inputs (xml) | Обзор |
| Колёсико мыши вверх | Inputs (C++) | Увеличить скорость |
| Колёсико мыши вниз | Inputs (C++) | Уменьшить скорость |
| Пробел | Cheat Inputs (C++) | Переключить экранную отладку целевого объекта |
| Ctrl / Shift | Cheat Inputs (C++) | Текущая скорость x 10 |
| Alt | Cheat Inputs (C++) | Текущая скорость / 10 |
| End | Cheat Inputs (C++) | Отключить свободную камеру (вернуться к игроку) |
| Enter | Cheat Inputs (C++) | Привязать камеру к целевому объекту |
| Page Up | Cheat Inputs (C++) | Переключить движение игрока в режиме свободной камеры |
| Page Down | Cheat Inputs (C++) | Заморозить/разморозить позицию камеры |
| Insert | PluginKeyBinding (Script) | Телепортировать игрока к позиции курсора |
| Home | PluginKeyBinding (Script) | Переключить свободную камеру / отключить и телепортировать к курсору |
| Numpad / | PluginKeyBinding (Script) | Переключить свободную камеру (без телепорта) |
Опции свободной камеры
| Опция | Описание |
|---|---|
| FrCam Player Move | Включить/отключить перемещение игрока клавишами (WASD) в режиме свободной камеры |
| FrCam NoClip | Включить/отключить прохождение камеры сквозь ландшафт |
| FrCam Freeze | Включить/отключить перемещение камеры вводом |
Vehicles
Расширенный отладочный функционал для транспорта. Работает только когда игрок находится внутри транспортного средства.
- Audio -- Открывает отдельное окно для настройки параметров звука в реальном времени. Включает визуализацию аудио-контроллеров.
- Simulation -- Открывает отдельное окно с отладкой симуляции автомобиля: настройка параметров физики и визуализация.
Combat
Инструменты отладки для боя, стрельбы и точек попадания:
| Опция | Описание |
|---|---|
| DECombat | Показывает на экране текст с расстояниями до машин, ИИ и игроков |
| DEShots | Подменю отладки снарядов (см. ниже) |
| DEHitpoints | Отображает DamageSystem игрока и объекта, на который он смотрит |
| DEExplosions | Показывает данные проникновения взрывов. Числа показывают значения замедления. Красный крест = остановлен. Зелёный крест = прошёл насквозь |
Подменю DEShots:
| Опция | Описание |
|---|---|
| Clear vis. | Очистить существующую визуализацию выстрелов |
| Vis. trajectory | Отследить путь выстрела, показать точки выхода и остановки |
| Always Deflect | Принудительно рикошетить все клиентские выстрелы |
Legacy/Obsolete
- DEAmbient -- Отображает переменные, влияющие на окружающие звуки
- DELight -- Отображает статистику текущего окружающего освещения
DESurfaceSound
Отображает тип поверхности, на которой стоит игрок, и тип затухания.
Central Economy
Обширный набор инструментов отладки для системы центральной экономики (CE).
Важно: Большинство опций отладки CE работают только в одиночной игре с включённой CE. Только "Building Stats" работает в многопользовательском окружении или при выключенной CE.
Примечание: Многие из этих функций также доступны через
CEApiв скрипте (CentralEconomy.c).
Loot Spawn Edit
Инструменты для создания и редактирования точек спавна лута на объектах. Свободная камера должна быть включена для использования Edit Volume.
| Опция | Описание | Скриптовый эквивалент |
|---|---|---|
| Spawn Volume Vis | Визуализация точек спавна лута. Опции: Off, Adaptive, Volume, Occupied | GetCEApi().LootSetSpawnVolumeVisualisation() |
| Setup Vis | Показать свойства настройки CE на экране с цветовой кодировкой контейнеров | GetCEApi().LootToggleSpawnSetup() |
| Edit Volume | Интерактивный редактор точек лута (требуется свободная камера) | GetCEApi().LootToggleVolumeEditing() |
| Re-Trace Group Points | Пересчитать точки лута для исправления зависших предметов | GetCEApi().LootRetraceGroupPoints() |
| Spawn Candy | Заспавнить лут во всех точках выбранной группы | -- |
| Spawn Rotation Test | Тест флагов поворота в позиции курсора | -- |
| Placement Test | Визуализация размещения цилиндром-сферой | -- |
| Export Group | Экспортировать выбранную группу в storage/export/mapGroup_CLASSNAME.xml | GetCEApi().LootExportGroup() |
| Export All Groups | Экспортировать все группы в storage/export/mapgroupproto.xml | GetCEApi().LootExportAllGroups() |
| Export Map | Сгенерировать storage/export/mapgrouppos.xml | GetCEApi().LootExportMap() |
| Export Clusters | Сгенерировать storage/export/mapgroupcluster.xml | GetCEApi().ExportClusterData() |
| Export Economy [csv] | Экспортировать экономику в storage/log/economy.csv | GetCEApi().EconomyLog(EconomyLogCategories.Economy) |
| Export Respawn Queue [csv] | Экспортировать очередь респавна в storage/log/respawn_queue.csv | GetCEApi().EconomyLog(EconomyLogCategories.RespawnQueue) |
Привязки клавиш Edit Volume:
| Клавиша | Функция |
|---|---|
| [ | Итерация назад по контейнерам |
| ] | Итерация вперёд по контейнерам |
| ЛКМ | Вставить новую точку |
| ПКМ | Удалить точку |
| ; | Увеличить размер точки |
| ' | Уменьшить размер точки |
| Insert | Заспавнить лут в точке |
| M | Заспавнить 48 "AmmoBox_762x54_20Rnd" |
| Backspace | Пометить ближайший лут для очистки (уменьшает время жизни, не мгновенно) |
Loot Tool
| Опция | Описание | Скриптовый эквивалент |
|---|---|---|
| Deplete Lifetime | Уменьшает время жизни до 3 секунд (запланировано для очистки) | GetCEApi().LootDepleteLifetime() |
| Set Damage = 1.0 | Устанавливает здоровье в 0 | GetCEApi().LootSetDamageToOne() |
| Damage + Deplete | Выполняет оба действия выше | GetCEApi().LootDepleteAndDamage() |
| Invert Avoidance | Переключает избегание игроков (обнаружение ближайших игроков) | -- |
| Project Target Loot | Эмулирует спавн целевого предмета, генерирует изображения и логи. Требует включённого "Loot Vis" | GetCEApi().SpawnAnalyze() и GetCEApi().EconomyMap() |
Infected
| Опция | Описание | Скриптовый эквивалент |
|---|---|---|
| Infected Vis | Визуализировать зоны зомби, локации, статус живой/мёртвый | GetCEApi().InfectedToggleVisualisation() |
| Infected Zone Info | Экранная отладка, когда камера внутри заражённой зоны | GetCEApi().InfectedToggleZoneInfo() |
| Infected Spawn | Заспавнить заражённого в выбранной зоне (или "InfectedArmy" у курсора) | GetCEApi().InfectedSpawn() |
| Reset Cleanup | Устанавливает таймер очистки на 3 секунды | GetCEApi().InfectedResetCleanup() |
Animal
| Опция | Описание | Скриптовый эквивалент |
|---|---|---|
| Animal Vis | Визуализировать зоны животных, локации, статус живой/мёртвый | GetCEApi().AnimalToggleVisualisation() |
| Animal Spawn | Заспавнить животное в выбранной зоне (или "AnimalGoat" у курсора) | GetCEApi().AnimalSpawn() |
| Ambient Spawn | Заспавнить "AmbientHen" у цели курсора | GetCEApi().AnimalAmbientSpawn() |
Building
Building Stats показывает экранную отладку состояния дверей зданий:
- Левая сторона: открыта/закрыта и свободна/заблокирована каждая дверь
- Середина: статистика по
buildings.bin(персистентность зданий)
Рандомизация дверей использует значение конфига initOpened. Когда rand < initOpened, дверь появляется открытой (поэтому initOpened=0 означает, что двери никогда не появляются открытыми).
Распространённые настройки <building/> в economy.xml:
| Настройка | Поведение |
|---|---|
init="0" load="0" respawn="0" save="0" | Нет персистентности, нет рандомизации, состояние по умолчанию после перезапуска |
init="1" load="0" respawn="0" save="0" | Нет персистентности, двери рандомизируются по initOpened |
init="1" load="1" respawn="0" save="1" | Сохраняет только заблокированные двери, двери рандомизируются по initOpened |
init="0" load="1" respawn="0" save="1" | Полная персистентность, сохраняет точное состояние дверей, без рандомизации |
Другие инструменты Central Economy
| Опция | Описание | Скриптовый эквивалент |
|---|---|---|
| Vehicle&Wreck Vis | Визуализировать объекты, зарегистрированные в "Vehicle" avoidance. Жёлтый = Car, Розовый = Wrecks (Building), Синий = InventoryItem | GetCEApi().ToggleVehicleAndWreckVisualisation() |
| Loot Vis | Экранные данные экономики для всего, на что вы смотрите (лут, заражённые, динамические события) | GetCEApi().ToggleLootVisualisation() |
| Cluster Vis | Экранная статистика траектории DE | GetCEApi().ToggleClusterVisualisation() |
| Dynamic Events Status | Экранная статистика DE | GetCEApi().ToggleDynamicEventStatus() |
| Dynamic Events Vis | Визуализировать и редактировать точки спавна DE | GetCEApi().ToggleDynamicEventVisualisation() |
| Dynamic Events Spawn | Заспавнить динамическое событие в ближайшей точке или "StaticChristmasTree" как запасной вариант | GetCEApi().DynamicEventSpawn() |
| Export Dyn Event | Экспортировать точки DE в storage/export/eventSpawn_CLASSNAME.xml | GetCEApi().DynamicEventExport() |
| Overall Stats | Экранная статистика CE | GetCEApi().ToggleOverallStats() |
| Updaters State | Показывает, что CE обрабатывает в данный момент | -- |
| Idle Mode | Переводит CE в спящий режим (останавливает обработку) | -- |
| Force Save | Принудительное сохранение всей папки storage/data (исключая базу данных игроков) | -- |
Привязки клавиш Dynamic Events Vis:
| Клавиша | Функция |
|---|---|
| [ | Итерация назад по доступным DE |
| ] | Итерация вперёд по доступным DE |
| ЛКМ | Вставить новую точку для выбранного DE |
| ПКМ | Удалить ближайшую к курсору точку |
| СКМ | Удерживать или нажать для поворота угла |
ИИ
Структура меню
AI
Show NavMesh
Debug Pathgraph World
Debug Path Agent
Debug AI Agent2
3
4
5
Важно: Отладка ИИ в настоящее время не работает в многопользовательском окружении.
Show NavMesh
Рисует отладочные фигуры для визуализации навигационной сетки. Показывает экранную отладку со статистикой.
| Клавиша | Функция |
|---|---|
| Numpad 0 | Зарегистрировать "Test start" на позиции камеры |
| Numpad 1 | Регенерировать тайл на позиции камеры |
| Numpad 2 | Регенерировать тайлы вокруг позиции камеры |
| Numpad 3 | Итерация вперёд по типам визуализации |
| LAlt + Numpad 3 | Итерация назад по типам визуализации |
| Numpad 4 | Зарегистрировать "Test end" на позиции камеры. Рисует сферы и линию между началом и концом. Зелёный = путь найден, Красный = нет пути |
| Numpad 5 | Тест ближайшей позиции NavMesh (SamplePosition). Синяя сфера = запрос, розовая сфера = результат |
| Numpad 6 | Тест луча NavMesh. Синяя сфера = запрос, розовая сфера = результат |
Debug Pathgraph World
Экранная отладка, показывающая количество выполненных запросов на поиск пути и количество ожидающих.
Debug Path Agent
Экранная отладка и отладочные фигуры для поиска пути ИИ. Наведитесь на сущность ИИ, чтобы выбрать её для отслеживания. Используйте, когда вас конкретно интересует, как ИИ находит путь.
Debug AI Agent
Экранная отладка и отладочные фигуры для уровня настороженности и поведения ИИ. Наведитесь на сущность ИИ, чтобы выбрать её для отслеживания. Используйте, когда хотите понять принятие решений и состояние осведомлённости ИИ.
Звуки
Структура меню
Sounds
Show playing samples
Show system info2
3
Show Playing Samples
Отладочная визуализация текущих воспроизводимых звуков.
| Опция | Описание |
|---|---|
| none | По умолчанию, без отладки |
| ImGui | Отдельное окно (новейшая версия). Поддерживает фильтрацию, полное покрытие категорий. Настройки сохраняются как playing_sounds_imgui.ini / .bin в профилях |
| DbgUI | Устаревшее. Есть фильтрация по категориям, более читаемый, но выходит за пределы экрана и не имеет категории транспорта |
| Engine | Устаревшее. Показывает данные с цветовой кодировкой в реальном времени со статистикой, но выходит за пределы экрана и не имеет легенды цветов |
Show System Info
Экранная отладочная статистика звуковой системы (счётчики буферов, активные источники и т.д.).
Полезные функции для моддеров
Хотя каждая опция имеет своё применение, эти используются моддерами чаще всего:
Анализ производительности
- Счётчик FPS (LCtrl + Numpad 1) -- Быстрая проверка, что ваш мод не уничтожает частоту кадров
- Профилировщик скриптов -- Найти, какие из ваших классов или функций потребляют больше всего времени CPU. Установите модуль на WORLD или MISSION, чтобы сфокусироваться на скриптовом слое вашего мода
Визуальная отладка
- Свободная камера -- Летайте вокруг для инспекции заспавненных объектов, проверки позиций, наблюдения за поведением ИИ на расстоянии
- Geometry Diagnostic -- Проверьте fire geometry, view geometry, roadway LOD и memory points вашей пользовательской модели, не выходя из игры
- Render Debug Mode (RCtrl + RAlt + W) -- Смотрите каркасные оверлеи для проверки плотности мешей и назначения материалов
Тестирование геймплея
- Свободная камера + Insert -- Мгновенно телепортируйте игрока в любую точку карты
- Переопределение погоды -- Принудительно установите условия тумана для тестирования функций, зависящих от видимости
- Инструменты Central Economy -- Спавните заражённых, животных, лут и динамические события по требованию
- Отладка боя -- Отслеживайте траектории выстрелов, инспектируйте системы повреждений точек попадания, тестируйте проникновение взрывов
Разработка ИИ
- Show NavMesh -- Убедитесь, что ИИ действительно может навигировать туда, куда вы ожидаете
- Debug AI Agent -- Смотрите, что думает заражённый или животное, на каком уровне настороженности находится
- Debug Path Agent -- Смотрите фактический путь, по которому идёт ИИ, и успешен ли поиск пути
Когда использовать Diag Menu
Во время разработки
- Профилировщик скриптов при оптимизации покадрового кода (OnUpdate, EOnFrame)
- Свободная камера для позиционирования объектов, проверки мест спавна, инспекции размещения моделей
- Geometry Diagnostic сразу после импорта новой модели для проверки LOD и типов геометрии
- Счётчик FPS как базовый показатель до и после добавления новых функций
Во время тестирования
- Отладка боя для проверки урона оружия, поведения снарядов, эффектов взрывов
- Инструменты CE для тестирования распределения лута, точек спавна, динамических событий
- Отладка ИИ для проверки, что поведение заражённых/животных правильно реагирует на присутствие игрока
- Отладка погоды для тестирования вашего мода в различных погодных условиях
Во время расследования багов
- Счётчик FPS + Профилировщик скриптов когда игроки сообщают о проблемах производительности
- Свободная камера + Пробел (отладка объекта) для инспекции объектов, которые ведут себя неправильно
- Render Debug Mode для диагностики визуальных артефактов или проблем с материалами
- Show Bullet для отладки проблем физических столкновений
Типичные ошибки
Использование розничного исполняемого файла. Diag Menu доступно только в DayZDiag_x64.exe. Если вы нажимаете Win+Alt и ничего не происходит, вы запустили розничную сборку.
Забыли, что Max. Collider Distance равно 0. Визуализация физики (Draw Bullet shape) ничего не покажет, если Max. Collider Distance всё ещё на значении по умолчанию 0. Установите хотя бы 10-20, чтобы видеть коллайдеры вокруг вас.
Инструменты CE в мультиплеере. Большинство опций отладки Central Economy работают только в одиночной игре с включённой CE. Не ожидайте их работы на выделенном сервере.
Отладка ИИ в мультиплеере. Отладка ИИ в настоящее время не работает в многопользовательском окружении. Тестируйте поведение ИИ в одиночной игре.
Путаница "Bullet" с боеприпасами. Опции "Bullet" в категории "Enfusion World" относятся к физическому движку Bullet, а не к боеприпасам. Отладка, связанная с боем, находится в Game > Combat.
Оставленный профилировщик. Профилировщик скриптов имеет измеримые накладные расходы. Выключайте его после завершения профилирования, чтобы получить точные показания FPS.
Большие значения дистанции коллайдеров. Установка Max. Collider Distance на 200 или 500 обрушит частоту кадров. Используйте наименьшее значение, покрывающее интересующую вас область.
Не включены зависимости. Несколько опций зависят от предварительного включения других:
- "Draw Char Ctrl" и "Draw Bullet wireframe" зависят от "Draw Bullet shape"
- "Edit Volume" требует свободную камеру
- "Project Target Loot" требует включённого "Loot Vis"
Следующие шаги
- Глава 8.6: Отладка и тестирование -- Логи скриптов, отладка через Print, file patching и Workbench
- Глава 8.7: Публикация в Workshop -- Упаковка и публикация протестированного мода
