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
Sub-class enemy archetype
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 a video game is to feel smart and proud of his or her cleverness. And a combat system is a great tool to let the player experience this feeling.