Tuesday, 15 February 2011
Idiots guide to SimulationCraft
I recently downloaded SimulationCraft in order to get a better handle on whether I'm missing something on the DPS front, and what my ideal stat priorities are. I've played with SimulationCraft in the distant past but haven't touched it for a couple of years. I'd like to state up front that it's a cracking tool, though it is a modelling tool, by definition models give an approximation of reality and aren't necessarily an exact representation of it. The current version gives you the opportunity to simulate the 'ideal' fight, where everything is straight forward in terms of needing to move (which affects your DPS rotation), hitting your rotations exactly as planned, receiving buffs, and not suffering debuffs. It also gives you the ability to simulate a fight which is a bit more realistic, where you might need to be moving out of crap, dealing with adds, messing up the occasional button press etc.
So why simulate your DPS in such a way? Simple really, it gives you an idea of what your DPS potential is given your current gear levels (rather than what some Elitist Jerk tells you it should be) and lets you compare your 'normal' performance with what it could or should be. More importantly, it lets you play around with your Enchanting, Gemming and Reforging to maximise your DPS (and of course you re-run the simulation when you've changed it to confirm it's had the desired effects). SimulationCraft can be very eye opening if done right, but it does require you to be honest with yourself, if the figures come out at 15k DPS and you currently do at best 7k have you done something wrong, can you dismiss it as errors in the tool, or is there something fundamentally wrong with your playing style? Use SimulationCraft as any other addon or tool, to augment your ability to playing performance.
The main issue for most with Open Source packages such as SimulationCraft is the sheer dauntingness of opening up for the first time and trying to figure out what the hell is going on. I've had occasion to be involved in several Open Source projects over my career (I've even wrote a number of white papers on the subject) and there are two recurring theme's which are replicated in most project. Firstly the project fills a gap which is missing in the area, it is written by the 'people' (by people read user / consumer etc.) because there is a dearth of information or functionality in the said area. Secondly, the documentation sucks; developers hate documentation, Open Source developers excel at hating documentation… SimulationCraft seems to fit these two area's quite nicely, hence me writing a quick guide, I'll cover the 'perfect' scenario for a boss fight in Heroics for a Shadow Priest, the closest approximation I can come up with off-hand in Cata is if you stand up on the statue for the croc boss (thus avoid the adds) in The Lost City of Tol'Vir. I'll leave it to you to make the changes for the less than ideal scenario, raiding, or other classes, the best advice I can give you is have a play, it's the best way to learn.
Anyway, enough rambling, here we go:
You'll need to download and unpack the SimulationCraft files from here it's a standalone executable (i.e. you don't need to install it) so just stick it somewhere on your hard drive, open the folder and double click the SimulationCraft application icon in the base folder.
First thing to do is make sure you have your base options right, we're going for the 'ideal' run of the mill scenario so we'll be picking pretty easy variables. Click on the options tab and then Globals if it's not already selected here you'll see a number of options, I'm ignoring the obvious ones and concentrating on the less than straight forward ones; you're a Shadow Priest, you obviously have some common sense, use it for the options I've missed ;-)
Iterations (next to the red 'A') are important – you're simulating what could happen, there are lots of random variables around the lines of hit chance, crit chance and a whole host of others, to make sure you're using a statistically significant number you should use at least 1000 iterations, as a rule use 100 first while you're getting to grips with the tool (you'll almost certainally balls it up first time) 1000 when you're comfortable with it and 10000 when you have everything set exactly right 1000 iterations will take 10 times longer than 100, and 10000 another 10 times longer than that.
Length (B) refers to the length of the fight in seconds, we're doing heroic boss fights so pick something sensible, 200 seconds is 3 minutes 20 Seconds which seems reasonable. The vary length (C) introduces a bit of variety into the length, at 20% each iteration will pick a fight length randomly between 160-240 seconds. Adds (D) is pretty self-explanatory – we're doing straight forward so let's go for none. Fight style (E) offers the opportunity to introduce the random movement elements into the fight, Patchwerk (if you remember Naxx) is a stand and deliver DPS race, Helter Skelter is the move out of the crap equivalent of most boss fights, pick Patchwerk for now, but use Helter Skelter when you're looking for realism. The target race (F) offers the opportunity to pick a race which your class / race / build / gear allow you to excel or struggle against, stick with humanoid. Player skill is a strange one, no one (I don't think) can class themselves as Elite this, as I understand it means you get off every spell cast at the perfect moment, without lag or any other issues, even for the baseline I always select good (as an experiment you might want to keep everything else the same after your first run, and come back changing this to elite – I did say have a play!) Threads (H) refers to the processor on your machine, most modern processors have multiple cores, so can use multiple threads (i.e. run faster) if you're unsure hit ctrl-alt-delete (on windows) select task manager and then the performance tab and count the number of boxes in the CPU usage history section, or just select 1.
Next select the buffs tab, you want to be realistic here, I've assumed the presence of a druid and a mage (which isn't unreasonable) plus your own buffs, if simulating a raid you'll add most / all of these. Similarly in the debuff tab I deselect everything, it's a baseline after all, when you're playing later to get a more realistic level, try putting some in.
We're now almost ready to simulate something, I say almost because there's one important variable we've forgot, the boss level, SimulationCraft assumes raid boss, but we're looking at Heroic Bosses. Click on the overrides tab and enter the line 'target_level=87' as shown.
Now you can click simulate, and we're off! Depending on the number of iterations, and the speed of the computer you're using this may take some time. If you're on a reasonable PC, by the time you've read this it'll be done, if you're on a Spectrum ZX81 then go make a coffee, if you don't know what a ZX81 is, you're too young and you've not lived! Go ask your dad. Once the simulation has finished you should get a nice results pane, I say 'should', but it never works for me, if this happens go back to the SimulationCraft folder and double click the simc_report.html file – it you're unsure order the folder by date modified, it'll be one of the files close to the top – this will open the report in your web browser of choice.
And there you have it, SimulationCraft, easy no? make sure you look out for the normalised scale factors, these are your bread and butter for gearing, but also have a look at your damage sources, you'll notice your dots are the top DPSers excluding Mind Flay, you'll then (hopefully) notice the DPS per execute times and realise that for the amount of time you spend casting those DoTs compared to MF they're a huge DPS / time boost. Happy Simulating, I don't claim to be the font of all knowledge on this subject, so please if I've missed something please let me know, or just let me know how you got on.
NB: there's some suggestion that there is a slight bug in the SimulationCraft software since the 4.0.6 patch which is causing some inacuracies in the results; you might want check back and download the latest patch from time to time as these these bugs are fixed