I need a solution for a graph that is updating maybe a few times a second ( removing and adding small obstacles) and will have 5 - 20 agents moving about. I don’t want the agents getting stuck bumping into each other so I think I need RVO. I also need to be able to constantly update the graph as the agents add and remove obstacles. From looking at the documentation a grid graph is needed for dynamic updates to the graph but RVO is not available. Is this correct? Think tower defense style where objects can be added and removed to trap agents.
Hi
RVO obstacle avoidance for grid graphs is not currently possible. However there is a community made support for it if you search this forum. The problem would be that you need graph updates a few times a second, an rvo obstacle for a grid graph updating that often would have to use some other custom written support for it since it would otherwise require rebuilding the obstacles every time (for the whole graph). Hm… but that does of course depend on the size of the grid graph. How large do you need it to be?
My world is about 64 x 64 tiles in size. I should mention only a few tiles will change ever second. If I cannot use RVO on the Grid graph can I Dynamically update a Navmesh?
RVO obstacle avoidance for grid graphs is not currently possible. However there is a community made support for it if you search this forum.Here is the script that create static RVO obstacle based on a GridGraph. http://arongranberg.com/vanillaforums/discussion/217/rvonavmesh-equivalent-for-gridgraph-updated-code-inside
Like Aron said, updating the RVO obstacles during the game is actually extremely slow, even for a single obstacle. It makes me remember that I need to discuss this subject with Aron
(I need this feature too, sort of tower defense… )
Workaround : actually, for my game, when I add obstacles during gameplay, I only update the gridgraph, I don’t add Rvo Obstacle, and it works not so bad.
It works because my obstacles (towers) are bigger than a grid node (2x2 minimum), and with my GridGraph “erosion” settings, when I add a tower it produces an unwalkable zone that is at least 4x4 or 6x6. So, even when my RVO agents are avoiding their peers, they sometime move into an unwalkable area, but they rarely move into a tower. And at last, my towers also have colliders, so agents can’t move into them. Agents can be temporary stuck when they are numerous in a small passage, but it is currently acceptable for me.
Finally, it is like if I only use RVO obstacle for static and indestructible obstacles that are part of the terrain (rock, mountains, cliff …etc)
Tip if you are using RVO agents with colliders : always define a RVO radius bigger than the collider radius, so avoiding is managed by the RVO algorithm before physic collision occurs.