Static navmeshes use with data layers and world partition.

Hello!

I was hoping to get some input and options for dealing with large navigation changes we were hoping to be able to bake out a head of time. For example, if you wanted to do something similar to the valley of the ancient “dark” world where a level may have multiple states how would this best be handled in a WP world. For example, we may want an area to be in a different state and would like to be able to swap between that using data layers with a static navmesh so long as connections between the main nav is consistent.

One option it seems is have a data layer per nav configuration where we’d load all the relevant nav objects. Build the nav mesh and place both the volume and the recast nav data actor in the level. This seems to work fine when there are a reasonable amount of permutations, but does not scale.

We could use dynamic nav mesh and nav invokers, but then are paying the run time cost of generating and updating the nav mesh and will need to monitor what is dirtying it.

I was hoping there might be a “stitching” approach where if we build one primary nav mesh and have “islands” built in to their own data layer with nav links we might be able to have the best of both worlds. But It doesn’t look like the system expects multiple nav mesh actors and I am unclear on if nav links can be added dynamically in a static/modifiers only nav mesh configuration.

Any advice or recommendation would be appreciated.

[Attachment Removed]

This is something that the current engine does not support. The issue with data layers owning navigation data is that the data layers are not mutually exclusive and whichever data layer is loaded last will be the navigation tiles that are present for that area. The navigation data layer support is very rough and limited in its current form. There is not any planned work for this right now, but we do still keep it in our backlog.

Good news is that there was a pull request for data layers owning some navigation data submitted a while back. We have not committed the time to investigating it yet, but it may be useful for rolling your own solution or building from their work. It is an old PR so it was originally for 5.3 I believe. There may be some things that will need updated to match the latest in the engine. Here is a link to the PR on GitHub: Primitives and Datalayers can control which nav meshes they influence

-James

[Attachment Removed]