This repository has been archived by the owner on Aug 25, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Welcome.html
426 lines (361 loc) · 34.2 KB
/
Welcome.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
<!DOCTYPE html>
<html>
<head>
<title>Welcome to SimulationCraft</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style type="text/css">
* { border: none; margin: 0; padding: 0; }
body { padding: 5px 25px 25px 25px; font-family: "Lucida Grande", Arial, sans-serif; font-size: 14px; background-color: #f9f9f9; color: #333; text-align: center; }
p { margin-top: 1em; }
h1, h2, h3, h4, h5, h6 { color: #777; margin-top: 1em; margin-bottom: 0.5em; }
h1, h2 { margin: 0; padding: 2px 2px 0 2px; }
h1 { font-size: 24px; }
h2 { font-size: 18px; }
h3 { margin: 0 0 4px 0; font-size: 16px; }
a { color: #666688; text-decoration: none; }
a:hover, a:active { color: #333; }
ul, ol { padding-left: 20px; }
ul.float, ol.float { padding: 0; }
ul.float li, ol.float li { display: inline; float: left; padding-right: 6px; margin-right: 6px; list-style-type: none; border-right: 2px solid #eee; }
.spaced li { margin-top: 1em; }
.clear { clear: both; }
.hide, .charts span { display: none; }
.center { text-align: center; }
.float { float: left; }
.mt { margin-top: 20px; }
.mb { margin-bottom: 20px; }
.toggle { cursor: pointer; }
h2.toggle { padding-left: 16px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAeCAIAAACT/LgdAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD1SURBVHja7JQ9CoQwFIT9LURQG3vBwyh4XsUjWFtb2IqNCmIhkp1dd9dsfIkeYKdKHl+G5CUTvaqqrutM09Tk2rYtiiIrjuOmaeZ5VqBBEADVGWPTNJVlOQwDyYVhmKap4zgGJp7nJUmCpQoOY2Mv+b6PkkDz3IGevQUOeu6VdxrHsSgK27azLOM5AoVwPqCu6wp1ApXJ0G7rjx5oXdd4YrfQtm3xFJdluUYRBFypghb32ve9jCaOJaPpDpC0tFmg8zzn46nq6/rSd2opAo38IHMXrmeOdgWHACKVFx3Y/c7cjys+JkSP9HuLfYR/Dg1icj0EGACcXZ/44V8+SgAAAABJRU5ErkJggg==) 0 -10px no-repeat; }
h2.open { margin-bottom: 10px; background-position: 0 9px; }
h3.toggle { padding-left: 16px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAIAAAAMmCo2AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEfSURBVHjazJPLjkRAGIXbdSM8ACISvWeDNRYeGuteuL2EdMSGWLrOmdExaCO9nLOq+vPV+S9VRTwej6IoGIYhCOK21zzPfd/f73da07TiRxRFbTkQ4zjKsqyqKoFN27ZhGD6fT5ZlV2IYBkVRXNflOI5ESBAEz/NEUYT5lnAcBwQi307L6aZpoiiqqgprSZJwbCF2EFTXdRAENE37vr8SR2jhAPE8vw0eoVORtw/0j6Fpmi7afEFlWeZ5jhu9grqui+M4SZIrCO8Eg86y7JT7LXx5TODSNL3qDhw6eOeOIyBJEuUj6ZY7mRNmAUvQa4Q+EEiHJizLMgzj3AkeMLBte0vsoCULPHRd//NaUK9pmu/EywDCv0M7+CTzmb4EGADS4Lwj+N6gZgAAAABJRU5ErkJggg==) 0 -11px no-repeat; }
h3.open { background-position: 0 7px; }
h4.toggle { margin: 0 0 8px 0; padding-left: 12px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVCAIAAADw0OikAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD8SURBVHjavJHLjkRAGIUbRaxd3oAQ8QouifDSFmysPICNIBZ2EhuJuM6ZMdFR3T3LOYtKqk79/3/qKybLsrZteZ5/3DXPs67rxLbtvu+bprluHMexrqumaZZlMdhM05SmaVVVhBBst20zDMN1XRR822erJEnKsmQYxjRNz/M4jsM5ORsKguD7/r7vqHAc5/Sg3+orDsuyGHGd3OxXsY8/9R92XdfjOH60i6IAODzsvQ0sgApw1I0nAZACVGAAPlEU6WigDaLoEcfxleNN8mEY8Id0c2hZFlmWgyDASlefXhiGqqrS0eApihJFkSRJt0nHj/I877rueNGXAAMAKcaTc/aCM/4AAAAASUVORK5CYII=) 0 -8px no-repeat; }
h4.open { background-position: 0 6px; }
a.toggle-details { margin: 0 0 8px 0; padding-left: 12px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAXCAYAAADZTWX7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADiSURBVHjaYvz//z/DrFmzGBkYGLqBeG5aWtp1BjTACFIEAkCFZ4AUNxC7ARU+RlbEhMT+BMQaQLwOqEESlyIYMIEqlMenCAQsgLiakKILQNwF47AgSfyH0leA2B/o+EfYTOID4gdA7IusAK4IGk7ngNgPqOABut3I1uUDFfzA5kB4YOIDTAxEgOGtiAUY2vlA2hCIf2KRZwXie6AQPwzEFUAsgUURSGMQEzAqQHFmB8R30BS8BWJXoPw2sJuAjNug2Afi+1AFH4A4DCh+GMXhQIEboHQExKeAOAbI3weTAwgwAIZTQ9CyDvuYAAAAAElFTkSuQmCC) 0 4px no-repeat; }
a.open { background-position: 0 -11px; }
td.small a.toggle-details { background-position: 0 2px; }
td.small a.open { background-position: 0 -13px; }
.toggle-content { display: none; }
#active-help, .help-box { display: none; }
#active-help { position: absolute; width: auto; padding: 3px; background: #fff; z-index: 10; }
#active-help-dynamic { padding: 6px 6px 18px 6px; background: #eeeef5; outline: 1px solid #ddd; font-size: 13px; text-align: left; }
#active-help .close { position: absolute; right: 10px; bottom: 4px; }
.help-box h3 { margin: 0; font-size: 12px; }
.help-box p { margin: 0 0 10px 0; }
.help-box { border: 1px solid #ccc; background-color: #fff; padding: 10px; }
a.help { cursor: help; }
.section { position: relative; max-width: 1260px; padding: 8px; margin-left: auto; margin-right: auto; margin-bottom: -1px; border: 1px solid #ccc; background-color: #fff; -moz-box-shadow: 4px 4px 4px #bbb; -webkit-box-shadow: 4px 4px 4px #bbb; box-shadow: 4px 4px 4px #bbb; text-align: left; }
.section-open { margin-top: 25px; margin-bottom: 25px; -moz-border-radius: 10px; -khtml-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }
.grouped-first { -moz-border-radius-topright: 10px; -moz-border-radius-topleft: 10px; -khtml-border-top-right-radius: 10px; -khtml-border-top-left-radius: 10px; -webkit-border-top-right-radius: 10px; -webkit-border-top-left-radius: 10px; border-top-right-radius: 10px; border-top-left-radius: 10px; }
.grouped-last { -moz-border-radius-bottomright: 10px; -moz-border-radius-bottomleft: 10px; -khtml-border-bottom-right-radius: 10px; -khtml-border-bottom-left-radius: 10px; -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; }
.section .toggle-content { padding: 0 0 20px 14px; }
#raid-summary .toggle-content { padding-bottom: 0px; }
ul.params { padding: 0; }
ul.params li { float: left; padding: 2px 10px 2px 10px; margin-right: 10px; list-style-type: none; background: #eeeef5; font-family: "Lucida Grande", Arial, sans-serif; font-size: 12px; }
.player h2 { margin: 0; }
.player ul.params { position: relative; top: 2px; }
#masthead img { display: block; margin-left: auto; margin-right: auto; }
#masthead h2 { margin: 10px 0 5px 0; }
#notice { border: 1px solid #ddbbbb; background: #ffdddd; font-size: 12px; }
#notice h2 { margin-bottom: 10px; }
#masthead ul.toc { padding: 0; }
#masthead ul.toc li { list-style-type: none; }
#masthead ul.toc li ul { padding-left: 18px; }
#masthead ul.toc li ul li { list-style-type: circle; font-size: 13px; }
.charts { margin: 10px 60px 0 4px; float: left; width: 550px; text-align: center; }
.charts img { padding: 8px; margin: 0 auto; margin-bottom: 20px; border: 1px solid #ccc; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; -moz-box-shadow: inset 1px 1px 4px #ccc; -webkit-box-shadow: inset 1px 1px 4px #ccc; box-shadow: inset 1px 1px 4px #ccc; }
.talents div.float { width: auto; margin-right: 50px; }
table.sc { border: 0; background-color: #eee; }
table.sc tr { background-color: #fff; }
table.sc tr.head { background-color: #aaa; color: #fff; }
table.sc tr.odd { background-color: #f3f3f3; }
table.sc th { padding: 2px 4px; text-align: center; background-color: #aaa; color: #fcfcfc; }
table.sc th.small { padding: 2px 2px; font-size: 12px; }
table.sc th a { color: #fff; text-decoration: underline; }
table.sc th a:hover, table.sc th a:active { color: #f1f1ff; }
table.sc td { padding: 2px 4px; text-align: center; font-size: 13px; }
table.sc td.small { padding: 2px 2px; font-size: 11px; }
table.sc th.left, table.sc td.left, table.sc tr.left th, table.sc tr.left td { text-align: left; padding-right: 6px; }
table.sc th.right, table.sc td.right, table.sc tr.right th, table.sc tr.right td { text-align: right; padding-right: 6px; }
table.sc tr.details td { padding: 0 0 15px 15px; text-align: left; background-color: #fff; }
table.sc tr.details td ul { padding: 0; margin: 4px 0 8px 0; }
table.sc tr.details td ul li { clear: both; padding: 2px; list-style-type: none; }
table.sc tr.details td ul li span.label { display: block; float: left; width: 150px; margin-right: 4px; background: #f3f3f3; }
table.sc tr.details td ul li span.tooltip { display: block; float: left; width: 190px; }
table.sc tr.details td ul li span.tooltip-wider { display: block; float: left; width: 350px; }
table.sc tr.details td div.float { width: 350px; }
table.sc tr.details td div.float h5 { margin-top: 4px; }
table.sc tr.details td div.float ul { margin: 0 0 12px 0; }
table.sc td.filler { background-color: #ccc; }
table.sc .dynamic-buffs tr.details td ul li span.label { width: 120px; }
.sample-sequence { width: 500px; word-wrap: break-word; outline: 1px solid #ddd; background: #fcfcfc; padding: 6px; font-family: "Lucida Console", Monaco, monospace; font-size: 12px; }
</style>
</head>
<body>
<div id="active-help">
<div id="active-help-dynamic">
<div class="help-box">
</div>
<a href="#" class="close">close</a>
</div>
</div>
<img src="Simc_Logo.png" width="512" height="512" alt="SimulationCraft Logo">
<div id="masthead" class="section section-open">
<p>SimulationCraft is a tool to explore combat mechanics in the popular MMO RPG Star Wars: The Old Republic. 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.</p>
<p>One of the common criticisms of theorycrafting tools is that they model <i>Patchwerk</i> 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.</p>
<h2 class="toggle">Table of Contents</h2>
<div class="toggle-content">
<ul class="toc">
<li><a href="#how-this-interface-works">How This Interface Works</a></li>
<li><a href="#navigation">Navigation</a></li>
<li><a href="#tips-and-tricks">Tips and Tricks</a></li>
<li><a href="#global-parameters">Global Parameters</a></li>
<li><a href="#scale-factors">Scale Factors</a></li>
<li><a href="#plots">Plots</a></li>
<li><a href="#importing-from-the-armory">Importing from the Armory</a></li>
<li><a href="#importing-from-rawr">Importing from Rawr</a></li>
<li><a href="#creating-a-custom-profile">Creating A Custom Profile</a></li>
<li><a href="#saving-results">Saving Results</a></li>
<li><a href="#priority-lists-not-rotations">Priority Lists, Not Rotations</a></li>
<li><a href="#modeling-raid-events">Modeling Raid Events</a></li>
</ul>
</div>
</div>
<div id="how-this-interface-works" class="section grouped-first">
<h2 class="toggle">How This Interface Works</h2>
<div class="toggle-content">
<p>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:</p>
<ol class="mt">
<li>Generate your profile.</li>
<li>Simulate your profile.</li>
<li>Evaluate your results.</li>
</ol>
</div>
</div>
<div id="navigation" class="section">
<h2 class="toggle">Navigation</h2>
<div class="toggle-content">
<p>In general the flow is from left to right across the main tabs at the top of the window.</p>
<ul class="mt">
<li>At <i>Options</i> you set common high-level directives.</li>
<li>At <i>Import</i> you load your character profile from a variety of sources.</li>
<li>At <i>Simulate</i> you make character-specific tweaks.</li>
<li>At <i>Overrides</i> a super-user can specify custom parameters that will persist from run to run.</li>
<li>At <i>Examples</i> you can see examples of all supported parameters including common usage.</li>
<li>At <i>Log</i> you will find simple text reporting as well as any errors encountered.</li>
<li>At <i>Results</i> you will find HTML output generated by the simulator.</li>
</ul>
<p>Please note that the behavior of the command line and the buttons to either side are context-sensitive. Their function and labels may change as you navigate the main tabs.</p>
</div>
</div>
<div id="tips-and-tricks" class="section">
<h2 class="toggle">Tips and Tricks</h2>
<div class="toggle-content">
<ul class="mt spaced">
<li>The label on the main button changes between <i>Simulate!</i>, <i>Import!</i> and <i>Save!</i> depending upon the active main tab. While a character profile is being imported or a simulation is running, the label will be set to <i>Cancel!</i>. Cancelling a simulation run early may still result in valuable information: The results posted are a statistical analysis of many iterations. Cancelling a simulation will simply reduce the number of iterations, increasing the reported statistical error.</li>
<li>The progress bar is context-sensitive. When viewing a web page under <i>Import</i> or <i>Results</i> it will display the percent-completion of rendering the web page. Under all other tabs, the progress bar will report the percent-completion of the character import or the simulation run.</li>
<li>The <i>Back</i> and <i>Forward</i> buttons to the left of the command-line allow you to cycle through the history of the main viewport. When viewing a web page under <i>Import</i> or <i>Results</i> they will cycle through the <i>URL</i> history. <b>When viewing <i>Globals</i>, <i>Simulate</i>, or <i>Overrides</i>, these buttons will cycle through previous states.</b> This history is persistent between runs.</li>
<li>With the exception of the <i>Import</i> tab, pressing the <i>Enter</i> key while the command-line has focus is equivalent to clicking the main button.</li>
<li><b>When the command-line has focus, the <i>Up</i> and <i>Down</i> keys cycle through the history of command-line text.</b> This history is persistent between runs.</li>
<li>The configuration script passed to the simulator is constructed by first adding the options implied by the button-settings under <i>Options</i>, followed by the text under <i>Simulate</i>, followed by the text under <i>Overrides</i> and finally including anything on the command line. It is important to understand that the last setting <i>wins</i>. <b>Users already comfortable with earlier releases of the command-line-only application can use the the GUI command-line in the same manner.</b> For example, one could type <i>armory=us,llane,segv</i> to download and simulate the Hunter Segv from server US-Llane.</li>
<li>Any option that does not fit the <i>parm=value</i> paradigm is assumed to be the name of a script file which is subsequently loaded. For example, typing <b>Raid_T11_372.simc</b> on the command-line will load and simulate the shipped script that contains all supported class/spec combinations using 372 ilevel gear. While the history mechanism of the <i>Back</i> and <i>Forward</i> buttons should be sufficient for most needs, it can be convenient to save complicated parameter settings in an external file.
</ul>
</div>
</div>
<div id="global-parameters" class="section">
<h2 class="toggle">Global Parameters</h2>
<div class="toggle-content">
<p>SimulationCraft has many, many options that can be loosely categorized into two groups, those that are applied to the <i>active</i> player and those that are applied globally. The <i>Globals</i> section of the <i>Options</i> tab is dedicated to the more commonly changed global parameters.</p>
<ul class="mt spaced">
<li><b>Version:</b> The mechanics of <i>Star Wars: The Old Republic</i> are constantly changing. SimulationCraft endeavors to model the two most recent patch levels. This corresponds to <i>Live</i> and <i>PTR</i>. The <i>Both</i> option will simulate two characters at once: One character will run with Live mechanics and a second character with the name <i>EvilTwinPTR</i> will be run with PTR mechanics. The results will shown side-by-side for easy comparison.</li>
<li><b>Latency:</b> During simulation we do not attempt to model the actual latency in all internet traffic, but rather how that latency manifests itself in terms of the inevitable gaps between player actions. Rigorous testing has shown that these gaps differ greatly depending upon whether the preceding action has a cast-time (enabling queueing), is instant-cast (triggering the <i>GCD</i>), or is channeled (requiring extra care not to clip the last tick). SimulationCraft uses random values for these <i>gaps</i>, whose range is centered on user-supplied values.</li>
<li><b>Iterations:</b> The largest drawback of simulation is that in order to get meaningful answers, one must run the siulation many, many times to acquire a trustworthy statistical average. More iterations means better accuracy, at the cost of longer runtimes. When calculating <i>scale factors</i> one must iterate enough such that the simulation error margin is sufficiently smaller than the change in stat value being analyzed.</li>
<li><b>Length(sec):</b> It is important to understand that the length of the fight is a goal and not a hard limit. Half-way through the first iteration the health of the target (<i>boss</i>) is estimated based upon damage done up to that point. The simulation ends when the target dies and <i>not</i> when the desired fight length is reached. At the end of every proceeding iteration, the target health is re-evaluated based upon whether the fight ended early or late. The end result is that after many iterations, the average fight length matches the desired value.</li>
<li><b>Vary Length:</b> In order to smooth out the effects of very powerful procs and/or abilities one can tell the simulator to vary the fight length. The sim will perform an even distribution of fight lengths from <i>length-variance</i> to <i>length+variance</i>.
<li><b>Adds:</b> While it is possible to specify raid events that spawn adds that are only temporary, this option specifies adds that are present the entire fight. It is vital to understand that SimC has not yet implemented multi-DoT support. Only abilities that affect multiple additional targets nearby the main target have been implemented, such as <i>Cleave</i>, <i>Chain Lightning</i>, and <i>Blade Flurry</i>. In addition, only those AoE spells occasionally used in single-target scenarios have been implemented.
<li><b>Fight Style:</b> One of the most common criticisms of theorycrafting tools is that they only model <i>tank-n-spank</i> fights in which the player gets to stand perfectly still just hitting keys/buttons. SimulationCraft supports a wide array of <i>raid events</i> including movement, stuns, splash damage, target (in)vulnerability, etc. The <i>Helter Skelter</i> option throws in an interesting mix of these random events so that the user may see how badly DPS suffers under adverse conditions.</li>
<li><b>Target Race:</b> Some races, classes, and talents provide bonuses that are specific to the target race. One thing to consider is that this controls the race of the boss <i>and</i> any adds that may be present.
<li><b>Player Skill:</b> Whenever a player is considered <i>ready to do something</i> the sim walks through thier prioritized list of actions and executes the very first one that is available. If a player is below 100% skill then there is a chance that it may skip an action even if it is available and make use of a lower-priority action instead. DoTs are considered available when the last tick will occur after <i>current_time+dot_cast_time</i>. When a player is below 100% skill there is a chance that the DoT is refreshed too early, clipping the last tick.
<li><b>Threads:</b> The iterative nature of SimulationCraft means that parallel processing is a very effective means to increase performance. Most modern desktops have at least two CPU cores. Match the number of threads to the number of CPU cores for optimal performance.</li>
<li><b>Smooth RNG:</b> One of the most difficult problems associated with simulation is variance. Decreasing variance will reduce the number of iterations required to reach a confidence level in the results. Turning on <i>smooth</i> RNG will introduce determinism in both the cycle and the distribution of individual RNG calculations. This will increase convergence by an order of magnitude, allowing the use of far fewer iterations. However, as with formulation, introducing this kind of determinism into the RNG can intefere with the scale factor generation of non-linear stats. Use with caution.</li>
<li><b>Armory Region:</b> This option controls which region (US, EU, TW, CN) the Amory Import tab uses. <li><b>Armory Spec:</b> Players may have two talent/glyph combinations, but only one may be active at a time. When a player is downloaded from the Armory, by default the <i>active</i> talent/glyph
setup is used. This parameter allows one to access the <i>inactive</i> setup during import.</li>
<li><b>Generate Debug:</b> This option provides a peek under the hood. Running with <i>Log Only</i> will force the number of iterations to just one and generate a human-readable combat log that is stored in the <i>Log</i> tab. Running with <i>Gory Details</i> dramatically increases the size of the combat log and makes it considerably less human-readable. It will also provide detailed debug output during character import. Since turning on debug allows only one iteration, scale factor and plot generation are turned off.</li>
</ul>
</div>
</div>
<div id="scale-factors" class="section">
<h2 class="toggle">Scale Factors</h2>
<div class="toggle-content">
<p>Scale factors represent the change in DPS per change in stat value. They are helpful in evaluating incremental gear changes. They 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 more cputime than a standard DPS run.</p>
<p class="center"><b>ScaleFactor(Stat) = ( DPS(Baseline+StatDelta) - DPS(Baseline) ) / StatDelta</b></p>
<p>By default, SimulationCraft uses stat deltas between 50 and 150 depending upon the stat. Most stat deltas are positive, measuring the <i>increase</i> in DPS. However, due to the cap nature of <i>Hit</i> and <i>Expertise</i>, these stats use negative deltas, measuring the <i>decrease</i> in DPS. To override the default stat deltas, see the <i>Examples</i> tab for the appropriate parameters.</p>
</div>
</div>
<div id="plots" class="section">
<h2 class="toggle">Plots</h2>
<div class="toggle-content">
<p>SimulationCraft will optionally generate DPS-per-stat graphs using a +/- 200 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.</p>
</div>
</div>
<div id="importing-from-the-armory" class="section">
<h2 class="toggle">Importing from the Armory</h2>
<div class="toggle-content">
<p>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 <i>Search</i> mechanism. The <i>Armory Spec</i> toggle under <i>Options</i> controls whether to use the <i>active</i> or the <i>inactive</i> talent/glyph 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. <b>The Armory tab defaults to US region. See the <i>Options</i> tab to change the region to EU, TW, or CN.</b></p>
</div>
</div>
<div id="creating-a-custom-profile" class="section">
<h2 class="toggle">Creating A Custom Profile</h2>
<div class="toggle-content">
<p>Support for <i>Custom Profiles</i> is not yet available.</p>
</div>
</div>
<div id="saving-results" class="section">
<h2 class="toggle">Saving Results</h2>
<div class="toggle-content">
<p>To save text that may be conveniently cut-and-pasted into an email or forum, go to the <i>Log</i> tab and select the portion of interest. To save the entire log, specify the file name at the command line and press <i>Save!</i>.</p>
<p>To save HTML, go to the <i>Results</i> tab, specify the file name at the command line, and press <i>Save!</i>.</p>
<p>These HTML files are all-inclusive. The images are generate using GoogleCharts which means that the HTML cannot be viewed offline.</p>
</div>
</div>
<div id="priority-lists-not-rotations" class="section">
<h2 class="toggle">Priority Lists, Not Rotations</h2>
<div class="toggle-content">
<p>A key part of the simulation is the player artificial intelligence. It is important to understand that there is no <i>rotation</i> to specify. Instead, the player is given a <i>priority list</i> 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 <i>ready</i>. For example, <i>damage-over-time</i> actions are not ready until they are finished ticking (minus the cast-time, of course). Temporary buffs and <i>cooldowns</i> can also prevent certain actions from being considered <i>ready</i>. 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 (<i>actions+=</i>) generated during character import will demonstrate this. For more details, see the <i>Examples</i> tab.</p>
</div>
</div>
<div id="modeling-raid-events" class="section grouped-last">
<h2 class="toggle">Modeling Raid Events</h2>
<div class="toggle-content">
<p>Experimenting with SimulationCraft's various supported events allows one to determine how succeptible 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.</p>
<ul class="mt spaced">
<li><a href="#events-movement" class="help">Movement</a>: When a player is <i>moving</i> auto-attacks are halted and only ranged instant-casts are allowed. To further control the actions taken while moving, there is a <i>moving=1</i> conditional that can be specified with actions to prevent them from being used in normal circumstances.</li>
<li><a href="#events-stun" class="help">Stun</a>: While <i>stunned</i>, even the instant-casts are forbidden.</li>
<li>Damage: The <i>damage</i> event is used to model splash damage from AoE, which is helpful for talents such as <i>Incanters Absorbtion</i>.</li>
<li><a href="#events-adds" class="help">Adds</a>: Note that multi-DoT and many true AoE abilities are not yet supported, so some modules take more advantage of adds spawning than others.</li>
<li>Vulnerable: Boss <i>vulnerability</i> is a 2x damage multiplier.</li>
<li><a href="#events-invulnerable" class="help">Invulnerable</a>: Boss <i>invulnerability</i> will remove any existing player DoTs on the target, but it does not yet remove player debuffs.</li>
<li><a href="#events-casting" class="help">Casting</a>: The <i>casting</i> event is used to model players changing their rotations to perform interrupts. Player interrupt actions are not considered <i>ready</i> unless the boss is in mid-cast. This means that it is safe to give these actions a high-priority because they will not be used unless necessary.</li>
</ul>
<p>These are only a few examples. For more details, see the <i>Examples</i> tab.</p>
</div>
</div>
<!-- Help Boxes -->
<div id="events-movement">
<div class="help-box">
<h3>Every 30sec, all players and pets are required to move for 5sec</h3>
<p>raid_events+=/movement,cooldown=30,duration=5</p>
<h3>Every 30sec, all players are required to move for 5sec while pets remain stationary</h3>
<p>raid_events+=/movement,players_only=1,cooldown=30,duration=5</p>
<h3>Every 40sec, all players within 5yards are required to move for 7sec</h3>
<p>raid_events+=/movement,cooldown=40,duration=7,distance<=5</p>
</div>
</div>
<div id="events-stun">
<div class="help-box">
<h3>Every 60sec, all players are stunned for 2sec</h3>
<p>raid_events+=/stun,cooldown=60,duration=2</p>
</div>
</div>
<div id="events-adds">
<div class="help-box">
<h3>Every 1min, 3 additional targets are nearby the boss and remain for 20sec</h3>
<p>raid_events+=/adds,count=3,cooldown=60,duration=20</p>
</div>
</div>
<div id="events-invulnerable">
<div class="help-box">
<h3>Every 2min, the target becomes invulnerable, interrupting players and shedding all DoTs.</h3>
<p>raid_events+=/invulnerable,cooldown=120,duration=3</p>
</div>
</div>
<div id="events-casting">
<div class="help-box">
<h3>Interrupt boss's 3 second cast every 30 seconds starting 15sec into fight</h3>
<p>raid_events+=casting,cooldown=30,duration=3,first=15</p>
</div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
$('a[ rel="_blank"]').each(function() {
$(this).attr('target', '_blank');
});
$('.toggle-content, .help-box').hide();
$('.open').next('.toggle-content').show();
$('.toggle').click(function(e) {
var img_id = '';
var src = '';
var target = '';
e.preventDefault();
$(this).toggleClass('open');
var section = $(this).parent('.section');
if (section.attr('id') != 'masthead') {
section.toggleClass('section-open');
}
if (section.attr('id') != 'masthead' && section.hasClass('section-open')) {
section.removeClass('grouped-first');
section.removeClass('grouped-last');
if (!(section.next().hasClass('section-open'))) {
section.next().addClass('grouped-first');
}
if (!(section.prev().hasClass('section-open'))) {
section.prev().addClass('grouped-last');
}
} else if (section.attr('id') != 'masthead') {
if (section.attr('id') == 'auras-and-debuffs' || section.next().hasClass('section-open')) {
section.addClass('grouped-last');
} else {
section.next().removeClass('grouped-first');
}
if (section.prev().hasClass('section-open')) {
section.addClass('grouped-first');
} else {
section.prev().removeClass('grouped-last');
}
}
$(this).next('.toggle-content').toggle(150);
$(this).next('.toggle-content').find('.charts').each(function() {
$(this).children('span').each(function() {
img_class = $(this).attr('class');
img_alt = $(this).attr('title');
img_src = $(this).html().replace(/&/g, "&");
var img = new Image();
$(img).attr('class', img_class);
$(img).attr('src', img_src);
$(img).attr('alt', img_alt);
$(this).replaceWith(img);
$(this).load();
});
});
});
$('.toggle-details').click(function(e) {
e.preventDefault();
$(this).toggleClass('open');
$(this).parents().next('.details').toggleClass('hide');
});
$('.toggle-db-details').click(function(e) {
e.preventDefault();
$(this).toggleClass('open');
$(this).parent().next('.toggle-content').toggle(150);
});
$('.help').click(function(e) {
e.preventDefault();
var target = $(this).attr('href') + ' .help-box';
var content = $(target).html();
$('#active-help-dynamic .help-box').html(content);
$('#active-help .help-box').show();
var t = e.pageY - 20;
var l = e.pageX - 20;
$('#active-help').css({top:t,left:l});
$('#active-help').toggle(250);
});
$('#active-help a.close').click(function(e) {
e.preventDefault();
$('#active-help').toggle(250);
});
});
</script>
</body>
</html>