Is there presently an online or offline parser that will differentiate main-hand hits from off-hand hits? It seems reasonably useful for the purposes of statistical analysis. While I haven't run across such a beast, that doesn't mean one doesn't exist, and I'd hate to solve an already-solved problem.
There's nothing implicit in the combat log that I'm aware of that differentiates hand swings. Your best bet is to use weapons that are very different in terms of their damage ranged, so telling which is which is obvious.
"Existence has no pattern save what we imagine after staring at it for too long."
-Rorschach, Watchmen
No, to my knowledge there's nothing in the combat log or available in-game that differentiates them, except for damage range and timing. With the OH only doing 75% normal damage (at most), though, it seems that even damage for Mutilate rogues is fairly bimodal.
However, looking at damage ranges alone only works for successful hits. You could not, for example, determine if a miss/parry/dodge was MH or OH -- though determining (to within a certain probability) is (er, should be) possible.
If you get two weapons that are exactly the same speed you should be able to tell which is which, assuming you can tell two hits apart at a given point in time (and then work from there).
You can do so even if the weapons are not exactly the same speed. Sometimes the hits will occur close to one another, though unless both are a miss, damage ranges can help you guess which is which. Inaccuracy in the combat log (I get roughly sigma = 110 ms) does complicate things slightly.
Well I did make some expirements with parsing and with the damage range.
Basically it comes down to:
1) Saving the damage ranges for hits, crits and glances in an seperate array.
2) Sort the array by the value (each for hit, crit & glance).
3) Walking the array to find out the highest difference between two consecutive values in the sorted array.
4) Everything above the key for this value is main hand, everything below is off hand.
I didn't test this much, but for combat rogues it was somewhat precise.
Of course this method really only works if there are no buffs involved that can expire, like battle shout, any AP & armor trinket and procs, etc.
So for a "real" combat like a boss fight this is rather useless, because for example if you activate bloodlust brooch and have a mongoose proc, your off hand attacks will most like to similar or even more damage than your main hand attacks without these buffs.
You can do so even if the weapons are not exactly the same speed. Sometimes the hits will occur close to one another, though unless both are a miss, damage ranges can help you guess which is which. Inaccuracy in the combat log (I get roughly sigma = 110 ms) does complicate things slightly.
I was referring to the fact that if your MH and OH are the same speed, your combat log should look this this:
I was referring to the fact that if your MH and OH are the same speed, your combat log should look this this:
I know. But combat logs have time stamps, with a certain inaccuracy. The alternating MH/OH hits can be seen by eye, but the statistical analysis you can do with a decent algorithm should be able to do essentially the same thing for weapons with different speeds. :-)
spoon:
I have in fact done essentially that. Actually, what I did is track what buffs and debuffs are up, and pick a set of those that is consistent and produces the most data -- for example, no temporary +AP buffs up and 5 sunders up. Crits, glances, and blocks can be back-calculated to find the base damage dealt. If you graph this, it is distinctly bimodal. For someone with a slow MH and fast OH, you can pick a dividing point just fine. This, however, only labels successful hits -- not misses. :-)
General procedure:
1) Find the damage distributions for MH and OH and label the "easy" hits.
2) Use the "easy" labelled MH and OH hits to estimate the weapon speeds and combat log inaccuracy.
3) Now for a given labelling of attacks as MH and OH, you can write the probability of this labelling being correct. Maximize that probability.
For misses/dodges/parries, you can either go the way to take the time stamp into account, which of course suffers from certain inconsistencies in the combat log and certain buffs/debuffs (haste, swing timer after parrying, old sword spec proc, etc).
Or you could simply estimate to which hand they belong.
You already have the distribution for main hand and off hand attacks. Now for let's say for a 2.6 main hand and a 1.4 off hand (pretty much standard for rogues these days) your distribution will be (regardless of haste) 1-(1.4/(2.6+1.4))= 65% offhand and 35% main hand attacks.
Therefore 65% of your misses/dodges/parries *should* be coming from your off hand.
Therefore 65% of your misses/dodges/parries *should* be coming from your off hand.
Unless, of course, you have weapons of different types in each hand and a piece of gear that gives +skill in one and not the other. :-)
Anyway, what I'm getting is that there is nothing that attempts to do this. While estimates are nice and all, this seems like a useful exercise in statistical analysis to take up.
If 2.6 MH and 1.4 OH is standard now, I doubt in-combat damage-increasing buffs could push the OH's damage range up into the MH's damage range.
Interesting facts, if you didn't know: damage from a weapon seems to follow a Gaussian distribution. Not surprisingly, so does the timing of attacks (due to combat log inaccuracy). My combat log seems to have sigma ~= 110 ms.
Trinket uptimes -- and other buffs -- are pretty straightforward to track. They should add to both hands, though, and not widen the range. If your MH is slower than your OH, then it'll add more damage per hit to your MH than OH hits, so shouldn't cause them to run into one another.
statistical values, for each encountered swing calculated the currently expected weapon damage, correct possible glancings and use a sliding window over the last few values, together with some statistic test to decide which offhand it was. This method works fine for enh shamans, unless they have very strange weapons.
Simple version of the method above is:
curdamage := current damage done by your weapon in the combat log
theodamagemh := currently theoretical damage done by your mh
theodamageoh := currently theoretical damage done by your oh
Yeah, if you have low dps mh or slow oh and fast mh, you could be in trouble.
I actually do just that to get an initial labelling for the easy cases (hits with 5 sunders and no special buffs up), except instead of theoretical damage, I just measure the hits and notice that they're very bimodal, so you can visually pick out the two damage ranges. ;-)
Ok, there appears to be reasonable methods to estimate which hits are MH and which are OH. Does anyone have any parses of this? I'd be interested in seeing the split in white damage percentage between the MH and OH.
Is it worthwhile to single-wield a weapon instead of dual-wielding due to the miss rate penalty and off-hand damage penalty (at least while leveling up, where +hit gear is not readily available)?
Is it worthwhile to single-wield a weapon instead of dual-wielding due to the miss rate penalty and off-hand damage penalty (at least while leveling up, where +hit gear is not readily available)?
I doubt you need any parses for this.
Assuming you have 0% toHit, and are running with a 2.6 60 DPS main hand, and a 1.4 60 DPS offhand, and you didn't even bother skilling the 25% increased damage from your offhand.
So, within 1 minute - without regarding AP, crits, dodges - therefore only regarding the 24% misses dual winding and 5% misses single handed - you'll do (156*(60/2.6))+(84*(60/1.4)*0.5)*0.76= 4968 damage dual wielding.
Having only the main hand, you would need a 4968/(156*(60/2.6)) = 1.38 = 138% hit chance to equal this damage.
So you're doing only (156*(60/2.6))*0.95= 3420 damage with your main hand only.