I believe the key is having a single measurement to decide how strong a unit is.
I recommend using game seconds. Here are my 3 basic metrics:
How long should the median unit stay alive while taking damage?
How much time should the player spend on creating the median unit?
How late in the game do I want to introduce the unit?
Let's say I want my unit to survive for 10 seconds, and spend 5 seconds of resource gathering/development to create it. I want it to be available after the first 30 seconds of the game, not before.
This gives you a lot of numbers to play with: health, damage, attack speed, range, movement speed, cost, etc.
Example: The median unit has 100 HP and it will have 10DPS. If 2 of these units fight each other, they will both die in exactly 10 seconds. It also has the average range and average movement speed, say a meter a second for movement and 10 meters range.
It costs 400 gold to create. On average, it would take 1 second to generate 100 gold. It will also take 1 second to build, so this gives us 5 seconds of manufacture cost.
To build it you need a specific building or tech developed. It will cost 2000 gold to build the base and another 10 seconds to developed. So it cannot be created before the first 30 seconds.
So how does this help us?
Once we have a metric for a single unit, we can start giving a value to a synergy.
In your example the synergy is this: a unit takes physical space, therefore it extends the life of any unit behind it, assuming its big enough to
A) hide the unit behind it
B) cover the enemy range in its size
How do we use this to fix our swordsmen - archers problem? here are some options
- If the archers are 3 times the size of the swordsman, you will need 3 times the number of swordsman to "hide" the archers, otherwise the enemy can go around the swordsmen. This can break the cost effectiveness of the synergy.
- If the average unit is faster, it can close in the distance to the swordsmen quicker, effectively spending less time in the deadzone where they take damage by arrows and not hitting the swordsman. This means that the swordsmen will eventually die and the archers will be vulnerable.
- Create more units with varying ranges - let's say the archers have 10 meter range and stand 5 meter behind the swordsmen. That means that they form a 5 meter deadzone, but any unit with more than 6 meter range can hit them, regardless of the swordsman. If the move them closer - bigger deadzone, more units that can hit them. Farther, the opposite.
This helps us fix these problems, How do we predict them?
Tricky, but you want to quantify this synergy value. In my example, I would say that a unit that survives 10 seconds, and has the size of 2, will extend the life of any unit behind it for 12 seconds (10 to kill, 2 to reach), and can hide 2 units behind it (if the average is 1).
The protected unit has an additional 12 seconds of life which is 12 seconds worth of damage if it has a range of more than 2, otherwise it cannot hit the enemy while staying behind its protector.
So your job is to make sure every unit stays as close as possible to the median worth. The differences between them will stills show, because depending on the play-style, the advantages and disadvantages will have different weight. A player that is very good at clicking fast will suffer more from a slow attacking/moving unit than a player that is not so good at it.