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 → 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 Mode – Continuous AABB, Grid Cells, or One Shot

  • Update Triggers – follow target & poll cadence (where applicable)

  • Continuous AABB – moving AABB “bubble”

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

  • One Shot – bake the entire scene once at startup

  • 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

  • Continuous AABB – moving bounding box around target.

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

  • One Shot – bake a single large navmesh covering the entire scene once at runtime.


One Shot

Use One Shot when you want a full navmesh built once at startup, without continuous or incremental updates.

Settings

  • Base Bounds Size (XYZ) – defines the full extents of the bake volume (should cover your whole map).

  • Auto Start – if true, begins baking automatically at runtime.

  • Trigger Mode

    • Manual: call BakerCoordinator.EnqueueBake() to start the one-shot bake.

    • Auto: bake starts immediately on Awake/Start.

  • Rebake Behavior

    • Default: no rebakes scheduled.

    • Optional: expose manual rebake events if the map changes dynamically.

Notes

  • Works best for large handcrafted maps where the navmesh doesn’t need to stream or follow a player.

  • Use OnBakeCompleted to synchronize agent spawning after the one-shot bake finishes.

  • Consider memory usage: the entire navmesh is generated in a single data set.


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 / Velocity Lead (m) – bias AABB in the motion direction.

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


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 baked for the window.

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

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


Concurrency & Throttling

  • Max Concurrent Bakes – upper bound for parallel jobs.

  • Min Seconds Between Bakes / Surface – per-surface throttle. In combined mode, applies globally per-agent.


Source Collection

  • Collect Geometry – Physics Colliders / Render Meshes.

  • Layer Mask – included layers.

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


Agent Types & Area Costs

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

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


(unchanged; applies only when Grid Cells + Combine Tiles = OFF)


Best Practices

  • One Shot for handcrafted maps where you want the navmesh built once at runtime.

  • Continuous AABB for compact maps or “bubble around player” setups.

  • Grid Cells 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 CPU budget.

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

Last updated