I managed to somewhat get AIPath + Local avoidance working great between agents. Problem I have ran into now is that when I have several agents (4 in this case) that have to go around a wall to their destination, they tend to push/avoid each other and end up either clipping partly or going straight through walls. I have illustrated my problem in the following video:
I found this in the forums which I think may solve my issue: http://arongranberg.com/vanillaforums/discussion/comment/612/#Comment_612
(above did not seem to work)
I’ve been poking around in the RVOController source code, I’ve noticed that there is a hidden properties “wallAvoidFalloff” and “wallAvoidForce”. So I took a look at where they are used and found them in the Update() function. Within that it is referencing a propertly “rvoAgent.NeighbourObstacles”, it’s “get” accessor is always returning “null”… will there be a version where we actually have a working a* path simulator with local avoidance? I spent 100$ on this which so many free versions achieve basically the same thing as this project, minus the “half-working” avoidance which is why I bought this library in the first place. Do I need to be more patient until this happens?
Until the local avoidance is made more robust, my AI specifically calls rvoController.Move(Vector3.zero); whenever my characters shouldn’t be moving (check is performed 5 times per second). This dramatically reduced the “drifting” that the controller currently exhibits, which included going through walls and not stopping when within ranged or melee distance of the player. My solution is probably very hacky, so take it with a grain of salt.
Oh, there’s actually an easier fix for this I think. When you configure your Graph, set the character radius to be bigger. I had a similar issue and that worked.
In my case, the local avoidance will actually push the actors off of the graph. Also, my character radius is as large as I can make it without losing nodes in narrow areas.
Yeah, the obstacles part isn’t working right now. But I’ve been able to fix the exact same issue without hacking the local avoidance.
If you want to export a demonstration of what is going wrong, I can take a quick look. I’m just messing around with my own issue right now and it isn’t going anywhere.
Well it used to be the same issue others are having, which is that the rvoController doesn’t stay stopped if it is bumped by other agents, and can also push other agents out of the way, including off the graph. I solved it in my case simply by telling the rvoController to stop moving. Specifically, my enemyAI checks its state 5 times per second, and if the agent is supposed to be stopped, it sends the Vector3.zero to the rvoController. Not sure if there is another way to tell the controller to not respond to being bumped, short of modifying the rvoController code. So I have my solution for now, until Aron returns and gives local avoidance the love and attention it needs. I would suggest that robust local avoidance is probably the most important feature to work on.
Yeah, I’m not sure how long you’ve been around. But Aron has been working really hard to make sure it works at all.
Local avoidance was in great shape till the university that made the original algorithm decided that they wanted to charge insane amounts of money for it. So Aron had to go back and rebuild it. I’m sure further support for it is on the way.
Yeah I’ve been following that progress. Sad really, since anything funded with public money (defense dept) should really be public domain in my opinion.