Skip to the content.

Migrating from A* Pathfinding Project

Marchline and A* Pathfinding Project (APP) overlap on “agents find paths”, but they are built around different centers of gravity: APP around per-agent path queries over rich graph types; Marchline around deterministic, massively shared planning for crowds. Migrate when your game is armies/crowds/RTS-scale; stay on APP if you depend on 3D recast navmeshes or point graphs.

Concept map

APP Marchline
AstarPath (singleton, graph owner) NavWorld
Grid Graph NavWorld grid (scanned from physics; no inspector graph setup)
Recast/Navmesh/Point/Hex graphs Not in v1 — grid only
Seeker + AIPath/RichAI/AILerp MarchlineAgent (one component; no seeker/movement split)
Seeker.StartPath callback MoveTo + poll State (plans are delivered by the budgeted planner; agents keep their old plan meanwhile)
Path pooling (“don’t hold p.vectorPath”) Not your problem — no path objects cross the API
GraphUpdateObject NavWorld.RefreshRegion(bounds) or just MarchlineObstacle
NavmeshCut MarchlineObstacle (live, physics-driven)
Graph scanning (AstarPath.Scan) Automatic at Play + live updates; RefreshAll() exists but is rarely needed
RVO (RVOSimulator + RVOController) Built-in: separation + anticipatory steering + hard collision, no extra components
Multithreading setting Always on internally (deterministic reduction); backgroundPlanning moves the whole sim off the main thread
Penalties/tags per node Not in v1 (uniform costs)

Typical port

APP:

seeker.StartPath(transform.position, target, OnPathComplete);
void OnPathComplete(Path p) { if (!p.error) ai.destination = target; }

Marchline:

GetComponent<MarchlineAgent>().MoveTo(target);
// later, if you care:
if (agent.State == AgentState.Unreachable) { /* honest failure */ }

Group movement — the place APP projects accumulate custom code — becomes one call: NavWorld.MoveGroup(units, point) (add keepFormation: true for shape-preserving moves). Delete your custom flow-field/formation/time-slicing scaffolding; that scaffolding is the product.

What Marchline does NOT replace (v1)

If your project depends on those, a full migration is premature — but the deterministic C ABI still makes Marchline usable server-side alongside an APP client.