This tutorial is going to cover how you can better balance you map using The Balance Formula that i worked on and came up with. The point of this formula is to give us a "reference point", a solid number that tells us exactly how powerful a unit is in respect to other units on your map. So I am going to go ahead and hit you with the formula...
That may look a bit scary at first glance, but lets take it one step at a time, to help you better understand the formula...
Our Formula can be broken in to 2 parts, one part that has to deal with hit points and a second part that has to deal with damage. First Lets breakdown the hit point section section
(("Life"+"Shield")/"BaseHitpoints")
1-The Life is going to be the max number of physical hit points of the unit we are putting in to the formula, you can take this value straight out of the Data editor in the field "Stats - Life Maximum", the Shield is going to be the max amount of shields a unit can have, this value can also be pulled straight out of the data editor in the field "Stats - Shield Maximum". when we add these 2 values together we get our "Hitpoints", we will use this "Hitpoints" concept later on.
The next step in our formula is our "BaseHitpoints", the concept of BaseHitpoints is something that i will cover in section B.
2-Now that we have looked at the life half of the formula lets look at the Damage half,
The Goal here is to simplify this down to give us a "DPS" (damage per second) value to our unit. To find our DPS we use the formula above minus the "/BaseDps". For this part of the tutorial i will find the DPS value of the Marine. The Damage is a fairly simple number, the amount of damage per hit that our unit deals, (for the Marine that is 6). this value can be pulled from the Damage effect of the weapon the unit is using under "Combat - Amount". next we take the "Attack Speed" the attack speed is the regular rate of fire of our unit and if pulled from the Unit's Weapon under the field "Stats - Period" (For the Marine our Attack Speed is ".8608"). Next we have to find the "RDelayMin" and "RDelayMax" this is the minimum and maximum offset of time from the "Attack Speed" that can take place between each attack. The "RDelayMin" and "RDelayMax" are pulled from the Unit's Weapon Under the fields "Stats - Random Delay Minimum" and "Stats - Random Delay Maximum" (The Marne has a minimum delay of -0.0625 and a max delay of 0.125) So we Plug in "Attack Speed", "RDelayMin" and "RDelayMax" to get our "Attack Rate" (For the marine our "Attack Rate" is going to be (0.8608-(-0.0625+0.123)) after you grab a calculator and calculate that out you get 0.9233) Now lets get a DPS value for our marine. Remember the concept of DPS.
"Damage"/"Attack Rate"=DPS
6/0.9233= 6.498429546193, Lets just round that off to about 6.5
I will Go over the "BaseDPS" in part 2
Now that we have learned a little bit about what the formula actually means i think we can condense it a little bit
Sqrt(("HitPoints/”BaseHitPoints”)*(DPS/BaseDps))
Looking a bit more simple? now on to the matter of the Base Hit Points and our Base DPS
II-Your Base Unit
To keep working on our formula we need to choose out a "Base Unit" this unit will serve as a sort of reference point, whenever we give a unit a unit rating at the end of this formula, that number will directly compare it to our base unit. when choosing you base unit make sure it is a fairly basic unit, no real abilities or specials or anything, for this tutorial i will make our base unit a zergling. We need to Find the "Hitpoints" (Life+Shields) and the "DPS" (“Damage”/(“Attack Speed”+(“RDelayMin”+”RDalayMax”))) for the zergling in the same way we did above. After doing the math a Zergling has a Hitpoint value of 35 and a DPS value of 6.592. So from now on we can fill in 35 for "BaseHitPoints" and "6.592" for "BaseDps". Now you have every Value you need to complete the formula.
The Beauty of the Trinity Balance Formula is that whatever number you get, that number directly relates to the number of whatever you base unit is (we just chose a zergling) a unit can take on simultaniously (assumeing all damage is split evenly between all targets) So for exampol if we had a unit with a rating of 5, it could fight and defeat 5 zerglings simultaneously (Assuming all damage is split evenly, witch it is not, usually the bigger unit has the upper hand against many smaller units). or another example if you were to make a unit even weaker than a zergling and it got a unit rating of .5 it would take 2 of those units to kill the zergling. that is the power of this formula, it uses a base point to be able to compare any unit you want. Les give it a try?
III-Zealots Vs Zerglings
Plug in the values in to the formula for Zealots and Zerglings and we will finally have our unit rating
Sqrt((Hitpoints/BaseHitpoints)*(DPS/BaseDps))
Okay Lets plug in our formula for the zerglings and the Zealots.
Zerglings- Hitpoints=35 Dps=6.592
Sqrt((35/35)*(6.592/6.592)) = 1
(Our Zergling got a score of 1 because it was our base unit)
Zealots- Hitpoints=150 Dps= (6.337x2) (multiply by 2 because Zealots have 2 attacks, one for each laser sword thingy) 12.674
Sqrt((150/35)*(12.674/6.592))= 2.870515
(Note Dont Forget you have to Square Root everything)
Now we know that our zealot can take on roughly 3 zerglings at once, unfortunately this formula dose not cover unit armor, and also this formula assumes that damage is split evenly between all sources, so the bigger unit in this formula will always have allitle bit more of an upper hand on the many little units, this formula cannot balance your map for you, but it is a great reference point, keep in mind that it dose not factor in many different parts of the game such as range, speed, abilities, regeneration etc...but i have used it a lot in my maps and it gives me something to work of as far as balance goes, i hope you all found this tutorial useful.
But what does this mean? That you need 2.870515 zerglings to beat a
zealot? Cuz it isn't true. You need more like 5.6 zerglings (the doubled
value)
I just did a quick map test, it would seems it takes 4 zerglings to kill a zealot, i remember back in the beta days you could have 3 zerglings take on a zealot no problem
Quite like the original post said: it "so the bigger units will always have a bit of the upper hand when it comes to killing the smaller ones".
He doesn't mention the effect of small units dieing and thus decreasing there combined damage output. In fact the small unit's damage should be halved in the formula (since that would be the average in a battle in which the small ones loose). In regard to what fokk sais i think this adjustment will place a zealot to 3.5 zerglings. And since that half zergling needs to be a whole zergling or he won't do anything we need 4 zerglings per zealot.
I like the idea for formula's for game balance and i think it might very well be underused in the mapping communities. Once i get to balancing my current map i will build a little on this formula and i might even make a tool to calculate these values, and maybe even put it online!
Thanks antimatterthunder.
@lodewijkadlp: Go
i am actually working on a formula that factors in smaller units dieing then their dps values decrease, work in progress, been really busy lately.
it's not half of their dps and it's not their whole dps. You must account for micro in some way. If you made smaller units more powerful because you expect them to die they are much stronge rin the hands of someone who burrows roaches or blinks away stalkers or pulls zerglings off as they get hit once or twice.
you cant completely rationalize it because the effectivness of a unit is determined not only by its direct combat stats but also movementspeed, smaller size >larger size in all cases except when considering seige damage, larger sheild pools are better than larger hp pools, and health is worth more on zerg units than on other units due to inert regeneration.
your formula is a good start but it simply is not complicated enough to really consider anything other than attack moving. Even then it is imbalanced when regarding meele vs ranged units and units with any form of spash damage difference or size difference.
I dont mean to be a nay sayer but simply to encourage you to expand your formula
edit: I forgot wasted dps. Small hit point units have the benefit of wasting more dps vs larger units. zerglings have only 35hp so the first two hits from a zealot hit for full but the next hits for only about 60%. that's about 5 wasted damage.
@happy04: Go
Yes yes yes
Just for all those who look at this formula
There is ALOT that it dose not take in to account, speed, micro, range, terrain, etc, etc, the point of this formula is to give a feel for how powerful a unit would be, i originally made this for WC3 maps, because of the mechanics in WC3 it was a lot more applicable there.
I like this formula, there's almost no way to START balancing otherwise, you can easily complexify it (it IS a word) but then it gets heavy handed and you need different formulas.
As for trying to count for micro... what? Micro is to do with applying skill some people can micro some people can't THAT'S how you win games (well some) by being better at playing the game and games which don't require micro, well you simply don't need to consider it then.
Also consider terrain, that's to do with map balancing not unit balancing.
The idea of the formula teaches (more than anything else to me) that you can make any comparison, as long as you have a base unit to compare against always
multiply the number by unitSpeed/BaseSpeed, do the same for regens and energy, it's not too hard to work with those. Ofc the splash stuff and the like is nigh on impossible to formulize, but this formula would cut in half (at least) the amount of time you take balancing, the rest is up to you to play test, same reason major companies do it in betas.
Also remember that this formula is a balanceing equally formula, as opposed to a rock paper scissors formula :-P
rant
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
EDIT:
I have come up with a better formula and tutorial since i posted this one that is available at this link
http://www.sc2mapster.com/forums/resources/tutorials/26875-data-how-to-balance-your-map-with-math-formulas/
I- The Trinity Formula
This tutorial is going to cover how you can better balance you map using The Balance Formula that i worked on and came up with. The point of this formula is to give us a "reference point", a solid number that tells us exactly how powerful a unit is in respect to other units on your map. So I am going to go ahead and hit you with the formula...
Sqrt(((“Life”+”Shield”)/”BaseHitpoints”)*((“Damage”/(“Attack Speed”+(“RDelayMin”+”RDalayMax”)))/BaseDps))
That may look a bit scary at first glance, but lets take it one step at a time, to help you better understand the formula...
Our Formula can be broken in to 2 parts, one part that has to deal with hit points and a second part that has to deal with damage. First Lets breakdown the hit point section section
(("Life"+"Shield")/"BaseHitpoints")
1-The Life is going to be the max number of physical hit points of the unit we are putting in to the formula, you can take this value straight out of the Data editor in the field "Stats - Life Maximum", the Shield is going to be the max amount of shields a unit can have, this value can also be pulled straight out of the data editor in the field "Stats - Shield Maximum". when we add these 2 values together we get our "Hitpoints", we will use this "Hitpoints" concept later on.
The next step in our formula is our "BaseHitpoints", the concept of BaseHitpoints is something that i will cover in section B.
2-Now that we have looked at the life half of the formula lets look at the Damage half,
((“Damage”/(“Attack Speed”+(“RDelayMin”+”RDalayMax”)))/BaseDps)
The Goal here is to simplify this down to give us a "DPS" (damage per second) value to our unit. To find our DPS we use the formula above minus the "/BaseDps". For this part of the tutorial i will find the DPS value of the Marine. The Damage is a fairly simple number, the amount of damage per hit that our unit deals, (for the Marine that is 6). this value can be pulled from the Damage effect of the weapon the unit is using under "Combat - Amount". next we take the "Attack Speed" the attack speed is the regular rate of fire of our unit and if pulled from the Unit's Weapon under the field "Stats - Period" (For the Marine our Attack Speed is ".8608"). Next we have to find the "RDelayMin" and "RDelayMax" this is the minimum and maximum offset of time from the "Attack Speed" that can take place between each attack. The "RDelayMin" and "RDelayMax" are pulled from the Unit's Weapon Under the fields "Stats - Random Delay Minimum" and "Stats - Random Delay Maximum" (The Marne has a minimum delay of -0.0625 and a max delay of 0.125) So we Plug in "Attack Speed", "RDelayMin" and "RDelayMax" to get our "Attack Rate" (For the marine our "Attack Rate" is going to be (0.8608-(-0.0625+0.123)) after you grab a calculator and calculate that out you get 0.9233) Now lets get a DPS value for our marine. Remember the concept of DPS.
"Damage"/"Attack Rate"=DPS
6/0.9233= 6.498429546193, Lets just round that off to about 6.5
I will Go over the "BaseDPS" in part 2
Now that we have learned a little bit about what the formula actually means i think we can condense it a little bit
Sqrt(("HitPoints/”BaseHitPoints”)*(DPS/BaseDps))
Looking a bit more simple? now on to the matter of the Base Hit Points and our Base DPS
II-Your Base Unit
To keep working on our formula we need to choose out a "Base Unit" this unit will serve as a sort of reference point, whenever we give a unit a unit rating at the end of this formula, that number will directly compare it to our base unit. when choosing you base unit make sure it is a fairly basic unit, no real abilities or specials or anything, for this tutorial i will make our base unit a zergling. We need to Find the "Hitpoints" (Life+Shields) and the "DPS" (“Damage”/(“Attack Speed”+(“RDelayMin”+”RDalayMax”))) for the zergling in the same way we did above. After doing the math a Zergling has a Hitpoint value of 35 and a DPS value of 6.592. So from now on we can fill in 35 for "BaseHitPoints" and "6.592" for "BaseDps". Now you have every Value you need to complete the formula.
The Beauty of the Trinity Balance Formula is that whatever number you get, that number directly relates to the number of whatever you base unit is (we just chose a zergling) a unit can take on simultaniously (assumeing all damage is split evenly between all targets) So for exampol if we had a unit with a rating of 5, it could fight and defeat 5 zerglings simultaneously (Assuming all damage is split evenly, witch it is not, usually the bigger unit has the upper hand against many smaller units). or another example if you were to make a unit even weaker than a zergling and it got a unit rating of .5 it would take 2 of those units to kill the zergling. that is the power of this formula, it uses a base point to be able to compare any unit you want. Les give it a try?
III-Zealots Vs Zerglings
Plug in the values in to the formula for Zealots and Zerglings and we will finally have our unit rating Sqrt((Hitpoints/BaseHitpoints)*(DPS/BaseDps)) Okay Lets plug in our formula for the zerglings and the Zealots.
Zerglings- Hitpoints=35 Dps=6.592
Sqrt((35/35)*(6.592/6.592)) = 1
(Our Zergling got a score of 1 because it was our base unit)
Zealots- Hitpoints=150 Dps= (6.337x2) (multiply by 2 because Zealots have 2 attacks, one for each laser sword thingy) 12.674
Sqrt((150/35)*(12.674/6.592))= 2.870515
(Note Dont Forget you have to Square Root everything)
Now we know that our zealot can take on roughly 3 zerglings at once, unfortunately this formula dose not cover unit armor, and also this formula assumes that damage is split evenly between all sources, so the bigger unit in this formula will always have allitle bit more of an upper hand on the many little units, this formula cannot balance your map for you, but it is a great reference point, keep in mind that it dose not factor in many different parts of the game such as range, speed, abilities, regeneration etc...but i have used it a lot in my maps and it gives me something to work of as far as balance goes, i hope you all found this tutorial useful.
ThunderLord
nice!
this is much better than testing the whole map hundreds of times to ensure balance :P
But what does this mean? That you need 2.870515 zerglings to beat a zealot? Cuz it isn't true. You need more like 5.6 zerglings (the doubled value)
yeah paranoiks is right it takes 3 zerglings to fight 1 zealot not 2 lol noob
@chaosjones17: Go
paranoics says that it takes roughly 5.6 zerglings. seeing how we can't have .6 zerglings, we round up, so 5.6 = 6 zerglings.
That's false..
Sqrt((150/35)*(12.674/6.592))= 2.870515 zerglings required to kill 1 zealot.
Can't have .87 zerglings, so round up we get 3 zerglings.
He even states it on the line DIRECTLY underneath the equation in the last paragraph.
"Now we know that our zealot can take on roughly 3 zerglings at once, "
Retards.. Bet you guys didn't even get a GED yet.
Glad i came across this, i must have tested my maps over and over and change values to make sure they are even, brilliant read, ty
I just did a quick map test, it would seems it takes 4 zerglings to kill a zealot, i remember back in the beta days you could have 3 zerglings take on a zealot no problem
Quite like the original post said: it "so the bigger units will always have a bit of the upper hand when it comes to killing the smaller ones". He doesn't mention the effect of small units dieing and thus decreasing there combined damage output. In fact the small unit's damage should be halved in the formula (since that would be the average in a battle in which the small ones loose). In regard to what fokk sais i think this adjustment will place a zealot to 3.5 zerglings. And since that half zergling needs to be a whole zergling or he won't do anything we need 4 zerglings per zealot.
I like the idea for formula's for game balance and i think it might very well be underused in the mapping communities. Once i get to balancing my current map i will build a little on this formula and i might even make a tool to calculate these values, and maybe even put it online! Thanks antimatterthunder.
@lodewijkadlp: Go i am actually working on a formula that factors in smaller units dieing then their dps values decrease, work in progress, been really busy lately.
@fokk: Go
it's not half of their dps and it's not their whole dps. You must account for micro in some way. If you made smaller units more powerful because you expect them to die they are much stronge rin the hands of someone who burrows roaches or blinks away stalkers or pulls zerglings off as they get hit once or twice.
you cant completely rationalize it because the effectivness of a unit is determined not only by its direct combat stats but also movementspeed, smaller size >larger size in all cases except when considering seige damage, larger sheild pools are better than larger hp pools, and health is worth more on zerg units than on other units due to inert regeneration.
your formula is a good start but it simply is not complicated enough to really consider anything other than attack moving. Even then it is imbalanced when regarding meele vs ranged units and units with any form of spash damage difference or size difference.
I dont mean to be a nay sayer but simply to encourage you to expand your formula
edit: I forgot wasted dps. Small hit point units have the benefit of wasting more dps vs larger units. zerglings have only 35hp so the first two hits from a zealot hit for full but the next hits for only about 60%. that's about 5 wasted damage.
@happy04: Go Yes yes yes Just for all those who look at this formula There is ALOT that it dose not take in to account, speed, micro, range, terrain, etc, etc, the point of this formula is to give a feel for how powerful a unit would be, i originally made this for WC3 maps, because of the mechanics in WC3 it was a lot more applicable there.
I like this formula, there's almost no way to START balancing otherwise, you can easily complexify it (it IS a word) but then it gets heavy handed and you need different formulas.
As for trying to count for micro... what? Micro is to do with applying skill some people can micro some people can't THAT'S how you win games (well some) by being better at playing the game and games which don't require micro, well you simply don't need to consider it then. Also consider terrain, that's to do with map balancing not unit balancing.
The idea of the formula teaches (more than anything else to me) that you can make any comparison, as long as you have a base unit to compare against always
multiply the number by unitSpeed/BaseSpeed, do the same for regens and energy, it's not too hard to work with those. Ofc the splash stuff and the like is nigh on impossible to formulize, but this formula would cut in half (at least) the amount of time you take balancing, the rest is up to you to play test, same reason major companies do it in betas.
Also remember that this formula is a balanceing equally formula, as opposed to a rock paper scissors formula :-P
rant