About NavMeshes

I’ve got a couple of questions about NavMeshes I hope someone with more experience can answer.

So, I am using a recast-NavMesh and my levels are highly procedural. Lots of props get placed randomly after the map was loaded, so the NavMesh has to be dynamic and adjust at runtime.

  1. Is it possible to make the NavMesh update as quickly as possible and freeze the simulation until it’s done, instead of having it update asynchronously in the background? Because after I placed random geometry all over the level, the NavMesh isn’t any good until it has updated and I would like this to happen before the player starts playing.

  2. Is there a way to serialize and deserialize NavMesh-data? I mean, since I can’t save a runtime-modified level or actor to file, I would have to manually save the data in some place and use it to initialize the NavMesh.

  3. I need my AI-pawns to have different pathfinding behavior. I just had a quick look at NavMesh modifying volumes and the possibilities seem rather limited. I guess an “obstacle” volume would be ok for me, but I need it to be relevant only to some pawns and not to others. Example: a fire elemental doesn’t mind stepping over burning hot surfaces, while other pawns will. So, can I use obstacles selectively here? Even better than an all-or-nothing type of obstacle would be a weighting/cost system, if there is one.

  4. Is there a way to make NavMeshes work with moving geometry? Think about a large moving platform that serves as some kind of bridge. When I placed a moving platform like that in my level, the NavMesh just constantly updated that area without ever producing something usable.

I know that’s a lot of questions :confused:
Would be really great to get some answers.

Anyone?..

What’s most important to me at the moment is if I can pause the simulation and invest all available resources into the updating of the NavMesh until it is finished.

And I’m also still wondering how things like a moving platform are possible in UE4 if this leads to NavMeshes updating indefinitely…