Recast graph, single mesh, and local avoidance

Hi again, and sorry to bother you almost every day :slight_smile:

I got the Pro version and now trying to use the features it offers, just need some recommendations for few questions:

  1. I have used my manually generated navmesh, as a base for recast graph. Is there a way to generate accurate nav meshes in the flow where a all terrain/world is exported as single mesh? I heard for mobile game its a good optimization to export all world as single mesh to reduce drawcalls, but thus its limiting me to set specific layers and probably recast will generate a graph on all surfaces.
    So i manually created a navmesh and used it for recast generation, here are the results:

In general it worked, but I had to tweak the settings to very low variables, so it shows me some warning. Is this a problem? (In unity editor it generates quickly enough) Without this tweak navmesh is very narrow.

  1. Another question is about local avoidance. I tried to apply RVO controller to agent, and RVO navmesh and RVO simulator to a A* gameobject with Pathfinder script.
    It worked, and units now try to avoid each other, however they dont stop if they cant reach the path (because of other units already standing there) and running around.
    I have “agent.endReachedDistance = stoppingDistance;”, but it doesnt help if there are more units in the destination point. Do I have to custom code logic so when a destination point is set, that makes some kind of a grid to align units to it and not send them into the original point or is there less hacky way?

Thank you


  1. If you have a manually generated navmesh, can’t you use a navmesh graph instead of a recast graph then? A recast graph is primarily used when you don’t have the resources or option lto generate a navmesh manually.

  2. The beta version has improved support for this. There’s a new option called “Stop when destination is crowded” which will make the agents stop.
    However, if you are moving groups of agents, I still recommend that you give them indivudual targets to make the group movement better. This function can for example be used for calculating targets for group movement: PathUtilities - A* Pathfinding Project