The Attributes Of An Attack
Every single attack in a beat-em-up game contains a specific combination of attributes that determine the aesthetic and gameplay properties of an attack and subsequently, the combos the different attacks will form. This is a list of all the attributes that an attack could possibly have. It is very much a work in progress and was built entirely by reverse engineering existing beat-em-ups with analytical gameplay. I'm sure that a lot of these things will be repeatedly tweaked and played with, and I'm also quite sure that there are properties out there in the wild that I have yet to include. I'm exposing it so that it can be refined under scrutiny and implemented effectively!
First and foremost, there are two different types of attacks: Base Attacks and Connecting Attacks. Base Attacks are the kind of attacks that start combos. The player simply need to provide specific input while the character is in a specific state, i.e standing or jumping. Most attacks (both Basic and Connecting) possess "outgoing connections", which are windows of time within the animation in which a new attack can start, provided the player provides the right input before a designer-specified frame later in the animation. When the player does this successfully it is called a "successful connection" and a new attack in the combo will begin. If the player does not make a successful connection they are "dumped" back into a default state, i.e. standing or falling.
The most important part about building combos this way is that an attack can connect into many different attacks depending on which button the player pushes and at what time in the animation they push it. This is done to great effect in Bayonetta and Devil May Cry; you can perform a pretty straightforward combo by pushing Attack, Attack, Attack, but you can also push Attack, Attack, then wait half a second before pushing Attack again to see an entirely different combo. Of course this could potentially apply to any attack in a combo, not just the last attack. Obviously, every outgoing connection expands the possibility space the player can explore and this principle is what differentiates rigid, traditional combat from more modern, creative combat.
Universal Attack Properties:
- Attack Name - The identifying value.
- Attack Time Line Length - The length of the attack in frames. Very powerful value that overrides the length of the animation that the attack utilizes and squishes or stretches it neatly into the length specified here. It is against this length that all attack values are specified within. It is at the end of this time line that state dump occurs if no connections are made.
- Prerequisite State - The state the player character must be in in order for this attack to occur. This is an incredibly important property and determines whether or not the attack is a Base Attack or Connecting Attack. If one of the default states are chosen, i.e. Standing, Running, Dashing, Jumping, etc., then the attack is a Base Attack. If "Connecting" is chosen then the attack will only ever occur if another attack connects to it from within a combo. If the attack is a Connecting Attack, then the Base Input Array and Base Charge Capabilities options will no longer be accessible since you perform the input of a connecting attack from within other attacks.
- Base Input Array - A button, a button-charge, a combination of buttons pressed simultaneously, or sequence of buttons pushed in quick succession that the player must push in order to successfully perform the attack. If an input sequence is being utilized, the combat designer needs to be able to not only determine the exact sequence but manage the timing of the sequence as well in order to tweak the difficulty of execution on a per-attack basis
- Base Charge Capabilities - Determines whether the player can strengthen the attack by holding down the attack button instead of simply pressing it. If an attack can be charged, a variety of sub-values must be determined: which frame of the animation the character gets suspended in until the button is released, whether the attack will "Auto-Fire" after so many seconds of button holding or if it can be held indefinitely, and how much additional damage the attack will do if it successfully hits an enemy character in the various states of the charge.
- Character Animation - The animation that plays when the attack occurs.
- Weapon Effect - The visual effect object that gets instantiated when the attack occurs. Can manage timing of sub-effects inside the object itself instead of here.
- Angle Of Slash Effect - Orientation at which to instantiate the slash effect so it looks correct - see number 6 on the impact effects post.
- Target Animation Type - Type of animation the target character will play when successfully hit, i.e. a getting-hit-from-above animation or a knocked-down animation. Alternatively, the target can be forced into a ragdoll state.
- Attacker Translation - The manner in which the attacker will move around the screen as this attack occurs. If translation is to occur, the combat designer must specify a variety of sub-values: The direction the player will move, the distance the player will travel, the time after state entry that translation begins, the time after the translation start that translation ends, the translation acceleration type (whether it's linear or curved), and the translation path type (whether it's linear or curved). Ideally, the designer can create an array of translations so that if they want the attacking character to move multiple times in multiple directions they can.
- Damage Object - The invisible object inside the character's skeletal hierarchy that functions as a hit box for the attack. In our engine, there will be a whole slew of invisible hit boxes attached to the character's weapon at all times, and it's up to the combat designer to specify which object is used with this property and determine how it behaves with the next two properties.
- Damage Object Active Window - The frames of the animation in which the hit box will be active and and the attack can actually affect an enemy character.
- Damage Object Translation - The manner in which a damage object moves through space; this is used mainly to create attacks with projectile-like properties, but also just to fine-tune the feeling of certain attacks where a hit box will have to move to feel right. The combat designer will have to specify a variety of sub-values: the direction the attack object will move, the distance the damage object will travel, the time after state entry that the translation begins, the time after the translation start that the translation ends, the translation acceleration type (whether it's linear or curved), and the translation path type (whether it's linear or curved).
- Damage Type - The type of damage that a successful hit inflicts upon the character that has been struck: Stun Damage damages the target and forces them into temporary state in which they cannot act, and the combat designer must specify the length of the stun and the amount of damage dealt. This is the most straightforward type of damage that is used to keep an enemy in place temporarily while the player attempts to finish their combo. Deterministic Knock Away Damage damages the target but also pushes them around in a very controlled way. In addition to specifying the amount of damage dealt, the combat designer must specify the usual set of translation sub-values: target direction, target distance, translation start time, translation end time, translation acceleration, and translation path type. Physical Knock Away Damage damages the character but moves them around with physical force calculated by the game engine. The combat designer must specify a couple sub-values: the direction the target will get pushed in, the amount of physical force used to push the character, the gravity used in this specific attack, and the amount of drag on the target character as they are pushed around. Sacrifice Damage kills the target character immediately but still rewards the player with blood. Disintegration Damage kills the target immediately but they the player receives no blood. For all damage types except Disintegration Damage, the combat designer must specify how much blood the player receives for successfully hitting with the attack and how much blood the enemy loses when struck. These values are intentionally independent.
- Player Character Hit Box Switch - Provides the option to turn off the player character's hit box during certain attacks to create invulnerability windows. If employed, the combat designer must specify the frames within the animation to turn the hit box on and off. Additionally, the attack may utilize a completely different hit box for the duration of the attack; it simply needs to be specified here.
An attack can have an entire array (or not) of outgoing connections and for every one the combat designer must specify the following values:
- Destination Attack - The attack that is performed if the player successfully connects.
- Required Input Array - A button, a button-charge, a combination of buttons pressed simultaneously, or sequence of buttons pushed in quick succession that the player must push in order to successfully connect.
- Required Charge Capabilities - Determines whether the player can strengthen the attack by holding down the attack button instead of simply pressing it.
- Connection Window - The frames in the attack time line in which successful connection will occur if the game receives the Required Input Array.
- Transition Frame - A frame near the end of the animation time line that acts as a animation splitter. If there is a successful connection, the character's current attack animation will cancel when they hit this frame and the Destination Attack time line begins immediately. If there is no successful connection, then the animation will continue to play through the Transition Frame all the way to it's end, at which point the character is forced into the Dump State (see below). This is used not only to maintain smooth animation transitions in combos, but shaves off time between successful attacks.
- Dump State - The state that the character defers to at the end of the attack time line if a successful connection is not made.
With these properties in place we will be able to implement the following mechanics:
- Attacks that can be performed from a standing, jumping, falling, or dashing state that can start combos.
- Attacks that have wide varieties of connecting attacks that can be easily utilized by using different input and timing.
- Attacks that end combos in sensational ways.
- Attacks that move both the player and the enemy around during attacks and combos (which feels powerful).
- Command moves that are executed with a specific input sequence.
- Movement techniques that move the player character around that can also damage enemies.
- The ability to integrate both sacrifice and command moves into combos.
- Invulnerability windows that occur during specific attacks and techniques.
For a little bit of visual elaboration, check out this image. It shows A - what happens upon attack state start, B - the window of time in which the player is being moved, C - the window of time in which the weapon's hit box is active and can actually hit something it's colliding with, E - the time in the animation in which the animation will be cut short upon successful connection, and F - the end of the state in which state dump occurs and the character is returned to their idle state.
That's it so far; please help me refine it!


