Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Public Discussion » Class Mechanics

 
 
LinkBack Thread Tools
Old 06/07/07, 1:53 PM   #1
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
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:
http://wow-raid-sim.cvs.sourceforge....ME?view=markup

A compressed tar file for download can be found here:
http://wow-raid-sim.cvs.sourceforge....ar.gz?view=log

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.

Enjoy.......

Example profile:
#
# 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.
#
max_time=100000
infinite_mana=1
target_level=73
lag=0.2
verbose=5
#
# Corrose
# 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.
#
mage=Corrose
talents=http://www.worldofwarcraft.com/info/classes/mage/talents.html?0000000000000000000000050520001230303105311502030321310005010000000
file=example_gear
tier6_2pc=1
tier6_4pc=1
mystical_skyfire=1
spells=scorch-debuff_1/combustion/fire_blast/fire_ball
#
# Dedmonwakeen
# 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.
priest=Dedmonwakeen
talents=http://www.worldofwarcraft.com/info/classes/priest/talents.html?000000000000000000000230501000000000000000503250410250123051551
file=example_gear
darkmoon_crusade=1
spells=mind_flay-hasted_1.5/vampiric_touch/shadow_word_pain/mind_blast/shadow_word_death/mind_flay-wait_0.5
#
# Docsuess
# 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.
warlock=Docsuess
talents=http://www.worldofwarcraft.com/info/classes/warlock/talents.html?5502212012230105510300000000000000000000000505000512200010000000
file=example_gear
spells=dmg_trinket-155-20-120/life_tap/curse_of_shadow/corruption/siphon_life/shadow_bolt
#
# Garass
# 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.
shaman=Garass
talents=http://www.worldofwarcraft.com/info/classes/shaman/talents.html?5500015500001435105100000000000000000000050005050005000000000
file=example_gear
quagmirrans_eye=1
spell_dmg_enchant=37
lightning_capacitor=1
spells=totem_of_wrath/wrath_of_air_totem/elemental_mastery-lightning_bolt/searing_totem/bloodlust/lightning_bolt
#
# Owl
# 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.
druid=Owl
talents=http://www.worldofwarcraft.com/info/classes/druid/talents.html?51202201253313523135100000000000000000000005500001000000000000
file=example_gear
ashtongue_talisman=1
spells=moonkin_form/moonfire/starfire-hasted_0.3/wrath

Last edited by dedmonwakeen : 06/07/07 at 3:43 PM.


Offline
Old 06/07/07, 2:41 PM   #2
Disquette
doop doop de doooo
 
Disquette's Avatar
 
Human Rogue
 
Sargeras
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!

http://us.battle.net/wow/en/forum/to...6766?page=3#41
Let me map a priority list out for you so that you can refer to it in the future:
1. Money 2. Money 3. PvE 4. Mages 5. Companion pets 6. PvP

United States Offline
Old 06/07/07, 2:44 PM   #3
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
Originally Posted by Disquette View Post
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!
Every time I look at the Melee combat models my stomach gets queasy.
Part of my motivation for posting at this point is to get someone more experienced than myself involved.


Offline
Old 06/08/07, 11:43 AM   #4
IceBox
Von Kaiser
 
Orc Warrior
 
Baelgun (EU)
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?

Offline
Old 06/08/07, 12:10 PM   #5
CheshireCat
Bald Bull
 
CheshireCat's Avatar
 
Blood Elf Priest
 
Mal'Ganis
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.

United States Offline
Old 06/08/07, 12:25 PM   #6
Braque
Piston Honda
 
Dwarf Paladin
 
Turalyon (EU)
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?


Offline
Old 06/08/07, 12:33 PM   #7
IceBox
Von Kaiser
 
Orc Warrior
 
Baelgun (EU)
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.

Last edited by IceBox : 06/08/07 at 1:13 PM.

Offline
Old 06/08/07, 1:31 PM   #8
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
Originally Posted by IceBox View Post
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?
I'd be thrilled to see your code......

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.


Offline
Old 06/08/07, 1:34 PM   #9
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
Originally Posted by Braque View Post
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?
By no means have I done an exhaustive test. However.... given that this is a re-write of an earlier effort I'm hoping most of the fundemental flaws have already been resolved. I certainly welcome any testing and feedback. Regretfully, its current form limits the number of folks able to do that....

Feel free to DL the source. If it is hard to read than I failed. :-)


Offline
Old 06/08/07, 2:20 PM   #10
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
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.....


Offline
Old 06/08/07, 2:23 PM   #11
Disquette
doop doop de doooo
 
Disquette's Avatar
 
Human Rogue
 
Sargeras
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.

http://us.battle.net/wow/en/forum/to...6766?page=3#41
Let me map a priority list out for you so that you can refer to it in the future:
1. Money 2. Money 3. PvE 4. Mages 5. Companion pets 6. PvP

United States Offline
Old 06/08/07, 2:52 PM   #12
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
Originally Posted by Disquette View Post
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.
Thanks! I'm a little leery of comparing DPS due to varying lag issues. But if the number of casts and the range of the direct damage and ticks seem reasonable that will certainly help.

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.


Offline
Old 06/08/07, 4:06 PM   #13
Disquette
doop doop de doooo
 
Disquette's Avatar
 
Human Rogue
 
Sargeras
Originally Posted by dedmonwakeen View Post
Thanks! I'm a little leery of comparing DPS due to varying lag issues. But if the number of casts and the range of the direct damage and ticks seem reasonable that will certainly help.

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.
I'd suggest that opposed to being leery of it, you embrace it so that when you're done, you can say "look, this matches ACTUAL data within 2% - there's nothing better than this out there".

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.

http://us.battle.net/wow/en/forum/to...6766?page=3#41
Let me map a priority list out for you so that you can refer to it in the future:
1. Money 2. Money 3. PvE 4. Mages 5. Companion pets 6. PvP

United States Offline
Old 06/08/07, 5:09 PM   #14
dedmonwakeen
Bald Bull
 
dedmonwakeen
Undead Priest
 
No WoW Account
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.


Offline
Old 06/08/07, 5:11 PM   #15
IceBox
Von Kaiser
 
Orc Warrior
 
Baelgun (EU)
Just FYI, my Sim currently uses boss values (glancings, avoidance) but no armor reduction yet.

Offline
 

Go Back   Elitist Jerks » Public Discussion » Class Mechanics

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Paladin healing in 2.1, theorycraft Morthis Class Mechanics 202 05/16/07 7:55 PM
Theorycraft Teenee User Interface and AddOns 3 03/05/07 11:40 AM
Theorycraft - The End of Lines Kerulak Public Discussion 135 07/21/06 1:46 PM