Player collisions and RVO Local Avoidance

I am successfully utilizing A*Pathfinding in Unity 4. Currently I have 2 Players and 2 NPCs controlled by the new Unity 4 Mecanim Animator. Basically this just means I have Rigid body components on the Players/NPCs and no Character Controllers. This allows the Animator variables to be used to set the Players/NPCs transforms and apply forces.

Questions:
-How do I get the 4 participants in my setup to avoid each other dynamically? Do we simply rely on colliders to have Players/NPCs bump into one another and will this always resolve itself? Dynamic Obstacles and Local Avoidance do not seem applicable here.

-When do you consider using RVO Local Avoidance? Is it 2+, 10+, 100+, or 1000+ players/NPCs? How does RVO Local Avoidance and a Player with a seeker component work together?

-There are many setups without Character Controllers, which will become normal in Unity 4. Will you be altering RVO Local Avoidance to work with the transform directly before 3.2 release?

Regards,
aidesigner

Hi

-How do I get the 4 participants in my setup to avoid each other dynamically? Do we simply rely on colliders to have Players/NPCs bump into one another and will this always resolve itself? Dynamic Obstacles and Local Avoidance do not seem applicable here.
Local avoidance can be used there. The npcs could of course use local avoidance. I am not sure how the players are controlled, but depending on the game it could work to use the direction the player wants to move as the desired velocity for the local avoidance. This might not be desired since that will for example enable two AIs to push the player out of the way. But again, that depends on the game.

The local avoidance has been completely rewritten for the 3.2 release. It is now based on Transform.Translate and a raycast for height positioning. This is good for performance (CharacterControllers are slooow). However the system does not require any specific unity component, it is written as independently of unity as possible, but a few wrapper classes are present for easier integration. For example a RVOController, that was the class which used Transform.Translate mentioned above.

Without using a seeker and a unity gameobject for each agent, I can get it up to 5000 agents running at 40 fps, that is however about as lightweight as you can get. When using a gameObject, seeker and pathfinding for each agent, I can get up to 1000 agents running at an acceptable fps.

Thanks for your response. My players/NPCs are rigidbodies and use A*Pathfinding information to manipulate their transform. If I do nothing I assume if a seeker player on a path walks into another bigger stationary player he may get stuck/blocked. Therefore it seems any game with more than 1 player/npcs must have Local avoidance. So why don’t most users find RVO local avoidance a necessity rather than a luxury?

Because in many games, those kinds of situations occur relatively rarely and when they occur, they are often resolved quite quickly albeit not that good looking. Often they can also avoid the problem by e.g making enemies stop x meters before they reach the player or enabling units to move through each other.

Thanks for your response, that really clears things up.