Zening is a turn-based strategy game built in Flash that supports two game modes, up to twenty-player games, and features thirty characters and thirty spells that are either available by earning them through play, or by using microtransactions. The number of different configurations of armies using these characters and spells was mind-boggling; supporting up to four players, Army mode featured six characters, who could have up to three spells each, and Hero mode allowed for large groups of people (up to twenty total on four teams) to play together using only one character each.
It presented an interesting balancing challenge. I found only a handful of articles about character balancing, so I thought someone might benefit from my experiences with Zening.
A colleague of mine at Kongregate, Greg McClanahan, volunteered to help me try to figure out the balancing. All the characters already had values from the original level designer (who had decided not to do any more work on the game) but from our playtesting with Kongregate users we determined that a lot of the characters were too similar and interchangeable. We had three criteria we needed to fulfill with the balancing, which were:
Each character had to be unique and interesting
No character should be at so large a disadvantage that a smart player couldn't win with it
Each character had to seem appealing from a product point of view; why would a player pay to add this character to their army?
#1 seemed obvious, but many of the characters that had similar attributes, such as ranged attacks or placement-of-objects on attacks, had nearly identical stats. This effectively lowered the number of “product” we had, breaking #3 – you're not going to buy a new phone just because it's a different color, for example. (Well, maybe some people would, but we assumed that wouldn't be the case here.) Charging for the purchase of characters was also a touchy thing; it was core to the game's potential success – it had been made as a vehicle for Kongregate's new Microtransaction API – but while we absolutely didn't want players to accuse others of winning solely because they had a credit card (#2) they had to be appealing enough for people to want to spend their money on them (again #3).
The first thing I did was map out the characters' attributes into a spreadsheet from the game's config XML. The movement patterns in the XML are designated like “circle=1,” which we could understand fairly easily, but I wanted to see it exploded to visualize more clearly the spatial relationships assigned to each movement and attack pattern, which I did by coloring the backgrounds of the corresponding cells. I then printed out two copies and scheduled a two-hour balancing session.
The first wrong path we took was to try to assign the characters roles and classes straight out of World of Warcraft. The idea of this was to try to figure out how in general each character should be balanced – if we designated a character should be a tank, then they had high health, medium damage, and a low number of spells, for example. This analogy broke rather quickly as the way Zening was made didn't allow for a tank's original WoW purpose at all – Zening's multiplayer was all Player-vs-Player, so you couldn't have a character distract an AI opponent while the rest of your team attacked him. It just didn't make sense.
But while we abandoned the WoW analog, the idea of grouping characters remained useful, and would help satisfy both #2 and #3. At this point we had argued the two hours away and while we had tweaked a few character stats, we hadn't yet figured out how best these characters should be grouped.
Later I began thinking about how the #3 goal could compliment the #1 goal. David Sirlin, when balancing Kongregate's metagame Kongai, set out a very basic rule to help even out gameplay when players could have radically different card sets: no character should be better than another. That worked well for Kongai, as it was designed to be a game where the implements would be trickled out little by little to the players every week, but in order to fulfill goal #3, I felt it was important to actually have characters that were in fact better than others – but of course no one wants the people who are willing to pay to stomp those who were not. So I decided to use each character's degree of real-world value to create three tiers: Free, Medium and Rare.
Even though shoehorning the WoW classes onto characters turned out to be a bust, there were indeed clear similarities between certain characters that couldn't be ignored. Camie, a human, had two guns, attacked ranged, and had a diagonal movement pattern. Darbin, a robot, had the exact same attack and movement patterns. Their animations were already complete and were designed to be similar, due to a mechanic in the third episode of the story mode where suddenly players are fighting actual opponents which mirror characters. Darbin is Camie's mirror character.
So I decided, why fight that? There were a number of characters like that; Camie/Darbin, Zara/Steele, Nicole/Epic Probe. So I decided that each of these pairs would have a weaker and a stronger version. If I put the weaker in the Free tier, then the stronger would go in the Medium or Rare tier. But it was important not to make the pair's higher counterpart too much better, or I would violate goal #2. So I was careful when boosting the stronger one to try to create opportunities to use that character that were more than just tweaking stats.
Balancing for Awesome
There's an interesting blog post from Eric Heimburg called “Balancing for Awesome,” in which he advocates balancing for fun, not for pure mathematical equivalence. That seems obvious, but changing my thinking towards trying to find fun and interesting ways to use these characters and not trying to discover a purely systematic method of balancing really helped. At one point we tried taking a set of characters and assigning them all one set amount of value points, then distributing the numbers across all their stats in an attempt to find mathematical balance, but we ran into a wall when we asked ourselves “What's the numerical value of a diagonal movement pattern?” or “How much is one spell slot worth?”
Instead, I used goal #3 and the common classes I had established earlier to take a run through the characters and just try to find ways to make them different (trying to satisfy goal #1). I took Camie as she was, and tried to find ways to alter her patterns and stats to make Darbin just a little better. For instance, Camie moves only in diagonals. Darbin has the same movement pattern still – except he can also move laterally one space, which doesn't make him much more powerful than Camie, but allows him to open lines of attack that Camie can't.
But not all characters had a counterpart to balance off of, and a lot of the rest seemed flat and boring. My #1 goal could not allow this, so first I just tried altering movement patterns to see what shapes I could come up with that hadn't been thought of already. It was also important to not ignore the look of the character when planning their movement and attack – my large Troll couldn't have wide movement patterns (he needed to seem slow), but characters with wings like Noga and Beverly intuitively needed a longer reach. I found a surprising number of interesting movement patterns just by extending existing ones, or adding blocks randomly and then making them symmetrical. (I also tried asymmetrical patterns, but these proved impractical.)
So at the end of that process I had found ways to make most of the characters unique, but I still felt like there were very few characters I could legitimately put in the “Rare” tier; characters that would not be unstoppable, but that a player could look at and say “Oh, I could add that to my strategy in a really cool way.” I scoured the XML config file for any sort of dial I could use, a control that would let me give a set of characters really unique attributes. I found my answer in the lifeDepletion entry; a toggle that was used at the time only by magically cast vines and fire that had to die out a little each turn. Two characters remaining to be balanced were Notel Eks and Lluks, two skeletion characters. I paired them, and boosted their health and damage tremendously, while adding that every turn, their life would deplete by a set amount. They actually would have broken goal #2, but it would not be hard for a player with lesser characters to devise strategies to stop them in their tracks until time itself killed them. It allowed for creating two awesome characters that people would want, that kept goal #2 bent, but not broken. Of course, having found the lifeDepletion dial I created two more characters that were their opposites, that regenerated health every turn. To preserve goal #2 in their case, I lowered their attack damage. Hard characters to kill, but not superpowered.
I'd started thinking of each character as a channel on an audio mixing board, and each stat was a separate dial that could be adjusted. These were: Attack, Attack Fatigue, Health, Attack Pattern, Movement Pattern, number of spell slots and Other (in which I would catalog my lifeDepletion experiments). Once I had movement patterns and attack patterns down, the rest fell in line pretty easily as each character's identity took root. Adjusting damages to not be identical was made easier by the existence of Attack Fatigue, which was a number by which the attack amount would be decreased if the character was used twice in a row (we implemented this early on to discourage players from only moving one character around). I tried to make sure common class characters in the higher tier had a higher attack fatigue rate, so that the lower character had a small advantage: they could attack with less penalty repeatedly, even if their first attack was weaker.
Spell slots became an exercise in guessing how players would use each character. Angela, for instance, had relatively high health for a Common Tier character, and she was mainly a healer throughout the Story Mode, so it made sense to give her a low attack rate and balance that with giving her the maximum number of spell slots. Her potential effectiveness would be determined based on how the player equipped her with spells. On her opposite, I wanted a purely physical character, one that would have incredible health and physical power, but would be unable to cast a single spell. This became Kiel, the scorpion.
The spells were actually already pretty well balanced. In our playtesting I had not found any to be supremely overpowered, so I relied solely on further playtesting to determine if any further adjustments had to be made.
Playtesting was very revealing, but what was most surprising was that most of the characters seemed balanced. As a way to test goal #2 I invited Greg to play a few games with me where he would take the most advanced characters and I would play only those characters and spells that you got for free at the start of the game. Several play sessions later, he had won every time, but what was really important was that they were very close. I felt like I almost could have won, but wasn't stomped demoralizingly, which I think is the takeaway we wanted from new players. New players could go on to earn or buy new characters and spells and steadily feel like they had a shot to win even against opponents with more powerful characters. Of course, players with higher skill levels would always win over other less-skilled players, but that was unavaoidable. Our main concern was that the non-paying player not feel the situation hopeless or unfair.
We did adjust a few things; no character should be able to kill another in one single hit, so I lowered the attack values for Notel Eks and Kiel a little to make that impossible. Some spells were a little too powerful to be able to use so often, so we increased the recharge time for a few of them, mainly the Rage spells which turned your own characters against you. All in all though, my balancing process worked out surprisingly well from paper to game.
The 1-vs-1 Conundrum
Zening has two play modes, Army and Hero. I had balanced primarily with Army in mind, where each player has control of six characters each, but we found that Hero, where each player controlled only one character among a larger group, seemed pretty fair as well. One thing we never thought of was that people would enjoy playing 1-vs-1 Hero mode, where only two players controlled one character each. Hero mode was always intended to be played in larger groups.
1-vs-1 Hero mode is not balanced in Zening.
It was a hard decision to make not to re-balance everything to accommodate this mode of play, but the only way that would have been possible would have been to throw out goal #3 completely and make each character completely equal. We did make a number of concessions to 1-vs-1 Hero mode. In playtesting we found that whoever moved first in 1-vs-1 Hero would have a huge advantage, so the creator and programmer of the game, Michael King, altered the way that worked so that the person who moved first was random. Several enterprising players figured out that the Trap spell meant an instant win, because it held their opponent long enough to destroy them easily, so we added a rule that said if you've got only one piece left (which you always do in Hero mode) the Trap spell only lasts one turn.
The biggest thing I learned from balancing Zening was that unless you're working with a completely even system, trying to create purely mathematical models for balancing large numbers of characters is impractical. Instead, just playing with the spreadsheets and going with my gut instincts to create richly unique characters provided a much better starting point that could be honed by rigorous playtesting. This may be a less scientific method for balancing than some would like, but it worked for us; Zening as a whole is balanced pretty well, though I assume at launch we'll do more tweaking as larger numbers of players hit the game.
No game is ever finished. Just released. Which is what Zening will be in early April, so hopefully then you can tell me if my efforts at balancing succeeded or not. ;)
Thanks to Michael King and Greg McClanahan for their assistance in the balancing process.