From TheoryCraft to SimulationCraft
Near the release of Burning Crusade I attempted to analysis the DPS/DPM of various caster talent builds.
The results can be found here: http://wiki.shadowpriest.com/index.p...DPS_Comparison
My source code can be found here: http://wow-raid-sim.cvs.sourceforge....aid-sim/phase1
I was as thorough as possible, reasonably confident in my modeling...... but I remained frustrated by all the hand-waving and "averaging out".
I was limited by the architecture of a simple spell sequence extrapolation and the fact that each player was modeled separately.
Eventually the frustration boiled over into motivation: I've recently completed a discrete simulator to model WoW raid combat.
Currently only casters are supported, but I hope to change that with a little help.
It accepts raid/parties of arbitrary size.
Player AI is controlled via a list of spell priorities.
Talents can be specified singly or via WoW Talent Calculator links.
All manner of gear can be accepted +dmg, +crit, +hit, +haste.
It supports Tier 4/5/6 2-pc and 4-pc set bonuses for all classes and the Spellstrike set bonus.
It supports simple dmg trinkets of the form X +dmg for Y sec with Z cooldown.
In addtion the following unique trinket procs are also modeled: Darkmoon Crusade, Eye of Magtheridon, Lightning Capacitor, Quagmirrans Eye, Sextant of Unstable Currents, Talisman of Ascendance, Zandalarian Hero Charm
Class specific versions of the Ashtongue Talisman are also supported.
Spellsurge enchant and Mystical Skyfire diamond are also modeled.
It can generate simple player/spell statistics as well as a combat log.
It's main drawback at the moment is usability......
It is written in C++ and requires at least a little progamming knowledge to compile and run.
The main project link is: http://sourceforge.net/projects/wow-raid-sim
A simple README file with examples can be found here:
A compressed tar file for download can be found here:
DISCLAIMER: I am under no illusions that this actually models real raid combat. How often does the Boss actually just sit there and let you pound on it "tank-n-spank" style??? This is merely a tool to experiment with various raid/party/talent configurations. Take it with a very large grain of salt.
# Example raid profile with just 5 casters
# Simulate for 100,000 seconds, ignoring mana restrictions.
# Lag is assumed to be a random number near 0.2sec.
# Verbose set to "5" means that some spell-specific info will be printed.
# A Fire Mage with 4 pieces of Tier 6 and a Mystical Skyfire diamond.
# Note the "debuff_1" modifier on Scorch. This means that Scorch has
# priority until Fire Vulnerability is fully stacked.... or is about
# to expire.
# A Shadow Priest with the Darkmoon Faire: Crusade deck. The spell priority has
# Mind Flay at number 1 only if it is hasted to 1.5 sec. The "wait_0.5" modifier
# on the last Mind Flay will prevent it from being cast if a spell with higher
# priority will be available in less than 0.5 sec.
# An Affliction Warlock with Ruin instead of UA. Note that the first spell is "dmg_trinket".
# The modifier "155-20-120" means "155 +dmg for 20 seconds with 120 second cooldown." This
# corresponds to Icon of the Silver Crescent.
# An Elemental Shaman with Quagmirrans Eye and the Lightning Capacitor. Note the Elemental
# Mastery and Lightning Bolt combination. This is an example of chaining certain spells.
# Similar spells are Natures Swiftness, Inner Focus, Presence of Mind, etc.
# A Moonkin Druid the (class-specific) Ashtongue Talisman. Note the spells lead off with
# Moonkin Form. This will only get called once for entire fight and will not cost mana.
# Note that Wrath will be chosen over Starfire unless the cast time of Starfire drops by
# at least 0.3 seconds.
Nice idea for a project.
Currently our shaman dps modeling is being done via simulation as well, to avoid the "averages" problem.
What we've found out is that there are a great number of "unknowns", in which we simply don't know how the game operates. As a result, when you take even the simplest of examples (i.e., dps with *no* special abilities, just straight up auto-attack) on a mob that doesn't block/dodge/parry, our numbers are off by a significant amount.
I guess what I'm saying is that, while it's a good idea, make sure that you, or any other contributor, tests out how it jives with the reality of the game. Question the very simplest of assumptions (we've had windfury damage corrected 2x since the simulators were born, even though that should be a very very simple formula).
good luck with it!
Part of my motivation for posting at this point is to get someone more experienced than myself involved.
Hey there! I'm currently working on a combat simulator for Warrior Damage :>
I got the melee part ready to got even with flurry! At least if I wasn't totally wrong at coding :<
I'm waiting for my SF.org project space but I can link you a little textfile which shows my code if you're interrested just write me a PM.
It's just VB because I didn't learned any other language yet and it's quite quick 'n' dirty coded because I didn't code for about 2 years so forgive the eye-hurting-code.
One part I don't really know how to make it accurate it the Rnd() function part. I know that due the convertation from the random value (0.XYXYXY) to just a single (XY.Z) it isn't really accurate. The other problem is that the Rnd value from VB isn't really as "random" as Blizzards random number generator in WoW.
If you like to help me or even take over my project you're definetly welcome. It would be quite nice to write it in C but I can't, maybe you can?
If you get close enough to model actual combat that the biggest difference is the quality of the PRNG algorithm, you will have recreated the game with a different GUI. The errors introduced by random number generation and rounding errors, while interesting to talk about, will almost always be dwarfed by, for example, the difference between your assumptions and reality. I wouldn't worry a shred about those, and spend my time working on implementing good assumptions.
Wow, just wow.
Next up would be a layer that, given a pool of players larger than the desired group, runs the simulation on different permutations of group composition and spits out the one that scores the best in the simulation.
I'm very tempted to download it and have a look, but quite scared at the amount of my time it has the potential to consume ... how accurate do you feel your caster sim is at the moment?
Does the numbers it comes out with match what you expect? Have you tested it's predictions against real world results?
The Damage Done Value flucuates between +/- 5 % anyway just because of the randomness (Critluck) so I already thought that it isn't that important to be accurate.
So now I just have to implement the usage of Styles and other Talents ^^
I'll be back, maybe ;D
Edit: I don't think that you can really use a simulator to make decisions about which person you take and which you don't.
My rogue with t1 and sword spec has beaten a full t2 rogue with hi-end weapons just because he sucked.
Working code or even just pseudo-code typed into a forum post is exactly what I'm looking for from this community.
I simply have ZERO experience with physical dps classes.
Feel free to DL the source. If it is hard to read than I failed. :-)
Another area in which i could use some help is the Armory.
I'd love to allow folks to simply pass in Server.Character and extra all the relevent info.....
For initial tests, you can run a one person "raid", and go check your sim results against Dr. Boom. There is also a warlock thread in the Blizzard forums with people's dps results against Dr. Boom which you can use as further spell-based data against which to test your sim.
I believe my next step is to generate WoW-style combat logs. I hoping to be able to run WWS on the output and compare it to some "real" boss fights.
If you're worried about the difference in lag between you and me, it's probably best to have a bunch of people run the same test, aggregate the data, aggregate the pings, and back into a good number of "ping affects dps of class ____ by ____ %", it's the user's job to accomodate for this in their own runs.
I guess I was worried about using my programmable lag to match any real result....... Seemed like cheating. Heh.
It is still a good idea and I'll see if I can drag some guildies over to Dr Boom.
I guess I was trying to remove the "S" variance in DPS...... but if my timing modeling is off, then who cares how accurate I am with spell cast/tick damage.
Just FYI, my Sim currently uses boss values (glancings, avoidance) but no armor reduction yet.
|All times are GMT -4. The time now is 10:05 PM.|
Forum Infrastructure by vBulletin 3.6.12 ©2000-2007, Jelsoft Enterprises Ltd.