Wednesday, December 31, 2014

Cycle Time - Rank, Salvo, and Minimum Reload effects on DPS

I'm going to try to clear up some of the uncertainties regarding DPS calculation... I've baked in some errors over the last year.  I want to fix them and release a DPS Calculator/Survival Time calculator that people can use and agree on.

When figuring out DPS (Damage per Second), the amount of time the weapon takes to do the damage is important.  DPS is generally computed by Net Accuracy * Net Damage / Cycle Time, and this article will focus on factors that go into Cycle Time.

Some definitions:
Cycle Time = total time a weapon takes to fire a group of shots, from the beginning of one group to the beginning of the next group.  Cycle Time = Salvo Time + Reload Time
Salvo Time = Total time a weapon takes to fire a group of shots, from the beginning of the group to the end of a group.  Salvo Time = (Salvo - 1) * Salvo Delay
Salvo a group of shots that are fired in rapid succession to deal the weapon's listed damage.  Salvo is a statistic listed on the blueprint, or if none is listed the Salvo value is 1.
Salvo Delay = The amount of time delay between shots in a group
Reload Time = The amount of time between the last shot fired in a group and the first shot of the next group.  For Salvo 1 weapons, this is the entire Cycle Time.  The basic value for this is listed on each weapon's blueprint.  Rank, Hull, Specials, Fields, and Alliance can all apply modifiers to the reload time.  Retrofits change the Reload Time listed on the player's blueprint.

RANK EFFECTS ON RELOAD
The conventional way to calculate reload time (with salvo 1 weapons), was to add all the reload bonuses, and apply the following formula:  
Reload Time = Blueprint Reload / (1 + sum of hull/special/alliance/rank bonus)

When potential rank bonuses were increased from 25% to 75%, some players began noticing some discrepancies when ships were very highly ranked.  Recently I have been assuming that the rank bonus was applied separately from the other reload bonuses, so that it would compound when you had a high rank combined with other bonuses like alliance or hull bonuses.
Reload Time = blueprint reload / (1+sum of hull/special/alliance bonus) / (1 + rank bonus) 

However, it seems that doesn't fit the data either.  This forum post put together some evidence that the actual rank bonus is applied as follows:
Reload Time = blueprint reload * (1 - rank bonus) / (1 + sum of hull/special/alliance bonus)

See here: https://www.kixeye.com/forum/discussion/503010
and here: https://www.kixeye.com/forum/discussion/519038

I wanted to see this for myself, so I recorded some video of ships firing, applied the potential formulas, and found which one matched the data best.  

I agreed that the final formula, using (1 - rank) as a reload multiplier is the correct formula.

This means that a for ship with a Salvo 1 weapon, Legendary rank multiplies the DPS by a factor of 4, not 1.75.  THAT'S HUGE!  See the charts below:



I compared a generic salvo 1 weapon (all reload time) to a Torrent missile (salvo 16, reload 12.5 seconds).  The Torrent gets less of an increase in damage from rank because the salvo time is not affected by bonuses, but 253% is still a big increase.  The other takeaway from this graph is that even though the % rank bonus drops as rank gets higher, the DPS effect increases for each rank through rank 20, and is still very significant for each rank through Legendary rank.  

The Chart on the right shows the weapon's DPS increase % for each rank (compared to the previous rank).

Thanks to Hwasung0181 from the Kixeye forums for pointing me in the right direction on this one, and Tengam for doing some of the original work.

MINIMUM RELOAD TIME
Kixeye has said that weapons have a minimum reload time of 0.2 seconds. and that was the reason some weapons in the retrofit lab were changed to have additional damage instead of  a reload time reduction.

Robot's reference: https://www.kixeye.com/forum/discussion/509974

If this is the case, some weapons with short reload times may be affected, particularly Inferno rockets which start with a 0.75 second reload, and are often mounted on Hellstrikes with cluster warheads.  Looking back at the reload bonus (x4) from rank, this could mean that any legendary-ranked ship with Inferno rockets cannot gain any benefit from Cluster warheads or hull bonuses at all, since its computed reload time will be 0.75 * (1-75%) = 0.19 seconds.

I took another video with Hellstrikes:

And I found that yes, the minimum reload time is 0.2 seconds.

So on a Hellstrike, with 140% rocket reload bonus included in the hull:
Blueprint reload time: 0.75 seconds
Reload Time after Hull Bonus: 0.312 seconds
Reload Time at 37% rank: 0.197 seconds (limited to 0.2 seconds)

This means that Cluster Warheads on an Inferno-armed Hellstrike are useless after reaching 37% rank bonus (Hunter 4 or 4 stars).  Remember that rocket build I posted in the Hellstrike vs. Jugg X article?  Use Siege Battery or High Explosive Shells instead of the Cluster Warhead special.

SALVO DELAY 
The conventional wisdom is that the salvo delay for most weapons is 0.1 seconds.  However, my video above showed that the salvo delay for the Torrent Missile was 0.2 seconds.  Cryo weapons were published on bp-information as having the 0.2 second salvo delay baked into their statistics.

Androm on the Kixeye forums seems to think that many weapons have AT LEAST a 0.2 second (minimum) salvo time per shot as well - he looked at Chainguns, Mortars, and Assault Missiles:
https://www.kixeye.com/forum/discussion/430202

One of the weapons not analyzed in that post or video is the Impulse Launcher, which apparently has a PUBLISHED salvo time of 0.1 seconds.  I'll break out my F launcher armed Greta Nukes and take a video: 


Well well well, 0.2 second Salvo Time on those launchers too.  I think that nothing will fire anything faster than 0.2 seconds.  (I haven't looked in a base attack though.. Cerbs might be one more thing to check)

I suspect there is something inherent to the battle server architecture, that they run on a 0.2 second (5 Hz) cycle/frame/tick, and nothing can happen more frequently than that.  Essentially from a software perspective, it could be programmed it so that on every tick, the server decides if each weapon ought to fire, based on where it is in its reload/salvo cycle.

Before you all go freaking out about this, a faster tick results in more time fidelity, but also more bandwidth required and more potential for lag, so Kixeye had to select a time that found the right balance.  It may even be possible that BP used to run on a 0.1 second tick (which is why we all thought the salvo time was 0.1 seconds), but that value was revised to 0.2 at one point in order to improve game performance.

SUMMARY:
Well I think this article has dispelled up some myths (including ones that I believed) related to the reload and salvo time of weapons.  I'm working towards releasing that new DPS/Survival Time calculator that will be useful for both attacking and defending.

EDIT: Dennis (in his comments below) posted that he updated the Launcher Comparison calculator & posted it here:  
https://docs.google.com/spreadsheets/d/1pZDTgAtvX7GtaOSLKIkPtoxNzCREkGTRKRE_LgIrpYg/edit?usp=sharing
Hopefully that will keep you guys sated until I can get the big one out there. Nice work!

My next article is going to be related to armor resistances and reductions.

I hope you all have a Happy New Year that is filled with Uranium and Instant Repairs!