General - Balancing

A

Awestruck

Guest
When I say balancing, I don’t mean making two units with the same gold/lumber cost equally powerful. That’s simple. In fact; here’s the program that’ll do that for you. What I want, is to know how much more a unit will be worth if I change one of its aspects (like armor, damage or whatever), or even what a unit made from scratch should cost - in any map.

The ideas to do this originated when I myself needed to balance a map of mine. I tried to come up with the simplest way to figure out how to ‘rate’ different values of a unit.

Why? Because if I did, I could save a lot of time on all future balancing.

Table of Contents

Chapter 1: Theory
Chapter 2: Magic Numbers
Chapter 3: How to use the Numbers
Chapter 4: Exceptions and Limitations
Chapter 5: How to find the Magic Numbers
Chapter 6: How to find other Magic Numbers
Chapter 7: Using Magic Numbers in Non-Melee Maps
Chapter 8: Using Magic Numbers in TDs
Conclusion


Chapter 1: Theory


The theory behind this entire tutorial is that for any unit (even buildings), each aspect (being damage, health, speed, abilities, and so on) represent a portion of that unit’s gold and lumber cost. If you know how big this portion is, you can find out how the two numbers behave to each other (how to find one via the other).

In other words, we want to find a constant that, when applied to the damage output, or the hp of a unit, the value, in gold, of that trait would be returned. (Mathematicians will know that this can’t be done unless f(x) = kx, x = value of aspect, f(x) = gold cost of aspect, but the values I’ve found seem to follow this form quite accurately, more on that in chapter 5)

The beauty of this is that even though you’ve understood nothing I’ve said so far, you could still use my discoveries to help balance your custom maps.

Chapter 2: Magic Numbers

I have found the factors for two unit-traits. I’ll call them ‘Magic Numbers’ for convenience (or just for fun).
Here they are:

Value of 1 dps: 5,3544563483342
Value of 1 effective hit point: 0,18159375101708

These numbers are the values of respectively 1 damage per second, and 1 effective hit point as blizzard seem to have meant them for units. They can be used to find the gold cost you should use for a unit (not building) in a melee map. Of course there are similar values for other aspects; but these two seemed to me to be the most important.

Chapter 3: How to use the Numbers

Now I’ll explain how to use these numbers to get an amount of gold returned. Depending on your experience with math and with the world editor, you won’t need to read much/any of this.

But; if you wanted to figure out how to price a Footman for instance, this is what you would do:

First you need to find the dps of the footman. This is the equation to get the dps of any unit:
(2*BaseDmg+NumberOfDice+SidesPerDie)/(CooldownTime*2)
For a Footman:
(2*11+1+2)/(2*1.35) = 25/(2*1.35) = 9.26 (rounded up here, you will get infinate decimals on a calculator)

And the equation for effective hp:
HitPoints*(Armor*0.06+1) note: the value ‘0.06’ is the ‘armor-multiplier’.
For a Footman:
420*(2*0.06+1) = 420*1.12 = 470.4 (this time only one decimal)

Believe it or not, that’s the hard part. The ‘value’ of the dps for any unit is:
Dps*MagicDpsNumber (This number is the one I gave you in chapter 2)
For a Footman:
9.26*5.35 = 49.58 (the value, in gold, of the damage a footman does)

The ‘value’ of the effective hp for a unit is:
Hp*MagicHpNumber (The other number from chapter 2)
For a Footman:
470.4*0.18 = 85.42 (the value, in gold, of the health of a footman)

Notice: the amount of decimals used depend on what I think is prettier. When doing the actual calculations, you should use as many decimals as possible.

So! The cost of this ‘Footman-Unit’ should be 85.42 + 49.58 = 135.00 gold. Since we cheated and used a unit that already has a price from Blizzard, we can check if Blizzard agrees. And I’ll give a cookie to anyone who can show me a non-photoshopped default value of the Footman’s gold cost that isn’t 135. (You can go and check in the World Editor right now ;))

Chapter 4: Exceptions and Limitations

Alright, I know this may seem all religious and god-sent, with the ‘Magic Numbers’ and exact results. But truthfully, the footman-result isn’t very impressive because of the way I found the numbers. Usually the found gold cost of a unit (if tested on other blizz units) is off by a couple gold. You can see why when I take the divinity out of those ‘Magic Numbers’ and explain how to find them in chapter 5.

Listed here are some very important things to keep in mind when calculating the value of a custom unit using the Magic Numbers. First; they assume that the properties of a unit are limited to:

Damage – Damage Base, Number of Dice, Sides per Die
(Other factors that effect damage, like abilities or items, can be included here easily)

Effective hit Points – Hit Points Maximum (base), Defence Base
(Again, factors like abilities and items can be included in calculating this value)

The numbers do not take into consideration:

Range
Abilities (that are more abstract than just changing dps and hp)
Movement Speed (that is different from 270, or whatever speed you used to find your ‘Magic Numbers’ in case you didn’t use mine)
Flying/Ground movement
Upgrades (although this shouldn’t have a very large impact as long as the upgrades are properly balanced)

For these things you need to figure out for yourself what they are worth. Either just add a few gold to the price according to what seems fair, or try to guess/decide what the cost of the aspect should be. It is usually a factor you need to multiply on either the base value you found of the unit (like when we found the base value of the Footman), or, in some cases, just the value of the dps or effective hp (there is an example of this in the TD section).

Also, I’ve not mentioned the ‘lumber phenomenon’ yet. I haven’t given this much thought, but it seems that lumber has just about the same value as gold, and is only in the game for flavour. What this means is that if you get the value of a unit in your map to be 500, you could set it to be 300 gold and 200 lumber, or whatever combination suits you. Don’t take my word for it though.

Chapter 5: How to find the Magic Numbers

To follow me in this section, you should have at least some basic knowledge of math (probably more).

So, as you can see the two ‘Magic Numbers’ are constants. To find them, we put ourselves in the position I was in before I found them. So we give them names instead of values.

D = value of one dps
H = value of one effective hit point

Those are our goals. We’ll find them through other known values. To do this we have to make two assumptions.

-The numbers are indeed constants. This is only the case if (as mentioned earlier) f(x) = kx
-The constants are true for all units.

Are these assumptions fair? No. Can we prove them later? No. But they do seem to be correct for these unit-aspects (dps and effective hit points) and that satisfies me. Feel free to test them on any unit.

I found them by solving two equations with two unknowns. To do this we need to set up two equations. Here are the ones I used:

D*9.26 + H*470.4 = 135
And
D*12.19 + H*742 = 200

The first equation is the same one we used to find the gold cost of the footman, except what values are unknown are different now. The second equation is the same as the first, except it uses the values for a grunt. I used these units because they are very simple. They are melee attackers with no special abilities.

Moving on we need to isolate D or H in one of the two equations. I’m actually horrible at math, especially at solving equations, so I just got my calculator to solve this for me, getting:

D = 14.58 – 50.80*H

That is simply D isolated in the first equation (the one for the footman).
You then put that expression of your D-value into the second equation:

(14.58 – 50.80*H)*12.19 + H*742 = 200 =>

H = 0.1815

Yay! One down :D
Second one is easier now that we have this value. We simply put our newly found value for H into the one of the two equations. Either way you’ll get the same result. Here I used the Footman-equation:

D*9.26 + 0.1815*470.4 = 135 =>

D*9.26 = 135 - 0.1815*470.4 =>

D = (135 - 0.1815*470.4)/9.26 = 5.354

Yay! There we go, both values found. I’ve proved that these are the values for the footman and the grunt, but not for other units. I don’t claim that they are correct for other units, but that they are very close.

Chapter 6: How to find other Magic Numbers

First, note that the 'Magic Numbers' are actually a constant value in a function. In chapter 2 I could have written the numbers in the form:

f(x) = kx , where k is a constant ,x is the unit-value and f(x) is the gold cost of x

I chose not to do this to avoid confusion among people not very good with math. This however may confuse people into thinking that the “relations” are numbers, instead of functions. They are not, and for different values are potentially different functions. Also, I think one function could refer to another. I'll demonstrate how later in this chapter.

To find the values of other unit-aspects you have to make sure to compensate for every one of them for the unit you use. For instance if you wanted to find what it’s worth to be able to fly, you could use a gargoyle and the equation: (value of gargoyle’s dps+hp)+(value of flying)=(bilzz’s value of gargoyle)?

Nope, you can’t. Because the speed of the Gargoyle is 350, which is not the base value of 270 (that we assumed was the base when we used the footman and grunt to find the two constants that are also used in this equation) and has to be compensated for, and it even has a ranged attack. So that’s an equation with three unknowns, not one.

And the form of this equation probably can’t be as simply set up as the two for dps and hp.

As I indicated in the beginning of the chapter, f(x) = UnitGoldCost can contain internal functions. Here is a guess as to how the gargoyle equation could look. Note that x represents different variables here.

D(d) = price of dps, d = dps
H(h) = price of effective hp, h = effective hp
S(x) = price of speed - BaseSpeed
R(x) = price of additional range
K1 = the flying-constant, probably between 1 and 2

f(x) = K1*S(R(D(d))+H(h))

More functions can then be added to f(x) to complete an equation that will return the total gold cost of any unit. To do this you would have to find a model for each function including f(x) = UnitGoldCost which will be quite chalanging.

Chapter 7: Using Magic Numbers in Non-Melee Maps

So, the numbers are constant. Meaning that you can change them, but then you have to change all the aspects of all your units. So if you wanted your units to cost huge amounts of gold, you could multiply each of the numbers by 10 for instance. I tend to like things costing less in my maps, so I will probably divide the constants with about 4.

You shouldn’t create units and use them to find ‘Magic Numbers’. The numbers are what link the stats of all units, and the whole idea behind finding them is that Blizzard knew what they were doing when they finished balancing Warcraft III.

Chapter 8: Using Magic Numbers in TDs

Towers in TDs are quite easy to balance. What makes them easy is that the attackers only have one aspect to balance – effective hp, and you don’t need to think about this for defenders. This obviously isn’t true if attackers are able to attack towers. Also, the amount of variables for each encounter are very few (it’s a very predictable game type in terms of combat).

For towers you basically just need to set the price of the dps. After this you can think about the range. Don’t think of it (the range) as a value, but as a factor that helps determine for how long the tower can attack a runner. If for instance you assume that the length of the line the runner will walk while in range of the tower is the diameter (range*2) of the circle within reach of the tower, you can calculate this time.

t = d/v

t is time, d is distance, and v is velocity (or speed, measured in d/t. In our case, the speed of the runner).

So if a tower has a range of 700 (measured in war3 in pixels) when a unit walks through it in a straight line with a speed of 300 (pixels/second), the unit would be within range of the tower for:

t = 2*700/300 = 2 + (1/3) = 4.667 seconds

Using the attack speed of the tower you can calculate the exact amount of times the tower will be able to attack this unit. This value is:

A = t/s

A is amount of attacks, t is time, and s is attack speed.

So for the previous value of 4.667 seconds, if the tower’s attack speed was 1.5 the amount of attacks would be:

4.667/1.5 = 3.111

Of course for one runner the tower would only attack one time, but if 20 units were to run through, it would attack ‘20*1.556’ times assuming that the gap between each unit is 2,333 seconds. To get a more general equation, a 1 second (300 pixel) gap, would allow:

(4.667 + (20 - 1))/1.5 = 15.78 attacks

The (20 - 1) is 20 seconds, one for each unit minus the one already counted for with the 4.667 seconds.

If you do it this way, it could be smart to determine the price of a tower by:

Price of times it can attack each wave + Price of average damage (instead of dps)

Of course the actual distance the unit will run while in range of the tower will vary according to where the player places the tower, but this is true to the same degree for all towers (unless they have a very short range). The distance will also vary greatly according to the type of TD. If the player can build a maze, the distance for each tower can go from ‘0.8*diameter’ to maybe as much as ‘3*diameter’ (depending on tower range compared to how fat towers are).

Conclusion

To conclude this tutorial, is a small abstract of the many above lines. The point of the tutorial was to suggest that combat related unit-values and their relation to their portion of the gold cost of that unit could be found through equations. I have given a few pointers on how to find those unknown relations. I have also found a few of them; namely the relations between dps and its gold cost, and the same for effective hp.

In the later chapters are tips on using those relations to help balance your map. There are also some more general tips on balancing TDs in chapter 8.

Thanks for at least reading the last line of my tutorial, hope you didn’t read the whole thing.:rolleyes:
 

RedRage

New Member
Reaction score
7
... Nice ...
Now i get assigned math homework on the internet :(

Jking =) nice tut... +rep though i can't read all of it today, i got science test tomorrow
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
Wow. I really like the way you've laid this out... even if I'll probably never use it.

The only thing I didn't like about it is how sometimes you use "." to represent a decimal point, and sometimes you use a "," to do so instead. Consistency with "."s would be nice.

Well done.
 
A

Awestruck

Guest
pyrogasm: whoops, sorry about that.
I confused myself because I'm used to using "," but wanted to use "." since that's what you do in english. I'll try to correct myself =)

(notice that I posted the tutorial at 3:20 am on a school night... cut me some slack :D)
 
A

Awestruck

Guest
Daxtreme: ups, didn't realize seperate-post-tutorials were a no-go.

I added a conclusion and completely rewrote chapter 6.

thanks for feedback :)
 

Sim

Forum Administrator
Staff member
Reaction score
534
Helps greatly balancing one's map.

Approved.
 
D

dunpealx4

Guest
i am making arena game and i use the unitbalancer. the balancer is only for 1v1, a melee and a range unit should be tied or either one of them should have no more than 5% hp left. but in a large group, especially in arena games like footman, a melee unit should have higher HP left in the unitbalancer. how much HP should a melee unit left? i usually set it 30-40%. is this balance?
 

AdamGriffith

You can change this now in User CP.
Reaction score
69
This is going to sound really stupid, but how to you know how to calculate effective HP?

And I also believe that your DPS is wrong. Well, if there is more than one dice it is. (Assuming that is based on average damage)
 

Chocobo

White-Flower
Reaction score
409
http://www.thehelper.net/forums/showthread.php?t=44516

1.2 Calculating Effective Hp for Evasion

The formula you can use to calculate the effective hp for evasion is :

a = b*(100/(100-c))*(1+(d*e))

a = Effective Hp
b = Base Hp
c = Evasion Percentage
d = Armor
e = Armor Multiplier

But, wait. You do not know yet what is Effective Hp. It is the total damage a unit can handle before dying, excluding hp regeneration, excluding Spells, and damage modifiers (example : piercing vs divine, magic vs heavy...).

If you are using a hero to calculate the formula, it will do that formula :

a = (b*c)(100/(100-d))*(1+((e*f)*g))

a = Effective Hp
b = Strength of Hero
c = Hp given per Strength Point
d = Evasion Percentage
e = Agility
f = Armor per Agility point
g = Armor Multiplier
 

Pender

New Member
Reaction score
32
This is a great idea, and I'm always in favor of rigorous mathematical approaches, but this equation can't be right:

(2*BaseDmg+NumberOfDice+SidesPerDie)/(CooldownTime*2)

The average damage per hit is actually going to be BaseDamage + (NumberOfDice * (SidesPerDice + 1) / 2). I don't know how it fits with your formula, but if you don't account for dice with something similar, you're going to get weird results in some cases.

Look at it this way: a unit with 5 base damage plus 1,000,000 dice of zero sides each is worth the same as a unit with 5 base damage and zero dice of zero sides each, but your formula will calculate the first unit to have a numerator value of 1,000,010 and the second to have a numerator value of just 10.

It doesn't require zeros to get weird results either. Look at the following two units, each with one hit per second:

  • Unit 1: 0 base damage plus 1 die with 50 sides.
  • Unit 2: 0 base damage plus 2 dice with 49 sides.
Unit 1 will, on the average hit, deal 25.5 damage per second. Unit 2 will deal 50 damage per second. But your formula will value them the same.

Fix this glitch and you will have my approval.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top