Movement of AI controller stops before destination for crowds

Hello everyone.

I’m currently implementing an action game where player has to face big crowds of enemies. I’m assigning a destination location (guaranteed to be unique) for each enemy (they inherit from Character) and then make them move to designated position. The problem is, when they’re approaching the target position, movement either stops completely before reaching destination or they get stuck in infinite movement in one place (depending on approach for movement I’m using). But it doesn’t happen with every actor - if there’re 10 enemies in the scene, this issues happens with 3-4 of them, for those “surrounded” by others and those one the edge of crowd.

If command to move to position is issued again, I can see that they slightly try to move in necessary direction (move approximately 5 units), but then immediately get “pushed back” to position where they stop. But I’m sure there’re no colliders or forces which could push them back -there’s nothing around point within about 50 units (with capsule collider radius 25 for all actors).

I thought it’s stopping when collider touches the destination point, but the distance in such cases varies between around 30-60 units with collider’s radius 25, so they usually stop long before collider border touches the position. Making such big stopping distance is not an option because in most cases enemies will stop before reaching attack distance.

I tried several approaches for movement implementation, but the moment I add crowd avoidance is used, this issue starts happening.

So far I attempted the following approaches for navigation and crowd management:

  1. Setting “Detour crowd AI controller” as parent for my custom AI controller and using behavior tree’s . No logic inside aside from calling for running behavior tree. BT itself has only custom node to switch running animation to “true” in animator and “Move To”.
    1.a. Disabled “Reach Test Includes Agent Radius” and ““Reach Test Includes Goal Radius”” in “Move To”.
    1.b. Set Acceptance radius to 0/5/25.
  2. Used “Move To Location or Actor” node in blueprint for movement instead of Behavior tree.
  3. Used “Move To Location” node
  4. Used “AI Move To” node
  5. Create custom AI controller in c++ with UCrowdFollowingComponent
  6. Change RecastNavMesh tile and cell size to smaller values.
  7. Tick/untick “can affect navigation” for enemies.
  8. Switch from “Detour crowd AI controller” to “AI Controller” with RVO avoidance with consideration radius 25/35/50/80/120.

I know that I’m missing something, but can’t understand what. Can you suggest what else can I try?