Saturday, May 20, 2017

To Math or Not to Math....

Calculating DPS All on Your Own

By: Brian Randich
a/k/a Brian_R



When someone is asked to calculate DPS (Damage Per Second), they normally either recoil in horror or shout about how the new things are worse than the old things without showing their work.  It is seen as either so difficult that the number seems to come out of thin air, as if by magic, or so easy that it can be done in an instant, as simple as blinking or breathing.  The truth is, calculating DPS is somewhere between the two.  While it can veer towards borderline magic, especially when you’re trying to calculate precisely which build is better, there’s no arithmancy (ἀριθμομαντεία) here.  Anyone can do a simple DPS calculation quickly, and with a short formula.  The device you are viewing this on has a calculator built-in, so it’s time to put it to use.

While DPS does stand for damage per second (not damage per shot or damage per salvo), it is not always found by just dividing the damage by the reload.  First, we have to find the “cycle time” of the weapon.  The weapon’s cycle time is how long it takes between firing its first shot and firing its first shot again after reloading.  If a weapon only fires one shot before reloading, then this is simply its reload speed.

However, more and more weapons, especially the mortars and rockets that are used in Garrison Raids and the Forsaken Missions, are getting salvo numbers larger than 1. The salvo is how many projectiles a weapon fires in sequence before it starts to reload.  (This is different from multi-shot, where all the pellets fire at once.)  A salvo of 3 for a rocket means the rocket will fire one rocket, then fire a second rocket, then fire a third rocket, then reload.

This game mechanic is so important it gets its own paragraph, as it is where I see the most mistakes made when people do DPS calculations.  After shooting, any weapon must wait 0.2 seconds before shooting again.  This amount cannot be reduced by any means.  It is a limitation of the game engine, and cannot be worked around.  This means that the above rocket with a salvo of 3 will act like this:

Fire rocket one, 0.2 second pause, fire rocket two, 0.2 second pause, fire rocket 3, reload, repeat

Those two 0.2 second pauses have to be taken into account when calculating DPS.  Adding those pauses along with the weapon reload speed gets the weapon’s cycle time.  If your rocket is the new D100-V with a reload of 2 seconds, its cycle time becomes 2+0.2+0.2 = 2.4 seconds.  The basic calculation of DPS is damage divided by cycle time.  Keeping the D100-V, 11,844/2.4 = 4,935 DPS.  To compare, the D100-S is 6,672/1.4 = 4,766 DPS.  If the weapon has an accuracy value and no splash value, multiply that number by the weapon’s accuracy to get its actual DPS (as the weapon may miss sometimes if it’s not hitting buildings).  This one doesn’t, so we can stop here.

To recap:
DPS = (Damage / Cycle time) * Accuracy = (Damage / (Reload + (0.2*(Salvo-1))) * Accuracy
This may look scary, but all of these numbers are on the weapon blueprint, so it’s relatively easy to figure out.

A slightly more complicated version involves calculating the reload of the weapon when it’s on the hull it’s meant to be on.  This involves looking at a particular hull to find its reload bonus for a weapon type.  For example, at the time of writing this, the Icebreaker has a rocket reload increase of 100%.  The hull also has a special field that increases rocket reload by 10% more for each Icebreaker in the fleet.  Let’s say you have all five Icebreakers, for an extra 50%, giving you a total reload bonus of 150%.  Now, the hull’s rank also affects its reload.  I still use the BP Professor’s formula to calculate reload:

Actual weapon reload = Reload * (1-rank firing bonus %) / (1+all reload bonuses)

Now, let’s try this with our D100-V (2 second reload), on a skulled (rank firing bonus = 75%) Icebreaker with five in a fleet (150% total reload bonus)

2 * (1-75%) / (1+150%) = 2 * (0.25) / (2.5) = 0.5 / 2.5 = 0.2

Perfect!  We get to exactly the minimum reload.  Try this with the D100-S (1 second reload), and we get:

1 * (1-75%) / (1+150%) = 0.25/2.5 = 0.1

This is not optimal.  Some of the reload bonuses go to waste, as we have to wait 0.2 seconds before firing again.  As it turns out, these two weapons on the same setup (skulled, all 5 Icebreakers) would have the same cycle time.  There are two 0.2 second pauses between rockets 1 and 2 and rockets 2 and 3, and the weapon takes 0.2 seconds to reload.  Both spit out rockets as fast as the game allows, and the D100-V’s base damage is higher, so it should do better in-game.

So, now we have ways to calculate a weapon’s DPS based only on its blueprint to see which would do better in theory, and a relatively simple way to calculate the DPS based on what ship the weapon is used on to get an idea of what we should put on each actual ship.  Now, the game has a lot of different specials, weapons, tactical fields, and other interactions that apply when actually putting a fleet together.  Monoliths are a perfect example of this, as I had once proven that they had lower DPS with the Gridiron Monolith than the Citadels were with the Harlock’s Citadel.  I am claiming some credit in causing the recent buff to Monoliths and the O/U-10 mortar.  But the question then becomes, how to calculate DPS for a ship and ALL of its parts?  Would something like an explosive upgrade that allows me to fit an extra mortar on due to the low weapon weight the explosive upgrade requires do more damage than using a different explosive damage special?  All of these questions can be answered with a very long equation for DPS.  I don’t want to call it the be-all end-all in case I missed something, but it’s as close as I think I can get.

WARNING!  ADVANCED MATH AHEAD!  WARNING!  ADVANCED MATH AHEAD!



Using this equation requires mocking up a ship build in Kixeye’s ship designer, and paying very close attention to the “attack,” “special abilities,” and “flagship effect” fields in the ship designer.  I assume all instances of “weapon type damage bonus” and “other reload bonus” are additive.  For example, 4 Monoliths with their 20% explosive damage fields would give a 20 + 20 + 20 +20 = 80% explosive damage bonus.  Look for the damage bonus of the damage type that you have, look at the reload that you have (Huggy’s does a good job, but I like to calculate reload manually), look at the building damage bonus you have (if applicable), look at your ship or structure dps stat and remember that that is spread across all weapon slots (figure out how many weapon slots you will use), find your critical chance from R&D (and things like the Gridiron Monolith field), and look for critical damage enhancers (critical hits usually deal double damage, but they deal triple damage with the sealed fire charge, and other things in the future may use this stat to increase damage in a nonstandard fashion).

Hold on to your butts.

DPS = ((Base damage of all weapons combined *(1+weapon type damage bonus) * (1+building damage bonus) *(1-critical chance)) + (Base damage of all weapons combined *(1+weapon type damage bonus) * (1+building damage bonus) *Critical chance * Critical damage) + (Ship or structure dps stat * (number of weapon slots filled with damaging weapons / total number of weapon slots) * Cycle time)) / Cycle time

Reminder:  Cycle time = reload + 0.2 * (salvo-1)

If you are attacking ships, remember to multiply this by your accuracy stat (after accounting for specials, etc.), if your accuracy stat is less than 100%.  (You never miss if you are attacking buildings.)  Technically, you have to know the enemy’s evade to get a proper accuracy, but we can’t know that, so I always assume the enemy has 0% evade.  Also, if you are attacking ships, the building damage modifier is irrelevant.

There can be an issue if you use weapons with different cycle times, such as judgment mortars and O/U-10’s on the same ship.  Calculating cycle time can be difficult for those.  I like to use a weighted-average, where I multiply the cycle time of each weapon by the percent of weapon slots meant to deal damage on the hull it occupies, then add them together.  For example, 5 Judgments and 3 O/U-10’s means 5/8 of the Judgment’s cycle time is added to 3/8 of the O/U-10’s cycle time to get an approximation of cycle time.

For multi-shot DPS, George has an article on that here: https://forsakencove.blogspot.com/2017/02/money-shot-er-multi-shot.html

So, there you have it.  If you want to take a quick glance at weapons and figure out which one is better in the abstract, you can do that.  If you want to figure out what goes better on a standard hull, you can do that.  If you want to go super-deep and calculate out the damage on a whole fleet, you can do that.  Using Excel or Google Sheets is a great way to simplify these calculations.  If you name what each cell is to keep track and use formulas referencing those cells, you can adjust to different builds and compare them very quickly if you copy and paste the formulas over a column, then adjust the numbers.

As it turns out, the seemingly-mysterious DPS isn’t so mysterious.  You do need to pay some attention to the blueprint, but it has everything you need to do a quick estimate.  If it’s a choice between weapons on the same fleet, the higher base DPS will usually win, but be mindful of the minimum reload and salvos increasing the cycle time, as that might push a different weapon into the lead.  So, when Kixeye comes out with new tech in the FM, you can take a look for yourself and see if it’s better than the raid tech.

2 comments:

  1. Although DPS is still really important in PvE, deflection in PvP means that damage per hit has become much more important than DPS.. As many weapons will do miniscule damage in many situations.

    ReplyDelete
    Replies
    1. ^ This. So much this. I hope that people understand that there are further complexities in the game and this article is strictly a look at DPS calculations.

      Delete