Skip to content

Rozdział 8.13: Menu diagnostyczne (Diag Menu)

Strona główna | << Poprzedni: Budowanie systemu handlowego | Menu diagnostyczne


Podsumowanie: Diag Menu to wbudowane narzędzie diagnostyczne DayZ, dostępne wyłącznie przez plik wykonywalny DayZDiag. Zapewnia liczniki FPS, profilowanie skryptów, debugowanie renderowania, wolną kamerę, wizualizację fizyki, kontrolę pogody, narzędzia Centralnej Ekonomii, debugowanie nawigacji SI oraz diagnostykę dźwięku. Ten rozdział dokumentuje każdą kategorię menu, opcję i skrót klawiaturowy na podstawie oficjalnej dokumentacji Bohemia Interactive.


Spis treści


Czym jest Diag Menu?

Diag Menu to hierarchiczne menu debugowania wbudowane w diagnostyczny plik wykonywalny DayZ. Zawiera opcje używane do debugowania skryptów gry i zasobów w siedmiu głównych kategoriach: Statystyki, Enfusion Renderer, Enfusion World, DayZ Render, Gra, SI i Dźwięki.

Diag Menu nie jest dostępne w detalicznym pliku wykonywalnym DayZ (DayZ_x64.exe). Musisz użyć DayZDiag_x64.exe -- wersji diagnostycznej, która jest dostarczana obok wersji detalicznej w katalogu instalacji DayZ lub w katalogach DayZ Server.


Jak uzyskać dostęp

Wymagania

  • DayZDiag_x64.exe -- Diagnostyczny plik wykonywalny. Znajduje się w folderze instalacji DayZ obok zwykłego DayZ_x64.exe.
  • Musisz być w grze (nie na ekranie ładowania). Menu jest dostępne w każdym widoku 3D.

Otwieranie menu

Naciśnij Win + Alt, aby otworzyć Diag Menu.

Alternatywny skrót to Ctrl + Win, ale koliduje on ze skrótem systemowym Windows 11 i nie jest zalecany na tej platformie.

Włączanie kursora myszy

Niektóre opcje Diag Menu wymagają interakcji z ekranem za pomocą myszy. Kursor myszy można przełączać naciskając:

LCtrl + Numpad 9

To przypisanie klawisza jest zarejestrowane przez skrypt (PluginKeyBinding).


Sterowanie nawigacją

Po otwarciu Diag Menu:

KlawiszAkcja
Strzałka w górę / w dółNawigacja między elementami menu
Strzałka w prawoWejście do podmenu lub przełączanie wartości opcji
Strzałka w lewoPrzełączanie wartości opcji w odwrotnym kierunku
BackspaceOpuszczenie bieżącego podmenu (cofnięcie o jeden poziom)

Gdy opcje pokazują wiele wartości, są wymienione w kolejności, w jakiej pojawiają się w menu. Pierwsza opcja jest zazwyczaj domyślna.


Skróty klawiszowe szybkiego dostępu

Te skróty działają w dowolnym momencie podczas uruchomienia DayZDiag, bez potrzeby otwierania menu:

SkrótFunkcja
LCtrl + Numpad 1Przełącz licznik FPS
LCtrl + Numpad 9Przełącz kursor myszy na ekranie
RCtrl + RAlt + WPrzełącz tryb debugowania renderowania
LCtrl + LAlt + PPrzełącz efekty postprocessingu
LAlt + Numpad 6Przełącz wizualizację ciał fizycznych
Page UpWolna kamera: przełącz ruch gracza
Page DownWolna kamera: zamroź/odmroź kamerę
InsertTeleportuj gracza na pozycję kursora (w trybie wolnej kamery)
HomePrzełącz wolną kamerę / wyłącz i teleportuj gracza do kursora
Numpad /Przełącz wolną kamerę (bez teleportacji)
EndWyłącz wolną kamerę (powrót do kamery gracza)

Uwaga: Wszelkie wzmianki o "Cheat Inputs" w oficjalnej dokumentacji odnoszą się do danych wejściowych zakodowanych po stronie C++, niedostępnych przez skrypt.


Przegląd kategorii menu

Diag Menu zawiera siedem kategorii najwyższego poziomu:

  1. Statystyki -- Licznik FPS i profiler skryptów
  2. Enfusion Renderer -- Oświetlenie, cienie, materiały, okluzja, postprocessing, teren, widżety
  3. Enfusion World -- Wizualizacja i debug silnika fizyki (Bullet)
  4. DayZ Render -- Renderowanie nieba, diagnostyka geometrii
  5. Gra -- Pogoda, wolna kamera, pojazdy, walka, Centralna Ekonomia, dźwięki powierzchni
  6. SI -- Siatka nawigacji, wyszukiwanie ścieżek, zachowanie agentów SI
  7. Dźwięki -- Debug odtwarzanych próbek, informacje o systemie dźwiękowym

Statystyki

Struktura menu

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

FPS

Włącza licznik FPS w lewym górnym rogu ekranu.

Wartość FPS jest obliczana na podstawie czasu między ostatnimi 10 klatkami, więc odzwierciedla krótką średnią kroczącą, a nie odczyt chwilowy.

Script Profiler UI

Włącza ekranowy Profiler Skryptów, który wyświetla dane o wydajności wykonywania skryptów w czasie rzeczywistym.

Profiler pokazuje sześć sekcji danych:

SekcjaCo pokazuje
Time per classŁączny czas wszystkich wywołań funkcji należących do klasy (top 20)
Time per functionŁączny czas wszystkich wywołań konkretnej funkcji (top 20)
Class allocationsLiczba alokacji klasy (top 20)
Count per functionIle razy funkcja została wywołana (top 20)
Class countLiczba żywych instancji klasy (top 40)
Stats and settingsBieżąca konfiguracja profilera i liczniki klatek

Panel Stats and settings pokazuje:

PoleZnaczenie
UI enabled (DIAG)Czy interfejs profilera skryptów jest aktywny
Profiling enabled (SCRP)Czy profilowanie działa nawet gdy UI nie jest aktywne
Profiling enabled (SCRC)Czy profilowanie faktycznie się odbywa
FlagsBieżące flagi zbierania danych
ModuleAktualnie profilowany moduł
IntervalBieżący interwał aktualizacji
Time ResolutionBieżąca rozdzielczość czasowa
AverageCzy wyświetlane wartości to średnie
Game FrameŁączna liczba klatek, które minęły
Session FrameŁączna liczba klatek w tej sesji profilowania
Total FramesŁączna liczba klatek we wszystkich sesjach profilowania
Profiled Sess FrmsKlatki sprofilowane w tej sesji
Profiled FramesKlatki sprofilowane we wszystkich sesjach

Ważne: Profiler Skryptów profiluje tylko kod skryptowy. Metody Proto (powiązane z silnikiem) nie są mierzone jako osobne wpisy, ale czas ich wykonywania jest uwzględniony w łącznym czasie metody skryptowej, która je wywołuje.

Ważne: API EnProfiler oraz sam profiler skryptów są dostępne tylko w pliku wykonywalnym diagnostycznym.

Ustawienia Profilera Skryptów

Te ustawienia kontrolują sposób zbierania danych profilowania. Mogą być również dostosowywane programowo przez API EnProfiler (udokumentowane w EnProfiler.c).

Always Enabled

Zbieranie danych profilowania nie jest domyślnie włączone. Ten przełącznik pokazuje, czy jest ono aktualnie aktywne.

Aby włączyć profilowanie przy starcie, użyj parametru uruchomieniowego -profile.

Interfejs Profilera Skryptów ignoruje to ustawienie -- zawsze wymusza profilowanie, gdy UI jest widoczne. Po wyłączeniu UI profilowanie zatrzymuje się ponownie (chyba że "Always enabled" jest ustawione na true).

Flags

Kontroluje sposób zbierania danych. Dostępne są cztery kombinacje:

Kombinacja flagZakresCzas życia danych
SPF_RESET | SPF_RECURSIVEWybrany moduł + potomneNa klatkę (reset co klatkę)
SPF_RECURSIVEWybrany moduł + potomneAkumulowane między klatkami
SPF_RESETTylko wybrany modułNa klatkę (reset co klatkę)
SPF_NONETylko wybrany modułAkumulowane między klatkami
  • SPF_RECURSIVE: Włącza profilowanie modułów potomnych (rekursywnie)
  • SPF_RESET: Czyści dane na końcu każdej klatki

Module

Wybiera, który moduł skryptowy profilować:

OpcjaWarstwa skryptów
CORE1_Core
GAMELIB2_GameLib
GAME3_Game
WORLD4_World
MISSION5_Mission
MISSION_CUSTOMinit.c

Update Interval

Liczba klatek do odczekania przed aktualizacją posortowanego wyświetlania danych. Opóźnia to również reset powodowany przez SPF_RESET.

Dostępne wartości: 0, 5, 10, 20, 30, 50, 60, 120, 144

Average

Włącza lub wyłącza wyświetlanie wartości średnich.

  • Z SPF_RESET i bez interwału: wartości to surowe wartości na klatkę
  • Bez SPF_RESET: dzieli akumulowaną wartość przez liczbę klatek sesji
  • Z ustawionym interwałem: dzieli przez interwał

Liczba klas nigdy nie jest uśredniana -- zawsze pokazuje bieżącą liczbę instancji. Alokacje pokażą średnią liczbę utworzeń instancji.

Time Resolution

Ustawia jednostkę czasu do wyświetlania. Wartość reprezentuje mianownik (n-ta część sekundy):

WartośćJednostka
1Sekundy
1000Milisekundy
1000000Mikrosekundy

Dostępne wartości: 1, 10, 100, 1000, 10000, 100000, 1000000

(UI) Scale

Dostosowuje wizualną skalę ekranowego wyświetlacza profilera dla różnych rozmiarów ekranu i rozdzielczości.

Zakres: 0.5 do 1.5 (domyślnie: 1.0, krok: 0.05)


Enfusion Renderer

Struktura menu

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

Przełącza rzeczywiste źródła światła (takie jak PersonalLight lub przedmioty w grze jak latarki). Nie wpływa na oświetlenie środowiskowe -- do tego służy podmenu Lighting.

Podmenu Lighting

Każdy przełącznik kontroluje konkretny komponent oświetlenia:

OpcjaEfekt po wyłączeniu
Ambient lightingUsuwa ogólne oświetlenie otoczenia w scenie
Ground lightingUsuwa światło odbite od ziemi (widoczne na dachach, pod ramionami postaci)
Directional lightingUsuwa główne światło kierunkowe (słońce/księżyc). Wyłącza również oświetlenie dwukierunkowe
Bidirectional lightingUsuwa komponent światła dwukierunkowego
Specular lightingUsuwa odbicia lustrzane (widoczne na błyszczących powierzchniach jak szafki, samochody)
ReflectionUsuwa oświetlenie refleksyjne (widoczne na metalicznych/gładkich powierzchniach)
Emission lightingUsuwa emisję (samoświecenie) z materiałów

Te przełączniki są przydatne do izolowania poszczególnych składowych oświetlenia podczas debugowania problemów wizualnych w niestandardowych modelach lub scenach.

Shadows

Włącza lub wyłącza renderowanie cieni. Wyłączenie usuwa również przycinanie deszczu wewnątrz obiektów (deszcz będzie padać przez dachy).

Terrain Shadows

Kontroluje sposób generowania cieni terenu.

Opcje: on (slice), on (full), no update, disabled

Render Debug Mode

Przełącza między trybami wizualizacji renderowania do inspekcji geometrii siatki w grze.

Opcje: normal, wire, wire only, overdraw, overdrawZ

Różne materiały wyświetlają się w różnych kolorach siatki drucianej:

MateriałKolor (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

Zestaw przełączników dla systemu okluzji:

OpcjaEfekt
OccludersWłącz/wyłącz okluzję obiektów
Occlude entitiesWłącz/wyłącz okluzję encji
Occlude proxiesWłącz/wyłącz okluzję proxy
Show occluder volumesRobi zrzut i rysuje kształty debug wizualizujące objętości okluzji
Show active occludersPokazuje aktualnie aktywne okluzje za pomocą kształtów debug
Show occludedWizualizuje okluzowane obiekty za pomocą kształtów debug

Widgets

Włącza lub wyłącza renderowanie wszystkich widżetów UI. Przydatne do robienia czystych zrzutów ekranu lub izolowania problemów z renderowaniem.

Postprocess

Włącza lub wyłącza efekty post-processingu (bloom, korekcja kolorów, winieta itp.).

Terrain

Włącza lub wyłącza renderowanie terenu w całości.

Podmenu Materials

Przełącza renderowanie określonych typów materiałów. Większość jest oczywista. Godne uwagi wpisy:

  • Super -- Nadrzędny przełącznik obejmujący każdy materiał związany z shaderem "super"
  • Old Terrain -- Obejmuje zarówno materiały Terrain, jak i Terrain Simple
  • Water -- Obejmuje każdy materiał związany z wodą (ocean, brzeg, rzeki)

Enfusion World (Fizyka)

Struktura menu

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]

Uwaga: "Bullet" tutaj odnosi się do silnika fizyki Bullet, nie do amunicji.

Show Bullet

Włącza wizualizację debugowania dla silnika fizyki Bullet.

Podmenu Bullet

OpcjaOpis
Draw Char CtrlWizualizacja kontrolera postaci gracza. Zależy od "Draw Bullet shape"
Draw Simple Char CtrlWizualizacja kontrolera postaci SI. Zależy od "Draw Bullet shape"
Max. Collider DistanceMaksymalna odległość od gracza do wizualizacji kolizji (wartości: 0, 1, 2, 5, 10, 20, 50, 100, 200, 500). Domyślnie 0
Draw Bullet shapeWizualizacja kształtów kolizji fizycznych
Draw Bullet wireframePokaż kolizje jako samą siatkę drucianą. Zależy od "Draw Bullet shape"
Draw Bullet shape AABBPokaż osiowo wyrównane prostokąty ograniczające kolizji
Draw obj center of massPokaż środki masy obiektów
Draw Bullet contactsWizualizacja kolizji stykających się
Force sleep BulletWymuś uśpienie wszystkich ciał fizycznych
Show statsPokaż statystyki debug (opcje: disabled, basic, all). Statystyki pozostają widoczne przez 10 sekund po wyłączeniu

Ostrzeżenie: Max. Collider Distance domyślnie wynosi 0, ponieważ ta wizualizacja jest kosztowna. Ustawienie dużej odległości spowoduje znaczne pogorszenie wydajności.

Show Bodies

Wizualizacja ciał fizycznych Bullet. Opcje: disabled, only, all


DayZ Render

Struktura menu

DayZ Render
  > Sky
      Space
      Stars
      > Planets
          Sun
          Moon
      Atmosphere
      > Clouds
          Far
          Near
          Physical
      Horizon
      > Post Process
          God Rays
  > Geometry diagnostic
      diagnostic mode

Podmenu Sky

Przełączanie poszczególnych komponentów renderowania nieba:

OpcjaCo kontroluje
SpaceTekstura tła za gwiazdami
StarsRenderowanie gwiazd
SunSłońce i jego efekt halo (nie promienie boskie)
MoonKsiężyc i jego efekt halo (nie promienie boskie)
AtmosphereTekstura atmosfery na niebie
Far (Clouds)Górne/odległe chmury. Nie wpływają na promienie świetlne (mniej gęste)
Near (Clouds)Dolne/bliższe chmury. Gęstsze i działają jako okluzja dla promieni świetlnych
Physical (Clouds)Przestarzałe chmury oparte na obiektach. Usunięte z Chernarus i Livonia w DayZ 1.23
HorizonRenderowanie horyzontu. Horyzont blokuje promienie świetlne
God RaysEfekt post-processingu promieni świetlnych

Geometry Diagnostic

Włącza rysowanie kształtów debug do wizualizacji wyglądu geometrii obiektu w grze.

Typy geometrii: normal, roadway, geometry, viewGeometry, fireGeometry, paths, memory, wreck

Tryby rysowania: solid+wire, Zsolid+wire, wire, ZWire, geom only

Jest to niezwykle przydatne dla modderów tworzących niestandardowe modele -- możesz zweryfikować, czy twoja geometria ognia, geometria widoku i punkty pamięci są prawidłowo skonfigurowane bez wychodzenia z gry.


Gra

Struktura menu

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

Funkcjonalność debugowania systemu pogodowego.

Display

Włącza wizualizację debugowania pogody. Pokazuje ekranowy debug mgły/zasięgu widzenia i otwiera osobne okno w czasie rzeczywistym ze szczegółowymi danymi pogodowymi.

Aby włączyć osobne okno podczas pracy jako serwer, użyj parametru uruchomieniowego -debugweather.

Ustawienia okna są przechowywane w profilach jako weather_client_imgui.ini / weather_client_imgui.bin (lub weather_server_* dla serwerów).

Force Fog at Camera

Wymusza dopasowanie wysokości mgły do wysokości kamery gracza. Ma priorytet nad ustawieniem Height bias.

Override Fog

Włącza nadpisywanie wartości mgły ręcznymi ustawieniami:

ParametrZakresKrok
Distance density0 -- 10.01
Height density0 -- 10.01
Distance offset0 -- 10.01
Height bias-500 -- 5005

Wolna kamera

Wolna kamera odłącza widok od postaci gracza i pozwala latać po świecie. Jest to jedno z najbardziej przydatnych narzędzi debug dla modderów.

Sterowanie wolną kamerą

KlawiszŹródłoFunkcja
W / A / S / DInputs (xml)Ruch do przodu / w lewo / do tyłu / w prawo
QInputs (xml)Ruch w górę
ZInputs (xml)Ruch w dół
MyszInputs (xml)Rozglądanie się
Kółko myszy w góręInputs (C++)Zwiększ prędkość
Kółko myszy w dółInputs (C++)Zmniejsz prędkość
SpacjaCheat Inputs (C++)Przełącz ekranowy debug namierzonego obiektu
Ctrl / ShiftCheat Inputs (C++)Bieżąca prędkość x 10
AltCheat Inputs (C++)Bieżąca prędkość / 10
EndCheat Inputs (C++)Wyłącz wolną kamerę (powrót do gracza)
EnterCheat Inputs (C++)Połącz kamerę z namierzonym obiektem
Page UpCheat Inputs (C++)Przełącz ruch gracza w trybie wolnej kamery
Page DownCheat Inputs (C++)Zamroź/odmroź pozycję kamery
InsertPluginKeyBinding (Script)Teleportuj gracza na pozycję kursora
HomePluginKeyBinding (Script)Przełącz wolną kamerę / wyłącz i teleportuj do kursora
Numpad /PluginKeyBinding (Script)Przełącz wolną kamerę (bez teleportacji)

Opcje wolnej kamery

OpcjaOpis
FrCam Player MoveWłącz/wyłącz ruchy gracza (WASD) podczas wolnej kamery
FrCam NoClipWłącz/wyłącz przechodzenie kamery przez teren
FrCam FreezeWłącz/wyłącz ruchy kamery

Vehicles

Rozszerzona funkcjonalność debugowania pojazdów. Działają tylko gdy gracz jest wewnątrz pojazdu.

  • Audio -- Otwiera osobne okno do dostrajania ustawień dźwięku w czasie rzeczywistym. Zawiera wizualizację kontrolerów audio.
  • Simulation -- Otwiera osobne okno z debugiem symulacji samochodu: dostrajanie parametrów fizyki i wizualizacja.

Combat

Narzędzia debug do walki, strzelania i punktów trafień:

OpcjaOpis
DECombatPokazuje tekst na ekranie z odległościami do samochodów, SI i graczy
DEShotsPodmenu debugowania pocisków (patrz poniżej)
DEHitpointsWyświetla DamageSystem gracza i obiektu, na który patrzy
DEExplosionsPokazuje dane penetracji eksplozji. Liczby pokazują wartości spowolnienia. Czerwony krzyżyk = zatrzymany. Zielony krzyżyk = przeniknął

Podmenu DEShots:

OpcjaOpis
Clear vis.Wyczyść istniejącą wizualizację strzałów
Vis. trajectoryPrześledź tor lotu strzału, pokazując punkty wyjścia i punkt zatrzymania
Always DeflectWymusza rykoszet wszystkich strzałów wystrzelonych przez klienta

Legacy/Obsolete

  • DEAmbient -- Wyświetla zmienne wpływające na dźwięki otoczenia
  • DELight -- Wyświetla statystyki dotyczące bieżącego środowiska oświetleniowego

DESurfaceSound

Wyświetla typ powierzchni, na której stoi gracz, oraz typ tłumienia.

Centralna Ekonomia

Kompleksowy zestaw narzędzi debugowania dla systemu Centralnej Ekonomii (CE).

Ważne: Większość opcji debugowania CE działa tylko w grze jednoosobowej z włączonym CE. Tylko "Building Stats" działa w środowisku wieloosobowym lub gdy CE jest wyłączone.

Uwaga: Wiele z tych funkcji jest również dostępnych przez CEApi w skrypcie (CentralEconomy.c).

Loot Spawn Edit

Narzędzia do tworzenia i edycji punktów spawnu łupu na obiektach. Wolna kamera musi być włączona, aby użyć narzędzia Edit Volume.

OpcjaOpisOdpowiednik skryptowy
Spawn Volume VisWizualizacja punktów spawnu łupu. Opcje: Off, Adaptive, Volume, OccupiedGetCEApi().LootSetSpawnVolumeVisualisation()
Setup VisPokaż właściwości konfiguracji CE na ekranie z kolorowymi konteneramiGetCEApi().LootToggleSpawnSetup()
Edit VolumeInteraktywny edytor punktów łupu (wymaga wolnej kamery)GetCEApi().LootToggleVolumeEditing()
Re-Trace Group PointsPonowne śledzenie punktów łupu, aby naprawić problemy z lewitacjąGetCEApi().LootRetraceGroupPoints()
Spawn CandySpawnuj łup we wszystkich punktach spawnu wybranej grupy--
Spawn Rotation TestTestuj flagi rotacji na pozycji kursora--
Placement TestWizualizacja rozmieszczenia za pomocą cylindra sfery--
Export GroupEksportuj wybraną grupę do storage/export/mapGroup_CLASSNAME.xmlGetCEApi().LootExportGroup()
Export All GroupsEksportuj wszystkie grupy do storage/export/mapgroupproto.xmlGetCEApi().LootExportAllGroups()
Export MapGeneruj storage/export/mapgrouppos.xmlGetCEApi().LootExportMap()
Export ClustersGeneruj storage/export/mapgroupcluster.xmlGetCEApi().ExportClusterData()
Export Economy [csv]Eksportuj ekonomię do storage/log/economy.csvGetCEApi().EconomyLog(EconomyLogCategories.Economy)
Export Respawn Queue [csv]Eksportuj kolejkę respawnu do storage/log/respawn_queue.csvGetCEApi().EconomyLog(EconomyLogCategories.RespawnQueue)

Przypisania klawiszy Edit Volume:

KlawiszFunkcja
[Iteruj wstecz przez kontenery
]Iteruj do przodu przez kontenery
LMBWstaw nowy punkt
RMBUsuń punkt
;Zwiększ rozmiar punktu
'Zmniejsz rozmiar punktu
InsertSpawnuj łup w punkcie
MSpawnuj 48 "AmmoBox_762x54_20Rnd"
BackspaceOznacz pobliski łup do usunięcia (wyczerpuje czas życia, nie natychmiast)

Loot Tool

OpcjaOpisOdpowiednik skryptowy
Deplete LifetimeWyczerpuje czas życia do 3 sekund (zaplanowany do usunięcia)GetCEApi().LootDepleteLifetime()
Set Damage = 1.0Ustawia zdrowie na 0GetCEApi().LootSetDamageToOne()
Damage + DepleteWykonuje obie powyższe operacjeGetCEApi().LootDepleteAndDamage()
Invert AvoidancePrzełącza unikanie gracza (wykrywanie pobliskich graczy)--
Project Target LootEmuluje spawnowanie namierzonego przedmiotu, generuje obrazy i logi. Wymaga włączonego "Loot Vis"GetCEApi().SpawnAnalyze() i GetCEApi().EconomyMap()

Infected

OpcjaOpisOdpowiednik skryptowy
Infected VisWizualizacja stref zombie, lokalizacji, statusu żywy/martwyGetCEApi().InfectedToggleVisualisation()
Infected Zone InfoEkranowy debug, gdy kamera jest wewnątrz strefy zarażonychGetCEApi().InfectedToggleZoneInfo()
Infected SpawnSpawnuj zarażonych w wybranej strefie (lub "InfectedArmy" na kursorze)GetCEApi().InfectedSpawn()
Reset CleanupUstawia timer czyszczenia na 3 sekundyGetCEApi().InfectedResetCleanup()

Animal

OpcjaOpisOdpowiednik skryptowy
Animal VisWizualizacja stref zwierząt, lokalizacji, statusu żywy/martwyGetCEApi().AnimalToggleVisualisation()
Animal SpawnSpawnuj zwierzę w wybranej strefie (lub "AnimalGoat" na kursorze)GetCEApi().AnimalSpawn()
Ambient SpawnSpawnuj "AmbientHen" na celu kursoraGetCEApi().AnimalAmbientSpawn()

Building

Building Stats pokazuje ekranowy debug o stanach drzwi budynków:

  • Lewa strona: czy każde drzwi są otwarte/zamknięte i wolne/zablokowane
  • Środek: statystyki dotyczące buildings.bin (trwałość budynków)

Randomizacja drzwi używa wartości konfiguracyjnej initOpened. Gdy rand < initOpened, drzwi spawnują się otwarte (więc initOpened=0 oznacza, że drzwi nigdy nie spawnują się otwarte).

Typowe konfiguracje <building/> w economy.xml:

KonfiguracjaZachowanie
init="0" load="0" respawn="0" save="0"Brak trwałości, brak randomizacji, domyślny stan po restarcie
init="1" load="0" respawn="0" save="0"Brak trwałości, drzwi losowane przez initOpened
init="1" load="1" respawn="0" save="1"Zapisuje tylko zablokowane drzwi, drzwi losowane przez initOpened
init="0" load="1" respawn="0" save="1"Pełna trwałość, zapisuje dokładny stan drzwi, brak randomizacji

Inne narzędzia Centralnej Ekonomii

OpcjaOpisOdpowiednik skryptowy
Vehicle&Wreck VisWizualizacja obiektów zarejestrowanych w unikaniu "Vehicle". Żółty = Samochód, Różowy = Wraki (Building), Niebieski = InventoryItemGetCEApi().ToggleVehicleAndWreckVisualisation()
Loot VisEkranowe dane ekonomii dla wszystkiego, na co patrzysz (łup, zarażeni, dynamiczne wydarzenia)GetCEApi().ToggleLootVisualisation()
Cluster VisEkranowe statystyki trajektorii DEGetCEApi().ToggleClusterVisualisation()
Dynamic Events StatusEkranowe statystyki DEGetCEApi().ToggleDynamicEventStatus()
Dynamic Events VisWizualizacja i edycja punktów spawnu DEGetCEApi().ToggleDynamicEventVisualisation()
Dynamic Events SpawnSpawnuj dynamiczne wydarzenie w najbliższym punkcie lub "StaticChristmasTree" jako zapasowyGetCEApi().DynamicEventSpawn()
Export Dyn EventEksportuj punkty DE do storage/export/eventSpawn_CLASSNAME.xmlGetCEApi().DynamicEventExport()
Overall StatsEkranowe statystyki CEGetCEApi().ToggleOverallStats()
Updaters StatePokazuje, co CE aktualnie przetwarza--
Idle ModeUsypia CE (zatrzymuje przetwarzanie)--
Force SaveWymusza zapis całego folderu storage/data (wyklucza bazę danych graczy)--

Przypisania klawiszy Dynamic Events Vis:

KlawiszFunkcja
[Iteruj wstecz przez dostępne DE
]Iteruj do przodu przez dostępne DE
LMBWstaw nowy punkt dla wybranego DE
RMBUsuń punkt najbliższy kursorowi
MMBPrzytrzymaj lub kliknij, aby obrócić kąt

SI

Struktura menu

AI
  Show NavMesh
  Debug Pathgraph World
  Debug Path Agent
  Debug AI Agent

Ważne: Debugowanie SI obecnie nie działa w środowisku wieloosobowym.

Show NavMesh

Rysuje kształty debug do wizualizacji siatki nawigacyjnej. Pokazuje ekranowy debug ze statystykami.

KlawiszFunkcja
Numpad 0Zarejestruj "Test start" na pozycji kamery
Numpad 1Regeneruj kafelek na pozycji kamery
Numpad 2Regeneruj kafelki wokół pozycji kamery
Numpad 3Iteruj do przodu przez typy wizualizacji
LAlt + Numpad 3Iteruj wstecz przez typy wizualizacji
Numpad 4Zarejestruj "Test end" na pozycji kamery. Rysuje sfery i linię między startem a końcem. Zielony = znaleziono ścieżkę, Czerwony = brak ścieżki
Numpad 5Test najbliższej pozycji NavMesh (SamplePosition). Niebieska sfera = zapytanie, różowa sfera = wynik
Numpad 6Test raycast NavMesh. Niebieska sfera = zapytanie, różowa sfera = wynik

Debug Pathgraph World

Ekranowy debug pokazujący, ile żądań zadań ścieżek zostało ukończonych i ile jest aktualnie oczekujących.

Debug Path Agent

Ekranowy debug i kształty debug dla ścieżkowania SI. Namierz encję SI, aby ją śledzić. Użyj tego, gdy jesteś konkretnie zainteresowany sposobem, w jaki SI znajduje swoją ścieżkę.

Debug AI Agent

Ekranowy debug i kształty debug dla czujności i zachowania SI. Namierz encję SI, aby ją śledzić. Użyj tego, gdy chcesz zrozumieć podejmowanie decyzji i stan świadomości SI.


Dźwięki

Struktura menu

Sounds
  Show playing samples
  Show system info

Show Playing Samples

Wizualizacja debug aktualnie odtwarzanych dźwięków.

OpcjaOpis
noneDomyślnie, brak debugowania
ImGuiOsobne okno (najnowsza iteracja). Obsługuje filtrowanie, pełne pokrycie kategorii. Ustawienia zapisywane jako playing_sounds_imgui.ini / .bin w profilach
DbgUIStarsze. Ma filtrowanie kategorii, bardziej czytelne, ale wychodzi poza ekran i brakuje kategorii pojazdów
EngineStarsze. Pokazuje dane w czasie rzeczywistym z kolorowaniem i statystykami, ale wychodzi poza ekran i nie ma legendy kolorów

Show System Info

Ekranowe statystyki debug systemu dźwiękowego (liczba buforów, aktywne źródła itp.).


Przydatne funkcje dla modderów

Chociaż każda opcja ma swoje zastosowanie, oto te, po które modderzy sięgają najczęściej:

Analiza wydajności

  1. Licznik FPS (LCtrl + Numpad 1) -- Szybkie sprawdzenie, czy twój mod nie niszczy liczby klatek
  2. Profiler Skryptów -- Znajdź, które z twoich klas lub funkcji zużywają najwięcej czasu procesora. Ustaw moduł na WORLD lub MISSION, aby skupić się na warstwie skryptowej twojego moda

Debugowanie wizualne

  1. Wolna kamera -- Lataj dookoła, aby sprawdzić zaspawnowane obiekty, zweryfikować pozycje, obserwować zachowanie SI z dystansu
  2. Diagnostyka geometrii -- Zweryfikuj geometrię ognia, geometrię widoku, LOD drogi i punkty pamięci swojego niestandardowego modelu bez wychodzenia z gry
  3. Tryb debugowania renderowania (RCtrl + RAlt + W) -- Zobacz nakładki siatki drucianej, aby sprawdzić gęstość siatki i przypisania materiałów

Testowanie rozgrywki

  1. Wolna kamera + Insert -- Teleportuj gracza w dowolne miejsce na mapie natychmiast
  2. Nadpisywanie pogody -- Wymuś określone warunki mgły, aby przetestować funkcje zależne od widoczności
  3. Narzędzia Centralnej Ekonomii -- Spawnuj zarażonych, zwierzęta, łup i dynamiczne wydarzenia na żądanie
  4. Debug walki -- Śledź trajektorie strzałów, sprawdzaj systemy obrażeń punktów trafień, testuj penetrację eksplozji

Rozwój SI

  1. Show NavMesh -- Sprawdź, czy SI faktycznie może nawigować tam, gdzie oczekujesz
  2. Debug AI Agent -- Zobacz, co zarażony lub zwierzę "myśli", jaki ma poziom alertu
  3. Debug Path Agent -- Zobacz faktyczną ścieżkę, którą podąża SI i czy wyszukiwanie ścieżki się powiodło

Kiedy używać Diag Menu

Podczas rozwoju

  • Profiler Skryptów przy optymalizacji kodu wykonywanego co klatkę (OnUpdate, EOnFrame)
  • Wolna kamera do pozycjonowania obiektów, weryfikacji lokalizacji spawnu, inspekcji rozmieszczenia modeli
  • Diagnostyka geometrii natychmiast po zaimportowaniu nowego modelu, aby zweryfikować LOD-y i typy geometrii
  • Licznik FPS jako punkt odniesienia przed i po dodaniu nowych funkcji

Podczas testowania

  • Debug walki do weryfikacji obrażeń broni, zachowania pocisków, efektów eksplozji
  • Narzędzia CE do testowania dystrybucji łupu, punktów spawnu, dynamicznych wydarzeń
  • Debug SI do weryfikacji, czy zachowanie zarażonych/zwierząt poprawnie reaguje na obecność gracza
  • Debug pogody do testowania moda w różnych warunkach pogodowych

Podczas badania błędów

  • Licznik FPS + Profiler Skryptów gdy gracze zgłaszają problemy z wydajnością
  • Wolna kamera + Spacja (debug obiektu) do inspekcji obiektów, które nie zachowują się poprawnie
  • Tryb debugowania renderowania do diagnozowania artefaktów wizualnych lub problemów z materiałami
  • Show Bullet do debugowania problemów z kolizjami fizyki

Częste błędy

Używanie detalicznego pliku wykonywalnego. Diag Menu jest dostępne tylko w DayZDiag_x64.exe. Jeśli naciskasz Win+Alt i nic się nie dzieje, używasz wersji detalicznej.

Zapominanie, że Max. Collider Distance wynosi 0. Wizualizacja fizyki (Draw Bullet shape) nic nie pokaże, jeśli Max. Collider Distance nadal ma domyślną wartość 0. Ustaw ją na co najmniej 10-20, aby zobaczyć kolizje wokół siebie.

Narzędzia CE w trybie wieloosobowym. Większość opcji debugowania Centralnej Ekonomii działa tylko w grze jednoosobowej z włączonym CE. Nie oczekuj, że będą działać na serwerze dedykowanym.

Debug SI w trybie wieloosobowym. Debugowanie SI obecnie nie działa w środowisku wieloosobowym. Testuj zachowanie SI w grze jednoosobowej.

Mylenie "Bullet" z amunicją. Opcje "Bullet" w kategorii "Enfusion World" odnoszą się do silnika fizyki Bullet, nie do amunicji broni. Debugowanie związane z walką znajduje się w Gra > Combat.

Pozostawianie włączonego profilera. Profiler Skryptów ma mierzalny narzut. Wyłącz go po zakończeniu profilowania, aby uzyskać dokładne odczyty FPS.

Duże wartości odległości kolizji. Ustawienie Max. Collider Distance na 200 lub 500 mocno obniży liczbę klatek. Używaj najmniejszej wartości, która pokrywa interesujący cię obszar.

Nie włączanie wymagań wstępnych. Kilka opcji zależy od wcześniejszego włączenia innych:

  • "Draw Char Ctrl" i "Draw Bullet wireframe" zależą od "Draw Bullet shape"
  • "Edit Volume" wymaga wolnej kamery
  • "Project Target Loot" wymaga włączonego "Loot Vis"

Następne kroki

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