Skip to content

Глава 8.13: Диагностическое меню (Diag Menu)

Главная | << Назад: Создание торговой системы | Диагностическое меню


Краткое содержание: Diag Menu -- это встроенный диагностический инструмент DayZ, доступный только через исполняемый файл DayZDiag. Он предоставляет счётчик FPS, профилирование скриптов, отладку рендера, свободную камеру, визуализацию физики, управление погодой, инструменты центральной экономики, отладку навигации ИИ и диагностику звука. Эта глава документирует каждую категорию меню, опцию и сочетание клавиш на основе официальной документации Bohemia Interactive.


Содержание


Что такое 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 содержит семь категорий верхнего уровня:

  1. Statistics -- Счётчик FPS и профилировщик скриптов
  2. Enfusion Renderer -- Освещение, тени, материалы, окклюзия, постобработка, ландшафт, виджеты
  3. Enfusion World -- Визуализация и отладка физического движка (Bullet)
  4. DayZ Render -- Рендер неба, диагностика геометрии
  5. Game -- Погода, свободная камера, транспорт, бой, центральная экономика, звуки поверхностей
  6. AI -- Навигационная сетка, поиск пути, поведение агентов ИИ
  7. Sounds -- Отладка воспроизводимых семплов, информация о звуковой системе

Статистика

Структура меню

Statistics
  FPS                              [LCtrl + Numpad 1]
  Script profiler UI
  > Script profiler settings
      Always enabled
      Flags
      Module
      Update interval
      Average
      Time resolution
      (UI) Scale

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

Выбирает, какой скриптовый модуль профилировать:

ОпцияСкриптовый слой
CORE1_Core
GAMELIB2_GameLib
GAME3_Game
WORLD4_World
MISSION5_Mission
MISSION_CUSTOMinit.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 Streak

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)
TreeTrunk179, 126, 55
TreeCrown143, 227, 94
Grass41, 194, 53
Basic208, 87, 87
Normal204, 66, 107
Super234, 181, 181
Skin252, 170, 18
Multi143, 185, 248
Terrain255, 127, 127
Water51, 51, 255
Ocean51, 128, 255
Sky143, 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]

Примечание: "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 mode

Подменю 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 Save

Weather & Environment

Отладочный функционал для системы погоды.

Display

Включает отладочную визуализацию погоды. Показывает на экране отладку тумана/дальности видимости и открывает отдельное окно реального времени с подробными данными о погоде.

Для включения отдельного окна при запуске как сервер используйте параметр запуска -debugweather.

Настройки окна хранятся в профилях как weather_client_imgui.ini / weather_client_imgui.bin (или weather_server_* для серверов).

Force Fog at Camera

Принудительно устанавливает высоту тумана на высоту камеры игрока. Имеет приоритет над настройкой Height bias.

Override Fog

Включает переопределение значений тумана ручными настройками:

ПараметрДиапазонШаг
Distance density0 -- 10.01
Height density0 -- 10.01
Distance offset0 -- 10.01
Height bias-500 -- 5005

Свободная камера

Свободная камера отсоединяет обзор от персонажа игрока и позволяет летать по миру. Это один из самых полезных инструментов отладки для моддеров.

Управление свободной камерой

КлавишаИсточникФункция
W / A / S / DInputs (xml)Движение вперёд / влево / назад / вправо
QInputs (xml)Движение вверх
ZInputs (xml)Движение вниз
МышьInputs (xml)Обзор
Колёсико мыши вверхInputs (C++)Увеличить скорость
Колёсико мыши внизInputs (C++)Уменьшить скорость
ПробелCheat Inputs (C++)Переключить экранную отладку целевого объекта
Ctrl / ShiftCheat Inputs (C++)Текущая скорость x 10
AltCheat Inputs (C++)Текущая скорость / 10
EndCheat Inputs (C++)Отключить свободную камеру (вернуться к игроку)
EnterCheat Inputs (C++)Привязать камеру к целевому объекту
Page UpCheat Inputs (C++)Переключить движение игрока в режиме свободной камеры
Page DownCheat Inputs (C++)Заморозить/разморозить позицию камеры
InsertPluginKeyBinding (Script)Телепортировать игрока к позиции курсора
HomePluginKeyBinding (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, OccupiedGetCEApi().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.xmlGetCEApi().LootExportGroup()
Export All GroupsЭкспортировать все группы в storage/export/mapgroupproto.xmlGetCEApi().LootExportAllGroups()
Export MapСгенерировать storage/export/mapgrouppos.xmlGetCEApi().LootExportMap()
Export ClustersСгенерировать storage/export/mapgroupcluster.xmlGetCEApi().ExportClusterData()
Export Economy [csv]Экспортировать экономику в storage/log/economy.csvGetCEApi().EconomyLog(EconomyLogCategories.Economy)
Export Respawn Queue [csv]Экспортировать очередь респавна в storage/log/respawn_queue.csvGetCEApi().EconomyLog(EconomyLogCategories.RespawnQueue)

Привязки клавиш Edit Volume:

КлавишаФункция
[Итерация назад по контейнерам
]Итерация вперёд по контейнерам
ЛКМВставить новую точку
ПКМУдалить точку
;Увеличить размер точки
'Уменьшить размер точки
InsertЗаспавнить лут в точке
MЗаспавнить 48 "AmmoBox_762x54_20Rnd"
BackspaceПометить ближайший лут для очистки (уменьшает время жизни, не мгновенно)

Loot Tool

ОпцияОписаниеСкриптовый эквивалент
Deplete LifetimeУменьшает время жизни до 3 секунд (запланировано для очистки)GetCEApi().LootDepleteLifetime()
Set Damage = 1.0Устанавливает здоровье в 0GetCEApi().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), Синий = InventoryItemGetCEApi().ToggleVehicleAndWreckVisualisation()
Loot VisЭкранные данные экономики для всего, на что вы смотрите (лут, заражённые, динамические события)GetCEApi().ToggleLootVisualisation()
Cluster VisЭкранная статистика траектории DEGetCEApi().ToggleClusterVisualisation()
Dynamic Events StatusЭкранная статистика DEGetCEApi().ToggleDynamicEventStatus()
Dynamic Events VisВизуализировать и редактировать точки спавна DEGetCEApi().ToggleDynamicEventVisualisation()
Dynamic Events SpawnЗаспавнить динамическое событие в ближайшей точке или "StaticChristmasTree" как запасной вариантGetCEApi().DynamicEventSpawn()
Export Dyn EventЭкспортировать точки DE в storage/export/eventSpawn_CLASSNAME.xmlGetCEApi().DynamicEventExport()
Overall StatsЭкранная статистика CEGetCEApi().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 Agent

Важно: Отладка ИИ в настоящее время не работает в многопользовательском окружении.

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 info

Show Playing Samples

Отладочная визуализация текущих воспроизводимых звуков.

ОпцияОписание
noneПо умолчанию, без отладки
ImGuiОтдельное окно (новейшая версия). Поддерживает фильтрацию, полное покрытие категорий. Настройки сохраняются как playing_sounds_imgui.ini / .bin в профилях
DbgUIУстаревшее. Есть фильтрация по категориям, более читаемый, но выходит за пределы экрана и не имеет категории транспорта
EngineУстаревшее. Показывает данные с цветовой кодировкой в реальном времени со статистикой, но выходит за пределы экрана и не имеет легенды цветов

Show System Info

Экранная отладочная статистика звуковой системы (счётчики буферов, активные источники и т.д.).


Полезные функции для моддеров

Хотя каждая опция имеет своё применение, эти используются моддерами чаще всего:

Анализ производительности

  1. Счётчик FPS (LCtrl + Numpad 1) -- Быстрая проверка, что ваш мод не уничтожает частоту кадров
  2. Профилировщик скриптов -- Найти, какие из ваших классов или функций потребляют больше всего времени CPU. Установите модуль на WORLD или MISSION, чтобы сфокусироваться на скриптовом слое вашего мода

Визуальная отладка

  1. Свободная камера -- Летайте вокруг для инспекции заспавненных объектов, проверки позиций, наблюдения за поведением ИИ на расстоянии
  2. Geometry Diagnostic -- Проверьте fire geometry, view geometry, roadway LOD и memory points вашей пользовательской модели, не выходя из игры
  3. Render Debug Mode (RCtrl + RAlt + W) -- Смотрите каркасные оверлеи для проверки плотности мешей и назначения материалов

Тестирование геймплея

  1. Свободная камера + Insert -- Мгновенно телепортируйте игрока в любую точку карты
  2. Переопределение погоды -- Принудительно установите условия тумана для тестирования функций, зависящих от видимости
  3. Инструменты Central Economy -- Спавните заражённых, животных, лут и динамические события по требованию
  4. Отладка боя -- Отслеживайте траектории выстрелов, инспектируйте системы повреждений точек попадания, тестируйте проникновение взрывов

Разработка ИИ

  1. Show NavMesh -- Убедитесь, что ИИ действительно может навигировать туда, куда вы ожидаете
  2. Debug AI Agent -- Смотрите, что думает заражённый или животное, на каком уровне настороженности находится
  3. 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"

Следующие шаги

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