To Craft a Sim – Part 1

In this series of posts, I’m talking about putting together a simulation I’ve built called CHsim. It’s designed to simulate the way Chain Heal will behave in Warlords of Draenor – including interactions with player positioning, talents, incoming damage, Riptide, and Mastery bonuses.

Anyone following me on Twitter recently will have seen me talk endlessly about something I call CHsim. I’m super excited to show off my work right now, not only because it stands to give us a way to investigate optimal strategies for Chain Heal, but also because this is some of the best work I’ve ever done… ever!

What & Why

The idea for CHsim came when I was trying to hash out how Chain Heal will behave in Warlords of Draenor. This turns out to be extremely difficult – there are so many variables in the mix and variations of questions that you want to ask. We need some creative solutions! There are, essentially, three ways to find out what we want;

  1. TheoryCraft – write down a formula (or several!) to describe the way your heal works
  2. SimulationCraft – write a program to crunch numbers and spit out some statistics for you
  3. ExperimentalCraft – go run a combat log analysis or check your Recount after your raid

I’m rather partial to the first option. As a scientist interested in theoretical Physics, TheoryCraft is in my blood. However, not all problems are so easy to answer like this. Dayani has done an amazing analysis over at Healiocentric doing some proper theory, and I’ve given my ideas to her on how she can make some more general conclusions on that line of thought. The problem is that you’re limited to things you can write down – like Haste breakpoints, but not range considerations. In general, it’s only a tenuous relationship between true TheoryCraft and the real, dynamic raid. For that reason, you always have to be careful in what you conclude from your work.

The third option is rather difficult at the moment since nobody really has access to the Alpha client for Warlords of Draenor. Even if we did, it’s unlikely that we’d get enough access to raid situations for us to make a reasonable test of the things we want to. The problem with ExperimentalCraft is that you have to make do with whatever data you happen to get! That makes it very difficult to ask controlled questions and get precise answers.

These guys are so awesome their entire project is named after what they do! :D

These guys are so awesome their entire project is named after what they do! 😀

The compromise solution is SimulationCraft – this means basically making a model of the thing you’re interested in which is precisely controlled by the user, thus allowing very specific questions to be answered. On the other hand, the model you make has to be just real enough to be applicable to raiding in general. That means that simulations must be dynamic and causal, and model player behaviour reasonably accurately.

So we’re wanting answers to some fairly juicy questions about Chain Heal – how to use it best, when to target Riptide players, what decisions you need to make based on your talents, how it will interact with Mastery, and so on. With a lot of effort, we’ve already acquired some limited answers to some of these questions. However, the first thing we should do with these results is look closer and try to pick them apart; there’s no use risking having answers that are only half-correct. That’s how science works, really (but that’s another topic). In addition, simulations let us assess the variation in benefits and losses from various strategies – something we cannot possibly analyse using TheoryCraft, and would find extremely challenging to get via ExperimentalCraft.

So the case for a simulation of Chain Heal’s interactions on a raid is pretty strong. I have some real-life expertise in building simulations in a language called Matlab, and since Chain Heal is my main research interest I figured I might as well just go for it and make one – it’s called CHsim.

Why Not Use SimCraft?

But hang on, let’s be clear here – I’m not talking about using the well known package SimCraft. “SimulationCraft” as I use it is a general term for all simulations looking to emulate Warcraft. SimCraft is just the most popular and well maintained Warcraft combat simulation. It’s a massive project, but it is not the final word in SimulationCraft work. But why shouldn’t I just use that?

Good questions like this deserve a good answer. There are several reasons that I want to build my own sim rather than use SimCraft’s existing project, so to finish off I’ll run through a few;

Simplicity – SimCraft is a very complicated beast, it’s a huge program with many different working parts. Most of these, I wouldn’t be able to control or debug effectively. In addition, adding major modules would be a pain for a novice like me. Finally, SimCraft uses a programming language (one of the C family) which I’m not familiar with. That would be a major liability to the project!


Time is money, friend.

Speed – SimCraft might take ages to catch up with something I would want to understand. Hashing out my own (fairly detailed) sim will (has been) much faster than trying to push SimCraft in a specific direction.


Information – SimCraft returns statistics to the user at the end of the simulation(s), but I can conceive of situations where I would want data produced in much less concise but much more specific formats. This might be something that SimCraft is open to producing, but the effort and risk that it would take to get this functioning is beyond what I feel is reasonable. I only want to probe one spell, and it would be a bit of a waste to spend effort making something simple (for me) work for everything.


Isolation – SimCraft is built to simulate a whole damn raid all doing things all at once. I want none of this – I just want to simulate Chain Heal all on its own. The reason I want that is because it unpicks Chain Heal’s effects from confounding factors such as other healers, smart (“dumb”) heals, and so on. This is in fact the most important reason for building CHsim – guaranteeing to isolate the effects I want to look at while maintaining a dynamic raid.

But wait, there’s one more reason!

Of course, you’ll have to read more about that in the next of my series of posts, “Gimme some Space, Bro!”


About stoove

A physicist, researcher, and gamesman. Likes to think about the mathematics and mechanics behind all sorts of different things, and writing up the thoughts for you to read. A competent programmer, enjoys public speaking and mechanical keyboards. Has opinions which might even change from time to time.
This entry was posted in Alpha/Beta News, World of Warcraft and tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

7 Responses to To Craft a Sim – Part 1

  1. Pingback: To Craft a Sim – Part 2 | UNconstant

  2. Pingback: To Craft a Sim – Part 3 | UNconstant

  3. Pingback: WoDsplosion! | UNconstant

  4. Pingback: To Craft a Sim – Part 4 | UNconstant

  5. Pingback: Hypergeometric Distribution: How and Why | UNconstant

  6. Pingback: To Craft a Sim – Part 5 | UNconstant

  7. Pingback: To cast, perchance to Chain (Heal) | UNconstant

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s