RVO Avoidance Radius question

I’ve been playing with changing the radius variable for a couple of my characters. I have one character in particular, who should always walk far away from everyone else. What I can’t seem to figure out, is how it’s decided what character will try to avoid the other. Let’s say I have two characters, A and B. A should be the one “avoiding” and B should get to walk his normal path. However, it doesn’t matter if I increase the radius on A, B will get pushed around. If I increase the radius on B, B is still the one who gets pushed around. B is walking faster than A, does that matter?

I’m finding the purpose of many of the variables a little difficult to understand as there are very few comments in the RVOController code.


Currently there is no way to specify avoidance priorities. I have tried, but I haven’t been able to get it working well so far.

[EDIT] Ok, I have been slightly stupid. Even though I have written the system, I don’t think I ever tested having different Agent Time Horizon values for the agents. It turns out, that variable controls agent priority superbly. Setting one agent’s Agent Time Horizon to 0.5 and another groups’ Agent Time Horizon to 2 made it really easy for the first agent to move through the group of agents compared to if it had the same Agent Time Horizon value. I really should have thought of testing that before (if this forum had smileys this would have been a facepalm smiley).

Regarding the variables. I should be referencing it in the RVOController comments, but it seems I have forgot. The IAgent class which the RVOController is a wrapper for really has some documentation on most of the variables.