Wednesday, October 28, 2009

Moonkin Tools: SimCraft


What: SimCraft is a simulation based executable program. I think it was orignally created by Dedmonwakeen on the EJ forums and is not a dedicated Moonkin tool. It currently supports most of the classes in game and Starfox is the current Moonkin developer for the project.

Where: The project's home is in Google Code which you can find here. This is where you would find the downloads, source code, and issue logs. Most of the discussion regarding SimCraft can be found on the EJ forums. The general discussion can be found here. The druid specific discussion can be found here.

How to Use: The developers are working on a GUI interface, but it still in alpha at this point. Therefore, I recommend that you stick with using the text files and such. For the record, I am a Windows user. I don't have a clue as to if or how this would work for any other platform. Here are some basic instructions on how I got it to work.

First, down load the files and put them in their own directory on your computer. There are two files you want to look at first. They are the READ_ME_FIRST.txt and the Examples.txt files. These are probably the best sources of documentation you will find right of the bat.

I assume you will want to download your toon from the Armory or WoWhead. To do that you need to create a text file. You can do this using Notepad. To download from the armory you text file needs to have one line that looks like this:

armory=Region,Server,Player save=Player_Version.simc
For graylo I created one that looked like this:

armory=us,garona,graylo save=graylo_base.simc
When you drag the file you created over the SIMC.BAT file it will download your profile and save it to a simcraft file that can be modified for future runs. Then drag the .simc file you just created over the SIMC.BAT to get the DPS calculation. You can also drag that same file over the SCALE_FACTORS.BAT file to get stat weights as well as the DPS information.

There are several variations to this process. For example you could download your information from a WoWhead profile instead of the armory. You can review the Example.txt file to see more of the possibilities.


  • Fewer Assumptions: Formulation tools like Rawr and WrathCalcs have to make a lot of assumptions to get results. For example, they calculate what the average Eclipse uptime will be. They calculate average cast times. They also make assumptions like DoTs are always up so that you benefit from Imp IS. These are not bad assumptions, and the tools are not bad for making them, but you can see that they might skew the results a little.

    Simulations make fewer assumptions. They model DPS by setting up a spell priority and and giving the rotation a time limit. DPS is then calculated based upon the the random procs that occur and the actual buffs and Debuffs you receive. If Fairie Fire is not on the target you do not get the 3% crit chance. I think this results in more realistic numbers when it comes to total DPS questions.

  • Alt Friendly: Like Rawr, SimCraft covers most of the classes and specs in the game. If you get comfortable using it on your moonkin, you can transfer your knowledge to try and use it to evaluate your alts as well..

  • Statistics: The big problem with simulations is that you will never get the same results twice. Therefore you have to run them multiple times and use averages. Simcraft for example will run you simulation 20,000 times by default to come up with your spec's DPS. When you do the Scale Factors it runs it 20,000 for each stat. Therefore, it runs the simulation about 140,000 times

    That sounds like a lot, but it actually happens pretty quickly. The issue is in the variance. SimCraft is great at measuring large changes like what happens if I change my rotation or which set bonus is better. It is bad at measuring small changes like what happens if I add one more Spell Power or Crit Rating. As a result, to provide the stat weights SimCraft has to make large changes in stats. This brings up diminishing returns issues. It's also not good at evaluating minor gear changes.

  • Unuser Friendly: The project has some decent documentation, but lets face it. Creating text files and doing drag and drops will be intimidating for some users. Also, making changes in the simulation is not easy. If you want to try a different rotation you have to figure out what the triggers are and modify the text files. You can change your gear manually, but it's probably easier to download a new profile. The program also assumes you use all available raid buffs. If you want to turn one off, you have to turn them all off and then turn the rest back on. Hopefully, when they get the GUI interface running this will eliminate most of these issues.

  • Black Box: Again, unless you understand C++ SimCraft is a just a Black Box that you put numbers in and have numbers spit back out to you. If you're like me you like to know how it got from point A to point B, but that is not possible unless you understand the language.

    This isn't a huge issue, because a lot of smart people are reviewing these tools, but I like to be able to research an issue when the results seem strange to me. SimCraft does not allow me personally to do that easily.

SimCraft is great because it provides a view of your DPS that the other tools can't provide. It lets random events occur as random events, and impact your DPS as they would in an actual raid situation. This makes it a great tool for evaluating spell rotations, idol procs, and set bonuses. However, due to the very nature of statistics it can't provide exact results that are consistent every time you run the simulation. It is not necessarily the best tool for evaluating small gear or stat changes.

SimCraft also has some very big issues with how users will interact with it. Unless you are computer savvy it may be very intimidating to create the files necessary to use the tool.


Teleph of Bloodscalp said...

I would definitely recommend giving the UI a shot - it may lack a little polish, but is much more user friendly than text files, etc.
I didn't have any major issues trying it out, beyond seeing three sets of stat weights between Graylo, RAWR and SimulationCraft - currently evaluating how much of that is due to gear differences and how much of that is due to methods.

Anonymous said...

Like you already stated in earlier posts, there are other programs for a quick evaluation of gemming or gear upgrades. The aspect i REALLY like about simcraft, is that it enables you to try out different spellrotations (e.g. thinking about refreshing IS only between eclipses rather than continuous). Although you might need a large number of iterations, it definately beats shooting the TESTDUMMY in DAL!

Anonymous said...

Does SimCraft provide the result as a mean DPS or as parameters of a bell curve? The later could be particularly useful in evaluating the reliability of a rotation.

Anonymous said...

Can you adjust the sim for lag? Also, I would love to know how to measure lag during a 25 man raid and then how to plug it into this sim. My dps gets hammered in Wrath 25 mans and I'm trying to figure out why. Is it my internet or my PC. Do you know of a good online discussion of lag issues? Thanks.


Erdluf said...

To poster above me, SimCraft will show you the DPS bell curve. Look at . You should be able to find the Moonkin curve pretty easily.

Without looking at the code, there are a couple of tools to crack open the "black box."

Put "log=1" in your command file and it will run the simulation just once, but give you a text log file (I think there is an option to get a Warcraft log file instead). Are Insect Swarm casts causing Nature's Grace to fall off? Are you losing the bonus from the t9 Idol? The log will tell you.

With Debug=1, the log gives detailed numbers for every cast What was your effective SP at the time? What were the damage multipliers on the boss? What was your Haste?

With that kind of detail you can probably confirm (or disprove) the presence of a suspected bug, even if you don't understand the source.

I really appreciate your blog, Graylo. Keep it up!

Salin said...

Few points

1. SimulationCraft is C++ or C based. C# is a .Net standard. C and C++ are open standards.

2. Assuming you have the appropriate compiler installed the source version of SimulationCraft builds perfectly with Linux and Macs. This version may contain some bugs as transitional work gets committed, but it's more up to date.

3. By increasing the number of simulations the system does, you can attempt to drive the error factor to a more tolerable level than the standard compilation. More simulations takes more time, but the error factor is reduced.

veliaf said...

So, which language is this written in? The comments and OP are differing. But I might take a look if it's C#.

Thomas said...

@veliaf: it's definately C++. I am compiling the source via Visual C++ Express.

Nathaniel Hieter said...

I am very impressed with the objectivity of your reviews!

The current version of the code is my third "from scratch" attempt at SimulationCraft. The impetus was the initial information coming out of the 3.0 Beta: So many unique buffs, many of which were proc-based effects far more complicated than the homogeneous distribution we have now.

The interesting question becomes: What is the greatest source of error? Model reduction of formulation? Or statistical variation of simulation? A year ago, I would have picked model reduction every time. However, Blizzard has simplified the models over time and theorycrafters have innovated some exceptional closed-form solutions. For many specs of many classes, it is a wash..... in which case the speed of formulation wins out.

SimulationCraft's strengths are more noticeable to developers: It is a framework that allows for very easy experimentation. Abilities can be modeled individually, because the engine takes care of the rotation and all effects outside of the player class. When a new patch comes out, one developer can usually make all the changes for all the classes in just a couple hours.

I know that C++ can be intimidating, but I encourage you to skim over sc_druid.cpp. My goal was to make the class modules understandable to class "experts" regardless of their software engineering abilities. This does not mean everything will be perfectly clear, but the interaction of glyphs, talents, and abilities SHOULD be.

With kind regards,
-Nate Hieter

WoW Learning Center said...

Lag should not be considered, simply because the player can adjust for lag. There are some ui addons that have cast bars that adjust for lag. Casting at beginning of the lag interval it shows will allow you to compsensate for the lag enough to be a negligible obstacle.

SimCraft is there to "simulate" DPS, not an exact measure of what your DPS is going to be with cetain gear. I only use it to see which gear choices would be the most efficient. I never rely on anything, but myself to an accurate measure of my DPS.