Best practices for Open World navmeshing and AI?

Hello,

I’m researching the creation of open world games in Unity and one thing I know for sure is that the world will have to be divided into scenes and streamed in when near the player. That’s all perfect and easy to do for the player itself…

However, When it comes to AI that live in this open world that go about their daily lives… how do we handle that? We can’t stream in the scenes and assets around them.

Can the navmesh for the entire world stay loaded into memory so that NPCs can walk from one side of the map to the other without the terrain or scene around them being loaded? It would seem all my game would need to care about is the AI’s transform/position and when the player gets near that AI, the artwork for it can be loaded.

I guess what I’m asking about relates to world simulation and having AI constantly move around the world no matter if the player is around to see them. Is that possible and how could it be done performantly in Unity?

I wonder if you could do a Navmesh Lerp function that could handle this, that way it’s a simple check on time to work out where characters are at any point in time.

It could work with or alongside Navmesh LOD ing, a system that scales the frequency and range of checks to ensure only AI near players need updating or very important in game events interactions.

This GDC video on death stranding has a section (think its in the last part though the whole video is awesome) that covers this problem.

1 Like