Monday, March 23, 2009

Math behind Rating <--> skill points / percentages

So I spent a little time to follow all the articles and such that I found online that gave formulas for ratings to skill point conversions and such.  While this is not my own work explicitly, I have verified it and cross checked it and compiled this from a number of partially incomplete sources.  It is correct up to the time of this posting and if I learn differently later, I'll do something about it.

I then proceeded to compare my results against all the tooltips and directly calculated values from the game itself.  

So I feel fairly confident in saying that this is essentially the same thing that everyone else is doing too.  

The basic premise behind converting ratings to skill points and such is this:  There is a "base" value for a conversion factor, and this "base" value is modified by a character's level.  There are also diminishing returns factored in as well, but lest we get in over our heads right up front, we'll keep it simple.  

So, what could possibly be simpler than just  R / C = S  (where R is the rating, C is the conversion factor and S is the skill value)?  Well, pretty much nothing.  This is a linear function, and would continue to be so, if the base value never changed.  However, so as to make it less simple, the actual value of C depends on a number of issues.  

1st - Character level (L)
2nd - whether you're looking at an "offensive" or "defensive" type of ability (this only matters up until level 34 by the way, because from level 34 on, it doesn't matter) 
3rd - what is the "base" value for the ability you are interested in  (call it b)

So if you're following along, we really have 2 functions of the variables L and b that make up our C value, so together with R you could think of S as a function in 3 variables (4 dimensional graph).  Oooh, fun stuff.

However, much of this is negligible, however, because in general, most people only look at the last level (currently 80) and are generally ok with being told values of b that correspond to the ability they are interested in.  So essentially you are taking a 2 dimensional cross section of your 4 dimensional graph and getting something that looks a lot more like what you remember from high school math, which is infinitely less daunting.

But, if you know a little more about how these things are put together, you too can build an Excel spreadsheet to have on hand as a handy dandy calculator for those intense "should I take this piece of gear over this one" moments when you're not actually in game, but rather sitting at a computer and musing over what will happen later when you're online raiding.

Ok, so here's the skinny on how to put this stuff together:

It all sounds complicated so far, but here's where it gets REALLY easy.

Let's leave R and S alone for now, and just worry about how to calculate this mysterious C(b,L) function.  Since once we have that function we can convert between the other two willy-nilly.  After all, R = S*C and S = R/C.  Those are simple arithmetic procedures once we understand C.

Ok, so to let you in on the secret that I learned about this, Blizzard regards level 60 as their "base" to work with.  I suspect this is because that was the first "uppermost" tier of the game, and they've kind of been playing Patchwerk with these numbers ever since to keep their old algorithms from blowing the game out of control.

So essentially the base numbers we need (b) is the same as the conversion factor between ratings and skills at level 60.  These are remarkably easy to find once you know what you're looking for.  Just browse wowhead for items that require level 60 and you'll have more than enough data to fill in a table like this one.

b values based on ability ratings

  ability  rating                                 b value
Armor Penetration 4.695
Block  5
Critical Hit 14
Defense 1.5
Dodge 12
Expertise 2.5
Haste 10
Hit (Melee) 10
Hit (Spell) 8
Parry 15
Resilience 25

Now, I know what you're thinking, not all of these stats can be found on level 60 gear.  Ok, true.  In fact, the Armor Penetration value of b looks suspiciously as though it were scaled from some other value.  Well, I reverse engineered the level 60 value to make this table cleaner, I admit it.

So nothing could be simpler so far if I tell you that as long as you are a level 60 toon, you can just use those numbers and all is well.  25 points of resilience will yield you 1% less crit chance and dot damage, and 2% less crit damage and mana drain effect.  Pretty simple.

Ok, so what about all the other levels?

Well, for all other levels Blizzard has a conversion factor for this base rate that is based on nothing but your level.  It would be too easy for it to be a single algebraic function, instead it's piecewise continuous.  The intervals conveniently enough happen to be almost the same intervals as the new content releases.  There is one formula for levels 1 to 10.  One for levels 10-60, one for levels 60-70, and one for levels 70-80.  

Ok, so what're the formulas for these conversions of the base factors?

Here's where things get interesting.  Remember that I told you that up until level 34 it depends on whether it's a defensive or offensive ability?  Even though it doesn't matter except for early characters, we may as well be exact.

If you're looking at a defensive ability, such as resilience, defense, block, etc.  the formulas for the conversion of the factor b go as follows:

Defensive Ability
Level range conversion factor as a function of L
1-34 1/2      (yep, it's pretty simple there)
34-80  The same as the offensive conversion factors

And if you're looking at an offensive ability, such as Melee Hit, Critical Strike, Expertise, etc. the formulas for the conversion factor b go as follows:

Offensive Ability
Level range conversion factor as a function of L
1-10 1/26
10-60 (L-8)/52
60-70 82 / (262-3L)
70-80 (82/52)*(113/63)^((L-70)/10)

Ok, so let's call this conversion factor (which you've picked appropriate to the type of ability etc) c(L), since it's a function of L.  Then the easiest way to do this is. . . 

C(b,L) = b*c(L)

Ok, so ready for a couple examples?  

EXAMPLE 1:  Let's say you're level 80, and you want to know how many melee hit rating points you need to add 1% more chance to hit.  For the purpose of Blizzard, either there will be skill points or percentage points as values for S.  If you've ever thought about this stuff, you'll probably know which to use when.

Ok, so, for melee hit rating we know b is 10, and we can calculate (trust me, or use the calculator if you're not sure) that c(L) for L=80 is approximately 3.279 by plugging 80 into the formula shown above on the level 70-80 line.

So, 10*3.279 = 32.79, which is the amount of melee hit rating to remove 1% miss chance at level 80.   And C for this case would be 32.79, so you could convert between any rating numbers or skill numbers to find the equivalent value for the other.  Like, if you needed 3.4% miss chance more, simply multiply S*C = 3.4 * 32.79 = 111.486 and round up to 112 to find how many rating points you need to get at least 3.4% hit chance increase.  Want to know what hit chance increase you get from 241 melee hit rating?  R/C = 241 / 32.79 = 7.35%, pretty good, it's almost up to the standard raid miss chance of 8%.  Melee hit cap, by the way is S*C = 8*32.79 = 262.32 rounded up to 263.  You can answer a lot of questions for yourself with just this simple bit of information.


Easy, right?  But you can find that example anywhere.  Let's look at one that's not quite as common.

EXAMPLE 2:  Now let's suppose you're a mage at level 74 and you want to know how much critical strike rating you need to add 1% more critical strike chance to your spells.

Well, spell crit rating and melee crit rating are the same base value, b = 14.  Plugging in L=74 to the formula for the conversion factor we see that c(L) for L=74 is approximately 2.113405 (it doesn't round quite as conveniently as the last one).  

Now do the same thing.  C = b*c = 14*2.113405 = 29.58767.

And we can see that it takes 29.58767 points of critical strike rating to achieve one percent more critical strike chance.  

We can then use this conversion factor to do all kinds of calculations, if necessary.  How good a critical strike chance am I adding if I pick up this gear with 65 critical strike rating on it?  S=R/C so 65/29.58767 gives us something that rounds to 2.20 (%) when rounded to 3 decimals.  That would be a pretty nice piece of gear at level 74.  

Anyway, now that I've thrown the curtain back a bit, I'll see what else I can drum up that might be interesting.

No comments:

Post a Comment