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!
Introducing: The Priest
The Aztec Priests had a special place in Aztec society as the individuals who interfaced directly with the gods through the act of sacrifice. Men became priests after demonstrating great piety in addition to their combat prowess. The raddest part of the Aztec priests were that they continued to do battle and accompanied the warriors in ritual combat.
We will be using priests as our opportunity to experiment with fun magical effects. The idea here is that they have special powers granted to them by the gods. The appearance of a priest means it's time to get tricky as you'll no longer be dealing with simple weapon attacks.
Aztez In A Nutshell
Hello! If you're reading this post it's because I want you to know what the Aztez project is all about without wasting a whole lot of your time.
Aztez is a 3d game with sidescrolling beat-em-up gameplay in the vein of Viewtiful Joe. It is set in the world of the Aztecs and is highly stylized. Unlike Viewtiful Joe, there is going to be a deep combat system not unlike Devil May Cry, God Of War, and Bayonetta. I want to create a combat system that provides many offensive options on a moment to moment basis, instead of one or two rigid attack inputs to mash on. Here is a post elaborating more on the direct influences.
I have been using Unity to interactively demonstrate the concept of the game in small pieces; here is one of our environments that you are able to run around and jump in. Use the arrow keys to run and the up arrow to jump.
The first iteration of the project is going to be released for free and will be playable in web browsers. It is going to be a combat sandbox where you are essentially put into a large room with lots of enemies to engage. We are intentionally minimizing the scope of the game so that we do not get bogged down in the production of a story or a complex game structure and can instead focus on creating a great combat system. He is a post elaborating on the different phases of the project.
The game employs a very stark look with easy to create assets. Using Unity allows me (Ben Ruiz, sole artist and designer) to produce environments and construct character props with minimal programmer intervention. I have also used Unity to communicate the impactful nature of the game's combat effects. Use the z button to watch an attack and check out the blog post to play with the individual effects.
We're very serious about creating a deep combat system, but I am unfortunately a little handicapped due to a distinct lack of public knowledge regarding the engineering of such games. So we are doing everything in our power to identify the many attributes of an attack so that we can create them individually and then link them together in different ways to create lots of fun and interesting combos.
Our goals with the project:
- Very robust set of mechanics that provide a fun mix-up of melee and distance combat. No mechanic unlockables! It will all be available in its entirety from the start.
- Incredible sensation of power with concentrated visual charm. Will push the very limits of combat effects.
- Crowds of fun and simple enemies to control. Easy, free flowing mass destruction will provide a distinct sense of dominance.
- A high skill ceiling for those who are interested, but with very satisfying combat extant at the lower levels.
- Lots of fun quirks and weird mechanics to discover. Lots of strange loopholes to exploit and rules to break.
- Fun and accessible secondary systems in place to enhance the combat and expand the creative landscape.
We're still early on the project and are moving forward on all fronts. Open communication is encouraged and we would love to answer your questions and hear your feedback.
GDC 2010 Highlights
I just got back from the Game Developer's Conference and like usual; it was amazing! As far as Aztez is concerned, I had some very relevant and insightful conversations with some very talented people and I want to share them with you.
It turns out that there is no known doctrine for the creation of beat-em-up games. I had a really great conversation with David Sirlin (please investigate his body of work! He has a lot of really interesting things to say about competitive gameplay and is also a talented designer) about what a beat-em-up looks like under the hood and how fighting games and beat-em-ups are very close relatives. I expressed to him my deep concern that legitimate reference material on the creation of deep combat systems does not appear to exist and he reassured me by saying that most of the designers out there who have made seminal beat-em-ups did the exact same thing I am doing now; intuitively reverse engineering the good combat that has come before them. It's a bummer that there is no reading material on the subject, but that's all the more reason to continue doing what I am doing and to keep exposing it publicly.
I also talked to Robert Velazquez (one of the lead in-game character animators on God Of War 3) after he gave a great session on Sony Santa Monica's animation and design pipeline. I asked him very directly if there were any combat designers that would be willing to talk to me about combat design and he said there very well might be! It turns out there are a good handful of them on the God Of War team. I'm going to contact him shortly about this and hope that one of the uber-talented combat designers there is willing to impart some knowledge on us as we move forward. Hopefully they'll recognize how serious we are about making sure that Aztez is deep and impactful.
Anyway, GDC is over and it's back to business as usual! I'm gonna spool up the blog machine once again, but know this! It's about to get pretty technical around here as I start to talk a little bit about the combat engine we're trying to build! As always, we encourage discussion and the sharing of knowledge so make sure you jump in there with us and help us make Aztez as great as it deserves to be!




