Settings Reference:
LcmNavigationManagerSVO
Every field on the navigation manager, in the order the Details panel presents them. Defaults and limits below are the shipping values.
If you only read one thing: the four settings that
decide whether the plugin works well in your level are
Infinite World,
World Extent / Chunk Size,
Min Voxel Size, and
Clearance Padding. Everything else is
refinement.
Concepts behind these are explained in Tutorial 02: Core Concepts.
The panel at a glance
The manager's Details panel is one LCM Nav3D group floated above the inherited Actor sections, then seven numbered sections in the order below.

Figure 1 - Sections 1-2, plus the three blocks above
them. Configuration Health and What You Get
are not settings; they are what the settings below resolve to.
They are worth reading before you change anything - the health block in
this shot is reporting a raised invoker radius, and the What You
Get block is reporting a 250 cm finest leaf from a 100 cm
Min Voxel Size, which is the single most misread number in
the plugin.

Figure 2 - Sections 3-7. Two things to notice:
- Section 7 is read-only. Every
(auto)row is a value the Streaming Profile derived, shown so the profile is auditable rather than magic.Frontier Stall Recovery (auto)is the only place a BehaviorTree task'sInheritcan be resolved for you, because a BT asset is not owned by a level and cannot know which manager it will run under. - Sections hide what does not apply. A finite world
shows no Coarse Skeleton options, and
Max Generations Per Framedisappears unless you are finite or on the Manual profile - the plugin does not show you a property it is going to ignore.
1. Setup
Infinite World: default
off
The biggest decision. Off = one fixed navigation volume built up front. On = the world is divided into chunks generated around agents as they move.
Leave it off unless you have a genuinely unbounded or streaming world. Finite is simpler, faster and more predictable.
Ticking this hides World Extent and reveals
Chunk Size and the skeleton options.
Levels that stream in late. When a streaming level loads after the navigation around it was already built, the chunks it overlaps are rebuilt automatically, so its geometry does not stay open air. Three console variables control this:
| Console variable | Default | Meaning |
|---|---|---|
r.LcmNav.Streaming.RevoxelizeOnLevelStreamIn |
1 |
Rebuild the chunks a newly streamed level overlaps. 0
turns it off |
r.LcmNav.Streaming.RevoxelizeGraceSeconds |
2 |
Chunks built within this many seconds after the level arrived are rebuilt too |
r.LcmNav.Streaming.RevoxelizeMaxPerTick |
8 |
Most chunks released for rebuild per frame, so the work is spread out |
Auto Build On Play:
default on (finite only)
Builds the navigation volume at BeginPlay - voxelizing
the whole world, on every launch, on every player's machine. Turn it off
if you want to trigger BuildSVO yourself from Blueprint at
a specific moment, or if you have baked the SVO to an asset.
Turn it off when you bake. The Bake to
Asset button does this for you, and it is not a tidiness
measure: the streaming proxy and the manager both write the navigation
data during BeginPlay, and actor order is not guaranteed,
so with both enabled which one the level ends up using is undefined. The
Configuration Health section flags the combination.
Generation Strategy:
read-only (infinite only)
Shows which streaming strategy was selected automatically.
2. Voxels
World Extent:
default 10000 cm (finite only)
Half-width of the navigation volume, measured outward from
the world origin. The default gives a 200 m cube
spanning -10000 ... +10000 on each axis.
Range: 500-400000. Recommended UI range (slider): 2000-20000.
Anything outside this box has no navigation data. Paths to targets outside it fail. Size it to cover your play space.
How big can it actually be? It depends on
Min Voxel Size, not on a fixed distance. The real limit is a voxel count: the world is2 × World Extentwide and holds(2 × World Extent / Min Voxel Size)³voxels against a 64 M ceiling - which is 400³. So the largest legal half-extent is200 × Min Voxel Size:
Min Voxel SizeLargest World ExtentWorld size 50 cm 10 000 200 m cube 100 cm (default) 20 000 400 m cube 200 cm 40 000 800 m cube 500 cm 100 000 2 km cube The property clamp used to be a flat 20000, which is the row for the default
Min Voxel Sizeand wrong everywhere else - it blocked a perfectly legal 40 000 at 200 cm voxels, and allowed 8× over budget at 50 cm. A per-property clamp cannot express a rule that depends on another property, so the clamp is now just a sanity ceiling and Configuration Health reports the real budget live at whateverMin Voxel Sizeyou are using. Exceeding it does not fail - the generator silently coarsensMin Voxel Sizeto fit, so you get less precision than you configured.Trading voxel precision for area is a real choice, not a workaround: a 2 km flying-combat arena at 500 cm voxels is a sensible configuration. Just make it deliberately.
⚠ The volume does NOT follow the manager actor. The manager is a logical singleton with no root component, so its position is ignored - moving it does not move the navigation volume. Build your playable space around the world origin, or switch to an infinite world. The manager's Details panel reports the resolved bounds under What You Get so you can see them directly.
Chunk Size:
default 8000 cm (infinite only)
Edge length of one streaming chunk.
Range: 1000-800000. Recommended UI range (slider):
3000-8000. The clamp carries the same caveat as
World Extent above - it is a sanity ceiling, not the real
budget, which depends on Min Voxel Size and is reported
live in Configuration Health. Here the slider range is the
number that matters: it is the measured-reliable band, and
going outside it degrades long-range routing regardless of the
budget.
⚠ Do not treat this as a free dial. It affects memory, generation cost, and whether long routes can be found at all. 8000 is the tested default. If you change it, re-test long-range routing specifically: a value that looks fine for short hops can break distant paths.
⚠ Chunk Size changes navigation precision, and not in the direction you expect
This is the single most surprising thing about the setting, so it is worth stating plainly.
Subdivision stops when a child's half-extent falls below
Min Voxel Size, starting from Chunk Size / 2.
The finest leaf edge you actually get is therefore
Chunk Size / 2ᵏ - it lands somewhere between 2× and
4× Min Voxel Size, and it does
not improve as Chunk Size shrinks. Measured on a real
level at Min Voxel Size = 100:
| Chunk Size | finest leaf edge | Chunk Size | finest leaf edge | |
|---|---|---|---|---|
| 3000 | 375 cm (3.75×) | 7000 | 219 cm (2.19×) | |
| 5000 | 312 cm (3.12×) | 8000 | 250 cm (2.50×) | |
| 6000 | 234 cm | 9000 | 281 cm |
So a smaller Chunk Size can give you a coarser
octree. At Chunk Size 3000 you get 375 cm leaves from a 100
cm setting - and an opening that stays navigable at 250 cm can
voxelize shut at 375 cm. That is felt as "the agent refuses
to path", which reads like a bug rather than a setting.
What to do: leave it at 8000 unless you have a measured reason. If you must change it, use the Auto-Tuner (Editor Tools) - it measures the leaf edge from the built octree for each candidate rather than deriving it, and gates on whether a route exists at all before comparing quality or cost.
Min Voxel Size:
default 100 cm
The finest resolution the octree will subdivide to. The dominant quality/cost control.
Range: 10-2000. Recommended UI range: 25-500.
- Smaller → finds tighter gaps; more memory; longer builds.
- Larger → cheaper; narrow openings disappear.
Rule of thumb: about half the narrowest gap agents must pass through.
It's a floor, not an exact size. The octree halves down from the world/chunk size, so effective resolution snaps to powers of two. 100 → 90 may change nothing; 100 → 60 may double memory. Tune by testing.
World Scale: default
Standard
Which set of centimetre constants the manager uses.
Standard is the shipped tuning for metre-scale worlds at a
100 cm leaf and is byte-identical to earlier releases.
Small derives those constants from the finest leaf this
manager produces - Clearance Padding becomes half the leaf (written into
the property, which turns read-only), and the start-rescue probe
distances and the large-node cost threshold scale with it - so a
centimetre-scale world such as a 120 × 70 × 40 cm aquarium at 1 cm
voxels gets defaults that mean the same thing. Custom keeps
whatever you set. Change Min Voxel Size,
World Extent or Chunk Size under
Small and the padding is re-derived; it is re-derived again
at BeginPlay so config-driven setups match the editor.
Min Voxel Size now accepts down to 0.5
cm and World Extent down to 50
cm. The finest leaf is 2-4× Min Voxel Size, so set
half the leaf you want and make the world edge a power-of-two multiple
of it. Small worlds are small in leaves too: below ~32 leaves
across, node count grows nearly with volume as the leaf shrinks (the
panel says so). See Small
Worlds.
A few centimetre constants follow the leaf on every profile, because they live in the generator and the solver rather than on the manager: the neighbour-probe offset, the voxel line-of-sight sampling step, the waypoint-merge tolerance and the route executor's sampling floors are bounded by the finest leaf of the navigation data itself. They keep their previous values at production leaf sizes; there is nothing to set.
Padding Mode:
default Centimetres
How Clearance Padding is expressed.
Centimetres keeps the value you enter. Leaves
derives it as Clearance Padding Leaves × the finest leaf
whenever the leaf changes (and again at BeginPlay), so the blocked band
around every surface stays the same number of leaves thick at every
Min Voxel Size. That is the condition under which halving
the leaf grows the octree by the surface law (about 4× per halving)
instead of by a band that thickens, in leaves, as the leaf shrinks,
which keeps the growth per halving under about 4.5×.
World Scale = Small already derives half a leaf and takes
precedence.
Clearance Padding Leaves:
default 0.5
The multiple used under Padding Mode = Leaves. 0.5
inflates every surface by half a leaf, which is what Small
derives. Range: 0-4.
Clearance Padding:
default 100 cm
Inflates obstacles during voxelization so agents keep clear of surfaces.
Range: 0-1000. Recommended UI range: 0-300.
⚠ Keep this well below
Min Voxel Size. Padding that approaches voxel size fills in doorways and corridors completely, and the pathfinder reports no route through openings you can clearly see. This is the single most common cause of "it says there's no path but I can see the gap".
Coarse Cell Size:
default 2500 cm
Cell size of the coarse long-range routing layer. Larger = cheaper long-range planning, less precise. The default suits most levels.
Range: 100-20000.
3. Collision
Obstacle Query Channels
Which collision channels count as obstacles. Anything on these
channels is voxelized as solid. Defaults to WorldStatic +
WorldDynamic.
Empty means nothing, not everything. Unlike
Allowed Obstacle Classesbelow, clearing this list does not widen the query - it voxelizes an empty world, and you get navigation data that says every point is open air. That passes every metric and shows up only as agents flying through walls. Bake to Asset refuses to run on an empty list for exactly this reason.
If a wall isn't blocking agents, check that its collision channel is in this list and that the mesh actually has collision enabled.
Allowed Obstacle Classes
Optional filter. Leave empty to consider all actors (normal). Populate it to restrict voxelization to specific actor classes (useful when you want to ignore scenery entirely).
4. Performance
Voxelization Method:
default Auto
Where the octree is built. Auto builds it on the GPU,
which is substantially faster, and falls back to the CPU automatically
if no suitable GPU is present. GPU asks for the GPU
explicitly, and CPU always builds on the CPU. Choose
CPU only to force deterministic, reproducible builds.
Levels saved with the older Use GPU Voxelization
checkbox are converted to this setting when they load.
Max Generations Per Frame:
default 1
Chunk builds allowed per frame. Higher fills the world faster but can cause hitches. Range: 1+, UI up to 8.
Max Path Requests Per Frame:
default 64
Path queries dequeued per frame. Raise for many agents replanning at once; lower to protect frame time. Range: 1-256.
Max Requests Per Frame:
default 50
General request throttle. Range: 1-200.
Max Flow Solves Per Frame:
default 4
Flow-field solves per frame. Range: 0-16.
Finite Obstacle Update Interval:
default 0.1 s (finite only)
How often dynamic obstacle changes are folded into the octree. Lower = more reactive, more CPU. Range: 0-2 s. See Tutorial 05.
Chunk Quantized Macro Cache:
default off
Caches long-range routes quantized to chunk boundaries. Helps when many agents share similar long-range routes (large crowds spawning together).
Pawn Agents (BT & StateTree) subcategory
| Field | Default | Meaning |
|---|---|---|
Use Flow Fields (pawn agents only) |
off | Opt-in: pawn agents heading to a shared goal use one steering field instead of individual paths |
Flow Field Threshold |
16 |
Agent count at which a shared field is built (range 2-512) |
Flow Field Cluster Cell Size |
1000 cm |
Grouping granularity for shared goals (range 100-10000) |
Flow fields are for swarms heading to the same place. For a handful of agents with individual goals they are pure overhead, so leave it off.
5. Coarse Skeleton (optional)
Two independent, composable ways to keep long-range macro routing complete in a streamed world. Both are opt-in and default off. They are not part of the base configuration - turn one on only when an agent must route to somewhere it cannot currently see. Agents operating inside their streaming bubble need neither.
Persistent Skeleton (runtime, no bake):
default off (infinite only)
Keeps a lightweight long-range connectivity graph in memory so distant routes can be planned before the detailed chunks exist. No bake required; works on any world, including procedural ones.
Turn it on when an agent returns across ground it has already
covered and must not lose routability over it. The cost is
memory that grows with how much ground has been covered - one compact
node per visited-then-evicted chunk, bounded by
r.LcmNav.MaxSkeletonNodes, not by the size of the resident
set.
Use Baked Skeleton (frame-0 completeness):
default off (infinite only)
Loads a pre-baked skeleton so long-range routing is complete from the very first frame, including into never-visited space.
Tick this on first. The Bake
Skeleton button only appears in the banner once it is on -
nothing else reads a bake, so the button stays hidden until you have
asked for one. Then click it Rebake after changing the level or the
voxel settings - a stale bake is refused at load, and the
Baked Skeleton (auto) line under 7. Runtime
State will say so.
Baked Skeleton (auto) under 7. Runtime
State always reports which of the two, if either, is actually
active.
6. Debug
Draw Debug Volumes:
default off
Draws the octree. The most useful diagnostic in the plugin: if a gap shows no fine voxels, the pathfinder can't route through it either. Expensive; turn it off when you're done.
Also available from Blueprint via SetDrawDebugVolumes /
ToggleDrawDebugVolumes.
Draw Pathfinding Debug:
default off
Draws computed paths.
Draw Infinite World Debug:
default off (infinite only)
Draws chunk boundaries and streaming state.
Debug Redraw Coalesce Seconds:
default 0.25 s
How long debug redraws are batched. Raise it if debug drawing itself is hurting frame rate.
Cost Areas subcategory
| Field | Default | Meaning |
|---|---|---|
Cost View |
Off | Draws the cost areas while playing. Regions: each volume
and what it costs. Heat: the octree tinted by price. The
console variable r.LcmNav.CostView 0/1/2 overrides it;
-1 hands control back |
Cost View Filter |
none | Whose eyes the view looks through: a stock Navigation Query Filter class. Empty = each area's own defaults |
See Tutorial 10 for cost areas themselves.
Force Redraw SVOwas removed. It was a checkbox that instantly unchecked itself, and it was destructive: on a level with no baked data it deleted the editor preview it was meant to refresh. Reloading a bake into the preview now happens automatically when you bake, and the manual action is the Refresh Preview button, which appears on the manager only when the level actually has baked navigation to reload.
7. Runtime State
Read-only diagnostics showing live counts of resident chunks, skeleton state and staleness. Useful when tuning an infinite world; nothing to set.
Build & Tools (Blueprint-callable)
| Function | Purpose |
|---|---|
BuildSVO |
Build the navigation volume now |
BuildSVOInEditor |
Build in-editor into memory, so EQS previews work without playing. Not saved |
BakeFiniteSVOToAsset |
(finite) Save the SVO to an asset + streaming proxy, so the
level stops voxelizing at launch. Turns Auto Build On Play
off. Returns false and does nothing if a single-volume
Bake Volume already owns this level's one finite volume |
BakeSkeletonInEditor |
(infinite) Pre-bake the long-range skeleton for
Use Baked Skeleton |
LoadBakedSkeleton |
Load a previously baked skeleton |
FindPath |
Synchronous path query: start, end, options, out array of points |
FindCover |
Tactical cover query |
UpdateDynamicObstacle |
Manually stamp an obstacle by bounds |
SetMacroTopologyCell |
Manually mark a coarse cell blocked/free |
ForceRedrawSVO, SetDrawDebugVolumes,
ToggleDrawDebugVolumes,
DebugDrawFlowField |
Debug |
Per-agent settings
These live on the Fly To BT task / Fly To StateTree task, not the manager. Both tasks expose the identical surface, in six numbered sections:
1. Goal
| Field | Default | Meaning |
|---|---|---|
Acceptance Radius |
100 cm |
Distance at which the goal counts as reached |
Target Location |
- | (StateTree only) world-space goal |
Target Actor |
none | (StateTree only) moving goal; overrides Target Location when chase is on |
Timeout Seconds |
0 (no limit) |
(advanced) Report Failed after this long in flight. For a goal that keeps moving away, or one reached only by a very long route |
2. Movement
| Field | Default | Shown when | Meaning |
|---|---|---|---|
Agent Scale |
0 (= World Scale) |
always | Multiplies every centimetre and speed value on the task (acceptance
radius, speed, acceleration, deceleration distance, wall check,
separation, drift replan, Minimum Agent Size and the follower's internal
floors). 0 follows the manager's World
Scale: 1 under Standard, finest leaf / 100 cm under
Small (0.01 in a 1 cm world). A driving flight component adopts
the same scale unless its own Agent Scale is set |
Use Flight Movement Component |
off | always | Delegate the body to a ULcmFlightMovementComponent for
6-DOF drone / bird / fish dynamics |
Flight Speed |
600 cm/s |
not delegating | Cruise speed |
Max Acceleration |
2000 cm/s² |
not delegating | Lower = heavier feel; also sets how hard the agent can brake into its arrival |
Flight Style |
Physics (Drones/Ships) | not delegating | vs Linear (Biological/Magic) |
Deceleration Distance |
800 cm |
not delegating and Physics-weighted | Slow-down lead-in. LinearDirect has no inertia to bleed off, and the
flight component brakes on v = sqrt(2·a·d) against the real
goal distance instead |
Banking Amount |
4.0 |
not delegating | Roll into turns (cosmetic) |
Max Banking Angle |
45° |
not delegating | Roll limit (cosmetic) |
Whoever owns the body owns its caps. Tick
Use Flight Movement Componentand this section collapses to that one checkbox: speed, acceleration, flight style and banking are set on the component's Flight Config instead, and the task reads them from there for its guidance, braking and chase-lead maths. Untick it and the task's own values apply. Exactly one place is ever live.
3. Pathfinding
| Field | Default | Meaning |
|---|---|---|
Query Options |
- | Solver, heuristic, smoothing, agent size, wall-distance preference |
Query Options > Filter Class |
none | The stock Navigation Query Filter this agent sees cost areas through. Empty = the AI controller's Default Navigation Filter Class |
Query Options > Require Complete Path |
off | (advanced) Fail a request whose route stops short of the goal, instead of returning the part that can be planned now |
4. Avoidance (the reactive knobs hide when Avoidance Style is CBS)
| Field | Default | Meaning |
|---|---|---|
Avoidance Style |
Reactive (Boids/Push) | None / Reactive / Predictive (ORCA) / Context-Based |
Avoidance Time Horizon |
2.0 s |
ORCA look-ahead (Predictive only) |
Collision Margin |
1.2 |
Safety multiplier on the avoidance radius |
Wall Check Distance |
200 cm |
Wall probe range |
Wall Push Force |
4000 |
Wall push strength - keep it strong |
Path Centering Force |
600 |
0 = free drift, high = train-on-tracks |
Separation Radius |
150 cm |
Neighbour spacing |
Separation Weight |
2.0 |
Spacing strength |
5. Moving Goal (Chase)
| Field | Default | Meaning |
|---|---|---|
Enable Goal Prediction |
off | Intercept a moving target |
Force Enable Chase |
off | Activate chase without also setting
r.LcmNav.Chase.Enable |
Lead Seconds Cap |
2.0 s |
Prediction limit |
Drift Replan Cm |
400 cm |
Target movement before replanning |
6. Streaming (infinite worlds only)
| Field | Default | Meaning |
|---|---|---|
Frontier Stall Recovery |
Inherit | Coast / climb out / arrive un-quantized when stalled at a streaming frontier. Inherit defers to the manager's Streaming Profile |
Frontier Stall Recoveryis the locomotion half only. Pinning chunks ahead of the agent is a separate world-level setting -Agent Corridor Prefetchon the LCM Nav3D Manager. They used to be one checkbox named for the half it mostly wasn't.
Solver and smoothing choices are described in Tutorial 02 §6.
StateTree tasks that finish at once. On UE 5.2 a task that completes, completes its whole state, so a FlyTo beside it stops. Find Cover, Chunk Prewarm, Streaming Aware, Find Actor By Tag and Pick Random Goal have Stay Running After Resolve: tick it when the task shares a state with a FlyTo, and the state runs until the FlyTo completes.
Console variables new in 3.4
| Variable | Default | Meaning |
|---|---|---|
r.LcmNav.CostView |
-1 |
Cost view override: 0 off, 1 regions, 2 heat. -1 = the
manager's Cost View |
r.LcmNav.Bridge.AutoRegister |
1 |
Register the navigation proxy so stock Move To and EQS plan through LCM Nav3D |
r.LcmNav.Bridge.ClaimDefaultAgent |
1 |
With no Recast navmesh in the world, the proxy serves the default agent. See Tutorial 14 |
r.LcmNav.MacroPath.KnownFallback |
1 |
When the coarse search reaches its limit, route through the streamed chunks instead of failing |
r.LcmNav.MacroPath.CapRetrySec |
5 |
After that happens, how long a route searches the streamed chunks only |
r.LcmNav.MacroPath.CapRetryMaxSec |
60 |
The wait doubles each time the full search reaches its limit again, up to this |
r.LcmNav.Mass.SerialPhases |
1 |
Sets mass.FullyParallel 0 at startup (see Troubleshooting). 0 leaves it
alone |
r.LcmNav.Mass.FlowAsyncBootstrap |
1 |
A crowd's first flow field is built off the game thread.
0 = on the game thread, as before 3.4 |
Recommended starting points
| Scenario | Infinite |
Extent / Chunk | Min Voxel Size |
Clearance Padding |
|---|---|---|---|---|
| Arena or single building | off | 10000 |
100 |
100 |
| Tight interiors, small agents | off | 10000 |
50 |
25 |
| Large outdoor level | off | 20000 |
200 |
100 |
| Open / streaming world | on | 8000 |
100 |
100 |
Start here, then confirm with Draw Debug Volumes that
the gaps you care about actually have voxels in them.