Wednesday, September 09, 2009

TKO - Designing a fighting game - Part 2

Last time I talked about figuring out the minimum requirements to make a good fighter and the decisions made to find the right balance of simple and solid. Now I want to address the general design and production strategy of the game.

Art/Character Production strategy
Making every fighter totally unique was simply not possible. We worked up a strategy where all characters had a pool of moves. Then characters would use those moves to focus their character type. A few general rules:
1) All characters share the same light attacks (high, low, jumping)
2) Character has 1 of 3 heavy punches : straight (good on the ground), angled (good anti-air), arc (in-between))
3) Character has 1 of 3 heavy kicks: straight (good on the ground), angled (good anti-air), arc (in-between))
4) Character has 1 of 2 jumping heavy punches : straight (good air to air), angled down (good for jump-in attacks)
5) Character has 1 of 2 jumping heavy kicks: arc (middle, knocks down), angled down (good for jump-in attacks)
6) Character has 1 of 2 low heavy punches : straight up (good anti-air), angled down (good for ground)
6) Character has 1 of 2 low heavy kicks: fast sweep (good distance), sliding kick (good for movement)

From a few choices for heavy attacks characters styles start to emerge: strong ground game, strong air-to-air, strong anti-air, strong jump-in, etc.

For special attacks we would repurpose some of those moves, add special effects and sounds to make their special attacks. We are using any animation we think would look good and work with the special. This could be 1 frame of jumping mixed with 2 frames of kicking, etc.

All characters share the same core animations such as walk, jump, hit, etc. Somewhere along the way we got time to do different idle animations for all the characters.

Character Design
At the most basic level, designing a fighting game character is choosing how they will control space on the game field. Many of these divisions have already been figured out by the myriad of fighting games on the market. Honestly, without designing new systems around each character (like BlazBlue did) there is not much new ground to break here.

For simplicity, the decision was made that all characters have only 2 special moves, one with punch and one with kick. We would modify parameters of the special moves based on strength of the button used.

I started with a baseline character, Swampfire. He has a projectile attack and a rising hitbox right in front of him. I am sure this will look familiar.

Fireball


VineSpike


From here I worked out the the other characters. I wanted to make the robots feel like their CN counterparts. Swampfire was an easy fit but Big Chill needed something special, He needed to freeze you. I gave Big Chill an offensive and defensive freeze. Obviously freeze loops would be a problem so we made the rule that you cannot freeze an opponent during hitstun. As a result Big Chill must rely on hitting freeze attacks (which do little damage) and then land link combos.

I knew I wanted Kevin to be a close up brawler. His game was going to be to get close and land his special throw, a throw that bounced opponents off the wall and set up juggle combos. For his 2nd move I gave him an attack that closed distance and avoided projectile attacks.

I wanted Van Rook to be a run-away character. He would rely on lobbing projectiles and teleporting away from his opponents. The lobbing arc allows his projectiles to be both a ground and anti-air attack when timed correctly. His teleport kick would shoot him off the back of the screen and reappear on the other side, kicking the opponent in the back.

Munya was going to be the heavy hitter archetype but with a twist. He had all arcing normals and a dash attack. However his kick special was a counter, he would strike a stance and when his opponent attacked him he would automatically counter with an attack that bounced opponents off the wall setting up juggle attacks.

Zak had to have the his claw attack. His claw is a great long distance poke and a fair anti-air attack. However, he has an array of anti-air normal attacks. He had a fast kick which jumped to the back edge of the screen and then flew down at angle quickly with a kick. Zak would be used most efficiently right out of opponent normal attack range.

Those were the first six we went into production with. I will not delve into the other characters because they were all redesigned. If you played TKO, you will have surely noticed many of the moves are not as originally designed.

Character Design Redux
As development progressed, it was clear we had to trim the timeline. Swampfire and Big Chill were in the game and working but the remaining characters required new systems that were not yet implemented: counters, special throws, bouncing off the edge of the game screen, attacks moving on and off the game screen.

As a result many of the moves were refitted to use existing systems or be modifications of existing systems. The juggle system was changed to make attacks have juggle properties instead of relying off the edge of screen bounce. I thought the juggle change would be a big issue. The bouncing off the edge of the screen was really a timer to allow juggle attacks to have a significant recovery so on miss or block it would be punished. To make the juggle attacks effective (i.e. you have enough time to recover and attack after a successful juggle attack), juggle attacks had to recover very quickly. I was worried this would be abusable but the core juggle system our programmer implemented (juggles are less effective each hit) took care of this.

Frame Data
When we started I tried to take simplified approach to frame data. I quickly discovered this does not work. The accepted frame data system (using start-up, hit, recovery, hitstun, blockstun, knockback, damage, block level, knockdown) is as simplified as it can get.

I set up an Excel document for all my data. I also set up some custom columns to calculate simple judgement on moves. I set up columns for things like: "Is this safe on block?", "Safe on hit?", "Jab after hit?", etc. so I could evaluate the effectiveness of an attack.

Then this was linked to another sheet with just the data the programmer needed to copy out.

I tweaked and tweaked frame data over and over. I am still tweaking this data daily to fix previous characters and set up new characters. It's uncanny how 3 less frames of start-up on a special attack can make a character go from weak to strong.

Testing & Balance
Once all the 6 characters were in it was time to test and balance. I made an Excel document where I tried to exploit the damage output of each character and then graph this along certain situations. How much damage could they do in the corner? Off a throw? With a full super meter? The graph then made it easy to see which characters had huge damage spikes or deficits.

To remove the factor of execution, I had another sheet where I could enter combos and they end values, taking into account damage scaling, would be output.

I also had an Excel sheet which was more of a power check list. How many link to special attacks? How many knockdown attacks? Can this character throw to super? Can they combo after super? Do they have a stun attack? How many ways can they land a super attack? Etc. Then I summed up these checkboxes to get a general idea of power.

From here I tweaked frame data and damage values. My damage output sheet showed me something troubling, it was more effective to use normals for damage output than special attacks. Based on this I totally retooled the damage values for all moves.

Ongoing
TKO is being tested and balanced daily. We are listening to feedback and looking at player data. We have 3 more characters to release and that means 3 more builds of balancing too. If enough people are playing, maybe more will be on the way.

Labels: , ,

0 Comments:

Post a Comment

<< Home