|
Balancing Zening
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 n umber 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.
Grouping Characters
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.
Common Classes
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.
Dials
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.
Spells
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
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.
Wrapup
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.
|