Skip to the content.

Migrating from Unity NavMesh

Two routes: the drop-in shim (minutes) or the native API (better results).

Route 1: the shim

NavMeshAgentCompat mirrors the everyday NavMeshAgent surface. In your movement scripts, swap the type:

// before
var agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
agent.SetDestination(target);

// after
var agent = GetComponent<Marchline.NavMeshAgentCompat>();
agent.SetDestination(target);

Supported: destination, SetDestination, isStopped, pathPending, hasPath, remainingDistance (straight-line approximation), ResetPath, Warp. Scene setup: delete your baked NavMesh and NavMeshAgent components, add one NavWorld (it scans obstacles itself — no baking), and put MarchlineAgent + NavMeshAgentCompat on each unit.

Not mirrored (use the native API instead): off-mesh links, area costs, NavMeshObstacle carving (use MarchlineObstacle — it is both simpler and live), agent radius/height per-agent shape (Marchline agents share a hard collision radius derived from cell size).

Route 2: native API

NavMesh concept Marchline equivalent
Baking a NavMesh None — NavWorld scans physics at Play, live-updates after
NavMeshAgent.SetDestination MarchlineAgent.MoveTo(worldPos)
Many agents, one target NavWorld.MoveGroup(...) — ONE shared flow field, any group size
NavMeshObstacle (carve) MarchlineObstacle — instant, moving-obstacle-aware
NavMesh.SamplePosition NavWorld.WorldToCell + your own walkability check via gizmo/RefreshRegion
Agent avoidance quality slider Built-in: separation + anticipatory steering + hard no-overlap constraint, always on
pathStatus MarchlineAgent.State (incl. an honest Unreachable)

What you gain: 10,000-agent scale, deterministic simulation (lockstep- capable), live world edits without re-baking, group arrival that doesn’t stack, formations. What you lose today: 3D navmesh surfaces (Marchline v1 is grid-based — ideal for RTS/TD/colony maps; sloped terrain works via the height-band scan, but true multi-storey interiors do not yet).