NavMeshBakeProfile

Runtime Navmesh Baker — Bake Profile

The Bake Profile (ScriptableObject) configures how the runtime baker chooses bounds, collects sources, throttles work, and stitches seams. Assign a profile to your BakerCoordinator / NavMeshBakerService to control runtime baking.

Create one via: Assets → Create → Runtime Navmesh Baker → Create Bake Profile

What profiles are good for

  • Keep multiple configurations (e.g., Open World, Dungeon, Arena).

  • Tune behavior without changing code.

  • Share consistent settings across scenes.

Overview

  • Bake ModeContinuousAABB or GridCells

  • Update Triggers – follow target & poll cadence

  • Continuous AABB – moving AABB “bubble”

  • Grid Cells (Window) – fixed-size cell window

  • Motion Gating – optional speed gates

  • Concurrency & Throttling – job limits

  • Source Collection – geometry/layers/default area

  • Agent Types & Area Costs – per-area traversal

  • Seam Links – optional links across tile edges


Inspector Reference

Mode

  • Bake Mode

    • ContinuousAABB – moving bounding box around target.

    • GridCells – rings of fixed cells around target (3×3, 5×5, …).

  • Combine Tiles If true, bake one continuous NavMesh per agent over the combined window (recommended). This eliminates seams and generally removes the need for seam links.

Center & Triggers

  • Follow Target – poll the assigned center target and enqueue bakes automatically.

  • Poll Rate (s) – how often to check the target’s position/velocity.

Continuous AABB

  • Move Threshold (m) – re-bake after the center moved this far.

  • Base Bounds Size (XYZ) – AABB size around the center.

  • Moving Rebake Interval (s) – minimal time between moving bakes.

  • Use Velocity Lead – bias AABB in the motion direction.

  • Velocity Lead (m) – how far to lead the AABB.

  • Edge Rebake Margin (m) – re-bake if center nears the edge of last AABB.

Motion Gating (Optional)

  • Max Bake Speed (m/s) – skip baking above this speed (0 = disabled).

  • Settle Seconds – time to remain under speed before baking resumes.

Grid Cells (Window)

  • Cell Size XZ (m) – cell dimensions on X/Z.

  • Cell Height (m) – vertical extent of each cell.

  • Cell Rings – rings around current cell (0 = current; 1 = 3×3; 2 = 5×5).

  • Cell Rebake Interval (s) – minimal time between cell updates.

  • Cell Hysteresis (0–0.9) – “stickiness” to avoid thrashing near borders.

  • Window Y Slab Height (m) – vertical slab used when baking the window.

  • Window Overlap Padding (m) – extra XZ padding for polygon overlap.

  • Quantize Window To Voxel – align window to voxel grid to reduce hairline cracks across updates.

Concurrency & Throttling

  • Max Concurrent Bakes – upper bound for parallel jobs.

  • Min Seconds Between Bakes / Surface – per (surface, agent) throttle; in combined mode this acts per-agent globally.

Source Collection

  • Collect Geometry – Physics Colliders / Render Meshes.

  • Layer Mask – included layers for collection.

  • Default Area – fallback NavMesh area index for collected sources.

Agent Types & Area Costs

  • Agent Type IDs – explicit agent types to bake (leave empty to use each surface’s agent type).

  • Area Costs [0..31] – set per-area traversal costs (-1 leaves the area unchanged).


Purpose When baking grid cells (i.e., not one continuous combined mesh), adjacent cells may have tiny gaps or non-overlapping polygons along shared borders. Seam links place short NavMeshLinks across those borders to ensure agents can cross cleanly.

When to use

  • GridCells bake mode.

  • Combine Tiles is off (i.e., multiple tiles instead of a single combined mesh).

  • Worlds where agents frequently traverse cell borders and you want deterministic crossing without relying on polygon overlap alone.

When you don’t need them

  • Combine Tiles = ON: one continuous mesh per agent has no seams.

  • ContinuousAABB where the combined window bake yields a continuous mesh (no per-cell seams).

Settings

  • Seam Links Enabled – master switch to generate links after bakes.

  • Step (m) – spacing along a shared border where link samples are attempted.

  • Gap (half, m) – half-width of the span across the seam; total link length ≈ 2 × gap.

  • Y Tolerance (m) – allowed vertical delta between neighboring tiles to still generate links (treat as coplanar).

  • Face Epsilon (m) – tolerance for “touching” faces when detecting shared edges.

  • Link Width (m) – link radius; typically close to agent radius/diameter.

  • Area – NavMesh area index applied to generated links.

  • Cost Modifier – set to -1 to keep engine default.

Practical tips

  • Prefer Combine Tiles where possible for best quality.

  • If you need discrete tiles (streaming/grids), enable seam links and set:

    • Step: 1–2 m for dense cross-seams; 2–4 m for sparser worlds.

    • Gap: small (0.05–0.15 m) is usually enough to bridge slivers.

    • Y Tolerance: keep tight (≤ 0.05 m) to avoid linking mismatched floors.

    • Face Epsilon: small (≈ 0.02–0.05 m) to prevent false positives.


Best Practices

  • ContinuousAABB for compact maps / simple “bubble around player”.

  • GridCells for streaming / procedural worlds; add Seam Links if not combining tiles.

  • Keep pollRateSeconds between 0.1–0.25 s for responsive updates without spikes.

  • Cap maxConcurrentBakes to match your CPU budget.

  • Use areaCosts to nudge pathing (roads cheaper, hazards more expensive).

Last updated