Wednesday, 13 July 2011

Combat Graphs

In a recent post I mentioned Kaal pointing me to a website that graphed combat logs, and I had several requests for a link. I'll try and do one better, and give the whole process a walk-through.

The website can be found here. It's a very simple front page; just direct it to the combat log on your computer, and the website does the rest. In theory, it's very easy to use.

In reality, nothing is quite that simple, so let's start from the beginning.

What are combat logs and where are they?

Eve creates combat logs, selective records of the conversation between the client and the server, and stores them somewhere on your computer. How Eve organizes the combat logs and where it stores them is a matter of the preferences set up on your computer, and you may need to dig a bit to find them.

For me, the combat logs are kept in C:\Documents and Settings\Taurean\My Documents\EVE\logs\Gamelogs and each one covers an entire play session. Kaal tells me that his client stores them in a similar location, but that it generates a new log every time he has a session change. This is probably the result of different log settings.

Once you find your combat logs, you need to isolate the one you need. The easiest way to do this is to arrange them in date order (you may need to select the "details" view rather than the "icons" or "list" view). Then look at your kill/lossmail, and find the first log with a time and date after the fight (dates are created when the log is closed, not when it is opened). This is the file you should be linking to the website.

Another clue will be the size of the log. Empty logs tend to only be 1KB, but logs with combat in them are usually an order of magnitude or so larger. The logs are saved in text format, and you can open them with note pad and edit them to a certain extent. This is a very useful feature, because it allows you to compare the combat log with the graph, and better understand what you are seeing.

Graphing the combat log

Once you have identified the log you need, you simply need to select it with the log tool on the website. With the correct log selected, hit "Graph It". As an example, I have graphed the combat log that contained the cyno-ship kill at the end of my first day in Hevrice.

Pretty disappointing, huh?

A couple of things to note right away, though. Although my log does not start with a fight, the graph does. So it ignores everything until the first combat damage. Equally, my log does not end with a fight, but again, the graph does. So it ignores everything after the last combat damage.

Because I happened to take some damage from a belt rat, the graph covers a long period of time, which has compressed the information. I could deal with this by creating an edited combat log that only contained one combat, but the easier thing to do is simply click and drag on the graph over the desired time frame. The graph automatically zooms.

I shall focus on the cyno ship kill, which gives me a zoomed in graph that looks like this.

Obviously, the annotations were added by me after the fact. If I want to zoom out, I just hit the button marked (rather intuitively) "Zoom Out".

What the heck are you looking at?

In order to make sense of the graph, we need to understand the way that the program actually functions, and the limitations we are working with. Dps, or damage per second, is an average of damage over some period of time. The formula is simple: Total damage within a certain time frame divided by the length of the time frame. So if I do 100 damage over 10 seconds, my dps is 10. Simple, right?

Well, not really.

Suppose I looked at that same fight, where I dealt 100 damage, but now decided to average that over a whole minute. Now, my dps is 100/60 = 1.67. Or suppose my rate of fire is once every five seconds. If I look at a three second period within the fight it may well be that my guns don't fire at all, so my dps is 0/3 = 0 dps.

So, choosing the right time frame is quite tricky. Clearly, a smaller time frame allows you to observe changes in dps more easily, while a larger time frame gives you more accurate averages. The creator of this program had to make some decisions here.

While I have no programming skills, a little reverse engineering on the numbers tells me the program works (roughly) as follows.

After detecting a combat, the program checks the log every second. It can't do this more often, because the log is only accurate to the nearest second. Each time it checks the log, it also looks at the three seconds before and the three seconds after the time being checked. It adds that damage together and takes an average.

DPS (time) = [T(-3)+T(-2)+T(-1)+T(0)+T(+1)+T(+2)+T(+3)]/8(ish)

Note that although the program is looking at seven different points in time, it divides by a number close to eight, rather than seven. This is because the combat log rounds to the nearest second, so when it looks at the point 3 seconds away, it actually captures everything up to 3.5 seconds away. So the time frame starts with a 1 second interval, looks 3.5 seconds ahead, and then 3.5 seconds behind, covering a total of about 8 seconds.

Of course, this is probably not the actual formula used. The accuracy of this formula changes slightly over the course of the battle, which suggests that the programmer used at least one additional variable. However, it is enough to give us a rough understanding of how the program works, so we can make sense of what we see on the combat graphs.

Interpreting the graph - my dps

Now that we understand the formula, we know that we have to take the dps calculated at the start and finish of each fight with a grain of salt. This is because the program is calculating the dps by looking at periods of time where I was not actually in combat, which of course pulls my average dps down. In the graph I posted above, I marked these periods as (A). When I look at the actual combat log, I can see that my first several shots at the Kestrel all hit for the exact same damage (as you would expect from missiles), despite the differently reported dps.

Now let's focus only on my damage for a moment.

The period marked (B) corresponds very roughly with the period where I was shooting at the Kestrel's shields. The transition will not be neat, for two reasons. First, there is likely to be one shot that "straddles" the shield armor transition, and second, the program looks ahead three seconds, so a pending drop in dps drags down your apparent dps slightly early.

The period marked (C) roughly corresponds with my shooting at the Kestrel's armor. Although I was using Caldari Foxfire, which is a good "all-rounder", it is still slightly less effective against armor, so I saw a dps drop. Again, the rise and fall do not correspond exactly, for the same reasons I mentioned before; there is likely to be a straddling shot, and the coming dps rise prematurely improves my apparent dps.

The period marked (D) roughly corresponds with shooting the Kestrel's structure. With no resists, my dps goes back up, subject to the end combat dps drop that is a function of the way the dps is calculated. Equally, part of my last shot is likely to be "wasted", as not all of the potential damage is required to destroy the Kestrel.

So, with a bit of effort, I can learn to read the story behind my dps graph, and this is also a useful basis for comparison with other strategies; when I next gank a cyno ship I will try to do so with Rage, and I can compare the dps values that I achieve.

Interpreting the graph - the station guns

Perhaps more interesting than my own dps is the dps of the station guns. Their dps is calculated the same way mine is, so it appears to be too low at the beginning and the end of the fight (marked (A)).

The section marked (B) roughly corresponds with the station guns hitting my shields, whereas the section marked (C) corresponds with armor (I never reached structure). You can see the drop in dps when they begin hitting my better resists. However, something else is also happening. My resists do not change throughout the fight, so the steady decline in dps must be the result of something more than hitting my armor.

Thinking back to the fight, I know that I opened fire and then began aligning to a celestial for a warp out once I could see that the Kestrel was going down - and the combat log confirms this. The section marked (D), then, roughly corresponds with my increasing transversal velocity relative to the gate guns.

This is very interesting; I was able to knock about 30 dps off the station guns simply by getting a little transversal velocity. I've wanted to start hitting pods for a while, and could it be that getting up to speed before opening fire buys me the time I need?

The danger with that strategy is that I might be carried out of range of the target before they are destroyed. Ideally, the celestial would be beyond my target so that I am first approaching them. That requires some setup, though, and I would lose the element of surprise.

Still, something to keep in mind if I naturally find myself in a situation that lends itself to that strategy.

Other issues

Although not demonstrated by this graph, there are one or two other things we know to expect from the program.

First, weapons with a slow rate of fire will have very spiky looking dps as the program looks at time periods that first contain several shots (or perhaps only one) and then time periods where fewer shots are included (or even none at all).

Second, weapons with travel times will also show erratic dps against fast moving targets, because the dps is not arriving smoothly. This will also create spikes, as some hits land closer together, and others further apart. That's not the programs fault, though; they are genuine dps variations based resulting from travel time.

Appendix - the combat log

I hope the walk through has been useful. I've included a cut-down version of the combat log so that people can compare it to the graph themselves. Equally, you can cut and paste it into a txt file and graph it yourself.

  Listener: Taurean Eltanin
  Session started: 2011.07.03 18:01:55
[ 2011.07.03 18:02:27 ] (None) Jumping to Stargate (Hevrice) in Muetralle solar system
[ 2011.07.03 18:09:08 ] (None) Jumping to Stargate (Muetralle) in Hevrice solar system
[ 2011.07.03 18:12:56 ] (None) Jumping to Stargate (Hevrice) in Jovainnon solar system
[ 2011.07.03 18:17:09 ] (None) Jumping to Stargate (Jovainnon) in Hevrice solar system
[ 2011.07.03 18:19:59 ] (notify) Interference from the warp you are doing is preventing your sensors from getting a target lock on GASPAH's Kestrel.
[ 2011.07.03 18:20:04 ] (notify) Orbiting GASPAH's Kestrel (500m)
[ 2011.07.03 18:20:04 ] (notify) For initiating combat your security status has been adjusted by -0.1353.
[ 2011.07.03 18:20:04 ] (notify) Taurean Eltanin: You have foolishly engaged in criminal activity within sight of sentry guns and must suffer the consequences.
[ 2011.07.03 18:20:06 ] (notify) You have started trying to warp scramble GASPAH (Kestrel)[UGHZ]<N0VA>.
[ 2011.07.03 18:20:07 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 199.8 damage.
[ 2011.07.03 18:20:07 ] (combat) <color=0xffbb6600>Gallente Sentry Gun barely scratches you, causing 132.5 damage.
[ 2011.07.03 18:20:07 ] (combat) <color=0xffbb6600>Gallente Sentry Gun hits you, doing 185.4 damage.
[ 2011.07.03 18:20:09 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 198.0 damage.
[ 2011.07.03 18:20:09 ] (combat) <color=0xffbb6600>Gallente Sentry Gun aims well at you, inflicting 214.9 damage.
[ 2011.07.03 18:20:09 ] (combat) <color=0xffbb6600>Gallente Sentry Gun aims well at you, inflicting 237.9 damage.
[ 2011.07.03 18:20:10 ] (notify) Aligning to Hevrice - Star
[ 2011.07.03 18:20:12 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 137.4 damage.
[ 2011.07.03 18:20:12 ] (combat) <color=0xffbb6600>Gallente Sentry Gun places an excellent hit on you, inflicting 98.4 damage.
[ 2011.07.03 18:20:12 ] (combat) <color=0xffbb6600>Gallente Sentry Gun places an excellent hit on you, inflicting 102.4 damage.
[ 2011.07.03 18:20:14 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 137.4 damage.
[ 2011.07.03 18:20:14 ] (combat) <color=0xffbb6600>Gallente Sentry Gun barely scratches you, causing 43.5 damage.
[ 2011.07.03 18:20:14 ] (combat) <color=0xffbb6600>Gallente Sentry Gun hits you, doing 60.9 damage.
[ 2011.07.03 18:20:17 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 157.3 damage.
[ 2011.07.03 18:20:17 ] (combat) <color=0xffbb6600>Gallente Sentry Gun places an excellent hit on you, inflicting 102.2 damage.
[ 2011.07.03 18:20:17 ] (combat) <color=0xffbb6600>Gallente Sentry Gun hits you, doing 69.4 damage.
[ 2011.07.03 18:20:18 ] (notify) For your part in the destruction of a Kestrel your security status has been adjusted by -0.5414.
[ 2011.07.03 18:20:18 ] (notify) Taurean Eltanin: You have foolishly engaged in criminal activity within sight of sentry guns and must suffer the consequences.
[ 2011.07.03 18:20:19 ] (combat) <color=0xffbbbb00>Your group of Caldari Navy Foxfire Rocket hits GASPAH (Kestrel)[UGHZ]&lt;N0VA&gt;, doing 249.7 damage.
[ 2011.07.03 18:20:19 ] (combat) <color=0xffbb6600>Gallente Sentry Gun lightly hits you, doing 54.2 damage.
[ 2011.07.03 18:20:19 ] (combat) <color=0xffbb6600>Gallente Sentry Gun aims well at you, inflicting 92.8 damage.
[ 2011.07.03 18:20:20 ] (notify) J5b Phased Prototype Warp Scrambler I deactivates as GASPAH's Kestrel begins to explode.
[ 2011.07.03 18:20:21 ] (notify) Caldari Navy Foxfire Rocket deactivates as the Item it was targeted at is no longer present.
[ 2011.07.03 18:20:22 ] (combat) <color=0xffbb6600>Gallente Sentry Gun hits you, doing 62.4 damage.
[ 2011.07.03 18:20:22 ] (combat) <color=0xffbb6600>Gallente Sentry Gun lightly hits you, doing 50.4 damage.
[ 2011.07.03 18:21:36 ] (notify) Loading the Rocket into the Missile Launcher Rocket; this will take approximately 10 seconds.
[ 2011.07.03 18:34:15 ] (info) No Character can be found with 'habarad' in the beginning of its name.
[ 2011.07.03 18:36:58 ] (notify) Warping to Hevrice V - Federal Freight Storage prior to making docking attempt
[ 2011.07.03 18:37:40 ] (notify) Requested to dock at Hevrice V - Federal Freight Storage station
[ 2011.07.03 18:37:40 ] (notify) Your docking request has been accepted. Your ship will be towed into station.
[ 2011.07.03 18:37:41 ] (notify) Your ship is realigning its magnetic field, please wait a moment.


  1. I was always led to believe that gates guns ignored sig radius and velocity/transversal - assumed station guns would be the same,

    Interesting that your showing a decline in dps - although why don't we see drams buzzing round gates in gate camps?

  2. o/ lacal

    Yeah, I thought that too, which is why I have never been particularly fussed about aligning first.

    I'm still a little doubtful, but the combat log clearly shows me aligning at 18:20:10, and, allowing for my slow align time, the station gun dps starts dropping shortly thereafter.

    I suppose that's the great thing about these combat graphs; they force us to look at what actually happened, rather than rely on what we assume happened.

  3. A thankful lurker14 July 2011 at 19:00

    Thanks for sharing this tool with us and keep up the good work !

  4. I recommend as you get hit and miss data.

  5. Good work witht the info.