Evaluating player performance is a fundamental part of progression raiding, be it analyzing how a recruit holds up, identifying where existing players on the roster can improve, or just considering yourself relative to your teammates. One of the best tools for evaluating raiders is World of Logs (WoL). This post goes over how to use World of Logs to judge hunter performance, be it your own or someone else’s.
In this post I will not be going through absolutely every nook and cranny of World of Logs’ display options. Instead, I will focus on those areas that I think are the most illuminating when it comes to considering a DPSer’s performance. Throughout this post I’ll be linking to WoL parses from Vodka purely as examples.
Before getting into the data you need to have contextual information. Basically, you need to know the fights, the strategies, the hunter and who you will be comparing the hunter to in order to be a good judge of the WoL results. Not knowing the explanations behind the numbers can lead to all sorts of misinterpretations. At the same time, knowing them well can transform meaningless statistics into powerful tools.
Summaries of Damage Done
Summary stats on damage can offer some useful information. For example, if a hunter is topping damage done for the night it’s a sign that, if nothing else, they’re putting in some effort. However, whole-night stats can be misleading due to people sitting, having special jobs, doing loot council instead of trash and other reasons. As such, when looking at general stats like damage done it is best to first narrow down to single fights. After clicking on a night of fighting from a guild’s calendar in WoL you can narrow down to a single fight by selecting Full Report > Bosses > Boss Try # (there won’t be a try # if it was a one-shot). Try picking a fight that you think gives the hunter a fair shake, where they can reasonably be compared to other ranged dps. Also, please be generous enough to look at several fights or attempts before forming your conclusions about a hunter.
After you get to a specific attempt you can focus in on some summary stats. Try going to Dashboard > Analyze > Damage Done. This page holds a wealth of information on damage done on the given attempt. By checking the box next to the player’s name you can graph their dps, giving you an over-time perspective on their dps. The table below the graph shows damage done, percentage damage done, DPS(e) (which is damage done divided by fight duration), DPS (which is damage done divided by active time), active time and percentage active. The bottom of the Active Time column shows the fight duration if you’re curious. Damage done and DPS(e) are great measures because they show a player’s contribution for the entire fight rather than just how much dps they did when they were actually pressing buttons.
You can refine the Analyze > Damage Done results by using the menu options on the lefthand side of the page. For example, try selecting Damage Done > by target > source: playername and then hitting go. This will give you a graph and table breakdown of the named player’s damage by target. This sort of refinement is great for making sure that the player is spending the right amounts of damage on the right targets (example). You can also check how the player stacks up against other players doing the same job dpsing a particular kind of add. For example, on the Beth’tilac encounter you can select Damage Done > by source > target: Cinderweb Spiderling and this will show you what damage was done to Cinderweb Spiderlings, organized by player (example).
Keep in mind that similar results can by had by using the Expression widget, also on the lefthand side of the page. To look at damage done to Cinderweb Spiderlings, type
targetName = 'Cinderweb Spiderling' into the Expression widget and hit enter (example). I actually prefer the Expression widget to the menu options because you can use just about any relevant Expression Editor language in the widget. This allows you to see all sorts of interesting things in table and graph form, such as damage done to shields (think BoT’s council or ToC’s twins) by throwing in
absorbed > 0. For more on Expression Editor language, see the section on the Expression Editor below.
Summaries of Damage Taken
It’s also instructive to look at damage taken because, after all, not standing in fire is a big part of good raiding. After selecting the desired fight, you can get to a look at damage taken by going to Dashboard > Analyze > Damage Taken. The default page shows the raw damage each player has taken, their percentage of the raid’s total and their damage taken per second over the course of the fight.
To narrow things down to a specific source, select from the menus on the lefthand side of the page Damage Taken > by target > Source: sourcename (example). This will give you purchase on, say, which players took damage from a kind of add that they shouldn’t have. If you mouseover the player’s name in the table it will even give you a breakdown of the types of damage the sourcename did to the player. Alternatively, you can select Damage Taken > by spell >Target: playername to see which spells did damage to the named player and in what amounts as a general overview (example).
If you want to compare how much damage a particular enemy spell did to different players, I’d recommend just typing
spell = "spellname" into the Expression widget while Damage Taken is selected. This is great for isolating a particular idiot-check spell to see which players are not doing their job and getting out of the way. The attendant graph helpfully shows if a struggling player took all their damage from the spell in one go (so, a single colossal fail) or if they took it on more than one occasion (repeated fails).
WoL has some great ways for looking at deaths. One is the Deaths overview page found at Dashboard > Deaths overview (example). This page shows times of death and the three preceding instances of damage taken. However, this page has its shortcomings because those three hits of damage likely will not explain the death and the events leading up to it. For that, I recommend checking out the Survivability page instead at Dashboard > Survivability. This page breaks up players by their first deaths in a fight and shows how long they lasted (by percentage of fight duration). If you click on that percentage you get a pop-up maleable log of what preceded the death, providing much more detail than the Deaths overview page. These logs are great for seeing whether someone died from lack of heals, standing in fire, stealing agro or, well, any other reason under the artificial WoW sun.
The Expression Editor is my favorite part of World of Logs. It shows raw log data that is refined down to whatever types of log entries you specify with your query language. This is advantageous because raw log data has timestamps, unlike summary measures like dps. These timestamps allow the viewer purchase on causality and reaction times. Needless to say, that kind of leverage is great for evaluating players. If you’re new to Expression Editor and would like to learn more I heartily recommend checking out the documentation section of the WoL forums for a guide on EE query language. I’d also recommend checking out my guide to tier 11 queries which, while a bit dated in substance, nevertheless provides good examples of how to use EE grammar and terminology to get the information you want.
How do logs show causality? We can infer causality from sequences of events shown in the logs. For example, logs can offer us some perspective on which players, if any, kited Rageface into an Immolation Trap while they were affected by Rage. For that, we could throw in
(sourcename = "Rageface" and spell = "Rage') or (targetname = "Rageface" and spell = "Immolation Trap"). Similarly, we might be curious if a hunter in question used glyphed Raptor Strikes when afflicted with Rage. We can access those sequences with
targetname = "playername" and spell in ("Rage", "Raptor Strike"). I apologize that the font size of the query language is so small. I have it in <code> so that you can copy and paste it directly in to the Expression Editor.
What about reaction times? We might, for example, be concerned with reaction times to Cinderweb Drones on Beth’tilac. We want to see tanks picking up agro right away and dps not switching at least until the tank has been able to establish agro (if not later, given the kill order). To check on this in the logs, we can type in
(targetname = "Cinderweb Drone") or (sourcename = "Cinderweb Drone"). This will show when the Drone spawned , how quickly the tank acted upon it, and when dps engaged. Of course, that many entries will bury subsequent drone spawns. If you want to also see subsequent spawns, consider looking only at tank openers and Drone casts of Boiling Spatter.
Beyond causality and reaction times, the Expression Editor is nice for simply making lists. For example, you might have the very basic question of who got trapped in Crystal Prisons on Shannox. For that, just throw in
spell = "Crystal Prison Trap Effect" and targettype = 'Player' (example). You can also get lists of just about anything else you could want. For example, you can look shots fired to check rotations. If you are evaluating an SV hunter you might use something like
((fulltype = SPELL_AURA_APPLIED and spell = "Lock and Load") or (type = TYPE_DAMAGE and spell = "Explosive Shot")) and sourcename = "playername" in order to check if the hunter is clipping their Explosive Shots during Lock and Load.
The Expression Editor is also great for looking at alternative stats. I have not explored this in tier 12 content, but in tier 11 you could use queries to look at Corruption on Cho’gall (
spell = "Corrupted Blood") and Sound on Atramedes (
powertype = 10). These stats are normally only viewable through the extra UI elements that Blizzard shows during the fights.
Comparebot is an excellent tool for refining and juxtaposing pieces of information from World of Logs. It is arguably better than WoL when it comes to comparing players between fights, comparing cooldown usages, comparing . . . well, suffice it to say, Comparebot is pretty good at comparing parses. It is also quite useful for tallying salient pieces of data, such as how many times a hunter used Rapid Fire, without having to do a lot of digging. I would discuss Comparebot in greater detail here except that I have already written a whole post on using Comparebot as a hunter. Incidentally, that post also speaks at length about how to make valid comparisons between players and between parses.