Navmesh Dynamic Runtime generation Optimization

We’ve been developing a single-player pirate adventure game for over a year now and are running into issues when attempting to generate navmesh dynamically at runtime. Here are some screenshots of my settings and how the setup looks in editor.

The reason we’re using dynamic nav mesh is so that when boats move, the nav mesh on deck will update so crew members can navigate on deck. Therefore, I placed invokers on ships with a spawn radius that exactly covers the area of the deck and a despawn radius equal to that as well. In order to spawn a nav mesh on the islands, we’re using a navigation invoker with a radius of 8000 for spawning nav tiles and 40000 for despawning them on the player character.

I also have the nav mesh bounds volume split up into a 20x20 grid instead of one giant one.

I’ve extensively researched the internet for this specific topic of dynamic nav mesh generation and optimization but am still running into hitches during gameplay due to the nav mesh (used CPU profiling to identify issue as it purges dirty tiles and updates active ones).

If there are no other optimizations I can make to the current system we’re using, I was wondering if there’s any way to combine static nav mesh generation (for area covering islands) with dynamic nav mesh generation (using nav invokers on ships) as to save a maximum of performance cost associated with navmesh generation.

I know this got repetitive but I wanted to be as clear as possible.
Thanks in advance for any help.

2 Likes