For the last 3 years I have been
working on a new type of resolution system that gets away
from the traditional paper game methodology of rolling dice
of X number of sides (d100, d5, d 20, etc.) The system that
I have came up has been implemented in two different types
of games (one vehicle FPS MMO and one RPG MMO). But neither
made it publication (welcome to the game industry), but I
got to refine the system in the process.
This explanation leans very heavily on
basic probability analysis but if you got through Stats 101
in collage it should not be overwhelming. I hope that you
see that it is a very powerful and supremely generalized
resolution system for computer game resolution systems.
The fundamental method for determining
success, failure, and magnitude of any action in a game is
called the resolution system. The vast majority of games use a
random number generator to “roll the dice”. These dice rolls are
use to determine, first, success/failure and then the magnitude
of any successful action.
Back before computers, rolling physical
dice and comparing numbers introduced randomness to game
resolution systems. Part of the fun of the game was rolling the
strangely shaped dice and seeing what happen. More and more
complex dice rolling schemes where introduced. To a large extent
this was to entertain the players (Ok I was guilty of that), as
well as to introduce variations in results. The fundamental
system themselves became increasingly complex form a
mathematical standpoint.
Computer gaming picked up this habit
from paper gaming and continued to generate random numbers
though complex and multiple dice rolling schemes and compare
them to determine success and effect. But the computer has no
fun rolling random numbers and the players never see it. But
they do see the effects, in unbalanced games or games that take
an extra-ordinary long time to balance.
This non-traditional resolution system
is designed to allow the game designer to gain mathematical
transparency in their resolution system, without overly
simplifying the trade offs and game decisions of the player,
allowing for rich game play.
1.1
System Characteristics
Good resolution systems are flexible,
easily tunable, reveal understandable concepts to the players
(e.g. armor reduces damage and higher armor values are better),
and do not get in the way of play. Good resolution systems
should have the following characteristics.
¨
Numbers are comparable – All RPG characters
are an amalgamation of numbers. Numbers of like elements, which
are shown to the players, should be comparable in scale and
effectiveness with one another. Thus a Combat Skill of
100 should be as effective in Combat as a Baking Skill of 100 is
in crafting, in the player’s mind.
¨
Common methodologies throughout the system
– If you are comparing the Attacker’s Aiming Skill to the
Defender’s Dodge skill and rolling a D100 (Rnd[0 99] for you
tech heads out there) to determine a hit in combat, then a
similar methodology should be used to determine other successes
in the game. For example crafting an item you should compare a
character’s Crafting skill to a Difficulty number and roll a
D100 to determine success. If you use different methodologies
then the character’s attribute numbers are not comparable. This
also leads to balancing issues for the designers, and confusion
to the players (thus violating the Comparable Numbers rule).
¨
Mathematically transparent – the system
should be mathematically transparent at least on the single
character vs. single character level. That is to say you should
be able to answer the following question with mathematical
precision –
For any
two characters armed with weapons of a differing cycle rates,
damage, different offensive and defensive skills/buffs and
different levels of effectiveness (which includes environmental
differences), what is the exact probability of Character A
beating Character B in a straight up fight?
Not being
able to answer this fundamental question insures that the tuning
effort will be long and difficult, if not impossible. If this
question can be answered then comparisons of attributes,
equipment, and skills, that make up the disparate elements of a
game character, can easily be made (supporting the Comparable
Numbers rule), and appropriate costs and benefits can be
assigned to these elements (meaning you don’t have to hire as
many systems designers and can get more content people).
Note that
real online combat is a confluence of multiple resolution
systems and synergies with dynamic game play elements that can
only be brought out by game play. At some point the system will
defy the use of probability analysis or simulation test beds.
However the longer you can maintain mathematical transparency,
the easier it will be tune because you can ignore those portions
of the system when it come to tuning . Failure to do this
guarantees a large amount of wasted design effort, “useless”
items and character attributes.
¨
Single System Tuning Knobs – The full
system as a whole needs to be grossly tunable by the
modification of a single variable. Each sub system feeding to
the major system should also be tunable with a single variable;
with their sub-systems have their own single tuning variable.
Thus you have a pyramid of tuning, where you start at the top,
and work your way down. Designers will iterate through this
cycle making fewer and fewer changes with each pass. Multiple
tuning variables for each system make system tuning extremely
difficult. Having no means of tuning a system is just as bad.
Note that this does not mean that things like character and
equipment values need to be single values. These inputs to the
systems need to have multiple values assigned to them. Rather
the systems that use these values that need a means of
universally weighting their effects.
At their core all game systems
determine two things, Success/Failure and the magnitude of that
success. In some cases Success and magnitude are determined at
the same time (if I hit you I do 10 points of damage). However
most game system resolve Success separately from magnitude.
The first part of a resolution system
is a function that is used to evaluate success or failure of any
legal action by the character, or more simply a Success Test.
The second part is a function that determines the level of that
success – or Effect Test. Effect Tests are used to
evaluate the magnitude of the success, again through some type
of comparison of the acting character’s attributes (and
environment) to the receiving character (or environment’s)
attributes.
Typically these comparisons add a random
element to them to provide a level of unpredictability to the
event. Designers strive for a balance between a totally
deterministic resolution system and a totally random resolution
system. The systems will typically have a range between “No
Way”(0% probability of success) and “All the Time” (100%
probability of success) where the differences in effectiveness
of the character vs. his target is determined more or less
randomly as seen in the graph below.

Figure 1 - Generalized Probability Curve based
Effectiveness Differences
The shape of this curve is determined
and controlled by the mathematical characteristics of the
formulas used in the game’s resolution systems, or in how the
dice are rolled. You cannot get around these curves. You
make the game more random or deterministic, by making the curve
steeper or shallowe. Never-the-less the curves exist the
minute you apply a random number to resolve something in the
game. Whether you understand the shape of your curve is another
matter.

Figure 2 – Normal
Distribution Curve
The derivative of this curve gives a
very well known and highly understood mathematical shape, the
normal probability or distribution curve (check out
http://www.ruf.rice.edu/~lane/hyperstat/A75494.html
and
http://www.stat.yale.edu/Courses/1997-98/101/normal.htm
for those of you who have forgotten your collage stat course).
Understanding this curve is how casinos make money at craps (the
probability distribution from rolling 2 six sided dice and
adding their results is a normal probability curve).
The area under the curve is the
accumulative probability (1), and for any X value the
probability of it happening, P(x), is the area to the left of
curve.
The curve is described by two elements,
¨
Mean (m)-
The average result
¨
Standard Deviation (s)
– a measure of how wide or skinny the curve is. High
s means the curve is
flat and wide, indicating a high degree of randomness (all
results are equally probable) . A low
s means the curve is
very narrow with very little variation in results, indicating a
very deterministic system.
The process to calculate the probability
for any c (score in
stat terms) against a known mean
m with a known standard
deviation s is as
follows:
First calculate the standardized value Z
using the standard normalization formula.
Z= (c-m)/s
Next determine the probability for Z (P(z)),
by solving the following integral-

But we do not have to have the computer
solve for an integral everything Connie the Barbarian slashing
at a green bunny. Statisticians have made a simple lookup table
that lets you determine the probability of any Z. For example
here is one out to 2 standard deviations.
|
Z |
P(z) |
|
-2.00 |
0.02 |
|
-1.90 |
0.03 |
|
-1.80 |
0.04 |
|
-1.70 |
0.04 |
|
-1.60 |
0.05 |
|
-1.50 |
0.07 |
|
-1.40 |
0.08 |
|
-1.30 |
0.10 |
|
-1.20 |
0.12 |
|
-1.10 |
0.14 |
|
-1.00 |
0.16 |
|
-0.90 |
0.18 |
|
-0.80 |
0.21 |
|
-0.70 |
0.24 |
|
-0.60 |
0.27 |
|
-0.50 |
0.31 |
|
-0.40 |
0.34 |
|
-0.30 |
0.38 |
|
-0.20 |
0.42 |
|
-0.10 |
0.46 |
|
0.00 |
0.50 |
|
0.10 |
0.54 |
|
0.20 |
0.58 |
|
0.30 |
0.62 |
|
0.40 |
0.66 |
|
0.50 |
0.69 |
|
0.60 |
0.73 |
|
0.70 |
0.76 |
|
0.80 |
0.79 |
|
0.90 |
0.82 |
|
1.00 |
0.84 |
|
1.10 |
0.86 |
|
1.20 |
0.88 |
|
1.30 |
0.90 |
|
1.40 |
0.92 |
|
1.50 |
0.93 |
|
1.60 |
0.95 |
|
1.70 |
0.96 |
|
1.80 |
0.96 |
|
1.90 |
0.97 |
|
2.00 |
0.98 |
Figure 3 - Standard Normal distribution Table
Look up Z and find out the probability
of X happening - P(z).
Note that every single game
system that uses random dice rolls as a part of its resolution
system generates a single normal probability bell curve. Even if
you are rolling two separate sets of die, each with their own
distribution curves and then compare them to determine success
there is still only one normal probability curve that describes
the event as a whole. The law of large numbers forces this
result and you can’t get around it.
The shape of the curve is the only
differentiation and that is determined by its standard
deviation. However, the complexity of many existing resolution
systems obscures the designers’ ability to determine the Mean (m)
and the standard deviation (s)
of their probability bell curve. Without that basic
understanding of the Mean and standard deviation the system is
not mathematically transparent. By directly using this curve,
rather than mincing the paper gaming methods of rolling dice
against some target number, we keep the mathematical
transparency of the system very clear at its most fundamental
level.
The general resolution systems uses a
Normalized Distribution Curve to determine success and effect.
This curve uses defender and attacker values to generate the
Mean, and Z values,
against a curve whose randomness is determined by the designers
(s (Standard
Deviation). Then a die is rolled and success/failure or effect
is determined.
An example of how to use a Normalized
Distribution Curve for a RPG game system is given below. However
any game system that needs to determine Success and Magnitude
can use a variation of this system.
In an RPG the most basic action is
attacking another character.
In this situation we have to first
determine if the character it the target or was successful in
their action. For a Success Test we compare the effectiveness of
the attacker to the toughness or level of resistance from a
defender. This comparison determines the amount of difference
between them and introduces a known level of randomness to
determine the probability of success.
Starting with the normalization formula
above we get –

For our purposes, the mean of the
distribution curve is the defender’s toughness, and the standard
deviation is a value that we provide indicating the level of
randomness we want to see.
c
= attacker’s “score”, or their attack’s effectiveness

m
= mean value of distribution curve, or the defender’s resistance
to the attack
>0
s
= deviation constant, represents the level of randomness in the
results determined by designers
z = the normalized score value
for the attacker

This formula gives us the probability of
success bases on the absolute differences between the
attacker and defender. However we want to use relative
differences rather than absolute differences (See Why This?).
So the general formula is modified as follows

Which simplifies to
 
Algebraically we will use the following
general resolution formula:
|
Where
ASum
= ((AttributeAttk+EquipAttk)*(1+EnvAttk))+K
DSum
= ((AttributeDf+EquipDf )*(1+EnvDf))+C
z
= (ASum – DSum)/(
s*DSum)
Look Up P(z)
IF Random#
<= P(z) Then
“Attacker
Success”
Else
“Attacker Fails” |
Figure 4 - Generalized Algebraic Solution for Success Test
¨
ASum - driven by the appropriate attribute
for the move plus the level of the character modified by
environmental effects.
¨
AttributeAttk - Character Attack
Attribute plus Equipment Attribute Bonuses plus Attribute Buff/Debuffs
¨
EquipAttk – Character Equipment mods
¨
K -
A constant to increase the
probability of a success in any situation
¨
Dsum - driven by the appropriate defensive
attribute for the move plus the level of the character modified
by the environmental effects.
¨
AttributeDf - Character Defense Attribute
plus Attribute Buff/Debuffs
¨
EquipDf – Character Equipment mods
¨
C - A constant to increase the probability
of a failure in any situation
¨
s–
The standard deviation of the probability curve that is used to
tune the Success test
The Attack Attribute is selected by the
Move performed (Firearm Moves use Accuracy for example), and
modified by the equipment used (a blunderbuss has an accuracy
mod of -3) as well as Buffs and Debuffs to that attribute (the
character is sea sick and has an accuracy mod of -10). Character
level can also be added into the Asum and Dsum calculation as
the designer wants.
Note here that environmental effects are
a percentage modifier, but they could have just as easily been a
additive modifier.
Likewise the Defense Attribute is
selected by the Move performed (Accuracy Moves are defended by
the Dodge Attribute) and modified by the equipment worn as well
as Buffs and Debuffs to that attribute.
Typically environmental modifiers need
to be universally applied across the range of Asums and Dsums
regardless of the increase in character based values. Thus
kneeling in tall grass always has the same relative effect for
low level characters as it does for high level characters if the
game uses a progressing attribute system. If not the
environmental factors could be additive.
Note that this resolution system is
couched in terms of combat, but it can be used in any situation.
For example baking bread would have the Asum determined by a
function that uses Baking attribute for the skill value
(Knowledge), a rolling pin for that increases knowledge and
allows for Baking, and the fact that it is too damp outside to
let the yeast rise effectively would vary the Environmental
value through its own sub-function. Dsum would use a static
Difficulty number based on the type of bread being attempted and
probably not have any values for Environment.
The effects test uses the same
Normalized Standard bell curve but reverses the process. In the
Success Test we are calculating the Z value to generate a
probability. In the Effects test we are generating a probability
to calculate a Z to tell us how many standard deviations from
the average effect we are. This is equivalent to randomly
choosing a range of effects to find out how many hit points you
do to your opponent (which is the underlying method used by all
games that attempt to randomize effects).
With the Success test we are calculating
the Z value to generate a probability. In the Effects test we
are generating a random number to calculate a Z to tell us how
many standard deviations from the average effect we re. Then we
add or subtract that deviation from the average effect to get
the final effect. This is equivalent to randomly rolling a dice
over a specified range (20 –35) to find out how many hit points
you do to your opponent (which is the underlying method used by
all games that attempt to randomize effects).
The process again uses the standard
normalization formula but solving for X (the effect) rather than
Z (the normalized standard deviation).
c
= (Z*s)+m
In this case the Mean
m is
the expected or average result (Aeffect). Without randomness
(express by Z*s)
we want the absolute differences between the Actor and Defender
to determine the average result. If the Defender can totally
negate the effect (a flak jacket which is proof against a 9mm
pistol round) then the expect result is 0. So in this case the
formula is
m
= is the average effect less any defensive reductions (Aeffect =
Deffect)
c
= actual effect
s
= range of effects possible outcome from the Mean,
Z =
number of standard deviations from the mean that the result is.
Effect = (Z*s)+
(Aeffect– Deffect)
In game turns the sequence looks like this
|
Look Up
Z= Random#
Effect = Z*s
+ ( AEffect- DEffect)
Where
AEffect =
((EquipEffect + CharacterEffect)*(1+EnvEffect)) + K
DResist =
((EquipResist+Characterresist)*(1+EnvResist)) + C
|
Figure 5 Generalized Algebraic Solution for Effect Test
Aeffect is made up of the following
sub-functions -
¨
AEffect – the average effect of a
successful test (ie the average damage a gun does)
¨
s
– The standard deviation or the range of effect around the
average effect (ie the range of damage that the gun can do and
its randominess).
¨
EquipEffect – Attacker equipment oriented
Modifiers to the average effect (armor piercing rounds, other
damage power-ups)
¨
CharacterEffect – Attacker oriented
Modifiers to the average effect (special aimed shots, hit
location, overall damage enhancing skills, damage Buffs/Debuffs)
¨
EnvEffect – Percentage Environmental
affects acting on the character performing the action that
increases or decreases the effect (rain reducing the heat of the
fire being used to bake the bread). This would also include and
Vulnerability bonuses that the character receives for hitting
the target with the appropriate class move.
¨
K – A constant that can be added to
increase the average effect of any effect test
¨
C – A constant that can be added to
decrease the Average resistance to any effect test.
DEffect is made up of the following
Sub-functions -
¨
DResist – The average level of resistance,
or damage absorbed
¨
EquipResist – Defender equipment that
modifies the average effect (Armor)
¨
CharacterResist – Defender skills that
modifies the average effect ( Damage reducing Buffs/Debuffs)
¨
EnvResist – Environmental affects that
modifies the average effect (Cover, rain when attacked with a
flame thrower.)
This system does two things that provide
mathematical visibility to the resolution system, which is the
corner stone of a well-designed resolution system. First,
because it compares relative rather than absolute differences
between the characters we avoid the problem of having the
probability curves for conflicts between characters at one end
of the number range be different from those at the other end of
the range.
For example in the graph below, the
probability curves of a system that takes an Attacker Value and
adds a random number to it and then compares it to a Defender
Value that is modified by a random number as well. We assume
that the base attributes have values from 0 to 120. As shown
below where the probability curve when an attacker with a value
of 10 takes on various opponents with that have values that
range from 0 to 20 (a -100% to +100% difference) is
significantly different that that of an attacker with a value of
100 taking on similar opponents from 80 to 120 (a -20% to +20%
difference). This insures that balancing one of the game results
in unbalancing the other end.
Alternatively a relative comparison
system has the same probability curve regardless of the absolute
differences between the attacker and defender. (a character with
a 100 attacking a character with a 90 has the same chance of
success as a character with a 10 attacking a 9). As the chart
shows these curves are equal.

Figure 6 - Success curves using Absolute and Relative
Differences
Also by adding a random number to a
constant and then increasing the constant (my skills go from 10
to 100 but I still roll dice that give me a range of 0 to 20)
results in a system that is very random at the low end of the
scale and very deterministic at the high end. Balancing the
curve at one segment for an optimal ratio of random vs.
deterministic outcomes, results in a game that is in balanced at
other ends, without making the system more complex.
With this system you can answer the
question of “what is the chance of me beating him in a stand up
fight?” with simple and well-understood probability analysis
centering on binomial distributions. Writing an Excel tool that
does this becomes extremely easy.
The flexibility of this system is also
high. Randomness is controllable by a single number. For example
if we wanted to make three guns that all do the same average
damage (50), but widely varying ranges it is as simple as
defining the Sigma for each weapon (Flame Thrower - sigma 30,
Sniper weapon –sigma 5 and Flaming Spud chucker – sigma 42 but
minimum of 20 points). The Flame Thrower is very erratic giving
you effects ranging from 0 – 120, the Sniper rifle is
consistently hitting between 45 to 55 and almost never going
below 40 or above 60. The Flaming Spud Thrower (my fav) even
more erratic but it always does at least 20 points of damage.

Figure 7 - Damage Curves for three weapons with average damage
of 50
As mentioned before the system can be
used for any action in the game and it does not necessarily need
to even have a character targeted to provide the Dsum values. In
this case, the action (say cook a loaf of bread) uses a fixed
Difficulty number for the Dsum and it’s modified only by
environmental factors. Every other system uses some form of
Difficulty number when characters are not involved. However by
using it in a systematic manner the visibility is kept intact.
Note that players never have to see
these numbers. For example the stats shown to the players for a
weapon is its Accuracy (going into AttkEuip of the Success
Test), and the 3-sigma range for the max and min damage.
From the player perspective all they
worried about are their numbers where high numbers are good and
low numbers are bad. Everything else is resolved behind the
scene where the game system designer know the exact effect of
introducing a new piece of equipment or changing a character
stat.
This is not to say that tuning will not
be done. The impact of dynamic effects such as crowd control
moves, weapon ranges, or player reaction speed and game AI will
still need to be tuned by hand, but these are significantly
easier to do if the underlying resolution systems are balance.
Home | About Me | Favorites | Flying What? | GDC '06 (Econ) | GDC Economics | Resolution System | Money Supply | Heirarchy of Pain |