The Fundamental Pillars of a Combat System
by Sébastien Lambottin
Designing a combat system is a recurrent exercise many designers will have to do in their career. When I had to do this for the first time many years ago, I had a hard time. Not only was it hard to obtain good results in my designs, but it was also hard to find information which would explain the overall basic rules experienced combat designers use to achieve interesting combat mechanics.
With the help of other designers, I have decided to gather and formalize what knowledge I can on the fundamental rules in designing a combat system. This article is the result of that exercise.
The main objective we have in mind when we design the gameplay mechanics of a combat system is to push the player to make clever choices and use the right ability at the right time. We want the player to be able to anticipate the next action he’ll perform and also to develop a tactical plan during the combat.
There are many ways to reach this result, but here are two very important characteristics which help to design the player’s abilities for a combat system:
Each ability has a unique function: hit a specific area, stun an enemy…
Each ability is balanced with the reward vs. the risk of using it.
The Tactics of Abilities
With those characteristics in mind, here are some analytical examples of some classical abilities in a military shooter such as Call of Duty:
1. Each ability has a unique function
Another way to think about the design of these abilities is to consider each one as a tool for the player.
The following schematic presents a panel of abilities in Call of Duty, and the area affected by each of them:
Melee attack. Covers an area in front of the player at close range. The player can only use it at close range, but it kills an enemy in one hit.
Normal shot. This is the basic attack the player can use at any time. It is the optimal attack at middle range only.
Iron sight shot. Perfect for performing a very precise shot to an enemy standing far away, e.g. a headshot. Very dangerous to use because of the loss of peripheral vision.
Grenade. Perfect to hit enemies behind a cover or in a corner. It also kills enemies in one hit. But it’s consumable, so the player must be careful to spend it at the right time.
Now imagine if every one of those abilities could be instantly performed by the player. We would achieve an interesting challenge, which is “press the right button at the right time”.
But this isn’t enough. As mentioned earlier, when we design a combat system, we are really aiming to challenge the cleverness of the player, and the tactics he’ll be able to apply during the battle. So basically we want a system with multiple choices, but in which the player has to evaluate and choose the best option for each situation.
2. The tactical layer: the risk versus reward trade-off for each ability
Not only does each ability allow the player to attack a certain way, but they each have advantages and trade-offs. Here’s a detailed example from Street Fighter II.
There are plenty of different types of advantages and trade-offs a designer can create for an ability. Here are some of the most commonly used ones in action games:
Advantages. Damage Output, Stun, Repel, Damage Over Time, Blindness, HP Regeneration
Trade-Offs. Consumable points, Cooldown, Time to Activate, Recovery Time
Even if each of these abilities is perfectly balanced between risk and reward, it is always good to offer the player a panel of abilities with different coefficients of risk vs. reward.
Some abilities of the player character will, for example, do small damage to enemies, but are not risky to use because they are quick. On the extreme opposite end, special attacks can do a lot of damage, but are often very risky to perform, due to startup or recovery times.
Each combat system offers a selection of abilities with different coefficients of risk vs. reward.
An ability is also a tool to counter the enemy. Keep in mind that sometimes abilities not only allow the player to attack enemies, but can also be used to counterattack them. Therefore if the player uses an ability at the wrong time, he could either miss an opportunity to hit an enemy or worse, he’ll lose HP because he could not counter the enemy. This is why performing a counterattack is also part of the risk taken by the player when he performs an ability.
The Three Challenges
The real-time aspect of an action game increases the frequency at which the player has to evaluate some parameters of a situation, and then decide which ability to use.
Evaluate the distance
Evaluate the distance to an enemy in order to choose which ability to perform
Evaluate where your character will end up once the ability is performed
Because everything moves in real time
Evaluate the time
Evaluate the time it takes to perform an ability
Anticipate how much time your ability will last
Because everything evolves in time
Cleverness and anticipation
Anticipate a combination of actions to perform in different situations
Know which ability to use to counter the attack of an enemy
Because each ability is a tactical tool for the player
In parallel, there are many advantages to designing enemies which match the player’s abilities. Indeed, one of the main purposes of adding enemies to a game is to create an interesting challenge to teach the player, little by little, the mechanics of the game.
An Enemy is a Challenge For the Player
When we have to design an AI behavior, a common tendency is to try to make the AI seem as clever as possible and feel human. For example, to create an immersive experience, we might want to have multiple enemies behave as a squad, or perform actions the player would interpret as clever ones.
However, we tend to forget that no matter how clever an AI enemy behaves, the challenge created by an enemy when the player encounters him is what will impact the game experience the most. This means that as designers we need to go back to what is fundamental in designing a challenge, and understand precisely what are the most important properties of an AI to offer the right challenge we are aiming for.
Define a precise challenge for each enemy. Because the main function of an enemy is to attack the player, and because most of the time the player can destroy the enemies, there are usually two important questions I ask myself when designing the behavior of an enemy:
How can the player attack and destroy an enemy?
How can the player defend himself against an enemy?
Indeed, when we design an entire panel of enemies, we usually try to create very diverse ways to beat each of the enemies.Here are two examples from Spider-Man: Shattered Dimensions, to illustrate this point:
As shown by those schematics, the ninja and the kamikaze bomber each offer a different challenge to the player when he has to defend himself against them:
The best ability of the player to defend himself against the Ninja is the dodge ability.
The challenge of the player to defend himself against the Ninja is a timing challenge.
The best ability of the player to defend himself against the Kamikaze bomber is the web shot.
The challenge of the player to defend himself against the Kamikaze bomber is a distance evaluation challenge.
Challenge the Player’s Abilities
As a complement to designing a different challenge for each enemy, it’s also interesting to design the enemies with different values of weakness for each ability/weapon. In other words, it is interesting to design each weapon to be more or less efficient against each enemy.
- This pushes the player to use all the abilities he has?- This helps the player to learn the specifics of each weapon?- This also pushes the player to be tactical and to use the right ability at the right time.
To illustrate this point, here’s an example analysis of weapon efficiency on the enemies in Halo:
Because of these properties, during a combat against multiple types of enemies the player might switch from one ability to another in order to be more efficient in battle.
Common enemy archetypes in action games
Since everyone is attempting to have enemies that match with the player’s abilities, we often see the same kinds of enemies in many different action games. Indeed, there are a lot of advantages to use these common archetypes:
they offer an easily understandable challenge
they have a recognizable and dissimilar shape
the player may already have an idea of how to deal with them without the need of a tutorial.
Here’s a list of the the most common archetypes in action games, with the functionality they usually have in the game.
Shield enemy: challenge the precision of the basic attack
Heavy enemy: require a heavy attack to destroy
Sniper: ranged attack to hit
Bomber: close combat attack to counter
Archetype subclasses and variations
Even though we want to classify and organize enemies into a few archetypes, we also want to introduce variety and increase the challenge throughout the game.
The role of subclasses is to push the player to the limit of the combat system by playing with the same rules he has already learned but adding new abilities to the enemy which, for example, reduce windows of opportunity, or challenge the player on his precision.
When we design an enemy we can consider the challenge by analyzing the advantageous and complicating properties of each enemies.
The advantageous properties of an enemy will let the player use him to damage other enemies.
The complicating properties of an enemy will make the challenge to beat him more complex.
Here’s an example in a Mario game of the sub-classes concept:
Original enemy archetype
This enemy simply moves toward the player on a patrol path
The player has to jump on the enemy to eliminate him
The resultant turtle shell can be used to kill other enemies
Sub-class enemy archetype
This enemy moves toward the player
New complicating property of this sub-class: this enemy moves in the air
The turtle shell can (again) be used to kill the enemies
Designing subclasses is a very good way to increase or decrease the difficulty of a class without breaking the defining rules of a class.
Risk and reward management example:
To introduce another layer of strategy in the battle we can also use subclasses to add both advantageous and complicating properties on a same enemy.
Here’s an advanced enemy with a shield and a weak point in his back which make him explode if the player hits the weak point several times:
Adding a shield to an enemy makes it harder to kill, because the player has to shoot around it to damage it. But we’ve also added a weak point in the back to give a new tactical opportunity to the player. Normally, a player would try to kill the easiest enemy first in order to reduce the number of living enemies as fast as possible, but in this case…
It’s riskier for the player to try to kill the advanced enemy while the other enemies are still alive; at the same time, the player can take advantage of the weak point and kill the entire group faster. It’s up to him to manage the risk and the amount of reward he wants to achieve.
Here are the main points to keep in mind from this article:
A combat system well designed is a system which can entertain a player for hours. If the combat system is well conceived, the game will feature a large variety of combat.
A good way to obtain a such combat system is first to design very different abilities for the player’s character.
The player’s abilities can be differentiated in many ways. For example, designers can add special attributes to some of them: stun, regen, damage over time, repel…
The second point to keep in mind is to design enemies that match the player’s abilities. Each enemy has to offer a specific challenge which will push the player to use a certain type of ability to defeat him.
To finish this article, from my point of view, one of the most engaging feelings a player can experience with