Difference between revisions of "HPL3/Amnesia: Rebirth/Modding/Developer Debug Menu"

From Frictional Wiki
Jump to navigation Jump to search
(4 intermediate revisions by the same user not shown)
Line 46: Line 46:
 
==Debug Menu==
 
==Debug Menu==
 
The debug menu is where most of the work happens. There, you can find a list of useful actions which will help you in your mod development.
 
The debug menu is where most of the work happens. There, you can find a list of useful actions which will help you in your mod development.
{{expandBox|[[File:Hpl3-soma-debug-menu.png|alt=|left|902x902px]]}}{{clr}}
+
 
 
You will find the actions and option grouped in the following categories:
 
You will find the actions and option grouped in the following categories:
  
=== CMD Debug ===
+
===CMD Debug===
  
=== Game & Script ===
+
===Game & Script===
Reload
+
The game section of the menu includes general-purposes option which affect how you play and move in the game. It also displays debug information such as scripting errors.
Pause
+
{| class="wikitable"
Fast
+
|+
Slow
+
!Option
Script Debug
+
!Description
God Mode
+
|-
 +
|Reload
 +
|Reloads the current map.
  
Spectator Cam
 
Slo-mo
 
Speed
 
SM Move
 
SM Look
 
Cam->Player
 
Player->Cam
 
Player-SpecCam auto-teleport
 
  
Recompile Script and Lang
+
If the option 'Reload from current pos' is checked,  the player will retain the current position instead of starting at the beginning of the map.
Merge Lang Files
+
|-
Reload script at task switch
+
|Pause
Show Garbage Collection
+
|Pauses the game
Skip AI Rebuild On Reload
+
|-
Fast Physics Load
+
|Reload
 +
|Reloads the game
 +
|-
 +
|Fast
 +
|This makes the game run 4 times faster. It is good if you want to skip specific sections in the map.
 +
|-
 +
|Slow
 +
|This makes the game run 4 times slower. It is good if you want to want to focus on something that happens very fast in the map.
 +
|-
 +
|Script Debug
 +
|Script Debug enables further scripting features that won't work otherwise, such as [[HPL3/Scripting/Scripting Guide/The OnAction method|OnAction]]. It is also useful to make your map behave differently. In your map script file, you may want to change the behavior of your map depends if the script debug is enabled or not. For example: <syntaxhighlight lang="c++">
 +
// This script will enable the player's flashlight only if the script debug is on.
 +
void OnStart()
 +
{
 +
  if (cScript_ScriptDebugOn()) // Checks if Script Debug option is turned on or not
 +
  {
 +
    Player_SetFlashlightDisabled(false); 
 +
  }
 +
}
 +
</syntaxhighlight>
  
=== Map & Scene ===
+
|-
Load Map
+
|God Mode
Test Change Map Save
+
|Makes the player invincible and prevents from getting chased by enemies.
 +
|-
 +
|Spectator Cam
 +
|Enables / Disables spectator camera mode (noclip).
 +
|-
 +
|Slo-mo
 +
|Toggles slow motion camera movement
 +
|-
 +
|Speed
 +
|Sets the spectator camera movement speed
 +
|-
 +
|SM Move
 +
|Sets the spectator camera slo-mo movement speed
 +
|-
 +
|SM Look
 +
|Sets the spectator camera slo-mo turning speed
 +
|-
 +
|Cam->Player
 +
|Desc
 +
|-
 +
|Player->Cam
 +
|Desc
 +
|-
 +
|Player-SpecCam auto-teleport
 +
|Desc
 +
|-
 +
|Recompile Script and Lang
 +
|Desc
 +
|-
 +
|Merge Lang Files
 +
|Desc
 +
|-
 +
|Reload script at task switch
 +
|The script file for the map will be updated when a [https://www.hongkiat.com/blog/switch-tasks-windows-10/ task switch] has been performed. Meaning, as long as you do not go back to the game after changing the script, the new script won't be updated in the game.
 +
|-
 +
|Show Garbage Collection
 +
|Shows a graph of garbage collection. {{Clarify}}
 +
|-
 +
|Skip AI Rebuild On Reload
 +
|Desc
 +
|-
 +
|Fast Physics Load
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
 +
|}
  
Teleport to start pos
+
===Map & Scene===
Map Batch
+
The map section of the menu includes settings and actions which are related to maps in general, as well as the currently-loaded map.
Preload Map
+
{| class="wikitable"
Start Preloaded Map
+
|+
Preload Map Batch
+
!Option
Preload Priority
+
!Description
 +
|-
 +
|Load Map
 +
|Select a map file to load in the game. HPL3 Map File (<code>.hpm</code>) and HPL2 Map File (<code>.map</code>) are accepted.{{warning|Some things are almost guranteed to not load correctly when loading HPL2 map files, mostly related to issues with static-objects. This is due to the internal structure of the .map files and how it handles assets information.}}
 +
|-
 +
|Test Change Map Save
 +
|Desc
 +
|-
 +
|Teleport to start pos
 +
|Teleports the player to a specific [[HPL3/Inputs_and_Outputs_Systems/PlayerStart_Area|PlayerStart Area]] that can be selected from the dropdown list. Useful for skipping areas in a map.
 +
|-
 +
|Map Batch
 +
|Desc
 +
|-
 +
|Preload Map
 +
|Loads another map in the background so it can be loaded later much faster. ''Main article: [[HPL3/Scripting/Level_Streaming|Level Streaming]]''
 +
|-
 +
|Start Preloaded Map
 +
|Loads the pre-loaded map. If no map has been pre-loaded, the button will do nothing.
 +
|-
 +
|Preload Map Batch
 +
|Desc
 +
|-
 +
|Preload Priority
 +
|Sets the priority of the map preload process. Ranges from <code>paused</code> to <code>very high</code>
 
Preload Time
 
Preload Time
Keep Previous Map Loaded
+
|-
Export Map to Mesh
+
|Keep Previous Map Loaded
Trigger Permafail
+
|Keeps the previous map loaded. This is useful if you want to go quickly switch between two maps.
 +
|-
 +
|Export Map to Mesh
 +
|Desc
 +
|-
 +
|Trigger Permafail
 +
|Desc
 +
|}
  
=== Logging ===
+
===Logging===
HPL Log
+
{| class="wikitable"
Show Error List
+
|+
AI Log
+
!Option
Debug Log
+
!Description
 
+
|-
Resource Logging
+
|HPL Log
Show non-preloaded resources
+
|Opens a window showing the current contents of the log file
=== Debug ===
+
|-
Hide Debug Output
+
|Show Error List
Module Output
+
|Shows a window listing the logged errors only
Map Info
+
|-
Entity Info
+
|AI Log
Light Level Info
+
|Desc
Messages
+
|-
Notes
+
|Debug Log
Pause on assert
+
|Desc
Debug Info
+
|-
Hide Sleeping
+
|Resource Logging
Inspection Mode
+
|Logs game resources. {{Clarify}}
GUI Debug
+
|-
Hide crosshair
+
|Show non-preloaded resources
Hide hints
+
|Lists resources which are not preloaded by the game. {{Clarify}}
Hide popup icons
+
|}
Hide tentacles
 
 
 
Display Safe Area
 
Player Collider
 
Physics Debug
 
Overlay
 
Light Level Grid
 
Deep Shadow
 
 
 
=== Graphics Debug ===
 
FPS
 
FPS Graph
 
Memory Usage
 
Rendering Info
 
Print Container Debug Info
 
Render Portal Debug
 
Use Portal Culling
 
 
 
Draw Skeletons
 
Offset Skeletons
 
Wireframe Mode
 
Previous Frame Occlusion
 
Debug Mode
 
Gamma
 
Brightness
 
Contrast
 
Disable Textures
 
Disable Post-Effects
 
Occlusion Culling
 
Draw Shadows
 
 
 
=== Resources ===
 
Auto reload resources
 
Load files in _temp folders
 
Find Duplicate File Names
 
 
 
=== Sound ===
 
Show sounds playing
 
Show sound params
 
Show sound categories
 
Show sound AI events
 
 
 
=== Music ===
 
Play Music
 
Stop All Music
 
 
 
=== Voices ===
 
Show event/voice messages
 
Show Missing Voice Error
 
Play Voice Subject
 
Reload Voice Data on Taskswitch
 
 
 
=== Events ===
 
Show Event Messages
 
Show Event Facts
 
Disable Flashbacks
 
 
 
=== Input ===
 
Gamepad Input Only
 
Record Input
 
Playback Recorded Input
 
 
 
=== Stress Test ===
 
Analyze Map
 
Analyze Entities
 
Analyze Materials
 
Analyze Active Entities
 
Print Resource Usage
 
Random Input
 
Random Physics Forces
 
 
 
=== Profile ===
 
Show Profiler
 
Show GPU Profiler
 
Pause Profiling
 
Profile Longest Frame
 
Label
 
  
=== Debug UI Settings ===
+
===Debug===
Debug Lines
 
Pause game when open
 
 
 
=== Platform & Language ===
 
Set Suffix
 
 
 
==Debug Texts==
 
This section is at the very top of the menu and consists of checkboxes which display different information about the game, map, physics, script, etc on in the form of text on the screen.
 
===Texts Options===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|+
 
|+
Line 207: Line 211:
 
!Description
 
!Description
 
|-
 
|-
|Show FPS
+
|Hide Debug Output
|Shows the game [[wikipedia:Frame_rate|FPS]].
+
|Check to disable debug output being printed to screen.
 
|-
 
|-
|Show module info
+
|Module Output
 
|Shows information about different [[HPL3/Scripting/User Modules Overview|user modules]]. It does not seem to be useful however, as not enough information is displayed.
 
|Shows information about different [[HPL3/Scripting/User Modules Overview|user modules]]. It does not seem to be useful however, as not enough information is displayed.
 
|-
 
|-
|Show map info
+
|Map Info
 
|Shows the amount of entities in the map and their state.
 
|Shows the amount of entities in the map and their state.
 
|-
 
|-
|Show entity info
+
|Entity Info
|Does not work.
+
|Desc
 
|-
 
|-
|Show sounds playing
+
|Light Level Info
|Shows a list of all the sounds that currently play in the map, and information about them.
+
|Desc
 
|-
 
|-
|Show sound params
+
|Messages
|Adds additional information to the sounds playing list (distance from player)
+
|Shows dev messages which are specified in the map script file.
 
|-
 
|-
|Show sound categories
+
|Notes
|Shows a list of all the different sound level categories.
+
|Desc
 
|-
 
|-
|Show sound ai event
+
|Pause on assert
|Shows a message when an Ai agent has heard a sound.
+
|Desc
 
|-
 
|-
|Show debug messages
+
|Debug Info
|Shows dev messages which are specified in the map script file.
+
|Desc
 
|-
 
|-
|Show event/voice messages
+
|Hide Sleeping
|Does not work.
+
|Makes sleeping entities invisible in the map. {{Todo|Link to source about sleeping entities}}
 
|-
 
|-
 
|Inspection Mode
 
|Inspection Mode
|Enables inspection mode, which displays information about assets used in the map, such as texture files, location on disk, size, etc.
+
|Displays physics bodies (pink) of static objects and entities in the map.
 +
|-
 +
|GUI Debug
 +
|Displays pink overlay which represents intractable GUI elements.
 +
|-
 +
|Hide crosshair
 +
|Desc
 
|-
 
|-
|Occlusion Culling
+
|Hide hints
|Enables occlusion culling (Skips rendering polygons that are no in the view of the player ).
+
|Desc
 +
|-
 +
|Hide popup icons
 +
|Desc
 +
|-
 +
|Hide tentacles
 +
|Desc
 +
|-
 +
|Display Safe Area
 +
|Shows the [[wikipedia:Safe_area_(television)|safe area]] of a TV, surrounded by red borders.
 
|-
 
|-
|God Mode
+
|Player Collider
|Makes the player invincible and prevents from getting chased by enemies.
+
|Desc
 
|-
 
|-
|Draw physics debug
+
|Physics Debug
 
|Displays physics bodies (pink) of static objects and entities in the map.
 
|Displays physics bodies (pink) of static objects and entities in the map.
 
|-
 
|-
|Overlay physics debug
+
|Overlay
 
|Displays physics debug + normal game meshes.
 
|Displays physics debug + normal game meshes.
 
|-
 
|-
|Draw Gui debug
+
|Light Level Grid
|Displays pink overlay which represents intractable GUI elements.
+
|Desc
 
|-
 
|-
|Show TV Safe Area
+
|Deep Shadow
|Shows the [[wikipedia:Safe_area_(television)|safe area]] of a TV, surrounded by red borders.
+
|Desc
 +
|}
 +
 
 +
===Graphics Debug===
 +
{| class="wikitable"
 +
|+
 +
|}
 +
Debugging the graphic performance of a level is vital to understand which parts are causing the bottleneck. It can also be used to find bugged/incorrect meshes or entities. With this section of the debug menu, you will be able to find which parts of the scene take up the most performance.
 +
{| class="wikitable"
 +
!Option
 +
!Description
 
|-
 
|-
|Show Missing Voice Error
+
|FPS
|Lists voice subjects which have missing voice files.
+
|Shows the game [[wikipedia:Frame_rate|FPS]].
 
|-
 
|-
|Resource Logging
+
|FPS Graph
|Logs game resources. {{Clarify}}
+
|This option displays on the screen a graph that shows FPS peaks on a time scale. It's useful for finding areas in a map that reduce FPS the most.
 +
<br />[[File:Hpl3-fps-graph.png|thumb|500x500px|alt=|center]]
 
|-
 
|-
|Show non-preloaded resources
+
|Memory Usage
|Lists resources which are not preloaded by the game. {{Clarify}}
 
|-
 
|Show Memory Usage
 
 
|Shows information about the game memory usage:
 
|Shows information about the game memory usage:
  
Line 278: Line 305:
 
<u>Total Memory Usage''':'''</u> '''The sum of the above memory usage.'''
 
<u>Total Memory Usage''':'''</u> '''The sum of the above memory usage.'''
 
|-
 
|-
|Show Rendering Info
+
|Rendering Info
 
|Shows information about the game rendering:
 
|Shows information about the game rendering:
  
Line 287: Line 314:
 
<u>Queries</u> - '''A special draw call used to check if an object is occluded. It is more expensive than a draw call.'''
 
<u>Queries</u> - '''A special draw call used to check if an object is occluded. It is more expensive than a draw call.'''
 
|-
 
|-
|Show Garbage Collection
+
|Print Container Debug Info
|Shows a graph of garbage collection. {{Clarify}}
+
|This button prints container debug info to the screen.{{Bug|The button makes the game crash.}}
|-
 
|Show Debug Info Window
 
|Displays a window with debug information. {{Clarify}}
 
 
|-
 
|-
|Hide Sleeping Entities
+
|Render Portal Debug
|Makes sleeping entities invisible in the map. {{Todo|Link to source about sleeping entities}}
+
|Desc
 
|-
 
|-
 
|Use Portal Culling
 
|Use Portal Culling
 
|Enables the game to use portal culling in the map. It is recommended to always leave that on, unless you want to see the difference in performance. {{Todo|add reference link for portals}}
 
|Enables the game to use portal culling in the map. It is recommended to always leave that on, unless you want to see the difference in performance. {{Todo|add reference link for portals}}
 +
|-
 +
|Draw Skeletons
 +
|Desc
 +
|-
 +
|Offset Skeletons
 +
|Desc
 +
|-
 +
|Wireframe Mode
 +
|Desc
 +
|-
 +
|Previous Frame Occlusion
 +
|This option pauses the occlusion culling and renders the scene with the occlusion culling from before the checkbox was ticked. This is used to see how effective the occlusion culling is in the specific scene. After activating this you can switch to to spectator camera mode and look at the scene from another angle to see where the culling fails. Activating this will disable rendering of translucent objects since they can be unstable.[[File:Occlusion_preview.png|alt=|thumb|left|500x500px]]
 +
|-
 +
|Debug Mode
 +
|Offers a set of display modes to help catch rendering issues
 +
|-
 +
|Gamma
 +
|Desc
 +
|-
 +
|Brightness
 +
|The brightness slider increases / decreases the brightness of the game. Not to be confused with gamma.
 +
|-
 +
|Contrast
 +
|Desc
 +
|-
 +
|Disable Textures
 +
|Desc
 +
|-
 +
|Disable Post-Effects
 +
|Desc
 +
|-
 +
|Occlusion Culling
 +
|Enables occlusion culling (Skips rendering polygons that are no in the view of the player ).
 +
|-
 +
|Draw Shadows
 +
|Desc
 
|}
 
|}
  
===Additional Options===
+
===Resources===
 +
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Auto reload resources
 +
|This makes the map reload resources (mostly game assets) automatically, should you change or add something to the mod.
 +
|-
 +
|Load files in _temp folders
 +
|Desc
 +
|-
 +
|Find Duplicate File Names
 +
|Desc
  
====Brightness====
+
|}
The brightness slide increases / decreases the brightness of the game. Not to be confused with gamma.
 
----
 
====Print Container Debug Info====
 
This button prints container debug info to the screen.
 
{{Bug|The button makes the game crash.}}
 
----
 
====Merge Lang Files====
 
Merges two language files between the main game language file and another.
 
{{note|This feature doesn't seem to be useful in practice.}}
 
  
==Map==
+
===Sound===
The map section of the menu includes settings and actions which are related to maps in general, as well as the currently-loaded map.
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Show sounds playing
 +
|Shows a list of all the sounds that currently play in the map, and information about them.
 +
|-
 +
|Show sound params
 +
|Adds further information to the sounds playing list (distance from player)
 +
|-
 +
|Show sound categories
 +
|Shows a list of all the different sound level categories.
 +
|-
 +
|Show sound AI events
 +
|Shows a message when an Ai agent has heard a sound.
  
===Auto Reload Resources===
+
|}
This makes the map reload resources (mostly game assets) automatically, should you change or add something to the mod.
 
  
===Reload Script At Task Switch===
+
===Music===
The script file for the map will be updated when a [https://www.hongkiat.com/blog/switch-tasks-windows-10/ task switch] has been performed. Meaning, as long as you do not go back to the game after changing the script, the new script won't be updated in the game.
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Play Music
 +
|Desc
 +
|-
 +
|Stop All Music
 +
|Desc
  
===Reload Script Constantly===
+
|}
The script file for the map will be updated constantly every time it is saved. It doesn't matter if the game task is focused or not.
 
  
===Recompile Script and Lang===
 
Leftover feature from HPL2. The button does not work.
 
  
===Reload from current pos===
+
===Voices===
When reloading a map, the player will retain the current position instead of starting at the beginning of the map.
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Show event/voice messages
 +
|Does not work. (VERIFY)
 +
|-
 +
|Show Missing Voice Error
 +
|Lists voice subjects which have missing voice files.
 +
|-
 +
|Play Voice Subject
 +
|Desc
 +
|-
 +
|Reload Voice Data on Taskswitch
 +
|Desc
 +
|}
  
===Fast Physics Load===
+
===Events===
Unknown option. {{Clarify}}
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Show Event Messages
 +
|Desc
 +
|-
 +
|Show Event Facts
 +
|Desc
 +
|-
 +
|Disable Flashbacks
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
  
===Reload Game===
+
|}
Reloads the map. This also resets the state of the player and all the other scripts which run in the background.
 
 
 
===Script Debug===
 
Script Debug enables further scripting features that won't work otherwise, such as [[HPL3/Scripting/Scripting Guide/The OnAction method|OnAction]]. It is also useful to make your map behave differently. In your map script file, you may want to change the behavior of your map depends if the script debug is enabled or not. For example: <syntaxhighlight lang="c++">
 
// This script will enable the player's flashlight only if the script debug is on.
 
void OnStart()
 
{
 
  if (cScript_ScriptDebugOn()) // Checks if Script Debug option is turned on or not
 
  {
 
    Player_SetFlashlightDisabled(false); 
 
  }
 
}
 
</syntaxhighlight>
 
 
 
===Teleport to Start Pos===
 
Teleports the player to a specific [[HPL3/Inputs_and_Outputs_Systems/PlayerStart_Area|PlayerStart Area]] that can be selected from the dropdown list. Useful for skipping areas in a map.
 
 
 
===Load Map===
 
Select a map file to load in the game. HPL3 Map File (<code>.hpm</code>) and HPL2 Map File (<code>.map</code>) are accepted.
 
{{warning|Some things are almost guranteed to not load correctly when loading HPL2 map files, mostly related to issues with static-objects. This is due to the internal structure of the .map files and how it handles assets information.}}
 
  
===Test Change Map Save===
+
===Input===
Unknown option. {{clarify}}
 
 
 
===Preload Map===
 
Loads another map in the background so it can be loaded later much faster. ''Main article: [[HPL3/Scripting/Level_Streaming|Level Streaming]]''
 
 
 
===Start Preloaded Map===
 
Loads the pre-loaded map. If no map has been pre-loaded, the button will do nothing.
 
 
 
===Keep Previous Map Loaded===
 
Keeps the previous map loaded. This is useful if you want to go quickly switch between two maps.
 
 
 
===Preload Priority===
 
Sets the priority of the map preload process. Ranges from <code>paused</code> to <code>very high</code>
 
 
 
==Game==
 
The game section of the menu includes general-purposes option which affect how you play and move in the game. It also displays debug information such as scripting errors.
 
{{stub}}
 
 
 
==Input==
 
 
The Input section of the menu includes tools and option for capturing and analyzing user input.
 
The Input section of the menu includes tools and option for capturing and analyzing user input.
{{stub}}
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Gamepad Input Only
 +
|Desc
 +
|-
 +
|Record Input
 +
|Desc
 +
|-
 +
|Playback Recorded Input
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
  
==Stress Test==
+
|}<br />
 +
===Stress Test===
 
This is a tool used to test the map under heavy performance conditions.
 
This is a tool used to test the map under heavy performance conditions.
{{stub}}
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Analyze Map
 +
|Desc
 +
|-
 +
|Analyze Entities
 +
|Desc
 +
|-
 +
|Analyze Materials
 +
|Desc
 +
|-
 +
|Analyze Active Entities
 +
|Desc
 +
|-
 +
|Print Resource Usage
 +
|Desc
 +
|-
 +
|Random Input
 +
|Desc
 +
|-
 +
|Random Physics Forces
 +
|Desc
 +
|-
  
==Misc==
+
|}
The misc section include options which don't fit anywhere else.
 
{{stub}}
 
  
==Graphics Debug==
+
===Profile===
Debugging the graphic performance of a level is vital to understand which parts are causing the bottleneck. It can also be used to find bugged/incorrect meshes or entities. With this section of the debug menu, you will be able to find which parts of the scene take up the most performance.
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Show Profiler
 +
|Desc
 +
|-
 +
|Show GPU Profiler
 +
|Desc
 +
|-
 +
|Pause Profiling
 +
|Desc
 +
|-
 +
|Profile Longest Frame
 +
|Desc
 +
|-
 +
|Label
 +
|Desc
 +
|-
  
===Show FPS Graph===
+
|}
This option displays on the screen a graph that shows FPS peaks on a time scale. It's useful for finding areas in a map that reduce FPS the most.
 
[[File:Hpl3-fps-graph.png|thumb|left|FPS graph.|500x500px]] {{clr}}
 
  
===Large Light Test===
+
===Debug UI Settings===
Unknown option.
+
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Debug Lines
 +
|Desc
 +
|-
 +
|Pause game when open
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
  
===Previous Frame Occlusion===
+
|}<br />
This option pauses the occlusion culling and renders the scene with the occlusion culling from before the checkbox was ticked. This is used to see how effective the occlusion culling is in the specific scene. After activating this you can switch to to spectator camera mode and look at the scene from another angle to see where the culling fails. Activating this will disable rendering of translucent objects since they can be unstable.
+
===Platform & Language===
 +
{| class="wikitable"
 +
|+
 +
!Option
 +
!Description
 +
|-
 +
|Set Suffix
 +
|Desc
 +
|-
 +
|Name
 +
|Desc
  
[[File:Occlusion_preview.png|alt=|thumb|left|500x500px|On the left, you can see what the player sees. On the right, the camera has been moved back and it is now possible to see all the objects that get rendered this frame. There are a lot more than what it looks like in the left picture.]]{{clr}}
+
|}
 
 
===GBuffer===
 
Shows what the frame buffers look like. These are then used by the lights to shade the scene. It can be used to check if a model has incorrect textures or normals.
 
[[File:G_buffer.png|alt=|thumb|left|500x500px|A scene in a g-buffer mode. Notice the different graphic modes.]]{{clr}}
 
 
 
===Light Complexity===
 
Light complexity shows how expensive the lighting of a scene is. It creates a heat map on the screen to show how much power each light takes. Overdraw of light is not very expensive, it is about twice as expensive as a translucent object. When the light has a shadow map it becomes much more expensive. The complexity of a shadow casting light is based on how many draw calls and triangles are required to generate the shadow map.
 
[[File:Light_complexity.png|alt=|left|thumb|500x500px|The red areas on the right image are not good. There seem to be multiple large (in screen space) shadow casting lights in this scene.
 
]] {{Clr}}
 
 
 
{{tip|To test if most of the complexity comes from shadows or not, you can toggle the <code>Draw Shadows</code> checkbox in the menu. Here is what the scene complexity looks like without shadows. Here is what the scene complexity looks like without shadows: {{clr}} [[File:light_complexity_no_shadows.png|alt=|frame|left]] {{clr}} }}
 
 
 
===Overdraw===
 
Creates a [https://en.wikipedia.org/wiki/Heat_map heat map] that shows how much translucent overdraw each pixel receives. Overdraw is how many times a pixel gets rendered to.{{clarify}}<br>'''The goal should be that no part of the screen is red'''. It does not matter that much if only a small part is, however.
 
  
[[File:translucent_overdraw.png|alt=|left|650x650px|On the left you can see the scene rendered normally. The fog particles are barely visible here. On the right the pixel overdraw is rendered. The red areas show that more than 32 translucent planes are rendered, which is not good.|thumb]] {{clr}}
+
<br />
  
 
[[Category:Modding]]
 
[[Category:Modding]]
 
[[Category:English]]
 
[[Category:English]]

Revision as of 18:54, 5 November 2020

When developing your mod, it is important to be able to have a fast feedback loop and have extensive set of tools which can help to test our mod. Exactly for that reason, we have the Developer Menu. This article goes in detail over the menu and all of its features.

Keyboard Shortcuts

The following keyboard shortcuts are enabled during dev mode:

Shortcut Key Action
F1 Brings up the developer debug menu. This needs to be done in order to have full access to the developer features when running a game in debug mode.
F2 Pauses / Resumes the game world processes, basically makes the game freeze. Note that you can still noclip in this state.
F3 This makes the game run 4 times faster. It is good if you want to skip specific sections in the map.
F4 This makes the game run 4 times slower. It is good if you want to want to focus on something that happens very fast in the map.
F5 Reloads the current map.
F7 Enables / Disables spectator camera mode (noclip).
F8 Takes a screenshot of the game and saves it inside the main game folder.
F9 Quick-saves the game.
F10 Quick-loads the last save.
Insert Starts / Stops quick input recording and saves to the file QuickRecord.sav.
Home Starts playing back the last quick input recorded file.

Debug Menu

The debug menu is where most of the work happens. There, you can find a list of useful actions which will help you in your mod development.

You will find the actions and option grouped in the following categories:

CMD Debug

Game & Script

The game section of the menu includes general-purposes option which affect how you play and move in the game. It also displays debug information such as scripting errors.

Option Description
Reload Reloads the current map.


If the option 'Reload from current pos' is checked, the player will retain the current position instead of starting at the beginning of the map.

Pause Pauses the game
Reload Reloads the game
Fast This makes the game run 4 times faster. It is good if you want to skip specific sections in the map.
Slow This makes the game run 4 times slower. It is good if you want to want to focus on something that happens very fast in the map.
Script Debug Script Debug enables further scripting features that won't work otherwise, such as OnAction. It is also useful to make your map behave differently. In your map script file, you may want to change the behavior of your map depends if the script debug is enabled or not. For example:
// This script will enable the player's flashlight only if the script debug is on.
void OnStart()
{
  if (cScript_ScriptDebugOn()) // Checks if Script Debug option is turned on or not
  {
     Player_SetFlashlightDisabled(false);  
  } 
}
God Mode Makes the player invincible and prevents from getting chased by enemies.
Spectator Cam Enables / Disables spectator camera mode (noclip).
Slo-mo Toggles slow motion camera movement
Speed Sets the spectator camera movement speed
SM Move Sets the spectator camera slo-mo movement speed
SM Look Sets the spectator camera slo-mo turning speed
Cam->Player Desc
Player->Cam Desc
Player-SpecCam auto-teleport Desc
Recompile Script and Lang Desc
Merge Lang Files Desc
Reload script at task switch The script file for the map will be updated when a task switch has been performed. Meaning, as long as you do not go back to the game after changing the script, the new script won't be updated in the game.
Show Garbage Collection Shows a graph of garbage collection. [Clarify]
Skip AI Rebuild On Reload Desc
Fast Physics Load Desc
Name Desc

Map & Scene

The map section of the menu includes settings and actions which are related to maps in general, as well as the currently-loaded map.

Option Description
Load Map Select a map file to load in the game. HPL3 Map File (.hpm) and HPL2 Map File (.map) are accepted.
Alert icon.png Warning: Some things are almost guranteed to not load correctly when loading HPL2 map files, mostly related to issues with static-objects. This is due to the internal structure of the .map files and how it handles assets information.
Test Change Map Save Desc
Teleport to start pos Teleports the player to a specific PlayerStart Area that can be selected from the dropdown list. Useful for skipping areas in a map.
Map Batch Desc
Preload Map Loads another map in the background so it can be loaded later much faster. Main article: Level Streaming
Start Preloaded Map Loads the pre-loaded map. If no map has been pre-loaded, the button will do nothing.
Preload Map Batch Desc
Preload Priority Sets the priority of the map preload process. Ranges from paused to very high

Preload Time

Keep Previous Map Loaded Keeps the previous map loaded. This is useful if you want to go quickly switch between two maps.
Export Map to Mesh Desc
Trigger Permafail Desc

Logging

Option Description
HPL Log Opens a window showing the current contents of the log file
Show Error List Shows a window listing the logged errors only
AI Log Desc
Debug Log Desc
Resource Logging Logs game resources. [Clarify]
Show non-preloaded resources Lists resources which are not preloaded by the game. [Clarify]

Debug

Option Description
Hide Debug Output Check to disable debug output being printed to screen.
Module Output Shows information about different user modules. It does not seem to be useful however, as not enough information is displayed.
Map Info Shows the amount of entities in the map and their state.
Entity Info Desc
Light Level Info Desc
Messages Shows dev messages which are specified in the map script file.
Notes Desc
Pause on assert Desc
Debug Info Desc
Hide Sleeping Makes sleeping entities invisible in the map. To do: Link to source about sleeping entities
Inspection Mode Displays physics bodies (pink) of static objects and entities in the map.
GUI Debug Displays pink overlay which represents intractable GUI elements.
Hide crosshair Desc
Hide hints Desc
Hide popup icons Desc
Hide tentacles Desc
Display Safe Area Shows the safe area of a TV, surrounded by red borders.
Player Collider Desc
Physics Debug Displays physics bodies (pink) of static objects and entities in the map.
Overlay Displays physics debug + normal game meshes.
Light Level Grid Desc
Deep Shadow Desc

Graphics Debug

Debugging the graphic performance of a level is vital to understand which parts are causing the bottleneck. It can also be used to find bugged/incorrect meshes or entities. With this section of the debug menu, you will be able to find which parts of the scene take up the most performance.

Option Description
FPS Shows the game FPS.
FPS Graph This option displays on the screen a graph that shows FPS peaks on a time scale. It's useful for finding areas in a map that reduce FPS the most.
Memory Usage Shows information about the game memory usage:

Memory Usage: The amount of VRAM used by the renderer. This contains frame buffers, shadows, terrain and post-effects. It is greatly affected by the resolution of the window.

Texture Memory Usage: The texture memory used by the level. This contains all the textures used for the materials of the objects. Texture memory is reduced by a lot with just a few changes in the config file.

Vertex Memory Usage: The amount of VRAM used by meshes and decals. The imporant difference between Vertex and Texture memory is that Vertex memory can't be reduced by changing a setting. It takes up as much space on a good and a bad computer.

Total Memory Usage: The sum of the above memory usage.

Rendering Info Shows information about the game rendering:

Draw Calls - The number of objects rendered in the current scene.

Rendered Triangles / Vertices - The total number of triangles and vertices rendered per frame.

Queries - A special draw call used to check if an object is occluded. It is more expensive than a draw call.

Print Container Debug Info This button prints container debug info to the screen.
Render Portal Debug Desc
Use Portal Culling Enables the game to use portal culling in the map. It is recommended to always leave that on, unless you want to see the difference in performance. To do: add reference link for portals
Draw Skeletons Desc
Offset Skeletons Desc
Wireframe Mode Desc
Previous Frame Occlusion This option pauses the occlusion culling and renders the scene with the occlusion culling from before the checkbox was ticked. This is used to see how effective the occlusion culling is in the specific scene. After activating this you can switch to to spectator camera mode and look at the scene from another angle to see where the culling fails. Activating this will disable rendering of translucent objects since they can be unstable.
Debug Mode Offers a set of display modes to help catch rendering issues
Gamma Desc
Brightness The brightness slider increases / decreases the brightness of the game. Not to be confused with gamma.
Contrast Desc
Disable Textures Desc
Disable Post-Effects Desc
Occlusion Culling Enables occlusion culling (Skips rendering polygons that are no in the view of the player ).
Draw Shadows Desc

Resources

Option Description
Auto reload resources This makes the map reload resources (mostly game assets) automatically, should you change or add something to the mod.
Load files in _temp folders Desc
Find Duplicate File Names Desc

Sound

Option Description
Show sounds playing Shows a list of all the sounds that currently play in the map, and information about them.
Show sound params Adds further information to the sounds playing list (distance from player)
Show sound categories Shows a list of all the different sound level categories.
Show sound AI events Shows a message when an Ai agent has heard a sound.

Music

Option Description
Play Music Desc
Stop All Music Desc


Voices

Option Description
Show event/voice messages Does not work. (VERIFY)
Show Missing Voice Error Lists voice subjects which have missing voice files.
Play Voice Subject Desc
Reload Voice Data on Taskswitch Desc

Events

Option Description
Show Event Messages Desc
Show Event Facts Desc
Disable Flashbacks Desc
Name Desc

Input

The Input section of the menu includes tools and option for capturing and analyzing user input.

Option Description
Gamepad Input Only Desc
Record Input Desc
Playback Recorded Input Desc
Name Desc
Name Desc


Stress Test

This is a tool used to test the map under heavy performance conditions.

Option Description
Analyze Map Desc
Analyze Entities Desc
Analyze Materials Desc
Analyze Active Entities Desc
Print Resource Usage Desc
Random Input Desc
Random Physics Forces Desc

Profile

Option Description
Show Profiler Desc
Show GPU Profiler Desc
Pause Profiling Desc
Profile Longest Frame Desc
Label Desc

Debug UI Settings

Option Description
Debug Lines Desc
Pause game when open Desc
Name Desc
Name Desc


Platform & Language

Option Description
Set Suffix Desc
Name Desc