How the best games turn enemies into teachers, storytellers, and tactical puzzles
Enemies Are More Than Speed Bumps

When I was a junior designer, I thought enemies were mostly obstacles. Something to fight through on the way to the next room. A health bar with legs. You chip away at it, it falls over, you move on. That was my mental model for years, and it showed in every prototype I built. The enemies I created were functional in the narrowest sense, but they were hollow. Players fought them and forgot them before the loading screen finished.
It took me a long time, and a lot of bad prototypes, to realize that good enemies can have more than one function. Not just more than one attack pattern, but more than one reason to exist. The enemies you remember from your favorite games, the ones that live in your muscle memory years after you put the controller down, they all share something in common. They serve the player, not just the level designer. They teach. They communicate. They transform a simple combat loop into something that feels like a conversation.
In this piece, I want to break down the three core functions that make an enemy worth remembering. These are not abstract game design theories pulled from textbooks. They are practical, observable patterns that show up in some of the best-designed games of the last four decades. Once you see them, you cannot unsee them, and they will change the way you think about every enemy you ever design.
Here is the short version: an enemy that does not do at least one of these three things is filler. The best enemies do two or three at once. Let me show you what I mean.
1. Enemies as Teachers: Learning Through the Fight
The first and most underappreciated function of an enemy is teaching. I do not mean teaching in the tutorial-popup sense. I mean teaching the way a boxing coach teaches you to slip a jab: by making you do it until your body just knows. The best tutorial in game design is the one the player never realizes they are playing, and enemies are the most powerful tool for delivering that kind of invisible education.

1.1 The Goomba and the Art of Stomping
Consider the Goomba in Super Mario Bros. It is a brown mushroom that walks toward you at a speed that could charitably be described as leisurely. It has one attack, which is walking into you, and it dies if anything touches it from above. On paper, it is the simplest enemy in video game history. In practice, it is a masterclass in organic tutorial design.
Think about what the Goomba actually teaches. Before you encounter it, the game has shown you that Mario can run and jump. The Goomba gives you a reason to jump on something specific. You do it once, it works, and without a single line of tutorial text, you have learned the game’s most fundamental combat mechanic. The Goomba is not an obstacle. It is a teacher wearing a mushroom costume.
The design is brilliant in its restraint. The Goomba is slow enough that you have time to process what is happening. Its approach is linear and predictable, so there is no ambiguity about when to jump. Its consequence for failure is clear but not punishing. You lose a life, you restart, the Goomba is still right there, offering you another chance. Every element of the design serves the lesson. Nothing is wasted.
1.2 The Koopa and the Lesson of Consequences
Then comes the Koopa Troopa. The green-shelled turtle that appears shortly after the Goomba. On the surface, it seems like the same idea: jump on it to defeat it. But the Koopa introduces a critical twist. When you jump on a Koopa, it does not disappear. It retreats into its shell, and that shell becomes a projectile that bounces off walls and hits other enemies. Suddenly, your simple action has consequences that ripple across the entire screen.
The Koopa teaches something fundamentally different from the Goomba. The Goomba taught you to act. The Koopa teaches you to think about what happens after you act. Do you kick the shell? Do you avoid it? Do you use it as a weapon against the Piranha Plant up ahead? The enemy has transformed from a simple stimulus-response exercise into a small strategic puzzle, and the progression from Goomba to Koopa mirrors the player’s growing confidence. You thought you knew how to handle enemies. The Koopa says: not quite.
This layering is the key to tutorial design through enemies. Each new enemy should build on what the player already knows while introducing one new concept. If the Koopa appeared before the Goomba, the player would be overwhelmed. But because it appears after, the player already has the foundational skill and can focus on learning the new layer. It is a staircase, not a wall.
1.3 The Piranha Plant and the Power of Patience
The third enemy in this tutorial sequence is the Piranha Plant. It sits inside a green pipe and emerges on a timer, retreating back into the pipe before you can get close enough to stomp it. You cannot jump on it when it is exposed. You have to time your run between its appearances. The correct move, sometimes, is to do nothing at all.
This is a radical lesson for a game that has spent the last two minutes teaching you that the correct move is always to jump. The Piranha Plant breaks the pattern the Goomba and Koopa established, and in doing so, it teaches something far more valuable than any single mechanic. It teaches the player that different problems require different solutions, and that observation is as important as action.
1.4 Bringing the Philosophy to Your Own Games
The takeaway here is not that every game needs mushroom enemies. The takeaway is that every enemy in your game should teach something. Not necessarily a brand-new mechanic, but at least a variation, a refinement, a deeper understanding of something the player already knows. When you sit down to design an enemy, ask yourself this question: what does the player learn the first time they encounter this enemy? If the answer is nothing, you have not finished designing it yet.
A practical exercise: list every major mechanic in your game, then design at least one enemy whose primary purpose is to teach that mechanic. This does two things. It ensures every mechanic gets introduced to the player through gameplay rather than text, and it gives every enemy a clear reason to exist in the design. Enemies without purpose are enemies that should be cut.
2. The Visual Language of Enemies: Threat Without Words
The second function of an enemy is visual communication. A well-designed enemy tells you what it is going to do before it does it. Not through UI indicators or damage numbers, but through its body. Its posture, its silhouette, its weapon, the way it moves through space. Long before the health bar appears, the fight has already begun in the player’s mind, and the enemy’s design is doing all the talking.

2.1 Silhouette as the First Word
Silhouette design is one of the oldest and most powerful tools in character design, and it matters just as much for enemies as it does for playable characters. Think about how instantly recognizable Mario’s silhouette is. The hat, the mustache, the round body. You could identify him from a hundred yards away in total darkness. The same principle applies to enemies, and the games that get it right are the ones where you can identify every enemy type from its shadow alone.
In practice, this means each enemy type in your game should have a distinct, readable shape. A large, wide silhouette suggests a slow but powerful enemy. A thin, elongated silhouette suggests speed and fragility. A hunched silhouette with a massive weapon suggests a heavy telegraphed strike. The player should be able to look at an enemy’s shape and form an immediate expectation about how the fight will go. If all your enemies share a similar silhouette, you are forcing the player to wait until the enemy acts to understand it, and that delay creates frustration instead of engagement.
2.2 Color as a Second Language
Beyond silhouette, color is the most efficient signaling tool available to a game designer. Human beings are wired to respond to color before they respond to shape, and game designers have been exploiting this for decades. In most games, brighter, more saturated enemies signal higher threat levels. Enemies that glow or change color before a special attack are using color as a telegraph system. Enemies with warm, aggressive colors like red and orange feel more dangerous than those with cool, muted tones.
Bloodborne is a masterclass in this kind of color communication. The most dangerous enemies in the game are draped in dark, saturated hues with accents of crimson. The common enemies use desaturated, almost faded palettes that make them visually recede. This is not an accident. The color system tells the player, before a single frame of combat, exactly how much danger they are walking into. Enter a room full of grey enemies and you relax. Enter a room full of dark crimson and your hands tighten on the controller.
2.3 Animation as Body Language
An enemy’s animations are perhaps the most direct form of visual communication available. A creature that shifts its weight backward before lunging is telling you to dodge. An enemy that raises its weapon overhead is telling you to roll sideways. A boss that crouches low and draws its arms in is telling you something big is about to happen and you should create distance immediately.
The key to good enemy animation is the anticipation phase. Every attack should have a visible wind-up of at least ten to fifteen frames. This is not a suggestion, it is a contract with the player. The contract says: if you pay attention, you will have enough time to react. Games that break this contract, that hit the player without warning or with impossibly fast telegraphs, feel unfair. And unfairness kills engagement faster than difficulty ever could.
In Bloodborne and the Dark Souls series, the anticipation phases are almost theatrical. A beast rears back, muscles tensing, for what feels like an eternity before the strike lands. That tension, that brief window where the player is processing the incoming threat and choosing their response, is where the magic of the combat lives. It is not the hit that makes the fight memorable. It is the moment just before the hit, when the player’s skill and awareness are put to the test.
2.4 Practical Tips for Better Visual Communication
Start with the silhouette test. Render each of your enemies as a solid black shape against a white background. If you cannot tell them apart, your players will not be able to either. Then check your animations. Does every attack have a clear anticipation phase? Is that phase long enough for a player of average reflexes to react? Finally, audit your color system. Does every color in your enemy palette serve a communicative purpose, or are you using colors because they look cool? Cool is fine, but communicative is essential.
3. Encounter Roles: The Tactics of the Mix
The third function of an enemy is its role within an encounter. This is about what happens when different enemy types share the same space and force the player to make tactical decisions. A single well-designed enemy is engaging. But when you combine multiple enemy types with distinct roles, the combat transcends individual design and becomes something larger: a puzzle that changes every time you enter a room.

3.1 The Halo Blueprint: Grunts, Jackals, and Elites
Halo: Combat Evolved remains one of the finest examples of encounter design in gaming history, and its enemy roster is the reason why. The game presents three foundational enemy types, each with a clearly defined role. Grunts are light infantry. They are weak, numerous, and they scatter when you kill their commander. Jackals carry energy shields and force you to either flank them or punch through their defense. Elites are heavy assault units. They are fast, tough, aggressive, and they demand your full attention the moment they appear.
Any one of these enemies alone is manageable. A room full of Grunts is a warm-up. A single Jackal is a minor inconvenience. An Elite one-on-one is a fair fight. But when you walk into a room and find all three staring at you, the situation transforms. The Grunts are spraying you with plasma fire from the edges. The Jackals are locking down your angles with their shields, preventing you from advancing. And somewhere behind that wall of cover, an Elite is about to flank you with an energy sword.
Now the combat becomes a question of priority. Do you clear the Grunts first to reduce incoming damage and make the Elite lose its nerve? Do you rush the Jackals to open up movement lanes? Or do you go straight for the Elite because if you ignore it, you are going to die in about four seconds? There is no single correct answer, and that is the entire point. The encounter is designed to create a decision space where the player’s choices matter, and no two attempts play out the same way.
3.2 Why Differentiated Roles Matter
The secret to a good role system is clarity. Each enemy type must fulfill a function that no other type does. If you have five enemy types but they all boil down to shooting at the player from different distances with different-colored projectiles, then you do not really have five enemy types. You have one enemy type wearing five different hats. Players will see through this quickly, and the combat will feel repetitive regardless of how much visual variety you layer on top.
Think of enemy roles like positions on a sports team. You need defenders who protect, midfielders who distribute, and forwards who attack. If every player on the team is a forward, the team does not work. The same principle applies to enemy design. You need enemies that control space. You need enemies that apply pressure. You need enemies that demand priority. You need enemies that punish inattention. When all these roles are present and clearly differentiated, every encounter becomes a unique tactical situation.
3.3 Composing Encounters: The Art of Progression
Having good enemy roles is only half the battle. The other half is how you compose them into encounters. Encounter composition is the art of deciding which enemies appear, in what numbers, in what order, and in what environment. A well-composed encounter does not throw everything at the player at once. It builds. It creates a rhythm of tension and release that makes the combat feel like a story rather than a gauntlet.
A classic progression might look like this. You enter a room and face three Grunts. Easy, a warm-up. You clear them and feel confident. Then two Jackals appear from behind cover. Slightly harder, but manageable. You adapt, you flank, you clear them. And just as you are feeling good about yourself, an Elite drops from the ceiling. Everything you have learned in the last thirty seconds is now being tested under real pressure. The enemies you fought before were not just filler. They were preparation.
This kind of layered progression makes the player feel like they are growing. Each wave confirms that the skills they just learned are useful. The final wave proves that those skills are necessary. It is a feedback loop that makes combat feel rewarding even when the player is struggling, because the struggle itself feels earned and meaningful.
| Role | Description | Classic Example | Combat Function |
| Light Infantry | Weak, numerous, fast | Grunts (Halo) | Warm up the player, apply constant pressure |
| Shield / Support | Protect other enemies | Jackals (Halo) | Block attack lanes, force flanking maneuvers |
| Heavy Assault | Strong, dangerous, priority | Elites (Halo) | Demand full attention, center of the fight |
| Artillery | Attack from long range | Hunters (Destiny) | Restrict movement, create danger zones |
| Ambusher | Appear unexpectedly | Regenerators (RE4) | Break player rhythm and routines |
You do not need all five roles in every game. But having at least three clearly differentiated roles will make your combat feel dramatically more dynamic and memorable than having ten enemy types that all do the same thing.
4. How to Design Enemies That Actually Work

Now that we have covered the three core functions, let me walk you through a practical process for designing enemies that fulfill them. This is not a rigid formula. Think of it as a checklist, a set of lenses you hold up to every enemy design to make sure it pulls its weight.
4.1 The Five-Step Process
Step 1: Define what the enemy teaches.
Before you touch a sketch or open your game engine, answer this question: what mechanic does this enemy teach? It could be something as simple as blocking, or as complex as managing multiple threat sources. But it has to be something. If you cannot articulate the lesson, the enemy does not have a purpose yet. Write it down in one sentence. That sentence is the enemy’s reason for existing.
Step 2: Design the silhouette.
Open your drawing tool and sketch the enemy as a solid black shape against white. Does it communicate the enemy’s function? A large enemy with a wide stance reads as slow and heavy. A small, hunched shape reads as fast and sneaky. A tall, thin figure with extended arms reads as a ranged threat. If the silhouette does not suggest the enemy’s behavior, keep iterating. The silhouette is your first communication with the player, and first impressions are everything.
Step 3: Assign an encounter role.
Where does this enemy fit in your combat ecosystem? Is it the basic enemy the player fights first? The support enemy that makes other enemies more dangerous? The elite that shows up in key moments? The role determines when and where the enemy appears, what it is paired with, and how the player is expected to deal with it. Every role in your roster should be distinct and non-redundant.
Step 4: Animate with clear telegraphs.
Every attack the enemy performs needs an anticipation phase of at least ten to fifteen frames. This is non-negotiable. The anticipation phase is the enemy’s body language, the way it communicates its intentions to the player. Without it, the combat feels random and unfair. With it, the combat feels like a conversation where both sides are speaking the same language.
Step 5: Playtest and iterate.
Put the enemy in your game and watch real people fight it. Do they understand what the enemy does? Can they read its visual signals? Does the combat feel fair? If the answer to any of these is no, go back to the drawing board. Enemy design is an iterative process, and the best enemies are born from many rounds of playtesting, feedback, and refinement. Do not fall in love with your first draft.
4.2 Common Mistakes That Kill Enemy Design
There are three mistakes that show up over and over in enemy design, especially from developers who are just starting out. The first is the damage sponge: an enemy that has a lot of health but no interesting mechanics. Fighting a damage sponge is not fun. It is a chore. The player is not making decisions. They are holding down the attack button and waiting for a number to reach zero.
The second mistake is the invisible attacker: an enemy that damages the player without any telegraphed warning. This makes the combat feel random and unfair. The player is not dying because they made a mistake. They are dying because the game did not give them the information they needed to survive. There is no lesson to learn here, only frustration to endure.
The third mistake is redundant variety: having many enemy types that all function the same way. Twelve enemies that shoot projectiles at different speeds is not variety. It is one enemy wearing twelve costumes. Real variety comes from functional differentiation, from enemies that make the player think in fundamentally different ways.
4.3 The Three-Question Test
I want to leave you with a simple test you can apply to every enemy in your game. Three questions. If the enemy passes at least one, it has earned its place. If it passes two, it is probably a strong design. If it passes all three, you have something special on your hands.
Question one: what does this enemy teach? Question two: what does its design communicate visually? Question three: what role does it play when combined with other enemies?
An enemy that teaches you a new mechanic and communicates its attacks clearly through its animations is already doing more than most enemies in most games. An enemy that does all three, that teaches, communicates, and occupies a unique tactical role, that enemy is the kind that players remember years later. The kind they bring up in conversations about their favorite games. The kind that makes them better players without them ever realizing they were being taught.
That is what great enemy design looks like. Not more health. Not bigger numbers. Purpose. Every enemy in your game should have a reason to exist, and that reason should serve the player’s experience, not just the level layout. Build your enemies with intention, and your players will feel the difference. They might not be able to articulate why your combat feels better than the last game they played. But they will notice. And they will come back for more.

















