I’m hard stuck on navigation for AutoBattler 2d TopDown game.
What I don’t understand essentially is steering - I have been able to implement it so the velocity is dynamic but never to the effect it would work and the units will walk around each other toward the target.
Your navigation system needs to recognize when an agent is not able to reach it’s target and search for a new path.
If you go straight towards a target, the way can be blocked.
Another option would be to introduce waiting. So if you can’t reach a target. Simply wait for it to be free. But that may not work for you.
Games like Warcraft3 use a grid for pathfinding so each unit can occupy cells.
It does not get more intelligent than that. The reason why it is so easy to block units in Warcraft3 by dancing another unit in front of them. Everytime the unit timer queries a new path the cell is blocked by the dancing unit so the path selects a long detour.
Most RTS games use grids for this very reason, to occupy space. This is not really the purpose of a navigation mesh that wants to cover as much surface as efficiently as possible with large polygons.
In Godot you would use AStar2D/AStarGrid2D and with an override function for the cost. Then have a separate cell mapping, e.g. a Dictionary, for your units. When the path override function wants to use a cell that has another unit using it you reject that cell or increase the cost so paths will go around that unit Warcraft3 style.