Non-Traditional Resolution System

09/13/06

Home About Me Favorites Flying What? GDC Player Sales GDC Economics Resolution System Money Supply Heirarchy of Pain

 

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.

1         A Non-Traditional Resolution System

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.

1.2           Success and Effect Tests

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.

1.3           Non -Traditional Success Test function

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.

1.4           Non-Traditional Effect Test System

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.)

1.5           Why this?

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

 

This site was last updated 09/13/06