Skip to main content

Tuning

Every variable carries an in-editor tooltip, so this page covers only the handful of rules that actually matter. Get these right and the rest is fine on defaults.

Set density per volume

There's no global config asset to assign — you set density directly on each BP_DroneNavVolume by choosing a GridSpacing. Recommended starting points:

ScenarioGrid Spacingderived Max Connection DistanceUse for
Indoor / dense200380Tight interiors, corridors
Balanced350~665Mixed levels
Outdoor / sparse6001140Large open spaces

MaxConnectionDistance is derived, not authored — each volume computes it as GridSpacing × ConnectionDistanceRatio (ratio defaults to 1.9) and shows it read-only. You only pick GridSpacing.

Because density lives on the volume, different volumes can use different densities in the same level — a dense indoor volume can sit right against a sparse outdoor one, and the graph stitches them together (each node links at its own volume's reach). Set the spacing, then bake.

BP_DroneNavVolume Details — GridSpacing and the read-only derived MaxConnectionDistance

Mixing densities

There's nothing to keep "in sync" across volumes — drop a small dense volume over a cluttered area and a big sparse one over open space, and bake. The connection step handles the seam where they meet.

Very large or very dense bakes — raise the loop limit

Baking builds the whole graph in a single Blueprint pass, which is subject to Unreal's Maximum Loop Iteration Count safety limit (default 1,000,000). A large volume at a fine GridSpacing can produce enough nodes to trip it, aborting the bake with a "Runaway loop detected" error. The bake warns you up front when it estimates you're near the limit, so watch the output log.

If you hit it, raise the limit: Project Settings → Engine → General Settings → Maximum Loop Iteration Count (or type "Maximum Loop Iteration Count" into the Project Settings search), set it to 10,000,000 or higher, and re-bake. Coarsening GridSpacing or splitting one huge volume into a few smaller ones also works — see Troubleshooting.

The two rules that matter

1. Clearance = agent radius + margin

TraceRadius (manager) and NodeClearanceRadius (volume) decide how much empty space a node/edge needs. Set them to your drone's collision radius plus a corner-safety margin of ~25–30 unitsnot just the agent radius.

Why the margin: path smoothing pulls the route tight against this clearance boundary at convex corners. If clearance == agent radius, the drone scrapes corners. For a ~75-radius drone, ~105 works well.

Keep TraceRadius and NodeClearanceRadius equal, and re-bake after changing them. These are properties of the drone, not the level, so they're identical on every volume.

2. Connection distance is derived — you can't break it

Connectivity needs MaxConnectionDistance ≥ GridSpacing × 1.732 (the √3 floor) — but you no longer set it by hand. Each volume derives it:

MaxConnectionDistance = GridSpacing × max(ConnectionDistanceRatio, 1.732)

The ratio defaults to 1.9 (inside the recommended 1.7–2.0 band) and is clamped to a minimum of 1.732, so the floor can never be violated — the old "fragmented graph from a bad ratio" failure is gone by construction. You'd only touch ConnectionDistanceRatio to deliberately push the band; raising it links more distant neighbours (denser graph, slower bake), lowering it can't go below the floor.

After baking, still glance at the isolated-node warning in the log and confirm connectivity with Show Nav Graph.

Scale is supported (roughly uniform)

You can scale a BP_DroneNavVolume actor and connectivity stays correct — the derived MaxConnectionDistance is multiplied by the actor's scale, so scaling a volume trades node density for area rather than fragmenting it. This assumes roughly uniform scale; for precise control, prefer resizing via the box extent. (The box is the actor's root, so you move/rotate the actor to place the region — you can't drag the box out of alignment with it.)

Other knobs worth knowing

  • AcceptanceRadius (follower) — how close counts as "arrived." Set it to roughly the drone's body bounds (~100). Smaller and the planner threads the drone through gaps narrower than its body, and it wedges.
  • MoveSpeedChase / MoveSpeedPatrol — pursuit vs patrol cruise speeds.
  • MaxAcceleration — lower = heavier, more inertial feel; higher = snappier.
  • Avoidance (AvoidanceProbeDistance / AvoidanceStrength) — reactive steering around obstacles between waypoints; defaults are sane.

Everything else is documented in the tooltips on each variable — and the Blueprint Reference lists the key properties per blueprint at a glance.