When we talk about melee combat in video games, we usually describe the cool-looking moves you can do, or the weapons you use, or maybe what super powers the characters can unleash. But the unsung hero to any melee combat system is buffering and canceling. This is how the game decides when to interrupt (or cancel) a character’s action to start a new move, and how it handles incoming player commands that cannot be executed immediately.

BUFFERING

First, let’s explain what buffering is and how Demon Crush uses it. Buffering is keeping track of player inputs (mostly attack buttons) that happen while the character is busy doing something else. The simplest example is pressing the attack button rapidly (which we all love!). The character begins attacking when the first press is received, but then the player presses the attack button again before the character’s attack move has even had time to connect with the enemy. If we didn’t have a buffering system, all those extra attack presses would be lost, as if they never happened. This is generally acceptable only in games with simple attacks, like many NES classics and older arcade games. But if we want to design anything more complex that still feels smooth and responsive, we need some kind of buffering system that can decide what to do with input we can’t immediately act upon. Fortunately, there are a lot of different ways that a game can deal with this abundance of aggression, and whatever way we choose will form an important part of the game’s personality and overall feel.

For example, suppose our game features long attack sequences, like the 3D Ninja Gaiden games. In games like this, players learn certain moves that they like and often “dial in” the button sequences quickly. The buffering system supports this by keeping track of whatever attack buttons the player pressed after the initial attack animation started. This makes the game feel consistent, since the player only has to enter the correct button sequence; they do not have to wait for each sword-slash to reach the end of its arc before the game will accept the next button. On the other end of the spectrum, suppose our game features slower and more committed attacks, like Dark Souls, where each individual strike is a deliberate decision about stamina, timing, and overall position. In this case, the game only remembers the first attack input that came in while the character was performing another attack. Doing this in a game with relatively slow attack animations teaches the player to respect commitment in combat without unduly punishing them. By pressing attack more than once, the player commits to a second swing, which could be a full second or longer, depending on their weapon choice. This also ensures that the character will consistently chain multiple attacks together as fast as the animations allow, since the next attack input is buffered in advance and is ready to go as soon as possible. However, by dropping all additional input during that first attack, the game avoids overly harsh punishment, like committing the player to three or four swings of a slow, heavy weapon, which could leave them out of position and vulnerable with an empty stamina bar.

Demon Crush is somewhere between these two extremes, featuring what we call “atomic” moves. Every attack in Kenzo’s arsenal can be performed either from neutral (standing, running, or jumping), or by chaining out of any attack. This means players can assemble combo strings from any and all of the attacks at their disposal, rather than having individual moves locked away behind long input sequences. But Demon Crush players needs to be highly responsive to changes in the battle, so the game needs to execute rapid-fire attack sequences smoothly and with the flexibility to re-interpret player intentions right up to the moment of execution. After extensive testing, we arrived at a simple and elegant solution: Demon Crush buffers only one action input at a time, but the buffered input can be cleared by events like the player taking a hit or entering a slow/powerful attack animation, and can be overridden at any time by the player pressing a different input action. Outside of the buffer, the game keeps track of special inputs like double-tapping a sideways direction, so that a rapid “left, left, attack” input will be buffered in a way that remembers that the player wants to dash left. The overall intention is that Demon Crush can look at the input data and the surrounding gameplay situation to interpret what the player most likely meant to do, and then do that; the extra context to the buffered input is what makes this possible. So now, players can freely mash the attack buttons (which we all love!), but still bail out with a dodge roll, switch attacks, or choose a different enemy to strike at the last moment if the situation suddenly changes – which it often does!

In this situation, the player’s original intention to continue attacking the original target changed at the last moment due to a second enemy closing in more quickly than expected. By combining the buffered attack button with the current directional input, the game can recognize the player’s intention to continue with the attack, but change targets.

CANCELING

The second part of this is canceling. Canceling as we know it dates back to a bug in the 1991 arcade release of Street Fighter 2: The World Warrior, and instantly became a pillar of the entire fighting game genre and beyond. To cancel a move or animation means to perform only part of it, then switch to a new move or animation before the first one would have finished. In Street Fighter 2, cancels allowed players to create combos from moves that the developers did not intend to link together by skipping the post-hit recovery animations in favor of starting a new attack, this drastically increasing attack speed and creating an inescapable follow-up after a successful hit. When and how actions can cancel, and what they cancel into, can determine a lot of how that move, weapon, or character feels.

For example, in the original God of War on PlayStation 2, Kratos can cancel many of his attacks into a dodge at any time, even before the attack has had a chance to land. A prominent effect of this unusual design choice is that players are encouraged to mash the attack button (which we all love!), even against enemies they haven’t seen before, since they know they have the option to dodge at any time. In Demon Crush, we wanted to reward players for changing up their attacks, switching buttons and directions, and moving around the field with different techniques. To reward these behaviors, we set up cancels that give Kenzo faster access to follow-up moves, or to versions of those moves that have shorter start up times, if he is canceling out of an attack that connected. Many of Kenzo’s quick attacks have multiple animations, both for visual variety and to help players recognize their place in an attack sequence. To test these moves, we created an empty room with a “punching bag” enemy in it and performed combos that we thought should work. Whenever we came up with a combo that seemed like it should be possible, but either didn’t work or wasn’t reliable, we would tweak the cancel windows just enough to make everything fit.

Staff dash startup speed adjustment

The dash attack with the staff seems like it should connect if launched during a successful tonfa combo, but the staff’s attacks have slow startup times to balance out their range and power. In this case, we felt that the combo was fun, and the player would expect it to work like it does in the top panel. So, we gave the player an alternate version of the staff dash with a faster startup speed, but only if they use it as a cancel out of a specially-tagged attack (like the tonfa basic combo). This method creates some inconsistency in the move’s speed, but does so in a way that works to the player’s advantage and doesn’t overshadow other attacks. Without the starting speed increase, the staff dash would come out too late and pass over the enemy after they hit the ground, as seen below; you can probably tell at a glance which one of these is more fun for the player.

CONCLUSION

With Demon Crush, we wanted players to be able to make split-second decisions in exciting combat scenarios. To do this, we needed to make sure that the player felt safe in keeping up the pressure by constantly attacking, and that they would want to maximize their effectiveness by using different moves that catapult them around the battlefield. Careful consideration of how the game handles input buffering, as well as the timing and nature of canceling, has a profound effect on shaping the overall feel of the combat system. We’re thrilled to have built a system that can provide rewarding challenges without stifling creativity, and that creates interesting tactical situations while encouraging players to mash the attack button (which we all love!)

Categories: Combat

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *