LCM Nav3D Free demo Get it on Fab

Tutorial 11 - LCMNav3D in the Gameplay Debugger

TL;DR: LCMNav3D ships an LCMNav3D category in the stock UE5 Gameplay Debugger. In PIE, press the standard Gameplay Debugger key (usually apostrophe '), select an agent → the category renders per-agent + plugin-wide state alongside Recast / BT / EQS / Perception. Zero project setup beyond the plugin being loaded.

What it shows

Plugin-wide block (always)

== LCMNav3D ==
  Manager: resolved
  Loaded chunks: 7
  NavLink registry: 3
  NavArea registry: 1
  NavSystem bridge: active
Field Meaning
Manager Green when ALcmNavigationManagerSVO is in the world; red if missing
Loaded chunks ActiveVirtualChunks.Num for infinite worlds; 1 for finite
NavLink registry Count of ULcmNavLinkComponent currently registered
NavArea registry Count of ALcmNavAreaModifier currently registered
NavSystem bridge Green when the T37 proxy is registered with UNavigationSystemV1

Per-agent block (when an actor is selected)

== Agent: BP_FlyingPawn_C_0 ==
  Pos: X=1234.5 Y=678.9 Z=500.0
  Speed: 624 cm/s
  Chunk: (0,0,0) full
  SweepPenalty: 0
  Perceived: 2 (closest: BP_Enemy_C_1)
Field Meaning
Pos Pawn world location
Speed Pawn->GetVelocity.Size in cm/s
Chunk (IntVec3) resolution - full, coarse (T12 stub), or none (streaming gap)
SweepPenalty §P9.3 risk-field byte at the agent's location (0.255)
Perceived Count of currently-perceived actors + closest threat name

How to toggle

  1. In PIE, press the standard Gameplay Debugger key (usually apostrophe ' - check Project Settings → Engine → Gameplay Debugger if you've rebound it).
  2. The Gameplay Debugger HUD appears at the top of the viewport.
  3. Look for the LCMNav3D category - it should be enabled by default (state set to EnabledInGameAndSimulate at module init).
  4. Click an actor in the level to select it as the debug target - per-agent block populates.

If the category isn't showing:

What survives PIE → editor → PIE reloads

The Gameplay Debugger category itself is always-on after module load - it doesn't lose its registration across PIE sessions because the category lives in the GameplayDebugger module's category map, not in the world.

Adding new fields (v2 design hook)

To extend the category in your project subclass:

#if WITH_GAMEPLAY_DEBUGGER
class FProjectGameplayDebuggerCategory_Apex: public FGameplayDebuggerCategory_LcmNav3D
{
public:
    virtual void CollectData(APlayerController* PC, AActor* DebugActor) override
    {
        Super::CollectData(PC, DebugActor);
        // Gather project-specific state here
    }
    virtual void DrawData(APlayerController* PC, FGameplayDebuggerCanvasContext& Canvas) override
    {
        Super::DrawData(PC, Canvas);
        Canvas.Printf(TEXT("  ProjectField: %s"), *MyProjectState);
    }
};
#endif

Register your subclass instead of the stock one in your project's module startup.

Performance