There is a known bug in v1.7.0 where the new parameters for gloves_enchant and cloak_enchant are read but never initialised. I've posted a fix which Tukez has acknowledged is probably the cause of the crash however he has not yet posted a new version.
Author of ShockAndAweEnhancement Shaman max dps addon
Please use the EnhSim by Ziff & others to simulate what gear, priorities etc are the best dps. You can use ShockAndAwe to export your paperdoll stats to EnhSim.
For what it's worth, I was hitting a crash as well. It seems that it would always happen on the armor pen calculation (I don't do expertise or mana sim though). If I disabled armor pen calculations it completed just fine.
Based on Torodo's excellent post about the Sim miscalculating the value of Armor Penetration I've dusted off my C++ skills and have had a whack at the source.
I've managed to add some missing trinkets (Dark Matter, Blood of the Old God, Mjolnir, and the Elemental Focus Stone) but I'm having troubles trying to work in the new Armor Penetration formula.
What the sim is currently doing seems very strange to me. Next paragraph for the technical / nerdy:
The sim is taking the defined 'armor' value in the config, applying the the armor_major_debuff and armor_minor_debuff directly to this value giving a reduced total AC value. This debuffed armor value is then multiplied by what appears to be 100% - Armor Penetration config'd value for the MH and 100% - (ArmPen / 2) for the OH to be used as a new armor base value for calculating a damage multiplier which acts as a damage reducer. So this calculated armor base value divided by the sum of the calculated armor base plus the expected armor value of the target mob and this is used as the final damage multiplier.
The problem is when I try to rewrite the formula which GC has posted, the updated sim code looks like:
//compute constant max armor cap
acmax_ = static_cast<int>(400.0 + (85.0 * TARGET_LEVEL) + (4.5 * 85.0 * (TARGET_LEVEL - 59.0)));
// calculate effective armor due to debuffs
acdebuff_ = static_cast<int>(armor_base_ * (1.0f - armor_debuff_major_) * (1.0f - armor_debuff_minor_));
//the cap is an average of max and debuffed armor
accap_ = static_cast<int>((acmax_ + acdebuff_) / 3.0);
//apply armor penetration additively to the armor cap to get armor reduction
acreduction_ = static_cast<f32>(accap_ * (1.0f - armor_penetration_));
//damage reduction is an inverse function of reduction
damage_reduction_ = static_cast<f32>((acdebuff_ - acreduction_) / acdebuff_);
std::cout << "NEW DAMAGE REDUCTION FORMULA\n";
std::cout << "armor_pen raw function val: " << (armor_penetration_) << "\n";
std::cout << "max boss AC" << acmax_ << " | debuffed armor total " << acdebuff_ << " | cap for reduction " << accap_ << " | armor reduced by ArmPen " << acreduction_ << " | damage bonus multiplier " << damage_reduction_ << "\n\n";
But since the armor_penetration value in the sim is based on inverse percentages and some odd OH handling, I get very out of whack values as can be seen in those print debug statements:
NEW DAMAGE REDUCTION FORMULA
armor_pen raw function val: 0.95
max boss AC16635 | debuffed armor total 8515 | cap for reduction 8383 | armor reduced by ArmPen 419.15 | damage bonus multiplier 0.950775
NEW DAMAGE REDUCTION FORMULA
armor_pen raw function val: 0.453095
max boss AC16635 | debuffed armor total 8515 | cap for reduction 8383 | armor reduced by ArmPen 4584.7 | damage bonus multiplier 0.461573
As you can see, that armor_pen value being fed in to this function is pretty unusable for me due to the new formula. I'll try to experiment with modifying the multipliers but not only will this probably throw all sorts of procs and modifier out of whack, I don't think during EP calculations I'd be getter anything remotely useable without overhauling a lot more than meets the eye.
Hopefully Tukez is already on top of it as it looks like it's going to take some effort.
I ve tried many variants of stats and items in enh sim due i have plenty of them and i can say that that it gave me nothing. I have good results on most of bosses using haste and critbased items in Ulduar but iam still far 100-300 dps from Wowmeteronline Europe top 20 on Kologarn and Iron council, for example. Only explanation that i have is difference in raid tactics. Can someone here help me to optimize my dps on this encounters and sorry for my eng if there any mistakes not my native lang.
Based on Torodo's excellent post about the Sim miscalculating the value of Armor Penetration I've dusted off my C++ skills and have had a whack at the source.
I've managed to add some missing trinkets (Dark Matter, Blood of the Old God, Mjolnir, and the Elemental Focus Stone) but I'm having troubles trying to work in the new Armor Penetration formula.
The post by GC was later corrected as it had some mistakes there is a lengthy discussion on the combat ratings thread about it. The formulae was worked out and implemented in Rawr last month as follows :
// http://forums.worldofwarcraft.com/thread.html?topicId=16473618356&sid=1&pageNo=4 post 77.
// Ghostcrawler vs theorycraft.
/// <summary>
/// Returns how much physical damage is reduced from Armor. (0.095 = 9.5% reduction)
/// </summary>
/// <param name="AttackerLevel">Level of Attacker</param>
/// <param name="TargetLevel">Level of Target</param>
/// <param name="TargetArmor">Armor of Target</param>
/// <param name="ArmorIgnoreDebuffs">Armor reduction on target as result of Debuffs (Sunder/Fearie Fire)</param>
/// <param name="ArmorIgnoreBuffs">Armor reduction buffs on player (Mace Spec, Battle Stance, etc)</param>
/// <param name="ArmorPenetrationRating">Penetration Rating (Can be rolled into ArmorIgnoreBuffs and then set this to 0)</param>
/// <returns>How much physical damage is reduced from Armor. (0.095 = 9.5% reduction)</returns>
public static float GetArmorDamageReduction(int AttackerLevel, float TargetArmor,
float ArmorIgnoreDebuffs, float ArmorIgnoreBuffs, float ArmorPenetrationRating)
{
float ArmorConstant = 400 + 85 * AttackerLevel + 4.5f * 85 * (AttackerLevel - 59);
TargetArmor *= (1f - ArmorIgnoreDebuffs) * (1f - ArmorIgnoreBuffs);
float ArPCap = Math.Min((TargetArmor + ArmorConstant) / 3f, TargetArmor);
TargetArmor -= ArPCap * Math.Min(1f, GetArmorPenetrationFromRating(ArmorPenetrationRating));
return 1f - ArmorConstant / (ArmorConstant + TargetArmor);
}
Yes its C# not C++ but hopefully would give you a steer as to what needs fixed. I'm keenly awaiting this fix as I really can't do much more on Rawr.Enhance without a fixed EnhSim to compare my results to.
Author of ShockAndAweEnhancement Shaman max dps addon
Please use the EnhSim by Ziff & others to simulate what gear, priorities etc are the best dps. You can use ShockAndAwe to export your paperdoll stats to EnhSim.
Thank you very much Levva, that was hugely helpful! I've updated the damage_reduction code in EnhSim to the following:
//compute constant max armor cap
acmax_ = static_cast<int>(400.0 + (85.0 * ATTACKER_LEVEL) + (4.5 * 85.0 * (ATTACKER_LEVEL - 59.0)));
// calculate effective armor due to debuffs
acdebuff_ = static_cast<int>(armor_base_ * (1.0f - armor_debuff_major_) * (1.0f - armor_debuff_minor_));
//the cap is an average of max and debuffed armor
accap_ = static_cast<int>((acdebuff_ + acmax_) / 3.0);
//apply armor penetration additively to the armor cap to get armor reduction
acdebuff_ = static_cast<int>(acdebuff_ - (accap_ * (1.0f - armor_penetration_)));
//damage reduction is an inverse function of reduction
damage_reduction_ = static_cast<f32>(1.0f - (acdebuff_ / ((467.5 * TARGET_LEVEL) + acdebuff_ - 22167.5)));
And is looking good for overall DPS simulations. However, I'm personally getting lower numbers then I expected for the calculated EP value of Armor Penetration
WARNING! The following is a very non-official version of EnhSim I've compiled for TESTING This build is based on the 1.7.0 source and contains the following modifications:
Added support for the following trinkets: Dark Matter, Blood of the Old God, Mjolnir, and the Elemental Focus Stone
Updated Armor Penetration formula (exact changes can be seen above)
NOTE: Since I do not have the source to the EnhSIm GUI you'll be unable to select these new trinkets in the dropdown, however the sim handles them being imported properly (by item ID) or by editing you config with either the item ID or the following constants:
Dark Matter => 'dark_matter' or id # 46038
Blood of the Old God => 'blood_of_the_old_god' or id # 45522
Mjolnir => 'mjolnir_runestone' or id # 45931
Elemental Focus Stone => 'elemental_focus_stone' or id # 45866
NOTE: I was unable to compile this with multi-threaded support so you'll probably see a moderate performance hit between this and the official 1.7.0 version.
Can some other people get me back some comparison numbers between the 1.7.0 sim'd DPS and EP calculation vs this build? Please include your config file as well. Also, rather than cluttering this thread, please email me the results (the address to send it to can be seen in the enhsim output window) or PM me here.
Hi guys, this isn't really a theorycrafting contribution, but I thought others might find it useful.
I saw that there were Mac OS X (Leopard) instructions for using XCode to compile EnhSim. However, I am a command-line person, so I thought I'd write a Makefile instead.
To use this, create a file called "Makefile" and copy and paste the contents below into it. Watch that the "spaces" on the lines are actually "tabs" (that's a common gotcha with Makefiles). Put the Makefile into the "sources" directory, launch a terminal, go to the directory, and type "make" to compile it. I'm assuming that those of you who know what Makefiles are won't have a problem with using them.
IMO, it's much easier than using XCode. It works on Mac OS X 10.5.7. If we assume that EnhSim compiles on Linux and other UNIX-like systems (I don't have a Linux to test this on) then the Makefile should work on those systems too.
I hope someone else finds it useful! If you want to run new versions of EnhSim on your OS then this'll be an easy way to get yourself going.
NOTE: I was unable to compile this with multi-threaded support so you'll probably see a moderate performance hit between this and the official 1.7.0 version.
You are aware that the source of v1.7.0 contains a bug in the NON multi threaded support that frequently silently fails to complete the simulation? If you don't compile with ZTHREADS enabled it will often fail to run at all or give some really odd results. My bug report is at EnhSim: NOTHREADS option code doesn't simulate
Have you also fixed that issue?
Did you also fix the glove_enchant, cloak_enchant not being initialised as per bug report on EnhSim website? This is what causes the occasional crash on Vista when doing EP values calcs. My bug report is at EnhSim: Gloves & Cloak Enchant Null Pointer
When compiling your code have you added a unique version number eg: v1.7.0.1 so we know ppl are using your version for data comparisons?
Last edited by Levva : 06/06/09 at 7:01 PM.
Author of ShockAndAweEnhancement Shaman max dps addon
Please use the EnhSim by Ziff & others to simulate what gear, priorities etc are the best dps. You can use ShockAndAwe to export your paperdoll stats to EnhSim.
Minor quirk I've been having since updating my versions of SAA and EnhSim, my SAA exports have been making my weapons both slower by .1. Nothing huge but it's still pretty annoying having to manually change every export. Anyone else been hit with something like this?
Minor quirk I've been having since updating my versions of SAA and EnhSim, my SAA exports have been making my weapons both slower by .1. Nothing huge but it's still pretty annoying having to manually change every export. Anyone else been hit with something like this?
You are aware that the source of v1.7.0 contains a bug in the NON multi threaded support that frequently silently fails to complete the simulation...
I was totally unaware of that bug, but I've been having no problems simulating without ZTHREADS, perhaps it's something about my development environment (win2k3 server, VS 2008). So far the few people sending me sim results don't seem to be having any problems, strange.
It's pretty much as expected for me, a little more white damage due to the new formula for damage reduction due to armor, and a little hit on Flametounge from the new co-efficient.
The only thing that bugs me still is the EP calculations. In 1.7.0 I get:
I was expecting to see ArmorPen being given more weight due to the new formula not less. Still working on the rhyme and reason behind it and trying to build some test cases I can actually proof against.
I was expecting to see ArmorPen being given more weight due to the new formula not less. Still working on the rhyme and reason behind it and trying to build some test cases I can actually proof against.
Now this is just an assumption in my case of what is going on, but here it goes:
First of all, we need to realize that the ArP EP is based on the relative value of ArP versus AP. So if AP goes up in terms of how good it is, then ArP EP goes down. With that in mind - I suspect that the extra gain that the base ArP debuffs on the target (sunder armor, etc.) give us in terms of hitting harder (white, SS, wf) increases the AP value more than the increase ArP would give us.
Quick question: Any idea why wolves simulate 20 DPS lower in yours than in 1.7.0?
Well, I assumed WF would be lower due to lower effects from ArP. But actually that could explain wolves too, since their damage is melee damage, and I assume mitigated my armor.
Well, I assumed WF would be lower due to lower effects from ArP. But actually that could explain wolves too, since their damage is melee damage, and I assume mitigated my armor.
Unless something has changed (ie. the pet change GC was talking about) wolves do not inherit your ArP.
Unless something has changed (ie. the pet change GC was talking about) wolves do not inherit your ArP.
They do not need to. I assume he was using some ArP debuffs on the mob (i.e. sunder armor) - in which case the new ArP calculations would increase the dogs damage.
I've noticed that there is a bit of a problem with the Flametongue Glyph on EnhSim. On the character stats you are supposed to put in your stats as they appear on your character sheet and of course Flametongue Glyph's extra 2% spell crit shows up there. However when you put the Flametongue Glyph into the simulator it adds another 2% spell crit on top of the 2% already added to your character page.
I ran the sim with my stats with no glyphs and without the 2% spell crit from FT Glpyh to get my base DPS and got these results;
I then ran the sim adding 2% spell crit as if I had the FT Glyph without adding the FT Glyph as one of my major glyphs in the sim and got these results;
As you can see this shows that when using the FT Glyph if you copy your stats and glyphs from the character page the sim treats it as if you get an 4% additional spell crit rather than the correct 2%. That is, the sim double counts the 2% extra spell crit when you copy your characters stats and glyphs.
When I ran the sim on these last tests no. I copied my stats without it, then added the crit manually as if I had the buff for the second test without adding the glyph to the sim, input just the glyph and assumed no buff for the third, and assumed both the buff on and the glyph in the sim for the last one.
Normally I would copy the stats with buffs active, I don't recall seeing anywhere on the Sim's instructions that I should not have, all it said is copy your stats as you see them on the character sheet. I had assumed before that the Flametongue Glyph on the sim was just a text placeholder that didn't change your stats at all because you are instructed to copy your stats, which already included the 2% crit.
If I'm mistaken and there is indeed instructions somewhere in the sim that tell you to leave the FT Buff off when copying your stats when using the FT Glyph perhaps it should be more prominent.
I see. I would say that maybe that should be changed or make it more clear that you shouldn't have the buff active when you copy stats when using the FT Glyph. I would assume a lot of people run the sim as I had, copying stats with the buff active and with the FT Glyph in the sim.
You might want to fix the link in your post. The URL displayed is correct but clicking on the link will load a different URL which will download Rev B instead of 1.7.0.2 (fixed in the quoted text). I downloaded the old version by mistake and I imagine I am not the only one.
Thanks for all your hard work -- it is much appreciated.