I noticed this thing in Age of Wonders I some time ago, but I can imagine this problem popping up in any other game system where units with equal attack range spend their move points on either moving in range or attacking.
In this game, both sides start far away from each other, not being able to hit each other. They have to spend a couple of turns advancing. At some moment it happens that one player moves their units closer to the enemy units to be able to attack them, but also ends up in the opponent's attacks' range, getting damaged before being able to attack themself. Not very good!
Sometimes it is acceptable and intended, like if I attack an army of cavalry with an army of archers, my opponent is essentially allowed a free attack because cavalry can usually move further than archer's shooting range. But if both armies have equal ranges, the game can turn into a stalemate, because nobody wants to move forward and be hit first. Getting the first strike is so important that it overshadows a strong unit stats advantage.
Even the AI knows to abuse it, waiting for an infinite amount of time before the player attacks. While it is easy to counter this as a player against AI by flanking the enemy ranks in such a way that only one of their units gets in range of many my units and the enemy is forced to advance, a real player could just back off with this unit and wait for me to fully advance, getting hit severely and likely even losing my upper hand if I had one.
Thus, it feels like an example of very bad design. How do I design TBS combat in a similar system so that it is not completely disadvantageous to move in and attack unless you have a range advantage?
The only possible solution that I see is making the ranges more different, so it is less probable to see units with similar attack ranges, but even in that case such a situation r still not impossible. I am sure that some more elegant solutions exist. So, what are they?