SimulationCraft is a tool to explore combat mechanics in the popular MMO RPG World of Warcraft. It is a multi-player event-driven simulator written in C++ that models raid damage. Increasing class synergy and the prevalence of proc-based combat modifiers have eroded the accuracy of traditional calculators that rely upon closed-form approximations to model very complex mechanics. The goal of this simulator is to close the accuracy gap while maintaining a performance level high enough to calculate relative stat weights to aid gear selection.
One of the common criticisms of theorycrafting tools is that they model Patchwerk style fights in which the DPS players are able to focus exclusively on generating damage without worrying about standing in molten lava or other such trivial distractions. While truly modeling individual boss fights is a near-impossible task, SimulationCraft does support a wide array of raid events. See "Modeling Raid Events" and the Examples tab for details.
At its core, SimulationCraft is a parameter-driven batch simulation tool. This interface is a very light-weight wrapper that simply helps you build configuration scripts, pass them to the simulator, and then evaluate the results. It relies upon existing character profile management sites to provide interactive manipulation of character talents, glyphs, gear, enchants, etc. The three key steps are:
SimulationCraft has many, many options that can be loosely categorized into two groups, those that are applied to the active player and those that are applied globally. The Globals section of the Options tab is dedicated to the more commonly changed global parameters.
Scale factors represent the change in DPS per change in stat value. They are helpful in evaluating incremental gear changes, and are calculated by first making a baseline simulation and then comparing it against subsequent runs in which one stat is increased or decreased. To calculate trustworthy scale factors, the simulation margin of error must be sufficiently smaller than the change in stat value. To reduce the margin of error a large number of iterations is required. Since multiple simulations must be run with a higher-than-normal number of iterations, calculating scale factors can take 50x to 100x longer than a standard DPS run.
ScaleFactor(Stat) = ( DPS(Baseline+StatDelta) - DPS(Baseline) ) / StatDelta
By default, SimulationCraft uses stat deltas between 150 and 300 depending upon the stat. Most stat deltas are positive, measuring the increase in DPS.
SimulationCraft will optionally generate DPS-per-stat graphs using a +/- 50 stat point range given the initial gear point. It should be noted that simulation is not well suited for plot generation. Precision is not as important so fewer iterations are required. However, the sheer number of sample points needed to generate a plot make it even more cpu-intensive than scale factor generation.
To download a character from the Armory, merely navigate the web view to a character profile page. The easiest way to do this is via the Search mechanism. The Armory Spec toggle under Options controls whether to use the active or the inactive talent setup. There is no need to wait for the web page to be fully rendered. The import process uses the URL at the command-line. Note that the URL at the command-line can be modified directly in the same manner as a normal web browswer. The Armory tab defaults to US region. See the Options tab to change the region to EU, TW, or CN.
To save text that may be conveniently cut-and-pasted into an email or forum, go to the Log tab and select the portion of interest. To save the entire log, specify the file name at the command line and press Save!.
To save HTML, go to the Results tab, specify the file name at the command line, and press Save!.
These HTML files are all-inclusive. The images are generate using GoogleCharts which means that the HTML cannot be viewed offline.
A key part of the simulation is the player artificial intelligence. It is important to understand that there is no rotation to specify. Instead, the player is given a priority list of actions. Whenever the player is looking for something to do (just finished an action and not waiting on the GCD), it will simply walk the list of actions and perform the first one that is ready. For example, damage-over-time actions are not ready until they are finished ticking (minus the cast-time, of course). Temporary buffs and cooldowns can also prevent certain actions from being considered ready. There are a large variety of conditionals that can be applied to each action in the priority list that can limit their execution even further. The default action list (actions+=) generated during character import will demonstrate this. For more details, see the Help tab.
Experimenting with SimulationCraft's various supported events allows one to determine how susceptible talent/gear combinations are to adverse conditions. The intervals and durations of each event are user-specified, as are the degree of randomness applied to each. Supported events include: movement, stuns, AoE damage, adds spawning, boss (in)vulnerability, boss casting requiring use interrupts.
These are only a few examples. For more details, see the Help tab.
raid_events+=/movement,cooldown=30,duration=5
raid_events+=/movement,players_only=1,cooldown=30,duration=5
raid_events+=/movement,cooldown=40,duration=7,distance<=5
raid_events+=/stun,cooldown=60,duration=2
raid_events+=/adds,count=3,cooldown=60,duration=20
raid_events+=/invulnerable,cooldown=120,duration=3
raid_events+=casting,cooldown=30,duration=3,first=15