I wrote an algorithm to calculate the most important boss mechanics Josh Yaxley Follow Feb 23 · 5 min read

For those that don’t know me, I’m the developer behind a World of Warcraft related website called Wipefest. Wipefest analyses player’s combat log data (that has been uploaded to Warcraft Logs) to provide high-level summaries of a team’s performance in a boss encounter. Players can then use this data to decide how to adjust their tactics to increase their chances of defeating the encounter. Wipefest tracks all sorts of information, including damage taken from important abilities, gaining positive/negative effects from certain spells, standing in the right place at the right time, and whenever a player dies during a fight.

A snippet of some of the information generated for Wrathion, the first boss of Ny’alotha

Each mechanic can be expanded to see more specific information

This is really useful information, but to be even more useful, it needs to be taken in context. You don’t need to handle every single mechanic perfectly to kill the boss, so it’s unreasonable to expect every player to do so. How good is “good enough” for a mechanic? And which mechanics matter the most? To provide this context, I wanted to answer two questions:

How are we performing compared to other teams?

How important is this mechanic compared to other mechanics in this encounter?

To answer the first question, I needed to write a program that would collect a large sample of fights that a player’s encounter could be compared to. Every day, this program takes a random sample of successful fights from Warcraft Logs for each boss and each difficulty. For each fight, it calculates the values that team scored on each mechanic — how much damage did they take from Scorching Blister? How long did they spend in Stage Two? How many Healthstones did they use?

The program then takes all values collected in the past week, orders them, and splits them into 100 equal buckets. The bottom and top value of each bucket can then be used to create a range. Across all bosses, over half a million data points are analysed.

Then, when a player views a mechanic in their fight summary, Wipefest checks which bucket that team’s mechanic value falls into. The bucket number can then be used as a score for that mechanic. For example, if a mechanic gets a score of 75, it means that the team performed better than 75% of successful kills on that boss in the last week.

This team took less damage from Gale Blast than 62% of successful kills in the last week

This answers our first question of “How are we performing compared to other teams?”, but what about our second question: “How important is this mechanic compared to other mechanics in this encounter?”

This question had me stumped for quite a while. Ideally, we would be able to use the log data from when players failed to defeat the encounter, and see which mechanics saw the most improvement when they eventually defeated the boss. The problem with this, is that it’s quite typical for a team to purposely die (or “wipe”) after 1 or 2 deaths so that they can try again quickly. This means that the combat log would include lots of events where players purposely failed mechanics, and there’s no easy way to filter these out.

Instead, I adjusted the question slightly to become “What mechanics were the most important in the cleanest kills of this encounter?”. Or, more accurately, “Which mechanics did teams consistently score higher on in the cleanest kills of this encounter?”. This is a much easier question to answer, and the result should still be proportional to our original question.

Once we’ve calculated all of the buckets for our mechanics, we can then use these buckets to find out how each fight in our sample scores. To get our “cleanest” kills, we can order these fights by their total score, and then take the top 50%. We can then look at the average score for each mechanic across all of our cleanest fights to see how crucial succeeding at that mechanic is for a clean kill.

This table shows 10 fights and their scores against 2 mechanics. The fights are ordered by their total score, and then the mechanics have their scores averaged across the top 50% scoring fights.

For example, on Prophet Skitra, 4 times throughout the fight, several illusions of the boss are spawned, and the players have to identify and kill the correct illusion. If the wrong one is killed, the boss casts Mindquake which does devastating damage to the raid. Clean kills of Skitra will usually have high scores of “reducing Mindquake casts”, so this mechanic gets a high average score. On the other hand, it doesn’t matter much if you lose 2 or 3 players for this particular encounter, so the “reducing total deaths” mechanic ends up getting a lower scoring weight, as there’s a higher variance of scores for this mechanic, even in clean kills.

I will admit that this won’t be the most accurate way to calculate mechanical importance, as we had to adjust the question slightly to make it easier to answer. However, with the data that is available, I’m not sure if there’s a better way to solve this problem.

The proof, however, is in the results. Wipefest now orders its mechanic summaries by their importance, which means that users will want to focus improvement on the mechanics near the top that they have low scores on (remember, a low score means that they have performed poorly on that mechanic compared to successful kills in the past week).

This Hivemind summary shows that the most important mechanic is making sure that Mind-Numbing Nova is interrupted. You can see that, even when a single interrupt is missed, the team gets a very low score.

I planned on now writing about which mechanics are the most important for different bosses, but I wanted to make sure that I spent enough time explaining the logic behind the algorithm. Instead, I’ll split this article into parts, and in the next post, I’ll talk about the most and least important mechanics for each boss. Until then, keep enjoying Ny’alotha!