by yellowsix » March 26th, 2013, 4:04 pm
Hey -- zoop pointed me to some of the discussions she's been having. As some background, I write most of the code that actually performs the optimizations on askmrrobot. Or in other words, I tend to focus more on making stat weights turn into good sets of gear rather than finding stat weights -- we want an optimizer that can take any strategy and execute it.
That said, I do get into the details of tweaking weights for particular classes pretty often, and I wanted to take a closer look at some of the shadow priest stuff.
Kilee, a lot of your comments are right in line with the way that we think about stat weights and optimization in general, and I think that it boils down to this: the weights "in and of themselves" do not matter. What matters is that the weights you choose in conjunction with whatever tool you are using (AMR, reforge lite, random tool xyz, etc.) produce optimal sets of gear.
Thus, we focus on making stat weights that play well with our optimizer to produce optimal results. We try to balance two things here -- getting good results, and making the weights understandable. If there are lots of hidden rules... generating custom weights turns into a frustrating trial-and-error exercise. If there aren't enough custom smarts... the resulting sets of gear aren't so good.
Enough general stuff -- shadow priests!
We do provide multiple sets of weights for different levels of gear, and we do have a mechanism to automatically choose the most appropriate set depending on properties of the loaded player. The majority of that mechanism is disabled at the moment... for the most part it just chooses between "pvp or pve". We will be re-enabling the more advanced functionality soon... but there are some usability concerns to resolve first. Basically... we don't want Mr. Robot to keep switching strategies on people when they don't expect it. If a user says, "damnit, I want to use the T14 weights no matter what!" We want to make sure to honor that request.
In the meantime, we set one general pve strategy as the default, and try to make it very obvious how to change that on the UI.
For hit -- yeah as stated above, if someone wants to get near the hit cap, they should just put the weight on hit above other secondary stats with AMR. The optimizer takes care of "cutting it off" and not overvaluing gear with hit. We feel this approach is relatively intuitive for users.
The issue of having weights extremely close together: this is a tricky one. In general, the optimizer will do something that makes mathematical sense... but then you have to step back and ask yourself: what am I really trying to do here?
For example, if I look at Drye's gear: just by inspecting his gear and not digging into the details of shadow priest mechanics, I can more or less tell you what he probably wants to accomplish with his gear, in priority order:
1. Get to or near the hit cap
2. Maximize haste
3. Maximize spell power
4. Maximize mastery
Combining that with the default weights floating around here and at mmo-c, I would also add the following observation, which Kilee also stated:
All of the stats are pretty decent for shadow priests, thus sets of gear that generally have more total stats are better than sets of gear that have more of the "correct" stats but less total stats. Which is just a fancy way of saying: prioritize matching sockets.
Given that information, I can pretty easily produce a set of stat weights that execute this strategy (and thus say that Drye's gear is already 100% optimal). For reference, something like this would work:
int: 1
sp: 0.78
hit: 0.56
haste: 0.55
mastery: 0.49
crit: 0.48
The goal of how our weights work is that one can start from a desired strategy like I have enumerated above, and then translate it into understandable weights. In this case, we can clearly see that in action: hit is just above haste, thus the optimizer will pretty much always get you near that cap. Haste is slightly better than int / 2, thus making gemming for haste optimal. Mastery and crit are just below int / 2, thus making gemming for int better than either of those (and consequently increasing spell power -- int is really a "composite" stat, so I rarely think about optimizing int directly). And lastly, I put crit just below mastery, making mastery the priority after haste.
All of the weights are very close to each other, which results in consistent activation of socket bonuses.
Anyway, I wanted to mention this as an example of how you can make AMR execute a very clear gearing strategy using pretty intuitive weights starting from a ballpark that someone has calculated with simc.
Now the weights zoop mentioned above were some new ones that we generated with simc -- note that when we generate stat weights, we run simc, but we do our own calculation of the resulting stat weights based on the results of the simulation. We simply use simc to get the theoretical DPS of a spectrum of setups, then do a statistical analysis of the results. Those weights were:
int: 3.89
sp: 3.14
hit: 2.39
haste: 2.32
mastery: 1.75
crit: 1.5
Notice how these have the exact same characteristics (and also say that Drye is 100% optimal). The relative values are very slightly different -- slightly more spread on these weights. This has very little impact except when trying to build full BiS sets of gear. Even then, it has pretty low impact, and produces results that have near-identical characteristics.
There is really only one significant difference between the set that this produces and the set that we found to have the highest DPS in simc: trinket choices. simc really favors unerring vision of lei shen... these weights do not. But that's not anything new... trinkets are notoriously difficult to estimate with a pure stat weight approach, and simc is also notorious for heavily favoring certain trinkets. Some personal judgment is always going to be in order for trinket choices.
Anyway -- does the general gearing strategy enumerated above seem to be the right one for T15 shadow priests at the moment? What we really look for from theorycrafters is the strategies, and then we handle the details of making weights (and optimizer codez) that execute those strategies effectively.