Remove Advertisements

Theck's MATLAB TPS analysis - WotLK/3.x

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

Postby Sabindeus » Wed Feb 25, 2009 2:08 pm

also how about with the 0/53/18 build that seems to be going around? (basically dropping your Judgement damage from SotP and gaining some crit instead)
Image
Turn In, an NPC interaction automator - http://wow.curse.com/downloads/wow-addo ... rn-in.aspx
User avatar
Sabindeus
Moderator
 
Posts: 10455
Joined: Mon May 14, 2007 9:24 am

Postby Fridmarr » Wed Feb 25, 2009 2:13 pm

Sabindeus wrote:also how about with the 0/53/18 build that seems to be going around? (basically dropping your Judgement damage from SotP and gaining some crit instead)


And crusade!
Fridmarr
Global Mod
 
Posts: 9640
Joined: Sun Apr 08, 2007 1:03 am

Postby theckhd » Wed Feb 25, 2009 2:24 pm

Sorry, had to actually do some work for a bit there. I had time to crank out some numbers for a Holy Shield replacement rotation:

Code: Select all
%Holy Shield Subtitution - while this sounds like a terrible idea from a
%mitigation standpoint, Holy Shield is by far our weakest damage and threat
%generator.  So it's worth looking at it.
%Concept:  Holy shield only gets cast every 18 seconds, so it has an uptime
%of 10/18.  Exorcism gets added to the rotation every 18 seconds

DPS4=((1-player_avoid)./swing_timer).*Holy_Shield.*10./18 + ...  %Holy Shield
    Shield_of_Righteousness./6 + ...    %ShoR every 6 seconds
    Judgement_of_Vengeance./9 + ...     %Judgment every 9 seconds
    Vengeance_DOT./15 +  ...            %Vengeance DOT - total damage for a 5-stack done over 15 seconds
    Hammer_of_the_Righteous./6 + ...    %Hammer every 6 seconds
    Consecrate./9 + ...                %Consecrate every 18 seconds
    Exorcism./18 + ...                  %Exorcism every 18 seconds
    Melee_Swing_DPS;                    %DPS done by melee swings


With Judgment, SoV glyphed (but no Exorcism glyph), the numbers are:

DPS=3225, TPS=8354

(compare to 3162 and 8181 for standard 969 without exorcism)

So a big upgrade in DPS and TPS. Obviously, your Holy Shield uptime is crap, but there are still certain scenarios where you would find this useful:
  • Bosses that don't melee (Gothik, KT, I'm sure there are others) and thus don't proc Holy Shield anyway
  • Off-tanking to keep high threat, but not actually taking hits
  • Fights that only take 1 tank, and you're not it - this rotation helps maximize DPS - note that it's by far the highest DPS even without Exorcism glyphed, and will probably go up no matter which glyph you replace with Exorcism.


I'll get cracking on the rest of these questions when I get home from work. None of it should take very long (typing the post takes far longer than any of the calculation).
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Sabindeus » Wed Feb 25, 2009 2:37 pm

theckhd wrote:I'll get cracking on the rest of these questions when I get home from work. None of it should take very long (typing the post takes far longer than any of the calculation).


/hug

<3
Image
Turn In, an NPC interaction automator - http://wow.curse.com/downloads/wow-addo ... rn-in.aspx
User avatar
Sabindeus
Moderator
 
Posts: 10455
Joined: Mon May 14, 2007 9:24 am

Postby theckhd » Wed Feb 25, 2009 4:52 pm

Ok, so I was going to do these in order, but Sabin's question made me notice something.

I've decided that my code for Exorcism is wrong:
Code: Select all
Exorcism = (1087 + 0.15.*AP + 0.15.*SP).* ...    %inherent
(100+(spell_crit + HotC).*Crit_Meta - boss_spell_resist - boss_scrit_supp)./100.* ... %hit, crit, HotC
(OHWS.*Crusade.*SU.*Exor).* ...           %talents/glyphs
(CoE.*SanctRet) ...                 %buffs/debuffs
.*boss_resist_reduce;               %boss resist

The second line handles all of the hit and crit-like mechanics, and I copied it from Judgment, which is a ranged attack, but swapped the melee crit and miss for spell crit and miss(resist).

However, Exorcism counts as a spell, and after some digging around it looks like spells use a 2-roll system (i.e. 1 to hit and 1 to determine crit). So the formula should be a little different. Probably something like

(100-boss_spell_resist)/100*(100+(spell_crit + HotC)*Crit_Meta - boss_scrit_supp)/100,

But that's just a guess. They should definitely be multiplicative, so that missing will reduce overall crit rate (in the limit of 0 hit, you get 0 crits), but whether HotC and the Crit_Meta act the same way here that they do for melee skills is something I'm unsure of, at least without a little more time to trawl through some EJ threads.

Nonetheless, I'll use that until someone proposes a more accurate version. Thus, the Exorcism code now looks like:
Code: Select all
Exorcism = (1087 + 0.15.*AP + 0.15.*SP).* ...    %inherent
    (100 - boss_spell_resist)./100.* ... %hit,
    (100 + (spell_crit + HotC).*Crit_Meta - boss_scrit_supp)./100.* ... %crit, HotC
    (OHWS.*Crusade.*SU.*Exor).* ...           %talents/glyphs
    (CoE.*SanctRet) ...                 %buffs/debuffs
    .*boss_resist_reduce;               %boss resist


Anyway, back to the questions. I realized that since we're only playing around with Holy damage skills, all of the TPS gains and losses will be proportional to the DPS changes - I.E. if a rotation is higher DPS, it is also going to be higher TPS. As a result, we don't need to list TPS values anymore, which simplifies the data presentation.

We can make a simple table that displays the results fairly clearly. The columns will be different glyph combinations, described by a 4-digit acronym 'JSEC' that represents the glyph choices. For example, if you want Judgment, Exorcism, and Consecration glyphed, that's 'J-EC'.

The rows will be the different rotations. Here's the net result:
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3162  3162  3135     0     0     0
Cons-sub   3112  3139  3112  3158  3158  3111
Jud-sub    3148  3175  3161     0     0     0
Exor-cd    3168  3200  3179     0     0     0
HS-sub     3224  3250  3224     0     0     0


The numbers don't change too significantly from the ones generated with the old Exorcism equation, 1-2 dps here and there mostly.

For those interested in the code, I've just added a factor of
Code: Select all
Cons=1+0.25.*Cons_glyphed;

to the damage calculation for Exorcism.

I've zeroed out the values for rotations that don't work with the Consecration glyph, since those values wouldn't be accurate anyway. As you can see, the glyph is a 46 dps increase (JS-- to JS-C), but that rotation still lags behind the standard 969 for most conceivable configurations.


For the auto-crit situation, I'm not sure how the mechanic works. I don't actually remember if Exorcism does double damage on a crit or 1.5x. If we set spell_crit to 100 in the formula, we have (100+106.1 - boss_scrit_supp)/100 which works out to a factor of 2.031. That's my best guess at how it should work, though I could also see eliminating that roll entirely for a flat factor of 2 (or 1.5 if it's not 2x damage), or anything up to 2.061, depending on how Blizzard coded it to work (can undead suppress an auto-crit?).

For the calculations, I'll use the assumption of 100 spell_crit, since that makes the most sense to me at the moment, and should give us a ballpark value to work with. Note that I'm only setting the crit to 100 for Exorcism, not for anything else (I literally replace "spell_crit" with "100" in the exorcism code to do this). I'll re-run the calcs again once we have a better idea what the formula ought to be.

The results are fairly interesting, if predictable:
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3162  3162  3135     0     0     0
Cons-sub   3231  3282  3255  3301  3277  3230
Jud-sub    3267  3317  3304     0     0     0
Exor-cd    3311  3372  3350     0     0     0
HS-sub     3343  3393  3366     0     0     0

The "Exorcism on cooldown" rotation pulls ahead a good bit in all scenarios.

This post is getting pretty long, so I'm going to put the spec variations in another one.
Last edited by theckhd on Wed Feb 25, 2009 5:44 pm, edited 1 time in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Wed Feb 25, 2009 5:07 pm

I'm not that familiar with the 0/53/18 build, at least in terms of what they drop from Prot to cut back to 53, but for the moment let's assume they grab all of the following:
Divine Strength
Sacred Duty
Combat Expertise
Touched by the Light
1H Weapon Spec
Shield of the Templar
Redoubt

Then there are a few ways to go 18 into ret:
5 conviction, 3 Sanctified Seals
5 conviction, 3 Crusade
5 conviction, 3 Crusade, 2 Sanctified Seals dropping to 51 in prot

For the first case (5 Conviction 3 Sanctified Seals):
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3225  3225  3200     0     0     0
Cons-sub   3294  3344  3320  3365  3340  3292
Jud-sub    3340  3390  3378     0     0     0
Exor-cd    3378  3438  3419     0     0     0
HS-sub     3405  3456  3431     0     0     0


For the second (5 Conviction 3 Crusade):
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3356  3356  3331     0     0     0
Cons-sub   3430  3483  3457  3506  3478  3428
Jud-sub    3482  3535  3523     0     0     0
Exor-cd    3520  3584  3564     0     0     0
HS-sub     3548  3601  3576     0     0     0


And for the truly excessive, 5 Conv 3 Crusade 2 Sanct Seals:
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3356  3356  3331     0     0     0
Cons-sub   3430  3483  3457  3506  3478  3428
Jud-sub    3482  3535  3523     0     0     0
Exor-cd    3520  3584  3564     0     0     0
HS-sub     3548  3601  3576     0     0     0


I've spent far too much time on this today, so I'll leave the commentary to you until tomorrow morning. I need to go log in and tank something. :P

<edit> I'm pretty sure all of these still had Exorcism auto-critting, so numbers for regular mobs will be a bit lower.
Last edited by theckhd on Thu Feb 26, 2009 8:30 am, edited 1 time in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Wed Feb 25, 2009 5:11 pm

Oh, one final note: the files are updated to reflect what I've put in these two posts, if anyone wants to fool around with them (and has MATLAB or some derivative like FreeMAT installed).

I'm going to fool around with the structure some more to simplify reconfigurations. I basically want to separate the modules into "input" and "modifier" varieties to make loops easier to code.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Jonesy » Wed Feb 25, 2009 6:36 pm

The 96969 rotation with no HS is what I called 9696x when I modelled it, where x is Exorcism-> AS -> Exorcism-> HW -> ...

Anyway, back to the questions. I realized that since we're only playing around with Holy damage skills, all of the TPS gains and losses will be proportional to the DPS changes - I.E. if a rotation is higher DPS, it is also going to be higher TPS. As a result, we don't need to list TPS values anymore, which simplifies the data presentation.


This is only true while you don't allow spec changes. I think making that invariant at this point is a terrible idea, personally. :)
Jonesy
 
Posts: 418
Joined: Fri Jul 13, 2007 1:23 am

Postby Dorvan » Wed Feb 25, 2009 6:43 pm

Subbing every 3rd HotR for exorcism also seems like a possibility, doesn't it?
Image

WHAT WOULD BEST DESCRIBE YOUR PERSONALITY?
Moonlight Sonata Techno Remix
Scriggle - 85 Fire Mage
Fizzmore - 81 Mut Rogue
Adorania - 80 Disc Priest
User avatar
Dorvan
Maintankadonor
 
Posts: 8462
Joined: Wed Apr 04, 2007 3:28 pm

Postby theckhd » Thu Feb 26, 2009 6:58 am

Jonesy wrote:This is only true while you don't allow spec changes. I think making that invariant at this point is a terrible idea, personally. :)

True, but it's getting harder and harder to see what the results mean, just due to how much data we're trying to represent. I can crank out identically constructed matrices for TPS if we decide we need to scrutinize them carefully. But I think that before cranking out more matrices, I'd rather plot the results, just because it's far easier for most people to wrap their heads around.

Also, I don't see much point in posting matrix after matrix of data until we make sure we have the formula for Exorcism right. While I'm at it, I want to do a little re-organization of the script and start expanding the modules so that it's more versatile. For example, I want to add the full talent tree to the talent module, which would let me do some neat things down the line (ex: a Ret dps simulator).

Dorvan wrote:Subbing every 3rd HotR for exorcism also seems like a possibility, doesn't it?

This is exactly what I had in mind for the 6's replacement rotation. I'll crank out the numbers for it shortly.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Jonesy » Thu Feb 26, 2009 7:43 am

Dorvan wrote:Subbing every 3rd HotR for exorcism also seems like a possibility, doesn't it?


HotR's DPCT is higher than Exorcism's, so I can't see this being a TPS gain.
Jonesy
 
Posts: 418
Joined: Fri Jul 13, 2007 1:23 am

Postby theckhd » Thu Feb 26, 2009 8:28 am

Two 6's substitution rotations:
Code: Select all
%HotR substitution - throw in an exorcism every 3rd HotR:
% 0.0 - (9) Holy Shield
% 1.5 - (6) Exorcism - next available at 16.5
% 3.0 - (9) Judgment
% 4.5 - (6) Shield of Righteousness
% 6.0 - (9) Consecration
% 7.5 - (6) HotR
% 9.0 - (9) HS
%10.5 - (6) ShoR
%12.0 - (9) Judgment
%13.5 - (6) HotR
%15.0 - (9) Consecration
%16.5 - (6) ShoR
%18.0 - (9) HS
%19.5 - (6) Exorcism
%21.0 - (9) Judgment
%22.5 - (6) ShoR
%
%we see that this is still an 18-second rotation, and seamlessly fits
%exorcism in at the expense of HotR uptime.
%changes from 969: Exorcism every 18 seconds, HotR twice every 18 seconds,
%effectively makes it a 9-second cooldown


Code: Select all
%6's replacement with Exorcism on cooldown.  This prioritizes as
%Exor>ShoR>HotR on the 6's.
%
% 0.0 - (9) Holy Shield
% 1.5 - (6) Exorcism - next available at 16.5
% 3.0 - (9) Judgment
% 4.5 - (6) Shield of Righteousness #1
% 6.0 - (9) Consecration
% 7.5 - (6) HotR #1
% 9.0 - (9) HS
%10.5 - (6) ShoR #2
%12.0 - (9) Judgment
%13.5 - (6) HotR #2
%15.0 - (9) Consecration
%16.5 - (6) Exorcism - next at 31.5
%18.0 - (9) HS
%19.5 - (6) ShoR #3
%21.0 - (9) Judgment
%22.5 - (6) HotR #3
%24.0 - (9) Consecration
%25.5 - (6) ShoR #4
%27.0 - (9) HS
%28.5 - (6) HotR #4
%30.0 - (9) Judgment
%31.5 - (6) Exorcism - next at 46.5
%33.0 - (9) Consecration
%34.5 - (6) ShoR #5
%36.0 - (9) HS
%37.5 - (6) HotR #5
%39.0 - (9) Judgment
%40.5 - (6) ShoR #6
%42.0 - (9) Consecration
%43.5 - (6) HotR #6
%45.0 - (9) HS    -  Cycle restarts
%46.5 = (6) Exorcism
%48.0 - (9) Judgment
%49.0 - (6) ShoR #7
%
%so again, a 45-second cycle.  9's are unaffected, but we only get 6 each
%of the 6's every 45 seconds, or 6/45=2/15 uptime, less than the usual 1/6


For the Standard SotP spec, without auto-crit Exorcism the numbers are:
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3162  3162  3135     0     0     0
Cons-sub   3112  3139  3112  3158  3158  3111
Jud-sub    3148  3175  3161     0     0     0
Exor-cd    3168  3200  3179     0     0     0
HS-sub     3224  3250  3224     0     0     0
HotR-sub   3106  3132  3106     0     0     0
6s-sub     2952  2984  2957     0     0     0

As you can see, both fall short of standard 969.

Auto-crit changes them to:
Code: Select all
           JS--  JSE-  -SE-  -SEC  JS-C  J--C
969        3162  3162  3135     0     0     0
Cons-sub   3231  3282  3255  3301  3277  3230
Jud-sub    3267  3317  3304     0     0     0
Exor-cd    3311  3372  3350     0     0     0
HS-sub     3343  3393  3366     0     0     0
HotR-sub   3225  3275  3248     0     0     0
6s-sub     3094  3155  3128     0     0     0

HotR substitution pulls ahead of regular 969 a bit here, but still lags Consecration or Judgment substitution. Again though, this assumes 2x damage on a crit, which may or may not be right.

I really need to make visualizing this more convenient though, because having to do this for each spec and then posting the resulting matrix is getting absurd.

In the meantime, could we fine-tune the Exorcism formula to make sure it's right? I'll check Redcape's spreadsheet later today when I get some time if nobody beats me to it.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Jonesy » Thu Feb 26, 2009 8:47 am

theckhd wrote:In the meantime, could we fine-tune the Exorcism formula to make sure it's right?


=(1028+0.15*AP+0.15*SP)*(100-SpellMissChance)/100*(100+(SpellCritChance+HotC-BossSpellCritSuppression)*1.5)/100 *OHWS*Crus*CoE*GoSU*SanctRet*ResistReduction*GoEx
Jonesy
 
Posts: 418
Joined: Fri Jul 13, 2007 1:23 am

Postby Kelaan » Thu Feb 26, 2009 11:33 am

theckhd wrote:I'm not that familiar with the 0/53/18 build, at least in terms of what they drop from Prot to cut back to 53....

In 3.1, several of our 5-point talents become 3 point ones, so it gets a bit easier:

http://www.war-tools.com/t61523.html?b= ... 300302003o

You're basically trading SotP for flat damage increases and extra crit%.
We give up:
- points in Divinity, Guardian's Favor, or Reckoning
- SotP
We gain:
- PoJ
- 3% crit
- 3% flat damage increase
- extra 3% vs humanoids, demons, undead, elementals.
User avatar
Kelaan
 
Posts: 4036
Joined: Thu Jan 03, 2008 12:01 pm

Postby theckhd » Thu Feb 26, 2009 11:37 am

Jonesy wrote:=(1028+0.15*AP+0.15*SP)*(100-SpellMissChance)/100*(100+(SpellCritChance+HotC-BossSpellCritSuppression)*1.5)/100 *OHWS*Crus*CoE*GoSU*SanctRet*ResistReduction*GoEx

That 1.5 in the spell crit factor looks fishy, I think that's supposed to be 0.5. Otherwise a guaranteed crit would be 2.5x damage, which doesn't seem right - (100+100*1.5)/100=2.5

The base damage should be 1087 as well, and the Crit_Meta needs to be factored in somewhere.

Checking Redcape's spreadsheet:
Redcape wrote:DPS=(1087+0.15*AP+0.15*SP)*
(1+Magic_boost)*
Spell_Hit_Chance*
(1+Spell_Critical/2*(1+Crit_Meta*2))
/time_interval*Undead

Note that he uses decimal form for all of his values here. There's a few interesting things we can pull out of this.

The first one is that he's doubling the effectiveness of the crit meta gem (Crit_Meta is 0.03 for his spreadsheet). I.e. he's multiplying by 1.06 rather than 1.03. I'm not sure why though.

Spell_Critical has a lot of factors, but in terms of our variables it's
Code: Select all
Spell_Critical=(spell_crit + HotC)

and he's not including any boss spell crit suppression term at all (there's no such entry on his 'Base Numbers' sheet).

So, if we write his crit term in terms of my MATLAB variables, it looks like:
Code: Select all
(100+(spell_crit+HotC)*0.5*(Crit_Meta))

where Crit_Meta would have to be 1.06 rather than 1.03 like it is currently. This also confirms that Exorcism is 1.5x damage rather than 2x.

His Spell_Hit_Chance is identical to my spell_hit term (100-spell_miss)/100, so there's no problem there.

Magic_boost is simply a string of factors that covers a lot of talent stuff. It looks like
Code: Select all
SanctRet.*(Vengeance_Term).*Crus.*(term for AW uptime).*(Crusade vs mob type).*CoE.*boss_resist_reduce

All of which is either taken into account already or ignored completely in our analysis.

So, two major questions come up:
-Why is his Crit_Meta modifier 1.06 rather than 1.03?
-Why is he not including boss spell crit suppression?

In any event, I'll update the code to use the following formula:
Code: Select all
Exorcism = (1087 + 0.15.*AP + 0.15.*SP).* ...    %inherent
    (100 - boss_spell_resist)./100.* ... %hit,
    (100 + 0.5.*(spell_crit + HotC).*Crit_Meta)./100.* ... %crit, HotC
    (OHWS.*Crusade.*SU.*Exor).* ...           %talents/glyphs
    (CoE.*SanctRet) ...                 %buffs/debuffs
    .*boss_resist_reduce;               %boss resist

with Crit_Meta updated to 1.06 (if used). At least until we can figure out why it's 1.06, and whether omitting spell crit suppression is correct.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7655
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

PreviousNext

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: No registered users and 0 guests


Remove Advertisements

Who is online

In total there are 0 users online :: 0 registered, 0 hidden and 0 guests (based on users active over the past 5 minutes)
Most users ever online was 380 on Tue Oct 14, 2008 6:28 pm

Users browsing this forum: No registered users and 0 guests