Contributors Games

Of Archers and Artillery: Range Dynamics in RTS

If you’ve ever played Age of Empires 2, you know how deeply satisfying it is to use the Trebuchet… the firing sound, the arcing rock/fireball about to lay waste to your opponent’s castle. That moment of dread your opponent must feel as they see your siege weapons unpacking just outside of where their castle can fight back. And their panic as they send out a wave of cavalry to hopefully end your assault.

Trebuchet attacking a castle, Age of Empires II
I wouldn’t want to be in that tower. Image from here.

Given that trebuchets spawned an entire genre of memes, I think it’s only fair we take a little time today exploring their main feature: attack range. Attack ranges are crucial to how an RTS is played and feels. They can destroy a game’s balance or keep it carefully in check. They can break stalemates or endlessly prolong them.

Whereas my last article had some amount of prescription in how to use Stealth in RTS, this article will be a bit more exploratory. I’ll start by talking about what range is, then get into how different games have employed it, what kinds of paradigms arise from it, and finally, how the genre has reacted to those paradigms.

But let’s start basic-

What is Range?

Attack Range is the maximum distance at which Unit A can attack another unit. These usually vary on a per-unit or per-role basis. Virtually every RTS that has attacking has attack ranges. It’s pretty rare a unit can attack anything, anywhere. After all, why bother to have a big map with terrain and other cool features if your units can just chill at home while they fight?

In fact, most RTS have a large spread of ranges. Knights of Age of Empires II (AoE2) and Zerglings in Starcraft are dubbed “melee units”, as they can only attack adjacent enemies. AoE2’s Trebuchet can attack enemies on the other side of your screen and maybe a bit beyond. And in games like Supreme Commander (SupCom), an artillery unit can shoot at targets some 5x farther away than a tank, and the tanks are by no means melee range.

Starcraft 2: an army of zerglings, ultralisks, and hydralisks attacks a terran player, who has marines, thors, and reapers.
Some Zerglings and Ultralisks– melee units– trying their best vs Reapers, Marines, and Thors– ranged units. Image from here.

Range can be incredibly impactful in a fight. If Unit A has a longer range than Unit B, that means that if they approach each other, Unit A will be able to attack first. If their other stats and circumstances are equal, Unit A will always defeat Unit B. And in a big fight of Unit As vs Unit Bs, Unit As can potentially kill off a bunch of Unit Bs before Unit Bs even have a chance to fire their first volley.

If we’re designing an RTS to not have units that are simply better than others, we’ll probably have to account for range in the power of our units. We’ll want to give them weaknesses to balance them out. But more on that later.

Even with budgeting the power of our units, how do we determine whether this unit should have 10 range or 15? Where do these numbers come from?

Two factors often drive these range numbers: unit roles and range comparisons.

Unit Roles

Ranges can often be determined by the role the unit should have. Given that an RTS unit, at its most basic, has health, attack, and movement, the question of when a unit can attack is often a defining feature. A unit with extreme range is probably a sniper or artillery. A unit with melee range is probably either pretty tough or pretty fast.

It’s also crucial for a game’s flavor. If we’re playing Northgard and we train up some Shield Bearers with their little swords, it would be bizarre if they attacked enemies from the opposite end of a lake. Likewise, if we’re using artillery units and they could only fire at things right next to them, in what sense is that artillery?

Some RTS titles have distinct unit roles for things like absorbing damage. Frequently, when a unit auto-acquires its target, it selects the closest one. If the units who absorb damage are short-range, they’ll naturally be the first thing for the enemy to attack. If we’ve got vulnerable artillery units, having them stay as far away from danger as they can is ideal.

You can see these kinds of dynamics in Age of Empires III (AoE3), where heavy infantry, like a Halberdier, or heavy cavalry, like a Hussar, are tough to kill and melee-range. Skirmishers, a light infantry unit, are easy to kill and long-ranged. In the lategame, you can train an artillery unit that can only attack buildings, called a Mortar. It can only ever support your forces by destroying enemy infrastructure, so it doesn’t participate in the main fight.

How +1 can make all the difference

So let’s say we’re making AoE3, and we’ve got our roles. We’ve got Halberdiers, Hussars, Skirmishers, and then our Falconets (cannons). How do we end up with numbers like 34 range for the Culverin? Or 32 range for the Light Cannon? Why don’t we just have “melee”, “short-range”, “medium-range”, “long-range” as values?

The short answer is that it’s all relative. We can get a few parameters from the unit roles, as mentioned above, so that we know that our mortar range is 40. The fact that nothing outranges the mortar means that no matter how entrenched your opponent gets, you can always force them to come out from their walls. You can shell their defenses, and even their longest-range anti-artillery will need to move forward to challenge you.

Falconets are also long range units (26 range), but specialize in killing infantry. In addition, their high base damage and area-of-effect means that they’ll still put out significant damage against everything. It can be extremely difficult to close in on a large group of cannons, particularly if they have other units guarding them. And because they’re slow and high-damage, the first shot matters a lot.

And so we get the Culverin: an artillery unit with extra long range (34) that is only good at killing enemy artillery. Because of their narrow uses, someone making a large group of culverins can be beaten by just making things that aren’t artillery. But it still is shorter range than the mortar, to prevent stalemates.

And then we have the Light Cannon. It’s a special cannon that can kill infantry, but is a bit weaker than the falconet, and has some anti-artillery properties as well. It’s got longer range (32) than the falconet (at 26), but shorter than the Culverin (at 34). So it won’t defeat dedicated anti-artillery, but it can defeat standard artillery.

While these numbers look bizarre, together they tell you which units are best against which, and ensure that the longest-range units can never create an oppressive game state. If we want a game that’s focused on player interaction, no one wants a stalemate where approaching means certain death.

A fight in Age of Empires 3, where cavalry charge a formation of musketeers, pikemen, and cannons.
Some pikemen up front, red team’s Hussars charging them head on. Maybe a bad idea, but those are falconets and mortars in the back. Gotta get em.

Ranger Danger

Speaking of awful stalemates, in Battle for Middle-Earth 2 (BFME2), the Elves have a unit called the Mirkwood Archer. When upgraded with Mithril Arrows, they deal extremely high damage to everything. Heroes, buildings, cavalry, monsters, siege weapons, you name it. But as BFME is a franchise based around hard counters, you could always bring some cavalry to come trample them (even if many of them died) or siege weapons that could outrange them and take them out in chunks.

Except when you garrison archers in towers and they shoot from inside them. The most obvious benefit is that cavalry couldn’t trample them inside the tower (and the tower had a lot of health). But there was an additional benefit: archers gained additional range from within a tower, and now matched a siege weapon’s. So even the best way to break your enemy’s defensive position was now extremely painful. Your expensive artillery unit might get to fire one shot before being killed. This led to a lot of situations that were at best stalemates, and at worst, slow deaths where the Elves player inched forward, building more towers until they killed you.

A fight in Battle for Middle-Earth 2, where elven swordsmen, with many mirkwood archers supporting them, engage two mountain giants.
Pictured: mountain giants, a siege unit, getting murderized by archers. The worst. I definitely wasn’t a goblins player or anything. Image from here.

Even in games that have been more careful, it’s easy to make melee units irrelevant in later stages of any RTS. It’s just because of how large armies fight. When you have a significant mass of troops, melee units will compete with each other for space to attack, whereas ranged units tend to have an easier time attacking as a group, given there are more positions they can attack from. And this disparity grows as the range difference grows. Ranged units don’t have to move to attack a new target, and melee units frequently do. It can be tough to make a melee unit weak enough in a small engagement to be beatable and strong enough to not be useless in a large engagement. We can see this in Starcraft 2, where Terrans use Marines throughout the game, but Zealots tend to not be trained for major engagements later on.

Mobility

One of the primary ways melee units get around their lack of range is with movement. A common paradigm is to have faster melee units counter units that have longer range, as they can close the distance and then use their otherwise higher stats to kill the ranged units. AoE2 showcases this with the Archer and the Light Cavalry. The Archer can deal with a lot of threats, but the Light Cavalry will take a few hits approaching, then cut down the Archer in short order.

The paradigm isn’t always that simple, though. In the Command and Conquer (CNC) games, vehicles can often run over (“crush”) enemy infantry. So a tank that might lose to the rocket soldier in a ranged slugfest can opt to just roll on up and crush the infantry.

But there are a lot of factors at play in that case. How fast is the tank? How maneuverable? Does it take time to accelerate, or does it perhaps have a minimum turn radius? And how maneuverable are infantry? Do they instantly start walking at top speed when given a command? In Tiberian Dawn, the first CNC, infantry had a command a player could issue where they’d spread out, making them much harder to crush in one fell swoop. 

All of those points factor into the question “does a rocket soldier counter a tank?”. En masse may yet be a different question. Ranged units tend to be stronger in large groups than melee units by nature of their attack opportunities. If the rocket soldiers do a ton of damage to tanks, do enough tanks make it through to crush the soldiers? Pathfinding might also affect this, as the smoothness of the tanks’ approach can determine how much time the rocket soldiers have before they’re in danger. If you’ve never experienced Tiberian Dawn’s pathfinding, it’s certainly… an experience.

Tanks in Command & Conquer: Red Alert about to crush infantry.
Not a great time to be infantry. Also, if you want to know what I mean by “an experience”, here is the full video.

Many games also employ armor types, such as armor that’s stronger against ranged attacks, or just armor in general to help counter ranged enemies. If your fast units also take less damage from ranged attacks, they can make them even more effective at dealing with ranged enemies. And if their armor is more effective against ranged attacks only, that can exacerbate their weakness to the slow, melee units that are supposed to beat them. And exacerbating weaknesses can often prevent units from feeling unbeatable.

Games like Dawn of War (DoW) and AoE3 also give an additional penalty to ranged units: they switch to a weaker melee attack when there’s an enemy next to them. So not only will the melee unit have higher stats to begin with, but the ranged unit will be especially ineffective if they’re closer. So having long-range units by themselves becomes even more dangerous.

But what happens when the ranged units are actually maneuverable and relatively quick? Well, that might lead to…

Kiting

Kiting, in the context of an RTS, is a tactic where you keep the enemy at a distance while attacking them. Specifically, it’s troops moving away from oncoming enemies while still attacking them. According to this wiki, the term originated in MMORPGs, where you’d prevent a melee enemy from actually catching up to a player and instead deal with the enemy at range. It’s a similar concept in RTSs.

Kiting is a very popular micro tactic. If my units have longer range than the approaching enemies, I can prolong their approach by moving away after shooting. And even once the enemies catch up, I might still increase the amount of time between the cavalry’s attacks by retreating after shooting, as the shorter-range units have to keep approaching for each new attack.

There are a couple things that factor into whether a unit is good at kiting. Fast acceleration and high maneuverability after attacking are big factors. If the kiting unit doesn’t attack, we just call that “running away”, or “cowardice”, if you’re feeling spicy. Every unit will have 3 parts of their attack: the wind-up, the part where they actually do damage, and the cooldown. In most RTS games where units stop to attack, the game lets players command their units to move during the cooldown phase. The unit can regain its ability to attack while moving. That is essential for kiting, as you can prepare your next attack while running away and not miss out on damage. Having a short wind-up makes this all the more effective, as you want to spend as little time as possible standing still.

We can see this on full display with the Terran Marine in Starcraft and Starcraft 2. With practically non-existent wind-ups on their attacks, decent movement speed (massively increased by sacrificing a bit of hp), long enough range, and perfect maneuverability, the Marine is an expert at kiting. A slower, melee enemy like the Protoss Zealot becomes much less effective against the Marine when they start kiting.

Some classic Marine kiting. Bleah? Awesome? You decide! Gif from here.

But Kiting?

Kiting itself is a huge source of debate in RTS spaces. Should it exist? Is it essential to the genre? Some games have leaned into kiting, like Starcraft emphasizing this kind of gameplay as what makes the game get its players’ adrenaline pumping. A number of pro match highlights showcase Protoss Stalkers teleporting to the back of their formation as they get damaged.. Some people truly love these expressions of micro. 

AoE2 also has some amount of encouraged kiting. All archers have low wind-ups and high maneuverability. And the Cavalry Archer stands out as a unit meant to kite. It has lower range than most archers, but is very fast. If you’ve ever played against a higher-difficulty computer, you’ll know you’re never catching these things with your pikemen.

Other titles have tried to reduce the effectiveness of kiting or to otherwise mitigate range advantage. In AoE3, there still exists the kind of low wind-up, moving-while-recovering dynamic that makes units like the musketeer or skirmisher able to kite. But there are two more mechanics that help counteract it. 

The first is target locking: units with a longer wind-up on their attacks (like archers) won’t lose their ability to attack if their enemy moves too far away. So a group of skirmishers can’t effectively kite archers, because the archers will simply attack anyways, with their attack just going farther than usual. Of course, archers, with their longer wind-up times, will also be worse at kiting.

The second mechanic is “snaring”: units being attacked in melee lose speed for a few seconds after being hit. Once the hussars get to our skirmishers, they can’t kite anymore. And keep in mind that these mechanics are in addition to carefully laying out ranges so that there is always a counter available. It doesn’t work perfectly, and kiting is still a powerful tactic, but the game has attempted to rein it in.

Gif from The Expanse, with James Holden telling his crew to target lock *all* enemy ships.
Age of Empires III Expanse Mod when? Image from here.

Some games also have the ability for units to attack while moving, and that can either strengthen kiting or weaken it. Protoss Phoenixes in Starcraft 2 can kite enemy Mutalisks (a shorter-range air unit) easily, since there’s no downtime between attacking and moving. But CNC and DoW are different beasts. Some vehicles in CNC can attack while moving. But the vehicles that can attack while moving frequently have similar ranges to each other, so even if their speeds are different, it’s rare to have the fast unit able to effectively kite the slower one. In addition, the rocket soldiers tend to have longer range than the vehicles and often are good against them at range. A shorter range tank can’t kite the rocket soldiers, and staying at a distance is bad for them anyways. Given the maneuverability and speed dynamics, the rocket soldier isn’t amazing at kiting tanks either. And in DoW, while most units can shoot while moving, they also have significant damage penalties while doing so. On top of that, melee units almost always also have a weak ranged attack, many infantry run at similar speeds, and the whole game is territory-based. Ceding space has a real cost, and the benefits of kiting are marginal. Some units also have jetpacks or teleportation abilities with long cooldowns, making it even harder for other units to run away from them.

Finally, we’ve got BFME2. While the game certainly had its issues with abusive ranged units, they do something interesting with respect to kiting. Many melee units can attack while moving, but ranged units can’t. The ranged units can’t kite at all. They have slow turn rates, significant wind-ups to their attacks, and all units take additional damage when attacked from the side or back. If you try to kite with ranged units, you won’t get any attacks in, and the melee units will deal extra damage. For all its problems with ranged unit damage and dynamics, it does actively prevent kiting.

These games don’t specifically tell the player they can’t kite, but they’ve taken steps that make kiting less effective. And some games take specific measures to make sure that ranged units can always be beaten. But not every game shares this philosophy, and we can see that with Starcraft and AoE2.

But let’s talk a bit more about how to trash enemy ranged units.

Is It Culverins and Jetpacks All the Way Down?

No! There are a ton of ways to open up the design space for ranged attackers and their counters. Range is a powerful stat to be sure, but there are a bunch of ways different titles have handled range differently, even excluding mobility. We often don’t have to look further than a unit’s attack pattern. Let’s start with attack speed.

The overall rate of fire is hugely important. If you have a unit A with 100-damage attacks and it attacks once every 5 seconds, it’s actually often going to be weaker in long engagements than a unit B that has 20-damage attacks and attacks every second. Why? Let’s look at a unit with 120 health. Unit B will kill it and be ready to fire again after 6 seconds (6 attacks of 20 damage, 1 second of recovery for each). But while Unit A will kill it in the same amount of time, it’ll take 10 seconds to kill it and be ready to fire (2 attacks of 100 damage, 5 seconds of recovery for each). Though their damage is equivalent for the same amount of time, Unit A will overkill units pretty often. In addition, the unit will be less flexible in switching targets or killing masses of weaker enemies. If each enemy only has 40 health, but there are triple the number of them, Unit A is also much worse. Unit B would kill them every 2 seconds, as opposed to 5. So even if Unit A has a longer range than Unit B, it can still be situationally much worse.

Some games have also introduced things like minimum range or firing arcs. In Iron Harvest, the Heavy Machine Guns (HMGs) need to deploy to fire and can only shoot within a limited direction. They’re very good at blocking a particular direction, but very vulnerable to attacks from any other direction. The HMG’s range is counterbalanced by its attack pattern.

Fight in Iron Harvest, featuring a Heavy Machine Gun deployed, with its firing arc displayed.
honestly can’t tell if that’s an HMG with the firing arc, but it’s definitely a firing arc. Image from here.

Outside of the RTS space, we can also see limited firing arcs in a tabletop game like Star Wars Armada. In that game, your huge battleships set up their turns and movement well in advance and have an array of different weapons. Getting in position to use your best guns on the enemy fleet is tricky and requires some strong prediction. And because the guns themselves aren’t equal, moving around the enemy ship is a great way to avoid the most dangerous weapons.

Ranged attacks themselves can also create interaction space. In AoE2 and SupCom, some artillery makes use of slow projectile speeds. There are all sorts of videos about how to make your archers dodge the attack of a mangonel in AoE2. Archers can defeat a mangonel when maneuvered properly, but die very quickly when standing still. This makes artillery best against either stationary enemies or large enough masses that dodging becomes ineffective (as you’ll hit something else). It also makes these units worse against fast units, since it means the projectile will almost never hit. The mangonel also has both a minimum range and friendly fire, so knights that get close will go through them like a hot knife through butter.

Starcraft and many other titles also have a distinction between ground units and air units (and sometimes naval units). Many of the longest-range, most deadly units can’t attack either air or ground. For example, the Zerg Brood Lord from Starcraft 2 has extremely long range and a very powerful attack, but is an air unit that can only hit ground. No matter how many of them you get, they can always be destroyed by enemy aircrafts.

None of these mechanics defeat range through mobility or culverin-esque counter systems. They’re frequently combined with those systems, and sometimes with each other, but they each add their own distinct angle to combat. But it’s not a simple task to make ranged units both fun to play with and against.

Now, there’s one more dynamic that I’d like to discuss, which has a huge role in how range plays out in a match.

Where Sight Range and Attack Range Meet

Let’s talk about sight range. Attack range is effectively an ability of units to attack enemies. Sight range is often used in tandem as another kind of gate on whether units can attack. Generally speaking, a unit cannot attack a unit it cannot see. This might be tied in to stealth mechanics, where a unit may be in attack range, but not visible. But there are other common ways for sight to play a role in whether a unit can attack another.

The real sneaking was me sneaking in a reference to stealth in this article too. Image from here.

Terrain is a common enough way to dictate what a unit can see. In some games, a wall may block a unit’s line of sight to a target. Frequently, an advantage of flying units is ignoring terrain.  And some RTSs use “high ground” as a concept. Units on the high ground have normal vision of their surroundings. But units that are on the low ground often cannot see the units on the high ground. Typically, to counteract this, you either move your units to the high elevation or use some kind of “spotter”. While the units themselves may not be able to see enemies, if the player can see the high ground, their units on the low ground can attack the enemy. Perhaps the player has a unit who snuck up to the high ground or a flying unit that can always see regardless of terrain. In these cases, you have a unit “spotting” for your low ground units. Starcraft 2 Terrans can also use a “scan” on an area, revealing it for a time, which will have the same effect.

Another common mechanic is a unit who has more attack range than sight range. Like with the unit on the low ground, they would attack any enemy in their attack range, except that they need help to see things that are far away. The Siege Tank in Starcraft and Tau Fire Warriors in DoW are classic examples. You’ll need some other unit hanging around, providing sight of the surroundings for your units to be maximally effective.

These sight mechanics change the way some ranged units interact with the game in a larger way. High ground might make ranged units incredibly powerful on defense, as their foes can’t even attack them back unless they gain vision of the high ground. Or it can be a way to help provide more weaknesses. The Siege Tank is very effective against practically anything it can attack, but its limited sight means that another way to disable it is to remove the spotter.

Conclusion

Range helps define an RTS. Range is crucial to its flavor, as well as outlining its counter system. It can also completely break an RTS if handled improperly, as we saw with the Mirkwood Archers. And yet the Trebuchet in AoE2 feels amazing.

The intricacies and mechanics surrounding range are just as crucial. The ways kiting is supported or actively pushed against can determine what fights feel like or what kind of micro exists. And mechanics like high ground can determine part of how your maps are designed or how players try and control the map.

This is all to say, pay a lot of attention to range. It’s a major way the devs of any given RTS title are expressing the kind of game they wanted to make. And I have no doubt we’ll see more and more innovations in the space of range as new RTS titles attempt to grapple with the paradigms of attack ranges.

Leave a comment