Help with RVO implementation

I realize this is probably too general of a request but I figured there was no harm in asking. :smile:

I came across this package recently called Local Avoidance and in all of their videos it shows off the exact functionality I’m trying to achieve in terms of moving groups of agents around other agents and encircling specific agents.

I am certain that most, if not all, of this is possible with this package’s RVO but I’ve been struggling with it for a long, long time. Considering I already bought the pro version of A*Pathfinding, I really don’t want to purchase a new package so I was wondering if you could create a tutorial or just point me in a very specific direction to achieve this kind of functionality.

I’ve been knee-deep in the local avoidance docs and it’s really brought to light that I’m probably not a strong enough developer to figure all of this out on my own. If anyone has bandwidth to help me with this, I’d be happy to provide more context. To be clear, I’m not asking someone else to do the work for me, I would just love some help thinking through implementation.


I’m not sure what algorithm that package uses. From the video it doesn’t seem to be RVO, but perhaps some kind of boids implementation. I especially think that because they reference zerg, and in Starcraft 2 they use boids + a lot of tricks to get that behavior.
You may want to check out the beta version. The behavior when encircling an object (e.g. because the units that get close enough stop and become locked) has been improved in that version.
However, it may be that the other asset has a local avoidance behavior closer to what you want. Pick the best tool for the job.

Thanks for looking into this! I will check out the beta—are there separate docs for changes in the beta version?

Also, I poked around some more with that package I linked above and it turns out their entire thing is based around one method that determines “sonar avoidance” which essentially creates a circle around your agent and scans for the best path when it encounters obstacles (I think). Here’s their docs if you’re interested, it’s a short read.

I was also talking to some folks on your discord and someone brought up the concept of “Cooperative Pathfinding” when it comes to RVO agents navigating around other RVO agents. The solution they came up with was tapping into the RVOController and updating the agent’s path based on CalculateMovementDelta. I guess my question is—is there are more native way to achieve this kind of functionality or do is the idea that you provide us the tools and we build out custom solutions?