diff --git a/README.md b/README.md index ef4b5d4..fd36ef2 100644 --- a/README.md +++ b/README.md @@ -7,17 +7,18 @@ Cog is a set of debug tools for Unreal Engine built on top of [Dear ImGui](https - [Sample Executable](https://drive.google.com/file/d/1T7jQFoZ5rd6goBtDH-FCbjn6Kr1RzUCE/view?usp=sharing) (300 MB) Cog provides: -- ImGui windows to inspect and configure various Unreal features (Enhanced Inputs, Gameplay Abilities, Core Engine) +- ImGui windows to inspect and configure various Unreal systems (Enhanced Inputs, Gameplay Abilities, Core Engine) - Window mangement with persistent configuration and layouts. - C++ and Blueprint functions to log and debug draw within Log Categories. - Control over the server regarding debug draw, logging, spawning, cheats. -## Windows - -- In the sample press the `[Tab]` key or use the `Cog.ToggleInput` console command to open the ImGui Main Menu. -- Most windows display their contents based on a selected actor. -- The selector actor can be chosen using the `Engine/Selection` window or widget. +General Info: +- Cog can be used both in editor and package builds. It is disabled by default on shipping builds. +- Press the `[Tab]` key or use the `Cog.ToggleInput` console command to open the ImGui Main Menu. - Mouse over a window title to display its help. +- Most windows display their contents based on a selected actor. The selector actor can be chosen using the `Engine/Selection` window or widget. + +## Cog Windows ### Abilities @@ -31,23 +32,34 @@ Displays the gameplay abilities of the selected actor. ### Actions Displays the state of Input Action. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/6323e78b-2ee4-43e2-bec6-19aa15716d2c) +![Actions](https://github.com/arnaud-jamin/Cog/assets/13844285/6323e78b-2ee4-43e2-bec6-19aa15716d2c) - Can be used to inject inputs to help debugging. - The display input action are read from a Input Mapping Context defined in a Data Asset. ### Attributes Displays the gameplay attributes of the selected actor. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/a6329ef1-f775-4e6e-9581-6389f9f4b39c) +![Attributes](https://github.com/arnaud-jamin/Cog/assets/13844285/a6329ef1-f775-4e6e-9581-6389f9f4b39c) - Attributes can be sorted by name, category or attribute set. - Attributes with the Current value greater than the Base value are displayed in green. - Attributes with the Current value lower than the Base value are displayed in red. - Use the options 'Show Only Modified' to only show the attributes that have modifiers. +### Behavior Tree +Displays the behavior tree of the selected actor. + +![Behavior Tree](https://github.com/arnaud-jamin/Cog/assets/13844285/2e3ab30f-414a-497d-be08-605e1d299d23) + +### Blackboard +Displays the blackboard of the selected actor. + +![Blackboard](https://github.com/arnaud-jamin/Cog/assets/13844285/649d46d5-386c-4990-9f45-e4eb95a6b81a) + + ### Cheats Used to apply cheats to the selected actor. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/b7b89635-7924-49b7-98c0-311199947dfc) +![Cheats](https://github.com/arnaud-jamin/Cog/assets/13844285/b7b89635-7924-49b7-98c0-311199947dfc) - The cheats are gameplay effects configured in a data asset. - Key modifiers can be used to change which actor should be affected by the cheat: - [CTRL] apply the cheat to the controlled actor @@ -57,7 +69,7 @@ Used to apply cheats to the selected actor. ### Collisions Used to inspect collisions by performing a collision query with the selected channels. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/ccee855b-b33b-4dfc-ba14-dff87e1150cf) +![Collisions](https://github.com/arnaud-jamin/Cog/assets/13844285/ccee855b-b33b-4dfc-ba14-dff87e1150cf) - The query can be configured in the options. - The displayed collision channels can be configured in a Data Asset. - It can be used to better understand what object collisions are blocking a raycast. @@ -65,24 +77,25 @@ Used to inspect collisions by performing a collision query with the selected cha ### Debug Settings Used to tweak how the debug display is drawn. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/e55c8d07-133e-48ab-a974-ed076f3d4a58) +![Debug Settings](https://github.com/arnaud-jamin/Cog/assets/13844285/e55c8d07-133e-48ab-a974-ed076f3d4a58) ### Effects Displays the gameplay effects of the selected actor. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/4fffa8fe-bd93-44bc-8ca5-27ae81f5da0c) +![Effects](https://github.com/arnaud-jamin/Cog/assets/13844285/4fffa8fe-bd93-44bc-8ca5-27ae81f5da0c) - Mouse over an effect to see its details such as its modifiers, the gameplay tags it grants, the remaining time, etc. ### Gamepad Display the state of the gamepad -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/734dd08a-5b9f-44cf-8d24-9bf257f08ec6) +![Gamepad](https://github.com/arnaud-jamin/Cog/assets/13844285/734dd08a-5b9f-44cf-8d24-9bf257f08ec6) +- Can be displayed as an overlay - Can be used to inject inputs to help debugging, as loosing window focus when breaking in the code doesn't affect the state of injected inputs unlike real inputs. ### Inspector Used to inspect and modify an Object properties -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/e6ed8841-40cc-4491-b46f-517e6cd7f296) +![Inspector](https://github.com/arnaud-jamin/Cog/assets/13844285/e6ed8841-40cc-4491-b46f-517e6cd7f296) - Inspect the selected actor by default - Favorites can be added with a custom function defining what happens when the user press the Apply button (typically this can be used to modify and apply the Game User Settings) - Manage a history of inspected objects. @@ -90,7 +103,7 @@ Used to inspect and modify an Object properties ### Log Categories Can be used to activate and deactivate log categories -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/7ced2751-c3bc-43a3-9280-d11a34bf0482) +![Log Categories](https://github.com/arnaud-jamin/Cog/assets/13844285/b35ba24b-85e2-4264-8230-fb4a3899715b) - Activating a log category set its verbosity to VeryVerbose. - Deactivating a log category set its verbosity to Warning. - The detailed verbosity of each log category can be shown by using the Option menu. @@ -100,39 +113,54 @@ Can be used to activate and deactivate log categories ### Metric Gather various values sent by the selected actor and compte their rate per second. This is typically useful to compute the damage dealt or received per second. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/64d3cb7c-8731-4897-9ef9-b0868148ebe2) +![Metric](https://github.com/arnaud-jamin/Cog/assets/13844285/64d3cb7c-8731-4897-9ef9-b0868148ebe2) ### Net Emulation Used to configure the network emulation -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/97103f15-fae8-4fe9-8189-8fdbcab5cb20) +![Net Emulation](https://github.com/arnaud-jamin/Cog/assets/13844285/97103f15-fae8-4fe9-8189-8fdbcab5cb20) ### Output Log Display the output log based on each log categories verbosity. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/71b1de06-a3d0-4e4d-83f3-c3f482c0d8f4) +![Output Log](https://github.com/arnaud-jamin/Cog/assets/13844285/71b1de06-a3d0-4e4d-83f3-c3f482c0d8f4) - The verbosity of each log category can be configured in the 'Log Categories' window. ### Pools Displays attributes of the selected actor as pools. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/7bb1aadd-9c0b-439f-b263-5ed842d0cd69) +![Pools](https://github.com/arnaud-jamin/Cog/assets/13844285/7bb1aadd-9c0b-439f-b263-5ed842d0cd69) - The pools can be configured in a data asset. -### Plots -Plots values overtime. When applicable, only the values of the selected actor are displayed. +### Plots +Plots values and events overtime. When applicable, only the values and events of the selected actor are displayed. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/bc134e95-4887-4245-b34d-c030464f644a) +![Plots](https://github.com/arnaud-jamin/Cog/assets/13844285/def95b7b-ae59-4a8b-bc21-b07922e1fc6f) +- The following code snippets show how to plot values and events: +```cpp + // Plotting a value + FCogDebugPlot::PlotValue(Character, "Speed", Velocity.Length()); + + // Starting an event + FCogDebugPlot::PlotEvent(this, "Effects", GameplayEffectSpec.Def->GetFName(), GameplayEffectSpec.GetDuration() == 0.0f) + .AddParam("Name", AbilitySystemComponent->CleanupName(GetNameSafe(GameplayEffectSpec.Def))) + .AddParam("Effect Instigator", GetNameSafe(GameplayEffectSpec.GetEffectContext().GetInstigator())) + .AddParam("Effect Level", GameplayEffectSpec.GetLevel()) + .AddParam("Effect Duration", GameplayEffectSpec.GetDuration()); + + // Stopping an event + FCogDebugPlot::PlotEventStop(this, "Effects", RemovedGameplayEffect.Spec.Def->GetFName()); +``` ### Scalability Used to configure the rendering quality. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/4866b54c-5efa-4efa-a841-74ac8e1713c0) +![Scalability](https://github.com/arnaud-jamin/Cog/assets/13844285/4866b54c-5efa-4efa-a841-74ac8e1713c0) ### Skeleton Display the bone hierarchy and the skeleton debug draw of the selected actor if it has a Skeletal Mesh. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/19648e3d-70dc-45bc-940d-e53eb9a99871) +![Skeleton](https://github.com/arnaud-jamin/Cog/assets/13844285/19648e3d-70dc-45bc-940d-e53eb9a99871) - Mouse over a bone to highlight it. - Right click a bone to access more debug display. - Use the [Ctrl] key to toggle the bone debug draw recursively. @@ -140,42 +168,42 @@ Display the bone hierarchy and the skeleton debug draw of the selected actor if ### Selection Used to select an actor either by picking an actor in the world or by selecting an actor in the actor list. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/67cf9019-85c0-449f-88bf-0fc4841f8795) +![Selection](https://github.com/arnaud-jamin/Cog/assets/13844285/67cf9019-85c0-449f-88bf-0fc4841f8795) - The actor list can be filtered by actor type (Actor, Character, etc). - The current selection is used by various debug windows to filter out their content. ### Settings Configure the settings of Cog Windows. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/edd6a701-9a50-41fa-b7df-90fd11cc2937) +![Settings](https://github.com/arnaud-jamin/Cog/assets/13844285/edd6a701-9a50-41fa-b7df-90fd11cc2937) - Can configure the input key to toggle the input focus between the game and imgui - Can change the DPI Scaling ### Spawn Used to spawn new actors in the world. The spawn list can be configured in a Data Asset. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/b37f9307-5fd5-4ea5-9652-c265a8f63e32) +![Spawn](https://github.com/arnaud-jamin/Cog/assets/13844285/b37f9307-5fd5-4ea5-9652-c265a8f63e32) ### Stats Displays engine stats such as FPS, Ping, Packet Loss. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/e394ec7b-02fa-4b09-879b-90c82bd542ef) +![Stats](https://github.com/arnaud-jamin/Cog/assets/13844285/e394ec7b-02fa-4b09-879b-90c82bd542ef) ### Tags Displays the gameplay tags of the selected actor. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/3f14be3f-77f2-4d59-887d-1245fc97ed6a) +![Tags](https://github.com/arnaud-jamin/Cog/assets/13844285/3f14be3f-77f2-4d59-887d-1245fc97ed6a) ### Time Scale Used to change the game global time scale. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/d19198c5-37dd-400d-a09f-7a5077eb2511) +![Time Scale](https://github.com/arnaud-jamin/Cog/assets/13844285/d19198c5-37dd-400d-a09f-7a5077eb2511) - If changed on a client the time scale is also modified on the game server, and replicated to the other clients. ### Tweaks Used to apply tweaks to all the spawned actors -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/e8a5cdd5-908d-4ae3-901a-48addd4ce353) +![Tweaks](https://github.com/arnaud-jamin/Cog/assets/13844285/e8a5cdd5-908d-4ae3-901a-48addd4ce353) - The tweaks are used to test various gameplay settings by actor category - The tweaks can be configured in a data asset. @@ -183,11 +211,11 @@ Used to apply tweaks to all the spawned actors Cog provides C++ and Blueprint functions to log and debug draw within Log Categories. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/cc0ba4a5-7fa6-44a8-b737-f523bdf94321) +![Log Categories](https://github.com/arnaud-jamin/Cog/assets/13844285/cc0ba4a5-7fa6-44a8-b737-f523bdf94321) Log and debug draw functions can be filtered by the selected actor. -![image](https://github.com/arnaud-jamin/Cog/assets/13844285/a6f1329e-d49e-410f-8a70-4613aafabb5a) +![Log and debug draw functions](https://github.com/arnaud-jamin/Cog/assets/13844285/a6f1329e-d49e-410f-8a70-4613aafabb5a) ## Setup