Recast Navmesh generation problem with overlapping sub-levels

In our game, we have all of our levels setup as sub-levels of a single main level so that we can pre-load and seamlessly switch between levels without loading times. We also have many of our sub-levels overlapping spatially, and this would be very painful to change at this point.

Now, our problem is no matter what we try, we seem to get artifacts in our navmesh. When trying to build separate static navmeshes in our sub-levels, firstly they don’t get registered. I’ve attempted to call NavigationSystem::RequestRegistration manually, but it seems the editor likes to destroy our nav mesh data when loaded in the persistent level.

So, when instead we try to turn on the dynamic features, and have a unified navmesh for all the levels, we get collision for non-visable levels affecting our navmesh as is pictured:

Here is a area of our level with an error in our navmesh:

Here is the same area with the level that is causing the navmesh to be built incorrectly being loaded.

This isn’t entirely consistent, and it seems that reloading various sublevels over time begins to create differen’t artifacts, even at time seeming to work for extended periods of time.

Is there anyway I can get just a simple navmesh of my sub-levels?

Thanks,
Indy

Hey Arelius,

Sorry for the delay.

Is your Nav Mesh Bounds Volume located in your persistent level? This is the recommend way to set up a level streaming setup that requires a Nav Mesh to be build rather than contain multiple volumes within the streaming levels.

Hello,

I am marking this topic as resolved for tracking purposes, as we have not heard from you in a few days. If this issue persists, feel free to respond to this thread. For any new issues, please create a new Answerhub thread.

Have a great day

It is definitely recommended that you keep the Nav Mesh in the persistent level. I’d try to tweak some of the Nav Mesh settings to see if you are able to get better results that way. If you don’t see any improvement, and you can provide me with a set of steps I can follow to reproduce the issue on my end, or provide a stripped-down test project, I’d be glad to take a look at that and see if this could be a bug.

Have a great day

Apologies, I went to work on other things, and didn’t get notifications. I’ll respond back to your other question.

It’d be a huge win for our game if we could get a per-scene nav mesh. But that doesn’t work at all. What you see here is with a shared mesh in the persistent level.

I’ll see if I can reproduce the error in a test project.

Thanks, feel free to reopen the thread with a comment once you have the project.

I’m unable yet to reproduce this in a smaller project, still working on it. In my main project, even though I just rebuilt “paths” and have “Runtime Generation” set to “Dynamic” under Navigatin Mesh in the project settings. I get the error “NAVMESH NEEDS TO BE REBUILT” after calling “Simple Move To Location” Does this suggest anything particularly weird I may be doing that I should investigate further?

I’m not sure what would cause that error, but make sure that you’ve properly saved all of your levels prior to testing, and I’d even recommend deleting and recreating your Nav Mesh Bounds Volume in your persistent level just so you can start with a clean slate, as it’s possible a setting was tweaked that could be causing this issue to occur.

Hi sean, i have this problem also
Plus setting dynamic navmesh , with or without invoke in actors, does not seem to generate navmesh in some areas where navmesh bounds volumes are present.

Whats best practice for a persistant,with circa 100 overlapping streaming levels. At varyating spatial heights, and over a large terrain. Is it to place many static navmesh bounds volumes in the persistant, show all levels, (all 100, painful) build nav,
Save all, then pack project? Even at 80,000 total nav tiles maybe