Limited by the RVO agent design

I seem to be limited in using RVO based on how the interface is designed. In the interface, I tell the RVO agent my maximum speed, my desired velocity, and it tells me where I should be from InterpolatedPosition. However, the characters in my game have momentum so the maximum speed isn’t applicable most of the time. They need to slow to a stop, speed up to start, and face the direction they want to move before they can move that direction. Even if my character is moving at maximum speed right now, they are limited in how fast they can change directions without having to slow down first. Similarly, my characters cannot simply backup at any time - they need to rotate to the direction they want to walk in first.

How do you recommend I handle this?

Hi

The RVO algorithm unfortunately requires agents to be able to change their velocity instantaneously and be able to move in all directions. Local avoidance algorithms for agents that have constraints on in which direction they can move are a lot trickier to handle and are unfortunately not handled by this library.

In the beta version (see download page) there have been some larger changes to the RVO system. In that version you can have more control over the actual movement. So your movement script can tell the RVOController where it wants to move and the RVOController will calculate a velocity, however what velocity the agent actually moves with is up to the movement script so you could constrain it based on the direction and momentum constraints that you have. This will obviously lead to a lower local avoidance quality, but usually it can handle those situations reasonably well.