This is the first essay series for Signals and Light, and it provides an overview of enemy combat design in action games. It is written from the perspective of a AAA game designer who works with enemies in action games and aims to pay it forward with what he’s learned.
The third part of this series establishes terminology for describing how enemy attack timing is controlled in action game combat design, and it explains…
How Deterministic, Reactive, and Randomized attack timing work and why game designers would use them depending on a game’s needs.
How timing interacts with attack animations to clarify to the player how to understand incoming attacks.
As established in Part 1, enemy attack cadence is divided into four pillars. The essay presents the four pillars in order of their importance to game design, so naturally timing is where to start. One may even say that this is the order in which these ideas became increasingly important as game development evolved over the last few decades.
(See Part 2 for a full explanation of the enemy attack breakdown.)
Attack timing includes:
How often one or more enemy attacks, as determined during the Assignment of Attacker Role step.
Any cooldowns between individual attack options, as determined by the Selection of Action step.
The introduction of an attack, as determined by the Anticipation Frames.
The windows between individual hits within a single attack, as determined by the Inter-Hit Frames.
The time after an attack completes, as determined by the Resolution Frames.
As stated in Part 1, timing is what players may assume “attack cadence” means, and it is the most fundamental to the premise. In theory, one could make a game with perfectly even proximity, concurrency, and direction of enemy attacks with timing being the only factor that a player has to take into account, and that would just be…some sort of rhythm game? Games cannot remove timing from the equation, it is intrinsic to, well…All lived experience.
III-A - deterministic timing
Deterministic timing is the most basic form of attack timing, and it goes back to the origins of video games. Early platformers are the well-known example of this, where the deterministic movements of enemies create hazards that the player must avoid. Most gamers today would not say that a Piranha Plant popping out of a pipe or Koopas marching in a line is an “enemy attack,” but these entities helped to create the early building blocks of game design. Games still use deterministic timing today, it’s core to many genres, but arguably most would not think of deterministic timing as falling within the domain of combat design or attack cadence.
Deterministic timings describe things that enemies do independent of the player’s state and actions, and so these enemies might semantically be better thought of as hazards than entities. However, it is still worth mentioning because there is clearly a satisfaction that forms in the human mind when obstacles have character and a semblance of life to them. Early retro games introduced simply throwing eyes on inanimate objects, and suddenly the gamer’s mind experiences this as an enemy character. This awareness enhances one’s sense of play, leading to an emotion that is likely linked to a fundamental biological evolutionary drive to engage as hunters and prey with the living world.
III-B - reactive timing
The next step is for attacks to have reactive timings based on the player’s actions. This creates the barebones of AI awareness (though true awareness is much more complicated, and if interested, one can see folks like AI and Games speak on that).
One of the earliest examples of this is Pac-Man, a game where the enemies move according to rules related to the current player location. While combat-focused action games frequently replace the deterministic timings described previously with hazards, reactive timings are incredibly common in all forms of action games, from simple to complex.
In reactive timing systems, the occurrence of enemy attacks is as mathematically precise as in deterministic timing systems, but it requires an extra layer of accounting for the player’s state. It can be as simple as, “If the player is within X units, then activate an attack.” Such proximity-based systems are simple but effective, sometimes functioning without any other complex enemy attack cadence systems present. When a game primarily uses a proximity-based reactive timing system, there is little concern for controlling the specific position, concurrency, or direction of various enemy attacks, and every single enemy follows the proximity rules even if there is an enormous number of enemies attacking at once.
There are also state-driven reactive attacks that use logic other than proximity. For instance, sometimes enemies trigger attacks when they reach a specific health threshold, most often seen in boss fight phase transitions. Other games have enemies use reactive attacks that always trigger after the enemy has blocked or been hit by a specific number of player attacks. Sometimes, enemies use actions in reaction to special player actions, and sometimes, they may even read player inputs in order to punish specific behaviors.
Regardless of why a reactive attack triggers, games use systems like this to create predictable play patterns for the player. These systems favor gameplay loops where the player is meant to manipulate enemy behavior through actions in order to get reliable and reproducible results. Some games might assign reactive timings mostly on easy enemies who have few attacks or even just one attack, but then they may give more complex patterns to harder enemies. This strategy can be used to communicate the mental load that grunt enemies are going to consistently represent in the game compared to harder enemies. On the other end of the spectrum of complexity, reactive boss actions can provide consistency in challenging encounters, helping the player to parse the complex and overwhelming odds against them.
III-C - randomized timing
Lastly, randomized timings are what players grow used to in the vast majority of action games. In this paradigm, it becomes impossible to know exactly when an attack will occur, forcing the player to play reactively. To make these timings possible, gameplay systems insert random values into cooldowns between the attacks of individual enemies or even the cooldowns between attack ticket assignments across an encounter group. (Reminder, for definitions of “attack tickets” and “encounter groups,” see Part 2).
Randomized timings can go unnoticed when other elements of enemy attack cadence become more prominent. Their aim towards unpredictability leads them to contribute to what this essay described in the first part as a “combat texture,” something experienced by the player without the player being able to point a finger and say with certainty something like “the second attack had a 2.165 second delay, and the third attack had a 4.863 second delay.”
Designers tune random numbers with a min and max value, finding the right tuning through a combination of intuition and data. They rely on playtesting themselves and through watching other members of the dev team and external playtesters in order to tune this range to create their intended experience.
Randomized values are critical tools in the game design toolbox, especially in gameplay experiences that are meant to feel more “realistic.” Deterministic and reactive timings, on the other hand, make a game feel more “gamey.” To clarify the difference, a “gamey” design concept is one that is more concerned with its game principles than with an effort to simulate something real. If one made a VR game where the player throws a ball, a “gamey” method would have the ball be auto-targeted or have assisted physics towards its goal, perhaps even curving to fly straight to the goal if the player threw it close enough and exploding with colorful particle effects when the ball lands. A “non-gamey” method would fully simulate the physics of the ball with no effort towards simplifying, abstracting, or modifying the result of the player’s action and potentially not even celebrate the player’s action with additional non-diegetic effects.
Developers use randomized timings to strip away the abstract “gameyness” or “gamification” of enemy attacks and make them feel closer to a simulated experience. Of course, no one believes skeletons swinging swords in a randomized time frame is literally "realistic," but if all the skeletons swung their swords at the same time in lockstep sequence, this would be a more "gamey" approach that many real-time action games aim to avoid.
III-D - timing management
So those are the various types of enemy attack timing, but it is important to note that sometimes there are higher-level systems that control the timing of all enemy attacks. Probably the majority of games have enemies maintain their own internal cooldowns for each of their attacks, but sometimes attack ticketing systems can gate the rate at which reservations become available for new tickets, basically creating a universal attack cooldown for all enemies. There are also examples where the enemies attack more frequently if the player is attacking a lot and less frequently when the player is idle. However, it is hard to say what games have these higher-level timing management systems without the developers confirming it.
III-E - timing and level design
Of the four pillars, timing interacts with level design the least. Deterministic attacks are bound by the level design, as these types of enemies become PART of the level design in a more literal way than other types of enemies. Otherwise, reactive and randomized attack timings have no direct impact on level design. Clearer level design lessons will arise regarding these types of attacks in the analysis of the next three pillars.
III-F - discussion: timing is tied to animation
THIS ESSAY PROPOSES…that a game’s timing paradigm can and should have an enormous impact on the style and requirements of enemy combat animations.
An entity that has deterministic paths or that has predictable reactive behaviors does not need to communicate as much information with a single attack animation as entities in complex action games with randomized timings. In games where the attack is guaranteed to be the same every time, devs often give the attack animations less attention, complexity, and polish for a variety of reasons. For one, seeing an enemy do something remarkably strange over and over again would rob some of the animation’s novelty and interest. For two, the satisfaction in managing predictable behaviors lies to some degree in their simplicity. There is a unique joy to coaxing a Goomba into range and then perfectly jumping on its head—if the Goomba was doing a crazy breakdance the whole time, well…Maybe that would be cool as hell, but the point stands.
In a randomized paradigm, the player cannot predict the next action, which means that as the action begins and resolves, the animation must communicate to the player what to expect, even if it’s an animation they’ve seen before. This helps the player to both learn the pattern as well as have the capacity to react to the pattern even if they don’t fully recognize it yet. The joy (or misery) in these situations arises from a fascinating tension between the player’s desire to be able to understand a pattern as it's happening but also not feel like the pattern is too predictable and easy to manage, creating that perfect flow state of “challenge versus boredom” that game theory writers like to discuss so much.
When animations are HARD to learn AND randomized, that’s a recipe for a bad time. There are works already out there (such as from Sakurai and New Frame Plus) explaining what good combat animations look like and how the animation-focused sections of the attack diagram can come through in animated poses.
One can infer bad animations are usually the opposite of the virtues described there: incomprehensible poses, erratic timings not made clear through the movement, and not using anticipation poses to clearly communicate how the action is going to resolve. These are all things that can result in a player not enjoying a randomized attack timing system.
Of course, gameplay is more than just animation. VFX and SFX each have a huge impact in communicating timed stages of attacks to the player, but these need to be in unity with the animation, and in development, gameplay relies on strong animation reads to drive the first stake in the ground defining the quality of the attack.