This question was created in reference to: [World Partition Nav mesh and dynamic data [Content removed]
Hello,
Currently I have been experimenting a little with world partitioned nav mesh. I followed the information in https://dev.epicgames.com/documentation/en-us/unreal-engine/world-partitioned-navigation-mesh and that seems to be working fine. However when I try to combine world partition nav mesh with dynamic nav mesh build (specifically Dynamic Modifiers Only) and with runtime Data layers, the questions keep popping up.
Using the Dynamic Modifiers Only mode seems to be a good fit for our project. We aim to create a larger world where most of the geometry (at least the geometry that influences navigation mesh) will be static.
Only at selected places there will be changes during gameplay that require different nav mesh. Examples of these changes:
* The story of the game requires that a house gets destroyed or rebuilt. We aim to do the change by switching the state of runtime data layers - unloading one state of the house and activating the other state
* The game will spawn a random encounter for the player that contains some additional geometry. The geometry will most likely be prepared in advance and placed in a data layer. Activating the data layer will be then part of spawning the encounter
I want to confirm that you are aware of behavior described in repro or if there are some changes planned? For example ignoring the objects from data layers loaded in the editor when preparing the static (base) nav mesh when using Build Paths?
Naturally for large level we are planning to build nav mesh on a builder using commandlet from https://dev.epicgames.com/documentation/en-us/unreal-engine/world-partition-builder-commandlet-reference?application_version=5.6 and then distribute the results among users. In this workflow, all the data layers must NOT be initially loaded in the editor to achieve the expected nav mesh? From my experiments it would appear so. With the layer initially loaded in the editor I get the same results when using the commandlet as with using the Build Paths menu item.
I have noticed that even after a small change in level (e.g. moving 1 static mesh actor within boundaries of a single nav mesh tile), there are significant changes among the Nav Data Chunk Actors. It would appear that all of the Chunk Actors are removed and new ones are created. We were hoping that after running the nav mesh build on a builder machine, the result will be submitted into VCS and the distribution to the users would be done simply by Sync in UGS. Nevertheless, if every nav mesh build completely removes and creates the Nav Data Chunk Actors, this approach may accumulate a lot of data in VCS history (over the full project development). Do you have any suggestions on how to approach Nav mesh build and distribution during development?
Also, do you have any suggestions regarding the number and size of nav modifiers? I would expect that instead of attaching a Nav modifier component to each actor within a data layer, it is more efficient to create 1 Nav modifier per data layer (or at least for larger chunks within the data layer).
The last question (maybe it should have been the first), what is the difference between Dynamic and Dynamic Modifiers Only modes with world partition nav mesh? In referenced issues there is:
WP dynamic navmesh is a bit different than the non-WP dynamic navmesh. WP dynamic navmesh contains a base navmesh for the level that is loaded similar to static navmesh to prevent needing to build large swathes of the navmesh as areas are loaded/streamed
This leaves me wondering what are the benefits of Dynamic Modifiers Only mode and if they outweigh the cost of dealing with Nav modifiers?
Thanks,
Matej Marko