Like others, I’m trying to implement basic RVO functionality in a Realtime Tactics game that involves localspace movement. To support this, I’ve been trying to upgrade from AIPath to RichAI, and to include an RVOcontroller instead of a Character Controller.
I’ve read and taken the suggestion that the OnPathComplete() callback needs a command to set the rvoController.Move vector to zero. Unfortunately, this has only solved part of the problem. The Agent still tends to overshoot the Target position, even when the destination reached it set to a generous number.
This problem becomes worse as the Acceleration value is lowered in the RichAI script. It looks like the “Rotation Speed” property of the RichAI script is being influenced by the base acceleration value.
When trying to use these components out-of-the-box, it means choosing between very jerky, unappealing movement, or a Controller that can’t turn fast enough to actually steer itself to the target location. Instead, the Agent will lazily “orbit” the target position and slowdown over time.
Is there a working example of a RichAI using and rvoController for reference? Is there some setting I’m missing that could be causing this? (I’ve attached Screenshots of the behavior I’m seeing in a test scene, along with the inspector window for the agent.)
I am not surprised that it starts to overshoot if the acceleration is too low. It simply doesn’t have enough acceleration to stop. You can try increasing the slowdown time, that might possible help a bit.
Check the settings for the RVOSimulator. To reduce latency, disable double buffering and increase the desired fps.
Hm. No I don’t think there are any example scenes which use the RichAI component and the RVOController at the same time unfortunately.
@aron i have noticed using RichAI and RVO that they always overshoot the target, i don’t fully understand why this would be the case given that, even when the target has no obstacles near by to avoid, it should not have any direct relationship to RVO component. Disabling the RVO component and they reach the target perfectly everytime.
I believe this is surely a bug because it doesn’t make much sense for why they would overshoot.
Indeed, they do.
The reason is that the RVO system just uses a desired velocity, it doesn’t know that it should stop. The RVO system also delays movement input until the next time a simulation step happens (earliest the next frame) so it is hard for the RichAI component to compensate.
Good news is that I have been improving this during the last week. The RichAI component now works much better with RVO and various tweaks have been done to the general movement of the RichAI script.