This site makes extensive use of JavaScript.
Please enable JavaScript in your browser.
Live
PTR
10.2.7
PTR
10.2.6
Beta
Elemental PHP-tool
Post Reply
Return to board index
Post by
Gnub
Didn't notice this thread until just now. I'm stoked that you're working on it again. One thing I'm a little skeptical about is how you're assuming elemental focus is always up. What if I had 0% crit and could only crit from lava burst and elemental oath/mastery?
Rather difficult thing to calculate completely correct, so I'm simply assuming it's up all the time. I know it might sound like an ugly-hack, but looking at it realistically not that bad. Atleast more realistic than actually having a "personal lag" of 0.0 seconds, and *ALWAYS* running an optimal "rotation" ;)
It's not that hard, actually.
You just have to simplify ((1-(1-C+0.5)(1-C)) + ((n-5)(1.2-C)^2) + 4)/n where n = casts per rotation, and c = LB crit chance. Or take the easy route and get it from the TTT link in my sig.
Righto, true - I see that :) It's probably not going to be an initial feature, but certainly something that I'd love to add at a point.
Also, nice work in the Think Tank, already got quite some useful stuff from there. It never ceases to amaze me just how complex most of the different systems are ... and I've probably got some things wrong already, hehe. I'll look a bit closer at it.
Post by
Gnub
Update again. :)
Decided to scrap the talent-part, and instead assuming the only correct build out there. It cut off like 1/5 of the size of .php-file. I probably won't do a rotation-calculation either, but instead show a prioritized list of casts (we all know that one).
Added food, flask, and so on.
I keep getting ideas, but whats really takes time is because I decided to make an universal "cast"-function for LB, CL and LvB, and one for Flame Shock, to make it easier to detect mistakes, instead of calculating them each by one. This was pretty much necessary in order to have the Stat Weightings optimal.
...also, I keep finding these /facepalm-like mistakes, and adding new things I want to do. Blasted development. :P
Post by
Gnub
I keep getting ideas, but whats really takes time is because I decided to make an universal "cast"-function for LB, CL and LvB, and one for Flame Shock, to make it easier to detect mistakes, instead of calculating them each by one. This was pretty much necessary in order to have the Stat Weightings optimal.
...also, I keep finding these /facepalm-like mistakes, and adding new things I want to do. Blasted development. :P
Basically, repeating the above. I got a pretty good feeling these days though, as the spell-function has evolved into one that takes the statistics of the different spells, and is actually supposed to do a "cycle" for an amount of seconds (read: minutes. I could basically make an average over 24 hours), complete with being able to properly take stuff like Elemental Mastery and Heroism/Bloodlust into account.
But, why the long wait? Sadly, because of the things called studying, and other stuff being prioritized above it. It is however not going to the trashcan, at all. I'm a bit unsure about how much Cataclysm is going to revamp it, but it probably isn't that bad (except, perhaps, the talents).
I'm really looking forward to using it though, as I can then properly - with numbers backing me up - underline most points about what's better of this and that bonus, much much better 10 haste is than 10 crit. You get my drift - and especially now with Bink stepping down :(
Still! If anyone has any splendid ideas for features, post 'em - and I'll take it into consideration. Keep in mind: I'm keeping it simple.
Post by
65879
This post was from a user who has deleted their account.
Post by
195614
This post was from a user who has deleted their account.
Post by
Gnub
Alright!
Time for some serious updates. I have a scratchy beta ready "soon", but somehow my test numbers are a bit... high - and I can't figure out where the calculation-error is (the horror) - or if there even actually is one (horror beyond imagining)!
When I plug in
my own
data From this, I got the following:
http://gnueless.com/images/thunderstruck2.jpg
(yeah, ugly temporary result-stuffs), implying that should be able to get
5355 DPS
just from spamming Lightning Bolt. Spamming the target-dummy gave me
4750 DPS
(around 88% of my theoretical value - but fits DrDamage's value quite perfectly when hovering over my Lightning Bolt during the spamming).
This was done only with the shamans innate buffs (Flametongue and totems), which Thunderstruck defaults to you having.
From that, I figured something was wrong... but no idea where the fault originated from.
So, the "challenge" is this: I'll toss out the source of my castSpell-function (which is called every time a Lightning Bolt, Chain Lightning (single-target) or Lava Burst is cast), and I'll let you sharks see if you can find the mistake. So far, I've tested basically everything, but something must've eluded my mind.
function castSpell($spell, $stats) {
// Variables to shorten min- and maxDmg calculations:
$spAdd = ($spell / 3.5 + $spell) * $stats;
$dmgAdd = $spell * $stats;
// Basic min- and maxdmg:
$minDmg = ($spell + $spAdd) * $dmgAdd;
$maxDmg = ($spell + $spAdd) * $dmgAdd;
// In case of Lava Burst, crit is 100%:
$stats = ($spell == 0)? 1 : $stats;
// Average damage:
$avgDmg = ($minDmg + $maxDmg) / 2 + (($minDmg + $maxDmg) * $spell * $stats) / 2;
// In case of Lightning Overload, the total damage is added to the average.
if ($spell != 0) {
$minDmgLO = ($spell / 2 + $spAdd) * $dmgAdd;
$maxDmgLO = ($spell / 2 + $spAdd) * $dmgAdd;
$avgDmg += (($minDmgLO + $maxDmgLO) / 2 + (($minDmgLO + $maxDmgLO) *
$spell * $stats) / 2) * $spell;
}
// Damageloss due to not being hitcapped, and dotOnCrit applied
$avgDmg = $avgDmg * $stats * (1 + $spell * $stats);
// The actual casttime (caps at 1 second, then adds personalLag.
$castTime = (($spell - $spell) / (1 + $stats));
$castTime = (($castTime < 1) ? (1 + $stats) : ($castTime + $stats));
return array("avgDmg"=>$avgDmg, "castTime"=>$castTime, "cooldown"=>$spell,
"DPS"=>($avgDmg / $castTime));
}
General ideas are welcome as well (besides "clean up your code man!" - I know it's a bit messy to look at, but I can understand it... and can already now spot ways to make it slightly more tidied up). :P
EDIT:
After a bit of thinking, I finally figured it out - and the mistake wasn't in the function - it was from an old leftover that assumed that Elemental Focus was up 100% of the time (which isn't really possible just from Lightning Bolt-spam). When looking at the damage difference, this matches pretty well. Anyway, I'll let the above stay, as it's also a nice showcase :)
Post by
Sihmm
Looks like it's coming along nicely :)
Post by
Gnub
Looks like it's coming along nicely :)
It's actually alot further in development than it looks, as the above function is supposed to be used as part of the "grand scheme" of the simulation-part. But yeah, if the function works, then - theoretically - everything should work in the end. Judging by your reply, you didn't find any flaws in the above function - which is good, as there shouldn't be any (as I seemingly
did
find the flaw).
I'm probably going to polish off the current version and do a beta-release with some hardcoded percentage weightings of the different spells (like, 60% of your damage is Lightning Bolt, and so on), which will give me a pretty good estimate of what was the point from - almost - the beginning:
A good and simple way to get statweightings, based on your current stats - and for now, that seems highly realistic too. :)
Post by
Sihmm
You're assuming I know enough PHP to be able to critique your code, and that I'm not already cross-eyed from working on ZAP! this evening :) As to the flaw, your explanation sounds convincing (though do you mean Elemental Oath or Clearcasting?). I'd also add some common problems (some of which I fell victim to):
Max rank LB does more damage than Wowhead's data lists, due to spells scaling each level after you learn them until the new one comes along. The level 80 value from the in-game tooltip is 719 to 819.
Totem of Hex (if you were using it) doesn't benefit from shamanism, only the base coefficient
Partial resists in the order of about 3% will apply to any damage on the boss target dummy
And of course, just spamming LB is subject a lot of RNG, even more so than a normal rotation. How many tests did you do?
So then, is this a simulator - as in, does it act out an encounter step by step? If so, what do you intend to do differently from SimulationCraft? Obviously it looks like it'll have a much easier UI.
Post by
Gnub
You're assuming I know enough PHP to be able to critique your code, and that I'm not already cross-eyed from working on ZAP! this evening :) As to the flaw, your explanation sounds convincing (though do you mean Elemental Oath or Clearcasting?). I'd also add some common problems (some of which I fell victim to):
Oh... yeah, you could have a point there - I'm mostly assuming people who reads it knows PHP, but then again - it's pretty self-explanatory. And yes, I meant the Clearcasting bonus (+10% damage) that comes from Elemental Oath, as I had set that to a 100% uptime (and thus a flat 10% damage increase).
Max rank LB does more damage than Wowhead's data lists, due to spells scaling each level after you learn them until the new one comes along. The level 80 value from the in-game tooltip is 719 to 819.
Hm, that's curious. Fixed that - cheers. One of those things I'd probably never notice, as the tooltip "scales" with damage-talents.
Totem of Hex (if you were using it) doesn't benefit from shamanism, only the base coefficient
Havn't taken Totems into account yet, but in the tests I was using Electrifying Winds (basically a flat +200 haste), so that matches pretty well.
Partial resists in the order of about 3% will apply to any damage on the boss target dummy
So, basically, at the very end of all damage calculations, it would be needed to do a * 0.97 to take that into account, right? That's one thing I'll have to remember doing. Cheers for that :)
And of course, just spamming LB is subject a lot of RNG, even more so than a normal rotation. How many tests did you do?
True that. I just emptied my mana-bar, and observed. It wasn't meant as a "in depth" test, more to get an idea of how close I was. Being around 12% off the expected value can hardly be blamed on RNG, especially since my DPS-value wasn't that varying at that time.
So then, is this a simulator - as in, does it act out an encounter step by step? If so, what do you intend to do differently from SimulationCraft? Obviously it looks like it'll have a much easier UI.
Not yet, but it will be. I plan to make a minor drop-down to reflect CL-behavior ("none", "after LvB" and "whenever possible" - for startes), and else just go with the basic rotation-stuff, along with "live-updating" the player-statistics for the casts, taking trinkets, Bloodlust, Elemental Mastery and all that correctly into account. It's actually alot simpler than expected, once the cast-functions were done (as I obviously had to make a specific one for Flame Shock.
Post Reply
You are not logged in. Please
log in
to post a reply or
register
if you don't already have an account.