Which Bake Mode should I Choose?
+--------------------------------------------------+
| Continuous AABB (Bubble) |
+--------------------------------------------------+
Player / Camera (Center Target) moves
──────────────────────────────────────────────
[Dynamic Surface A] [Dynamic Surface B]
(terrain mesh) (building mesh)
-> Coordinator tracks target position
-> Service collects geometry from all
registered Dynamic Surfaces inside the
moving AABB
-> Only those surfaces overlapping the bubble
are baked
Result: Small "bubble" navmesh moves around
with the player.
+--------------------------------------------------+
| Grid Cells (Streaming) |
+--------------------------------------------------+
World divided into fixed cells (e.g. 32x32)
──────────────────────────────────────────────
[Dynamic Surface X] [Dynamic Surface Y]
(chunk prefab) (spawned tile)
-> Coordinator determines which cells are
inside the active window (e.g. 3x3)
-> Service collects geometry only from
Dynamic Surfaces overlapping those cells
-> Surfaces auto-register/unregister as tiles
are spawned/despawned
Result: Navmesh streams in/out around player.
+--------------------------------------------------+
| One Shot (Full Scene) |
+--------------------------------------------------+
Entire level baked once at startup or on-demand
──────────────────────────────────────────────
[Dynamic Surface 1] [Dynamic Surface 2] [3..N]
-> Coordinator triggers a single bake across
all registered Dynamic Surfaces
-> Surfaces remain registered but no further
automatic bakes occur
-> Manual MarkDirty() still possible
Result: One large navmesh covering the whole map.
Key Takeaways
Continuous AABB → Only surfaces intersecting the moving bounding box contribute.
Grid Cells → Only surfaces intersecting active cells contribute; good for procgen/streaming.
One Shot → All surfaces contribute once at startup; no continuous updates.
When to Use Which Mode
Continuous AABB
Small/medium handcrafted maps where you just need navigation near the player (e.g. dungeons, arenas, compact open worlds).
Keeps a moving bounding box (“bubble”) centered on a target (player/camera). Only surfaces inside the box are baked.
Simple & efficient, but navmesh coverage is limited to the bubble. AI outside must wait until in range.
Grid Cells
Large, procedural, or streaming environments (e.g. tile-based procgen, open terrain with chunks).
Divides the world into cells and keeps a configurable window (e.g. 3×3 cells) around the target baked.
Great for infinite/procedural worlds. More setup complexity. May need Seam Links if tiles don’t overlap.
One Shot
Large handcrafted maps where you want one complete navmesh built at runtime (e.g. static open-world levels).
Bakes all registered surfaces once at startup or on-demand. No automatic rebakes unless manually triggered.
Simple setup, guaranteed full coverage. Higher upfront bake cost and memory usage.
Quick Tips
Start with Continuous AABB if you’re prototyping — minimal setup, immediate results.
Switch to Grid Cells if your world is larger than a single navmesh bubble or streams dynamically.
Use One Shot if your map is handcrafted, static, and too large to pre-bake in editor.
Last updated