I'm currently programming a tanking simulator which includes Healers, a boss and tanks.
I'm releasing it mainly because I need some criticism. There is no Graphical User Interface or others things which make the life easier but ! All classes are in testing, DK is the most advanced class as this is the one I play and the druid model is having trouble with savage defense.
Actually : The question is : What can you do with this program ?
For the moment, you need to give in a file :
- The boss attacks characteristics
- The tank class and defense characteristics
- There's also a parameter on simulation's duration.
- Number of healers, note that you can not yet specify their choices nor their class (holy paladin)
What the program will answer, in another file :
The program calculates the respective weight of Stamina, Expertise, Mastery, Haste (or Agility for druid) in term of avoidance for the three elements. These elements are :
- Damage taken : Basically it's the damage taken, it takes into account mastery from druid, DK and holy paladin.
- Mana spent : It represents the cost of healing, or the healing stress. A healer will spend more mana when his tank has fewer HPS
- The number of deaths. It represents the life expectancy of the tank.
Maybe my presentation was a bit abrupt, lacking samples of result. Another source of frustration could come I think from the fact I have not yet published the source code (I'm in process of doing so but beware I'm not a professional). The lack of GUI... I don't know
For example, I'm asking the program to simulate the DK class with 220k strikes every two seconds, 190k Hps, 2k dodge and parry. (This time my DK has no rune on his weapon). 2 healers.
Life expectancy in minutes 10.989831
Stamina Heal : -0.053 || 0.021
Stamina mana : 0.953 || 0.085
Stamina Death : 2.368 || 0.270
Expertise Heal : 0.254 || 0.031
Expertise mana : 0.349 || 0.060
Expertise Death : 0.238 || 0.078
Mastery Heal : 1.145 || 0.076
Mastery mana : 1.039 || 0.135
Mastery Death : 1.039 || 0.093
Haste Heal : 0.427 || 0.080
Haste mana : 0.652 || 0.110
Haste Death : 0.627 || 0.117
First column are the final results, second column indicates the error of the linear regression model. (Adding or removing characteristics doesn't necessary follow a strictly linear model)
The paladin is following the rules :
Holy shock on CD
Lay on hand when life < 20%
Divine light when life < 40%
Holy light when life < 100%
Notice I do not clame this is the best way to heal. There is no word of glory, that is right.
Results are as follow : Life expectancy is biased as the simulator do not simulate healing class very well, and operates some reduction. It is more an indicator on the survivability of the tank. In these conditions, its life expectancy will be something like 11 minutes.
Stamina results indicates the value of stamina under 3 criteria.
The first is the healing needed to top the life of the DK. Basically it says Stam has no value when it comes for mitigating damages under theses conditions.
The second is the healing stress. In these conditions with the heuristic of healing mentioned earlier, there would be an equivalency between 1 gem of avoidance and one gem of Stamina. It is biased by the fact that the healing crew didn't adapt to stamina and is only reasoning in term of % of life.
The third value is the number of Death. It seems that under these conditions, Stamina would be twice more valuable than avoidance to prevent death.
Expertise : For expertise the model is simple, if you miss a DS you have a 1,5 sec GCD. There might be an error although it seems simple, but from those results and in thoses conditions, expertise would be less valuable than Haste for example.
Mastery looks like avoidance.
Haste : It may surprise some people to see haste at this value, but it's not difficult to show from a calculation point of view that results should be around Haste = 0,5 mastery. When mastery is around 20. Higher score of mastery advantages even more the haste, I'm saying that mastery = haste for 50 for Mastery.
Further steps of my project is
- Correcting bugs and improve some models
- implementing better healing models and all classes
- Maybe making a GUI