DebugHUD

v1.0.2·Updated 2026-07-14

API for showing dynamic values on an HUD updated every frame, compatible with BepInEx mods and Official API.

Screenshots 3 screenshots

About this mod Author’s original text

AGDDebugHUD - Plugin & API Guide

AGDDebugHUD is a BepInEx plugin that displays a real-time debug overlay in the top-left corner of the screen.

It comes with built-in player stats and a public API so your own plugins/mods can register custom debug lines.

Compatible with BepInEx plugins and Official API mods.

Images

Built-in display

Once installed, the HUD appears automatically when the GameSingleton awakens. Press F3 (configurable) to toggle the overlay on/off.

Game

| Line | Content |

|---|---|

| FPS | Frame time in ms + FPS |

| HUD Time | HUD processing time in ms + FPS impact |

Network

| Line | Content |

|---|---|

| Ping | Current network ping in ms |

Movement

| Line | Content |

|---|---|

| Velocity | Current movement speed in m/s + X/Y/Z components |

| Position | World-space coordinates |

Physics

| Line | Content |

|---|---|

| Ragdoll State | Whether the player is currently ragdolled |

Status

| Line | Content |

|---|---|

| State | Grounded, Aiming, Alive, NoClip booleans |

| Status Effects | Count and names of active status effects (e.g. Invincible, RecentlyHardHit) |

All default values are sourced from SessionManager.Instance.LocalPlayer. Each section and individual line can be disabled via the BepInEx config file.

Configuration

All settings live in BepInEx/config/com.unii.debugHud.cfg.

| Setting | Default | Description |

|---|---|---|

| Enabled | true | Master toggle for the entire HUD |

| ToggleKey | F3 | Key to show/hide the overlay |

Section and line toggles (all default true):

  • EnableGameSection / EnableFPS / EnableHUDFPS
  • EnableNetworkSection / EnablePing
  • EnableMovementSection / EnableVelocity / EnablePosition
  • EnablePhysicsSection / EnableRagdollState
  • EnableStatusSection / EnableState / EnableStatusEffects

Disabling a section hides all its lines regardless of their individual toggles.

Compatibility

This plugin is made to be as easy to implement as possible.

It is natively compatible with BepInEx plugins AND mods using the Official modding API.

API reference

The public API lives in the static class AGDDebugHUD.DebugHUDAPI (assembly AGDDebugHUD).

RegisterHeader(string label)

Creates a section header — a bold, gold-colored label displayed above grouped lines. Returns a Header object to pass into RegisterCustomLine.

  • label - display text for the header (e.g. "--- MyPlugin ---").

RegisterCustomLine(string label, Func getter)

RegisterCustomLine(string label, Func getter, Header header)

Registers a new line in the overlay. The label serves as both the display name and a unique key.

  • label - unique identifier for the line. Also used as the GameObject name.
  • getter - a Func called every frame (during Update) to fetch the current value. Return null to hide the line entirely.
  • header (optional) - the Header returned by RegisterHeader. Lines sharing the same header appear grouped together under it.

Best practice is to register (RegisterCustomLine) during your own plugin's Awake.

EnableLine(string label)

Re-enables a line that was previously disabled.

DisableLine(string label)

Hides the line (GameObject set inactive). The getter is not called while disabled.

FreezeLine(string label)

Keeps the last visible text on screen but stops calling the getter.

How to use from your own plugin

Your plugin does not need a hard reference to AGDDebugHUD.dll.

Use reflection to call the API, this avoids compile-time dependency and keeps your plugin perfectly functional even if the HUD isn't installed.

Generic template (line only)

BepInEx:

private void RegisterDebugHUD()

{

var apiType = Type.GetType("AGDDebugHUD.DebugHUDAPI, AGDDebugHUD");

if (apiType == null) return; // HUD not installed

var registerMethod = apiType.GetMethod("RegisterCustomLine");

if (registerMethod == null) return;

Func myGetter = () => { / your logic / return "MyLabel: someValue"; };

registerMethod.Invoke(null, new object { "MyLabel", myGetter });

}

Generic template (header + lines)

private void RegisterDebugHUD()

{

var apiType =

Install & use Install: follow the bundled instructions

  1. Unzip the archive from playbuff and read the bundled readme / instructions first.
  2. Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
  3. For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
  4. Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.

Install locations vary a lot between mods — the bundled readme is the most reliable guide.

File & checksum

Filename
DebugHUD-1.0.2.zip
File size
124.4 KiB