Electric Blue’s Guide to Testing & Balance
#1
Well, this is a project I had in mind for over a year, with the aim of giving ordinary people some insight about game testing and balance issues.

It is in premature form yet without much content, so your inputs will be helpful in shaping this guide.

Most important, I need an answer to this: Are the headlines sufficient? What can be added?

By the way, the name of the guide is likely to change

Either post comments here or to welett@yahoo.com

I ll post new versions by editing his post.

edit1: added the code reading & testing section
edit2: added the game side tests section
edit3: added balancing section
edit4: beta complete

-----------------


Electric Blue’s Guide to Testing & Balance

First of all, this guide is not about the code editing and mod making, it is about the philosophy behind them. So, relax...

Games are sources of fun, but this doesn’t change the reality: They are just a bunch of 0’s and 1’s put in the right order. Each has its own set of mechanics.

As the number of players worldwide increases (and with the help of internet), the programmers are forced to be more careful about balance issues and bugs when designing their games. However, there is a reality: no game is perfect regarding these topics. A perfect game is a Utopia; that would be impossible with just use of the programmers, but with the help of players, it can be more reachable than ever. Think of Diablo, which has about 1 million players online. Great power, isn’t it 

The aim of this guide is to give the player basic insight about testing and balance issues to raise awareness about the games and their complex mechanics.

After designing 26 different mods from small balance additions to melee leagues, I think it is time to complete the guide and share the experience gathered. The information given is not merely based on my findings, it is rather a collection of information at Phrozen Keep, Lurker Lounge, Diabloii.net and Amazon Basin flavoured with my experiences. So folks at each community receive full credit and thanks.

This guide is prepared for Diablo II LOD, but the knowledge and insight can be applied to almost any game.

Here we begin...



The 6 Breeds of Players

Every player starts as a newbie, and proceeds at will. But some steps are quite demanding...

Newbie

A person of this type usually doesn’t care much about game mechanics, and plays just for fun. His/her aim is beating the computer. Some are even not aware that games can have complex mechanics. Most offline players fall in this category.


Reader

These players actually seek and read information about the game and ask questions to experts. They demand knowledge about the game and use that knowledge to ‘play the game better’. They devote considerable time to gaming. Most online users are readers. Some choose to proceed as to become a novice.


Novice

The folks of this type have some amount of knowledge about the game. They are excited folks usually, filled with the ambition to discover. They usually attempt to write a guide that already exists somewhere else, or just post skills/stats as a guide. They can answer basic questions about the game. Their knowledge is limited, and as they proceed, they are divided into two groups: The ones that are aware that their knowledge is limited (will be referred as trainee), and the ones that are not (will be referred as pseudo).


Pseudo

Unfortunately, most of novice folks become pseudo with time. They think they know about the game alot and attempt to make mods and write guides that are copies of someone else’s work or little better than disasters. They try to answer most questions but the answers are hardly answers to those questions, or they are completely wrong. They are usually younger than a sophmore student and don’t have the sense of a scientist or an engineer. They are unable to conduct tests, or they are very poor test planners. They are not aware that they are not experts. They are usually in search of popularity. End of the road.


Trainee

Those who managed to avoid the path of pseudo become trainees. They are usually well educated, and usually at least a sophmore student in a field of science or engineering (or have strong analytic background). This background gives them the ability to understand game mechanics in depth, and the ability to conduct well designed tests about the game. However, they still have much to learn. Not much number of newbies become of this kind, though. With time, they can answer most questions coming from newbies or readers.


Expert

The devoted producers of information. They have extracted most of the information present either by reading game code, or by game side testing.
Those that are also good in balancing and optimization have written comprehensive guides and designed patches for private servers or decided tournament rules (which are of course well established). They are good folks, usually. If you are in contrast with one of them and if you are not an expert, you are usually wrong.


Code Reading & Testing

Reminder: This guide is more about testing.

Plain simple: Code reading refers to digging in the files of the game and trying to understand what is going on inside the game. Doing this requires considerable amount of time and devotion. Inside the game, everything is related with everything else. So understanding the structure and mechanics is a hard task.
For the information extracted to reflect the truth, the whole code should be taken in consideration: One definition may have been given constraints somewhere else either spesifically, or by global definitions or constraints. The how to part is beyond the scope of this guide, one may find any information in Phrozen Keep.
The information is either hard coded, or soft coded. Soft coded information can be extracted and viewed/edited by spreadsheet programs. They are easier to change/view compared to hard coded elements. But remember, being able to do something is not an indication that one can do it properly and come up with right or desired results. Even opening and resaving a file may result in disasters. So you need to know what you are doing if you believe you are able to do ‘something’. Don’t cry after opening skills txt and editing something and when you open the game you come to see that half of your curses dont work.
Considerable amount of computer knowledge is needed to read or edit the hard coded elements in game. Same rules apply with soft coded elements, but the task is more specialised.
Testing, on the other hand is something about the end result, jumping from the inputs directly to outputs. This may seem easier, but one should be cautious while testing, because the concept that is to be tested needs to be singled out from other variables in the game and that is not usually an easy task.

So, what is code reading and testing for? First of all, in a game such as Diablo, which has 1 million online players, knowledge is power. More knowledge is more power. The power can be used in different forms. One can transform it to self-satisfaction or popularity, others can transform it to sharing or even more fun in forms of optimised builds or even brand new mods. It is up to you. One aspect is that the more people testing and extracting information, the better mechanics are understood. This leads to more demanding players and programmers are forced to come up with better games. More fun and challenge.

Testing/Code reading and balancing can also act as the counterpart of mastering in music. The composer makes the song, but after mastering, it is ready for release


Testing & code reading has three main purposes

1 – Learning more about mechanics of the game

I remember the times that people claimed their lvl 68 paladin with 4000 defense as the most powerful character ever. That is not a bad thing, that is an indication that every level of player gets the joy out of the game. What would one’s reaction be to such a sentence nowadays? Yes. That is the result of learning more about the game mechanics and exploring.

Either by code reading or well established tests, one can learn almost everything about the game, some being easier by code reading, and some by testing. Even the number of frames per second that the game runs at can be found by testing. So that is a powerful tool even if one is not a code reader.


2 – Finding bugs

Every element in a game is meant to work in some proper way. But some things just don’t. The reason is this: everything is related with everything else. As the programmer adds an element to the game there is a probability of creating a bug. There are some conspiracy theories that say sometimes, some of these bugs are left in the game intentionally to add diversity or balance.

Some bugs are obvious bugs, meaning that one can easily tell that it is a bug when found out. Remember the function of eth rune in 1.09 and what eth rune should actually do? It is meant to decrease the defense rating of the opponent by %25, but in 1.09, it made the defense of the opponent -%25 so practically every unblocked attack was a hit.

Some bugs are not that obvious, there is a confusion whether it is a game feature or a bug. One should be very careful about those. The only information you have is there is ‘something’ going on. Think about the ‘synergies given by charges of charged items unless hard skill points are spent on the skill’ case. One can’t prove that it is a bug or not, unless some blizzard representitive comes up and announces what it is. There is just something that works ‘unusual’.

Finding these bugs will help balance issues, optimized builds, and helps to avoid unwanted results.

3 – Optimization

The more you know about the game, the better your answers to questions, planned builds and strategies are. Fair enough.
What are the best places to magic find in terms of the frequency of drops and time devoted?
What are the best places to level for single player games?
I am a semi-wealthy player, I have this and that kind of equipment, what should I put on my lvl 47 hardcore paladin so that I have the least probality of dying given that this and that aspects are most important for me?

Scientifically speaking, optimization is about setting up an equation/equations of some kind, with variables representing the elements of the game influencing the decision, and finding the best possible solution. The easiest way is to try to represent the variables in terms of a single variable and go for the solution. Strong analytical frames of minds are needed for this part of optimization.



Design of Game Side Tests

If a test is not designed properly (i.e; adjusted so that only the desired variable is to be measured), the results will be influenced by other variables. So the test will have measured something other than what it is meant to. One should be very careful about that. Read about the gathered knowledge about the test topic before conducting any tests. Differentiate between information (which is objective) and ideas (which are not nessecarily objective).

For each of our tests, we should be using a right measurement system. A measurement system transforms the input (that is to be tested) into an output that can be observed or recorded. The goal of any measurement system is to provide exact results, but mostly they come up with close results.

Apart from the selection of the measurement system, proper interpretation of the results is also a must that influences the ‘quality’ of the test.

Lets consider a test about determining attack speeds of a character with certain equipment. Our measurement system would most probably be a stop watch to measure time of attacks. Using a digital one would yield accurate results. Proper interpretation of results covers the analysis made after collecting data.

Every test has errors, either composed of systematic errors (an error with the measurement system, in our case, the stop watch may not work properly and that would be systematic) or blunders (that are obvious errors, in our case, the person collecting data may record the durations with considerable error or misses some, or at the analysis stage, there may be a calculation error. Those would be blunders).


Design Steps

A test to determine the attack speed of a character will be given as the example. Let’s assume we don’t know anything about this topic.

1 – Determine what is to be tested as detailed as possible.

The level of detail in the test will determine the correctness of test results. Testing the effect of increased attack speed (ias) may require to test effect of increased attack speed in different equipments put in different parts of the body, and effect of increased attack speed coming from skills and auras. Even the level of the character may influence the speed. We don’t know yet.
Lets assume we made a default char, and we will determine attack speed in its default form. Then, we will add %20 and %40 increased attack speed each time to a different equipment and conduct the test, measuring the effect in each part of the body.
Let’s assume our character is a druid, shapeshifted in level 1 werewolf and using the standard attack with a berserker axe.


2 – Determine the test methodology. Use your gathered information about the game.

First, determine your units, will you calculate speed in attacks per second or frames per attack? Develop your methodology accordingly. Lets assume we will find the attack speed in frames per attack. (The game runs at 25 frames per second.)
The obvious way to determine attack speed is this: Make a certain number of attacks (x) and determine the duration (y). Divide the duration with number of attacks to find the speed in temrs of number of seconds per attack. Multiply by 25 and you will find the speed in frames per attack. (fpa=25*y/x is your attack speed equation)
However, the information about the game may yield different methodologies like this: Once you know that the games run at 25 fps, you can make use of this information to determine the speeds. After some math, one can come up to see that the number of seconds that 25 attacks are completed is the speed of that attack in fpa. Easier -)
Also check for possible systematic errors. If the methodology doesn’t seem right, change it or verify it with different methodologies.

3 – Prepare the test tools

Prepare your character and equipment, you will need a character editor for the task. For our case, we need a druid and armors, boots, gloves helms, amulets, rings, belts and berserker axes all with 0, 20 and 40 ias versions. Also you will need an equipment that would give %20 ias fanatism aura if you also want to test it. Not difficult to make. For the task, you can use Udie2, one of the best editor programs available.

4 – Single out the variable before the test & prepare a record sheet

In each step of the test, make sure that everything other than your variable to be tested is left constant over the period of the test. In other words, for instance if you are testing the effect of ias in the boots, make sure that during your test, all other sources of ias are left constant (i.e, the character is not effected by any different auras or equipped with a weapon that has different type and speed then before). This is very important, so double check at every step and record the values of other variables as well as the variable to be tested.
Here is an example:

A: test number
B: ias in weapon
C: ias in boots
D: ias coming from an aura
etc..

A B C D etc..
1
2
3
4


5 – Conduct the test & repeat it for several times.

We determined the methodology and prepared our record sheet. We singled out our variable. We have our character prepared. OK. We can safely start our test. Enter the game, conduct the test and collect your data. Repeat each step several times (i.e. repeat the test with 20 ias boots several times and record the results, etc..)

We are all humans, meaning that we can make blunders. So repitition guaranties that blunders don’t influence our results. For example, we have recorded the speed 15 times and 13 are the same and 2 are different, we can trust the same 13 results.


6 – Test other variables that may influence the results.

We have tested the effect of ias on attack speed, but what if the heaviness of armor or the character level or level of werewolf skill also influences that? Design and make additional tests about those possibilities.


7 – Take your data sheet and make the analysis of test results.

At the end of testing, you will have a huge data sheet. You will realise that the ias outside of weapon coming from any equipment will have same effect. The ias in weapon has a different effect and it is much more then ias outside weapons. Also you will see that increase in werewolf skill and effect of fanatism aura will also increase the attack speed in a different manner than weapon ias or outside weapon ias.

How much influence do they have on attack speed? You will need to setup and conduct different tests. For example, you can test effect of outside weapon ias for different levels of werefolf skill, or different amounts of weapon ias. What is the effect of base weapon?

8 – Something seems wrong, or you think you have discovered something? Make additional tests.

OK. You have conducted many tests, and it seems that for high weapon ias values, the outside weapon ias doesn’t effect attack speed. Is it true for all werewolf skill levels and under effect of auras? Make more tests until you come up with generalized results. For our case the result is: For high weapon ias values (the exact numbers depend on weapon type) ias coming from werewolf skill and outside weapon ias has no effect on attack speed.

Here are two exercises for you to test, dont cheat -) :
1 – At how many frames per second the game runs?
2 – For the paladin skill smite, what damage modifiers have effect? Is the value seen on the character screen right? What is the damage equation?


Balancing & Optimization

Before reading further, please note that this section is about balancing of a ready patch or mod (i.e; for making optimal builds, or deciding the rules of a league etc...).

Balance is one of the most important elements of joy in a game. In any defined section of a game, absence of balance means that there is a big gap between overpowered and underpowered elements (Elements can refer to any part of the game; this may be a character class, or a skill of a certain class, or items etc...). Perfect balance is not realistic for any game, for that to be achievable, the number of variable elements in the game should be zero resulting in a very boring game. Imagine a game that you just walk on a path. Just walk...

So the aim of balance is to achieve a small gap between the group of most overpowered elements and the group of underpowered elements. For that matter, first, the area of balance should be defined.

Steps of Balance

Please note that these steps are just logical orders, meaning that one need not be fully strict to them. After some steps, you will have an equation and eventually, you will play with it. I won’t go deep within math, though..


1 – Define Your Area of Balance

Before starting to balance things out, make sure that you state yourself what you intend to balance, and keep within your limits. As the area of coverage increases, the number of variables increase, and your equation () will be much more complex. You don’t want to go into differentials.

In Diablo, the most popular subject of balance is Melee Duelling. In this guide, we will also use that but in a more spesific area for the sake of simplicity, Berserk vs. Smite duelling and the level of crushing blow and open wounds in each class is to be determined.

2 – Define a Reference Point For Balance

OK, we decided to balance melee duelling. But what will our reference points be? Will we make other chars equivalent to one single char holding certain items or will we define different levels of balance?

The answer depends on the participants of the league (i.e average level of players, and player types) , and the size, of course.

A vey simple example would be choosing Smiters holding Grief Runeword and always walking as the reference point.

3 – Define Your Variables

Make your list and double check it, don’t miss anything. For our example, the list should contain all melee skills, damage modifiers, AR modifiers, and Defence modifiers as well as life. So, our list is something like this:

Smite, Berserk, Deadly Strike, Crushing Blow, Open Wounds, Angelic Ring-Amulet Combo, Can’t be Frozen etc...

Note that variables can be skills, item attributes, or items themselves.

Don’t miss anything, it is very important. For exapmle in this list, Life Tap and Amplify Damage (which can be obtained through chance to cast items) are forgotten. Deadly mistake.

4 – Determine Your Methodology & Go

What state will you consider for balancing? What should be your equation? Will you use mathematical methods, or game side testing?
First assign numbers to your variables in relation with their presumed powers. Again, make a reference.
Then, calculate the power of the variables to be used in the equation and determine the equation. Damage-wise, a good set of these variables for our situation would be Skill, AR bonus, Def Bonus and % modifiers. Of course, in simplified form, that is.

Be careful while giving the values, for example, chance to cast amplify dmg may prove to be much more dangerous than deadly strike. Deadly strike may double your effective damage, but when triggered, amplify dmg will triple it.

Here is an example. Note that all values and ways are imaginary, and depend on what you are balancing. This example is just to give the idea:

Special Attribute Variables:

Ignore target defense: 3
Can’t be resisted: 1.5
Can’t be blocked: 2
%1 chance of crushing blow: 1
%1 chance of open wounds: 1.5

Skills:

Smite: 6 (can’t be blocked x ignore target defense)
Berserk: 1.5 (can’t be resisted)

AR bonus:

Smite: 1
Berserk 3

Def bonus:

Smite: 5
Berserk:4

Etc...


Lets assume you have determined the values of your variables. Considering life, attack rating and defense values, make your balance equation and determine some balance point stated as the result of your equation. Here is an example:

Skill x AR x Def + (%Modifiers) = 90

Now, for smite:

Skill x AR x Def + (%Modifiers) = 90
6 x 1 x 5 + (%Modifiers) = 90
30 + (%Modifiers) = 90
% Modifiers = 90-30 = 60

So, according to our balance point that we determined, we can have up to 60 points of % modifiers (that are being crushing blow and open wounds in our example). 60 points correspond to %60 chance of crushing blow or % 40 chance of open wounds or any linear combination of these two.

For Berserk, doing the same math, we find that we can have up to 72 points of %Modifiers.

Here, we just made an optimization around a balance point..

This is a very simplified form of a balance equation. A more general one would consider chance to cast amplify damage, or slow for example, and we could observe many skills and possible combinations of items and skills in the equation. They may even be nonlinear. But I think, this one gives the main idea behind all.



Writing a New Guide

Why not share information that you gathered via testing or code reading? You can answer questions seperately on forums on a certain subject, or prepare a guide that bears the answers.

Before writing a guide, please make sure that it offers something new in the form of game information or perspective. Search the web in case what you intend to tell people is told before by someone else.

OK, so you have something new to say and made up your mind to write a guide. How will you do it?

1 – Make Your Team & Determine the Work to be Done

Will you do it alone? Will you do it with a team? Both have some advantages and disatvantages.

If you are writing the guide alone, you may miss some points and perspectives, but generally not lose your focus and everything is somewhat ‘to the point’.

If you are in a team, than every team member can share the knowledge and experience of his/her area of expertise related to subject, but there is a risk of losing the focus of the guide.

2 - Prepare the structure

How will you deliver the information? Will it be a standard report or do you have some other idea?

Most widely used format is this (also used in scientific reports):

Abstract

A summary of the other parts, usually written after other parts are complete. Should be complete within itself, meaning that when a reader reads the abstract, he/she should have infotmation about what is in the guide and the conclusions. And if he/she wants to dig in, he/she may start to read the guide.


Introduction

Gives reader an idea on what you are writing about. Talks about the general issues and discussions and what the role of the guide is in all of this.


The Core

This is where what you want to share goes in. May contain detailed analysis and explanations.


Conclusions

This is a brief summary of what is written in the core and usually the thoughts and comments about the outcomes go here.


FAQ

The usual.. Answers to Frequently Asked Questions. Looks like a Q&A version of the guide and can also broaden the subjects covered.


Links & References

A good guide makes use of other sources of information. And sharing that source with others is an issue related with ethics. If you have taken any kind of information from somewhere else, please, for the sake of respect and ethics, state that. Remember, in a scientific report, if you don’t do this, you are a ‘thief’.


Credits

Thanks go here as you can guess 


3 – Write the Beta Guide and Publish It.

According to your design and work division, write the first beta of the guide and publsh it somewhere on earth. The ‘somewhere’ is adviced to be a place much related to your guide. If you are writing a guide about Diablo, than your places are Lurker Lounge, Diabloii.net, Amazon Basin, InDiablo.de etc...

This is to get feedback about the guide and to correct minor mistakes. Also The FAQ section improves alot at this stage.


4 – Publish the Guide

After some time passes with the beta, you can make sure that the guide is complete and may feel free to publish the final version. If you come to this stage, you have just contributed something to the community. Be proud of yourself!


5 - Updates

The game evolves constantly either with new discoveries or new patches. Don’t let your guide fall behind all of this. Prepare updates to your guide if there is a need. The information should be up to date for it to be correct.


Designing Balance Patches

Apart from designing major mods to a game, with similar logics, you may want to design balance patches for certain reasons. You may be bored of the current version of the game and want to make yourself a new challenge, you may want to balance something that seems imbalanced from a certain perspective etc...
For Diablo, these may be in forms of:

- A duelling league
- Small additions to boost summoner players
- Creating the items that you always dreamed of (lame, but fun)
- PvP boosts
- Easier levelling of players
- Rune Gambling
- etc...

The how to is similar to Balance and Optimization section (so, go back and read again ) and the only difference is that here you design changes with game codes, not game rules. So, you can change actual mechanics of the game, add new items, remove items, add new maps for certain purposes (like a duel arena), change skills etc...You can do it yourself or ask some expert to do it. Phrozen Keep is your place for the purpose.

You MUST have deep information about what you are doing for sake of balance which is very important in a good mod or a good game. For Diablo2 LOD, Char from Phrozen Keep has prepared a very nice guide on ‘Diablo2 general modding / balance’. This gives the insight you need not for only Diablo but also for other games as well. Here is the link.
http://phrozenkeep.it-point.com/forum/vi...hp?t=21186

Make sure that you also check this post from Brother Laz of Phrozen Keep.
http://phrozenkeep.it-point.com/forum/vi...hp?t=20557

Not much to add there, but a very important point is the size of the commnity that will play your mod. So don’t make uber difficult runewords in a 100 player community, for example (unless you intentionally design your mod that way, of course). For item and mechanic designs, the approximate size of the community should in some form make into your equation.


Links

http://www.lurkerlounge.com/forums/ - Lurker Lounge
http://phrozenkeep.it-point.com/forum/index.php - Phrozen Keep
http://www.rpgforums.net/forumdisplay.php?f=1 – RPGForums
http://www.theamazonbasin.com/d2/forums – Amazon Basin
http://forum2.ingame.de/diablo2/index.php - InDiablo de
http://www.geocities.com/welett/fram.htm - Electric Blue's 1.1 Hybrid Wolf Guide


Conlusion

In this guide, I tried to share experiences and information on some topics about game side testing and balance issues and went further on with a how to write a new guide and designing balance patches. The designing balance patches section is already covered in Phrozen Keep, and no need to repeat what is already covered.

I hope this guide helps you. One thing to add, however, games are for fun. Never forget that.

Good luck,
Electric Blue
Reply
#2
Looking forward to seeing more. :)
Reply
#3
Refrigerator,Feb 14 2005, 08:38 AM Wrote:Looking forward to seeing more. :)
[right][snapback]68028[/snapback][/right]

Thanks :)

edit 1: added information under a section
Reply
#4
edit2: added Design of Game Side Tests section
Reply
#5
edit3: added Balancing section.

any comments? inputs?
Reply
#6
OK, other parts hence the first beta is complete.

any comments?
Reply
#7
Spiffy. :)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)