Does the project support units in different sizes and rotation speed?

Hi there, I have multiple units in different sizes and speed, can I use it with the path finding and collision avoidance?
Also do you use rvo or orca version? and can I use the project with units that has max rotation speed and maximum acceleration force? because rvo/orca by default assume that the unit has infinite acceleration.
Anyway I want to use this project for starcraft like game I have, do you have good configuration/suggestions for it?
I saw that there is a topic about it in the forum but it seems very old…
Also Can I edit the source code if I need to?

Thank you!

Hey tkhtx1,

I haven’t heard of orca, but A* has rvo in the pro version I think.

Units(RVOController) have a radius and height, way back when I used them last they had rotationSpeed but it seems that it’s not used now, but still available in LegacyRVOController.

You can download the free version and give it a spin to see the different graph types, there are a bunch of example scenes.
it’s hard to recommend something without more spec, but a recast graph and rvo works well for a rts.

http://gamma.cs.unc.edu/ORCA/ its much better than RVO both in performance and accuracy
also it can be extended with push force to allow units to clear the way for other units, and could easily support
rotation speed, do you have a github project for this package, I already implemented ORCA with some optimizations and rotation speed support (BTW ORCA itself is protected, but if you change it its ok), it can also be tweaked to perform better.
I will gladly help…

Hi

The package originally used ORCA many years ago, however I had to remove that due to licensing issues (it was not using the Apache license at that time, but something much more restrictive). Currently the package uses a custom gradient descent based RVO algorithm which is slightly slower than ORCA but still decent enough for hundreds and in lightweight scenarios even thousands of agents.

In Starcraft 2 they actually don’t use ORCA or RVO at all but a combination of boids and some local steering.
There is a nice presentation about it here: https://gdcvault.com/play/1014514/AI-Navigation-It-s-Not

The current algorithm is not able to account for a maximum rotation speed or maximum acceleration.

As I said If you change the algorithm of ORCA to do something different but using some of the ideas there you won’t have any legal issues, and it will be faster, also why do you use gradient decent? this is good convex problems, or when you want to find single solution but not optimal, maybe Newton Raphson will be better but you can solve the algorithm for none linear problems that support max speed and max acceleration differently, it will also come with all kind of side effects like units will slow down to allow other units to pass, and the performance will remain very fast supporting thousands of agents.

Do you have a github project for this package?

Hi

Gradient descent works reasonably well as it will yield similar results to ORCA in that it chooses a specific side of the VO to use, which is not necessarily the most optimal one from just looking at the objective function.

I do not have a public github project for this package as there is also a paid pro version and I cannot really post the source publicly for that.