Nav Mesh and Streaming Levels

A way that did work for me “for now UE4.25”. My setup is using world composition with 100 tile streaming levels, that each consists of several sub levels for contents. I may have 4 streamed levels loaded at the same time and the nav-meshes need to fit into a persistent dummy nav-mesh. All nav-mesh are static and manually build.

  1. Place NavVolumes in streaming levels.
  2. Recast actors should be only in P-level. If you not have one, just add a new NavVolume in persistent level and then delete the same NavVolume.
  3. Set Recast actor “Runtime Generation” property set to “Static” to avoid stalling.
  4. Each NavVolume should be sized to cover geometry in own level, not the whole world. Use brush settings, not scale.
  5. At least one dummy NavVolume has to be in P-level covering the whole world, even if it does not have any geometry. This is important due to all streamed static NavVolumes will be put there.
  6. Enable Fixed Tile Pool Size, this is for level streams (increase value until covering area and multiply with max number of streamed simultaneous levels). I ended up with 12000*4=48000. This is important otherwise all streamed nav-meshes will not fit and your npc’s will not move in some areas. If you change this, rebuild all your nav-meshes.
  7. Disable automatic nav-mesh updates in the editor, build from Build->Build Paths menu (much faster then automatic).
  8. When you build a nav-mesh with sub levels, open that sub level and all it’s sub levels to visible. Be sure you close neighbor levels before build, otherwise build may affect neighbor NavVolume.
  9. Enable “Force Rebuild on Load”. This is important to fill the dummy NavVolume with the streamed nav-meshes at runtime. Rebuild is not the same as recalculate, it just gather streamed static nav-meshes into dummy NavVolume.

The workflow when you see a nav-mesh not working in a streaming level

  • Increase Fixed Tile Pool Size
  • Open streaming level and all it’s sub levels in editor
  • Rebuild nav-mesh with Navigation Build Paths
  • Save all
  • Close all levels
  • Deploy

Tip: Water plane mesh need “Can Ever Affect Navigation” disabled otherwise you will have nav-mesh on waterbed and water surface, that waste Fixed Tile Pool Size.

7 Likes