Units going through blocked nodes using RVO

In my game units are chasing the player, for this i am using Grid-Graph with RVO for local avoidance.The grid nodes are periodically updated(as in procedural examples) based on player distance from graph center.

But the RVO units give high priority to local avoidance,straying on blocked nodes.This causes them to collide with blocks/pass through the blocks which gives bad results.Can you please suggest how i can resolve this issue.

Also is there any post-filter for RVO controller to stabilize the units rotation as they tend to shake when trying to avoid other RVO units.



If you are using the AIPath script you can enable the “Constraint To Inside Graph” option. This will make sure that they do not move outside the graph. It will also properly communicate to the RVO system when an agent is pressed against a wall.

You can also use the RVONavmesh component. However I would not recommend that in this case since has quite a large overhead when the graph is updated.

Currently there is no better rotation code to filter out that noise. You can disable the built-in rotation and apply rotation yourself however. See https://arongranberg.com/astar/docs/aibase.html#updateRotation

Thanks for the suggestion Aron.

On implementing this solution now the units are jumping around/trying to snap on the nodes in the GridGraph.When AIBase(FinalizePosition()) gives call to AIPath(ClampToNavmesh()) the units start snapping to random nodes even without RVO Controller script.

This Issue can be reproduced in the Procedural example, by setting a AIBot to chase the player controlled Bot-Character via destination-setter script.