StaticNavmesh and level streaming

Thank you

Dmitry, when can we expect a fix for this issue?

This is maintly a workflow issue. As we can still generate navmesh and submit a single loading level (by loading all 9 adjacent levels before generation), we’re not really blocked. However, our world and navmesh generation workflow will be definitely improved if we could just load and generate on a single level, so we’re looking forward to see it fixed in 4.20


This is planned to be fixed before 4.20 release. However I didn’t work on this issue yet. If it’s urgent for your project and you want to see fix sooner, we can prioritize it.


It’s fairly urgent for us. We currently only generate static nav mesh when we branch for milestone builds because of how long it takes (due to needing to load and save all the adjacent levels) and how easy it is to accidentally delete it. This is problematic because it has significant impact on both memory usage and performance. We are at the point in our project where we need to decide to spend our time fixing the issues or wait for fixes from you guys. So, it would be useful to have your work sooner rather than later so we can move forward.

So I looked at what happens. And I’m afraid I have bad news. Adjacent levels have to be loaded when generating navmesh.

Navmesh is a regular grid of tiles, each tile by default has size of 1000 units. On level borders editor needs all geometry to properly generate a tile that could overlap geometry from multiple levels. When adjacent level is not loaded, overlapping tiles will have only partial information. And that will cause navmesh connection issues when streaming.

Its a similar issue to static lighting build, where you need full information to properly build lighting across sub-levels.

I think only way to improve workflow is to add “Build Path in Current Level”. But user has to remember that he needs to load all adjacent levels.


Thanks for looking in to it. We’ve talked it over here and think that “Build Path in Current Level” would be a significant improvement for us. It’s not as much the loading of adjacent levels thats an issue for us, its the saving of them all (due to source control asset contention and time).

I have added ticket to implement this command: UE-60490. But this will not be in 4.20. Targeted for 4.21, but I could work on this soon, and share a changelist for integration