Best solution for large groups of zombies?

Hi,

I’m working on a game that has multiple large groups of zombies navigating through an area. I was wondering what combination of graph/modifiers etc could be a good solution to tackle this?

With my default setup the problem is that each zombie is trying to walk the ‘optimal’ and shortest path to the target. In large, open spaces, it isn’t as obvious, but when there are any obstacles in the way, all zombies end up on more or less the same path, filing into one long line, one after the other. That is not really how zombies move at all.

The image shows a test environment with a rather small group of zombies. They have RVO controllers on them, which was my first attempt at getting them to keep a little distance from each other.

My goal is to make the zombies behave more ‘zombie-like’. That means they move slowly, but without touching each other, and not necessarily on the best and most direct path. They can have a slow response time to any changes in the environment (they are zombies after all). The image in my head is one where they move like a wall of zombies.

Any and all ideas welcome!!

… Continuation, because the system only let me attach one picture per post.

I have tried to dabble with the RecastGraph and the GridGraph types, and the Alternative Path modifier. That modifier improves things, but breaks down fairly quickly. All zombies are trying to get to the same target. The paths are constantly recalculated, and the zombies spend more time walking to the start of the new path than forward. As a result, the walk sideways or backwards… and when there are 25+ zombies, the thing crashes with stack overflows.

Maybe the Alternative Paths modifier is the solution - but I need to recalculate the path every few seconds for each zombie. And that seems to cause the problem with the zombies going backwards. I assume they are trying to find the beginning of the ‘new’ path.
I managed to stop the stack overflow by changing the code that adds the penalty onto the nodes from going to high/low - but it feels a little hacky.