Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs or learn how to Submit Your Own Blog Post
This article by Colin Horgan was initially posted to our marketing newsletter for our game “Death of a Wish”. We thought its designerly perspective would be useful and interesting for the larger GameDeveloper.com community.
Next to what the player character is capable of, enemy design is the most important feature for defining the combat of a character action game.
In Lucah: Born of a Dream, enemies were defined by how they could threaten the player. Most enemies had one or two actions, usually a melee attack or a projectile, with which they would attempt to damage the player. Late-game and boss enemies stood apart by having a slightly broader toolkit, perhaps expanding a single melee swing into a short melee combo, or mixing up both projectiles and AOE (area-of-effect) attacks. While this worked for the slower, more methodical combat system of Born of a Dream, the speed and punishment demanded by Death of a Wish’s combat changes (namely, the removal of stamina) required a different approach to designing the game’s threats.
Christian, the player character in Death of a Wish, begins the game much more combat-ready than Lucah did at the start of Born of a Dream. His starter moveset, Sol, can hack and slash with a variety of combo strings, leading to unique finishers suited for a variety of combat situations (need to BREAK an enemy guard? Go for the Light-Light-Heavy-Heavy stun-heavy double-kick finisher. Need to threaten an enemy at range? Try the Heavy-Light-Light-Light-Heavy shockwave). He matches his offensive capabilities with robust defensive options, including an invincible dodge roll, a sprint, a parry, and a new Teleport that allows Christian to use the environment itself to avoid danger. Importantly, all these actions can be done at no cost! How can any enemy match up with an infinitely-dodging, infinitely-slashing player character?
Death of a Wish’s answer is simple: design each enemy to match Christian in some way. For tougher enemies, give them multiple ways to make Chris sweat.
From Track 1, every enemy either threatens Christian at range with projectiles, or has aggressive chase down behaviors to prevent passive play. Melee-focused enemies have strings of attacks to pressure Christian away from blindly slashing, with mix-ups that catch overeager evasion. While a player can infinitely attack or infinitely dodge, every enemy Christian encounters is designed in a way that punishes these tactics, meaning one cannot succeed without considering what they’re up against.
Instead, early enemy types push the player to find counters to their main offensive modes. For long-range enemies, this can mean closing the distance with a teleport and overwhelming their Guard with melee strikes, BREAKing the enemy before it can escape. Conversely, melee enemies can be kept at range with Familiar Attacks, or broken with a Perfect Dodge into Counter Attack. Advanced players can risk damage to Parry enemy attacks instead, or Reflect enemy projectiles back at them with well-timed melee strikes of their own.
Caption: Enemy design entry for Death of a Wish enemy ‘Diseased’.
Consider the above enemy, ‘Diseased’, and its entry in our internal masterlist. When designing an enemy, we list each behavior it's capable of and other relevant characteristics, which helps ensure each enemy type brings something unique to an encounter. Diseased first appears in the tutorial, and as such has only three identified behaviors:
Two-Swing Combo: The baseline for a main threat from a Death of a Wish enemy. A double strike can catch players who mistime a dodge roll from the first attack, and require multiple parries in order to break.
Chasedown Melee Attack: A way to pressure players at a distance. Enemies with chasedown behaviors force the player into close quarters combat more often than they might be comfortable with.
Shockwave Swing: An alternate way to punish passive play. These sorts of behaviors allow short-range Nightmares a way to mix-up their offensive while also damaging players who try to disengage, but suffer from long wind-ups and cool-downs, and are thus eminently punishable.
Encounter design can bolster enemy design to help stress the limits of a player’s abilities. Leading the player into encounters with multiple enemies that cover each other’s weaknesses is a great place to start. How does the player react when a melee enemy is covered by a projectile enemy? Will they still attempt to parry enemy blows when they can be clipped by covering fire? Will they be able to rush down the long range enemy when the melee threat is running Chris down? These are the sorts of contradictions that a player has to manage in the heat of combat, creating moments of interesting decision-making through the emergent interplay of each enemy’s design.
As the player comes to grips with Death of a Wish’s combat toolbox, the enemy designs need to evolve in step with the player’s growing skill. One way to do so is to create enemies that excel in multiple offensive modes. For example, a fast-swinging melee Nightmare might have a parry-proof Laser mix-up, or a machine gun-wielding soldier could lob short-distance grenades that punish rushdown strategies with AOE blasts. The more an enemy’s behaviors force the player to consider how and when to favor dealing damage vs. avoiding damage, the more advanced that enemy becomes.
A less flashy, but more sophisticated way to complicate enemy design is to build inherent defenses against common counters into the design itself. An example of this could be a short-range tanky enemy that resists damage types common among Familiar Attacks (enabled by Death of a Wish’s more robust damage-typing system compared to Born of a Dream - perhaps a topic for a future devlog). If Christian’s long range options are weakened, the player is incentivized to close distance, even if that’s where the enemy is most dangerous. This approach doesn’t have to be strictly numerical, either - prompted by the strength of parry strategies in Born of a Dream, Death of a Wish’s strongest melee enemies all have one or more maneuvers to counter a player fishing for parries, such as quick back steps that disengage and allow for counter-punishes, or Charge-based AOE attacks that weave out of melee combos and cannot be parried. These sorts of strategies give enemies the ability to create distance and dictate the flow of combat, forcing a player to either re-evaluate or double down on their own offense. The key is to evaluate optimal strategies against each enemy type, and plan against them to create just the right level of perceived enemy intelligence.
A great case study for combining these enemy design strategies is the Crusade Engine Uriel boss enemy we showcased in our last update:
Uriel is an imposing boss with both short- and long-range threats that it can switch between as necessary. Like most enemies in Death of a Wish, Uriel has unique behavior sets based on proximity to the player, including within melee range, projectile range, and out of range. When in melee range, Uriel has two three-hit melee combos that can chunk Christian’s health. We’ll call these Combo A and Combo B.
Uriel uses Combo A as a short-distance opener, usually after closing distance itself or if the player approaches with a melee combo of their own. It can pull out the Combo at any time, but as a trade off, its timing is a standard 1-2-3 with only minor delay in each windup. This makes for a predictable and easily punishable offense that is effectively met with parries or a teleport out of range.
This gets complicated by Uriel’s use of Combo B. Unlike Combo A, Uriel only throws this combo out as a mix-up after another action, like its AOE Charge Explosion. Additionally, its timing is a little trickier than A, forgoing an even 1-2-3 timing with a high-commit first strike, followed by two strikes in rapid succession. The timing is such that it catches the overeager player in an early roll, thrown out either as a mistimed parry or because of an anxious trigger finger, forcing the player to learn each combo’s unique tell before committing to a punish.
Uriel would not be worthy of boss status if it merely threw out melee strikes. Due to its half-mechanical nature, Uriel is outfitted with weapons capable of concentrated machine gun fire, as well as spread fire and laser blasts. For the player that chooses to retreat from every combo, Uriel can follow up its beatdown with either of the machine gun attacks (and in the second phase, throw in the unblockable laser cannon as a finisher). In combination with its size and speed, this allows Uriel to dominate the battlefield regardless of where Christian may be.
To overcome this Nightmare, the player needs to pick their openings wisely and dance intelligently between offensive and defensive measures, capitalizing on weaknesses in Uriel’s moveset as Uriel might in theirs. For example, the long-range attacks mentioned above all feature long telegraphs that grant players opportune moments to close distance and chip away at Uriel’s guard, especially for a player that masters Christian’s Teleport as a gap-closer. Besides making great parry fodder, Uriel’s melee combos are easy to bait, locking Uriel into lengthy attack strings that, once avoided, provide short windows for healing or taunting. An advanced player may even consider redirecting Uriel’s machine gun fire with their own well-timed melee strikes, a risky option that deals massive guard damage when done successfully.
In practice, achieving victory is not as simple as outlined above. Uriel’s behavior sets are designed to pre-empt some of these strategies: its long-range to short-range closers eschew the typical melee-chase of some simpler enemy designs for an unparryable running Charge Explosion; its bullet fire is capable of shotgun spreads that punish players that refuse to retreat. Any one of Uriel’s attacks is capable of shredding a low-level health bar, and a player needs to respect the threat of the oneshot even when going in for a punish. That being said, any player that leads Christian to victory over this boss demonstrates an understanding of Death of a Wish’s enemy design that can carry them all the way to the end credits - as long as they continue to fight with confidence and grace.
At the start of the game, Christian announces proudly,
“The Nightmares…
You can’t stop me!
I don’t fear you anymore!”
With every enemy in Death of a Wish, we strive to put that feeling to the test. These enemies are as brutal and swift as Christian, and every last one is out for blood. We wanted the player to feel the danger Christian is putting himself in, but give just enough opportunity for the best players to break these foes wide open. Hopefully we’ll have succeeded once the game is in players’ hands.
Read more about:
Featured BlogsYou May Also Like