After my previous post describing the differences between Top-Down and Bottom-Up design, I thought I'd give some concrete examples of how I applied those two concepts to designing the character combat abilities in the Godzilla series (Godzilla: Destroy All Monsters Melee, Godzilla: Save the Earth, Godzilla: Unleashed)
It was a major design goal of mine to make each match-up a unique strategic event. Monsters had 10-15 different attacks at their disposal, but players seemed to use only 3-5 of those. Rather than try to force players to use more variety than they were comfortable with, my plan was to design each character such that a unique set of 3-5 attacks would be optimal, depending upon your opponent.
For example, grapples were devastating against some opponents, but almost useless against others. Edged attacks (like Gigan's bladed arms) did huge damage against some opponents - but just bounced off others. Some monsters could fly, or burrow, or teleport, or just flat-out run around at twice the speed of other monsters. The variety of characters was a big part of the appeal for me.
Step 1: Godzilla Top-Down
The first thing I did was to design Godzilla's fighting style from a Top-Down perspective. Godzilla could maul opponents with his clawed hands, beat them with his tail, stomp them with his feet, and blast them with his atomic breath. He would rip things out of the ground and throw them. Sometimes he used 2-foot jumping attacks, or uppercuts, or nuclear pulse energy blasts - but those were less common.
I took this list to our animator (we just had one on that first game, at least initially!) and had him put together roughs of each attack. We polished the most promising animations, and mothballed those which didn't seem to work.
From these initial animations, I started to put together a control scheme. I decided to use 1 button for claw attacks, 1 for kicks, and 1 for tail attacks. Another button would fire the Atomic Breath. We had duck and jump animations as well, but I didn't know what to do with those yet.
Over the next month or two, I created a playable monster which we could play in mirror-match (both players were Godzilla). We quickly discovered that a big problem was allowing players to stay facing one another - in sort of traditional fighting-game profile - AND allowing monsters to run around the world freely. Almost no games allow both. After weeks of work, I eventually hit upon the idea that players would toggle between those states with a button - the "run" button. I later expanded that button to also allow players to duck. (Ducking was the action if you were not holding down the move stick.)
So we now had a fighting game with just 1 character - and we were scheduled to start adding more characters soon. But I took some time to first evaluate the fighting engine as we had it - was it fun? Did it feel Godzilla-y? Was there something missing that players would want to do? We identified grappling as something that we didn't have which seemed like a big omission. We also wanted the environment to play a bigger role in the fights - and we wanted monsters to "wade" through smaller buildings without getting caught up on them.
Environmental interaction was actually the catalyst for using "duck" - it allowed players to take cover behind buildings in a quick, useful, intuitive way. Moving around the city was difficult - but making it too easy sort of broke the giant monster feeling. We ended up "cheating" the monster collision cylinder when they were airborne - allowing them to jump through the environment easily, but keeping the ground movement stately.
Our second monster was Gigan. Gigan is very similar to Godzilly - he is bipedal, with a tail, and roughly the same size. But I had already identified a problem with my Godzilla control scheme - it had a button for "tail" attacks, even though many monsters in the Godzilla universe do not have a tail! I changed the name of the button to "Fierce" - blending the Street Fighter nomenclature with a concept from Blood Roar - that each character had a unique attack element. I wanted to push this concept right away, so I decided that Gigan would NOT use tail strikes for his Fierce Attacks.
But what was Gigan's fighting style? I didn't pay much attention to the movies for this process - instead I looked at the character model and listened to his sound effects for inspiration. Gigan was a cyborg killing machine - he looked fast and single-minded, like an all-offense no-defense sort of berserker. "Berserker" became my focusing word for designing his attacks. Berserkers use dual-weapon fighting styles in many games, so I decided that Gigan's Fierce Attacks would be spinning multi-strike attacks. I also thought his one red eye would fire sweet red beams, like Cyclops of the X-Men.
I came up with an animation asset list for Gigan, and once again the animator and I culled through his rough passes to come up with a list of animations that worked. Gigan, more than most monsters, had a lot of throw-away animations. Spinning all the way around was really hard to do quickly, and so many early attempts at Fierce Attacks had to be scrapped.
One of Gigan's signature attacks is a buzzsaw in his stomach. This turned out to be very problematic - since damage knocked characters back - immediately throwing them out of range of the buzzsaw! I ended up creating an invisible "vacuum" weapon which fired simultaneously with the saw - pulling opponents in faster than they could be knocked away.
Ghidorah was the next monster to get my attentions. Ghidorah has giant wings, so my first question was whether or not he should fly? That seemed to be a bit of a problem, since Ghidorah is a huge, heavy, slow monster. Flight would probably increase his mobility, which would break him thematically. I decided that I wanted Ghidorah to be a tank - able to absorb huge damage without flinching as he corners opponents and crushes them underneath his enormous body.
Ghidorah was a nightmare from a technical perspective. Animation software is generally optimized for humanoid bipeds - but Ghidorah has 3 long necks, 2 bat-wings, 2 tails, and 2 stumpy legs. (No Arms!) Simply building his model in a useable form was tricky.
I came up with an attack list fairly quickly - the biggest oddity was that Ghidorah's basic attacks were bites instead of claw attacks - so he uses 4-hit combos instead of 3-hit. That increased the complexity of his combo diagram a bit. I settled on just using his tail for Fierce Attacks - I considered using his wings, but I wasn't sure how well his flight powers might work, so I decided to play it safe.
Ghidorah's flight was very difficult to model well as an animation, so I tried a procedural velocity-based approach instead, which is what we ultimately shipped with. I discovered that simply hovering was a pretty good trick - which gave me flight without the mobility difficulties I had imagined. Hovering made a monster tricky to hit, and allowed the hovering monster to shoot weapons at a steep angle which could negate the advantage of ducking behind a building. I added mobility not because it had any practical use, but simply because it seemed odd to be completely rooted in place.
The hard part of Ghidorah (as if there weren't enough already!) was getting him to ignore attacks in some way. I developed a system of "reaction demotion" which allowed him to take less knockback and damage from attacks. This made him much too powerful - so I had it affect only Blunt damage attacks - not Edged attacks or Energy attacks. This system became a huge part of the game strategy - blunt attacks were almost useless against Ghidorah, which really forced players to change up their attack moves when facing him.
Mechagodzilla was intended to be the boss of the game, so he had to be awesome. The character model for Mechagodzilla was actually the second model to be built, but he didn't get his own playstyle until much later. Mechagodzilla had to be a master of weapons - and worthy of boss status, but not overpowered in regular matches. We wanted him to seem like an improved version of Godzilla. I decided that all of his Fierce Attacks would be weapon attacks.
Mechagodzilla was easy to get started once I had Ghidorah in the bag. Mechagodzilla could fly like Ghidorah, and could demote reactions like Ghidorah - making him a very tough opponent. Since Mechagodzilla is made of metal, and to make sure that he was different to fight against, I had him demote only Edged attacks. This required not only new hit effects, but also a new set of impact sounds - to really drive it home that you were unable to pierce his metallic skin.
Mechagodzilla's attack animations started out being very similar to Godzilla's - and this caused a problem. Mechagodzilla was just as fast, had similar attack anims, had extra weapons, AND demoted edged attacks - making them almost useless against him. He just crushed every opponent. I had to give him some easily exploitable weaknesses, but without breaking any of the design choices made in the top-down design.
To start, I made him very energy-dependent. All monsters use energy to fire their energy weapons, so I tied Mechagodzilla's Fierce Attacks into his energy as well. This meant that he could use his Fierce Attacks or his long-range beam, but not both. The second adjustment was to make his alternate weapon ammunition-based rather than energy-based. This required some new tech, but it made his missiles interesting an unique, since they could not be used frequently.
I adjusted the damage types on Mechagodzilla's attacks, such that most of them were blunt, and his edged attacks were very short-range. This meant that he had to get in very close to deal full damage to other monsters, so advantages like Godzilla's long tail could help even the odds. With these changes in place Mechagodzilla was balanced reasonably well with the existing characters - but now he wasn't very challenging as a boss! We added two elements to fix this:
1 - Alien spacecraft in the boss fight always fire at Mechagodzilla's opponent - dealing significant damage to them over time. (In other stages, the military forces would fire at the monster who was in the lead health-wise.)
2 - Our AI was specifically designed for Mechagodzilla - meaning that his attacks were optimized more than any other monster's.
To Be Continued...
Well, this turned into a rather longer post than I had thought. I still have 7 monsters to detail in the first game alone, so I'll pick up this thread in a later post. Look for it Thursday morning!