Navigation3D debugging and diagnostics

Layered debug draw, console commands, runtime tuning, volume self-checks, and a troubleshooting table.

Layered debug draw

cvar nav3d_debugDraw:

LevelValueDraws
Off0Everything off (default)
Paths1Active trajectories (green), desired velocity (yellow), VO cones (cyan); filtered by nav3d_debugAgent
Full2Above + SVO wireframes, occupied subvoxels, cost zones, domain links, climb graph

Helper: nav3d_debugDrawRadius (default 256.0 m distance cull).

nav3d_debugDraw 2
nav3d_debugAgent 12345
nav3d_debugDrawRadius 128

Console commands

CommandPurpose
nav3d_dumpStatsScheduler mode / queue depth / expansions per tick, plus per-volume tier / chunk / memory
nav3d_debugAgent <entityId>Focus draw on one agent (no arg clears)
nav3d_setQueryBudget <ms> <expansions>Per-tick query time and expansion budget
nav3d_setQueryThreaded <0|1>Background-thread scheduling
nav3d_setBuildBudget <chunksPerTick>Streaming build submit budget
nav3d_validateVolume <entityId>SVO invariant self-check

Volume readiness: poll IsVolumeReady(), or listen for NavigationVolumeNotificationBus::OnNavigationVolumeReady.

SVO health check

nav3d_validateVolume <volumeEntityId> checks structural invariants (layers / parent-child / Morton order / leaf refs) and optional border-link symmetry. Run it first when build or pathfinding looks wrong. Programmatic variant in Programmatic API.

Runtime tuning (Settings Registry)

Key prefix: /O3DE/Gems/Navigation3D/Runtime/ (defaults in the Gem’s Registry/navigation3d.setreg).

KeyDefaultConsole overridePurpose
QueryBudgetMs0.5nav3d_setQueryBudgetPer-tick query time (ms)
QueryBudgetExpansions2000samePer-tick expansion cap
QueryWorkerBatchExpansions16384Background worker batch expansions
QueryThreadedfalsenav3d_setQueryThreadedBackground-thread scheduling
BuildChunksPerTick4nav3d_setBuildBudgetStreaming build chunks per tick
ChunkSize128.0Default chunk size
LeafVoxelSize0.5Default leaf voxel edge
VelocityObstacleEnabledtrueGlobal VO switch

Tips:

  • Multi-agent hitching → enable QueryThreaded, or lower QueryBudgetMs (smoother, slower completion).
  • Streaming build frame spikes → lower BuildChunksPerTick.
  • Resolution vs memory → tune LeafVoxelSize.

Troubleshooting

SymptomLikely causeWhat to try
Query NoVolumeVolume not ready / unresolvedIsVolumeReady(); set VolumeEntity; nav3d_dumpStats
StartOccupied / GoalOccupiedEndpoint in solid voxelsSnap with FindNearestFreePosition; ensure a radius tier covers the agent
UnreachableDisconnected or blocked by no-flynav3d_debugDraw 2; check border links
Path through walls / poor fitGeometry not collected or voxels too coarseConfirm provider coverage; reduce LeafVoxelSize
Fixed-wing falls back to straight lineTurn / climb constraints too tightRelax MinTurnRadius / MaxClimbAngle
AutoBuild does nothingBaked asset assignedClear baked asset or rebake
Bake produces nothingAP not running / wrong pathConfirm AP, .svonav exists, geometry provider present
Follow does nothingDesired velocity never appliedRead GetDesiredVelocity each frame into your motion layer
Climb finds no pathSlope filter too strict / surface not readyTune MinSlopeDegrees / MaxSlopeDegrees; IsSurfaceReady()

CI gates (developer-oriented)

Gems/Navigation3D/Scripts/ci/ contains bake-determinism compare and benchmark threshold scripts. Not needed for day-to-day use; useful when shipping or changing core algorithms.

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.