Static NavMeshes and Level Streaming


I wanted to ask what the current state of streaming static NavMeshes from sublevels is.

To me it seems that right now, I only have the following options:

  • Put the NavMeshBounds in the Persistent Level and have the entire NavMesh always in memory, even for unloaded levels. With a large world, that’s a lot of wasted memory.
  • Set the NavMesh to Dynamic Mode, rebuilding it from scratch at runtime, whenever a level is loaded/unloaded. That’s a lot of runtime overhead. Also, while the NavMesh is rebuilding, I can’t query it reliably.

Is there anything else I can do? Something that lets me dynamically “stitch” together NavMeshes from different sublevels, or similar stuff? I tried putting the NavMeshBounds in the sublevels and hoped it might create a separate NavMesh for each level, but that didn’t seem to work.

Any response is appreciated, even if it’s just “there’s currently no way to stream static NavMeshes”.


Static NavMesh does support streaming. You will need to place at least one NavMeshBounds in Persistent Level and other volumes in sub-levels. Volumes in sub-levels will cut part of navmesh and save that part in sub-level. At runtime when sub-level is loaded/unloaded it will dynamically attach/detach navmesh part to a main navmesh in P-level.
NavMeshBounds in P-level is required to let navigation system know that it should not delete main navmesh actor in P-Level even when all sub-levels are unloaded.

1 Like

@ddvlost anything else need to be done to achieve static navmesh streaming?

I did everything as you mentioned plus:

  • Fixed tile pool size: True,
  • Force Rebuild on load: True,
  • Runtime Generation: Static,

And it won’t load nav mesh data from sublevels - it’s leaving data from persistent.

Here’s great example on how this isn’t working right now using content example: How to work with NavMesh and big Landscapes? - Content Creation - Unreal Engine Forums

You’re totally right, this still doesn’t work. Have you found a workaround?? I see the only solution is dynamic navmesh, but I don’t want to waste performance

Is it possible make p level static navmesh make current streaming level dynamic and save unload level navmesh static

Follow my answer without dynamics and automatics.