The Problem with Fire Rate on Burst Heroes
What’s the Deal with Burst Fire?
Have you ever wondered why in Deadlock, heroes with burst-fire weapons are almost never played with a focus on gun damage? I can only recall one meta where a gun-damage Lash was viable—that was back in September of last year, and the reason was frankly an over-buffed base bullet damage. After it was nerfed, we never saw anything like it again, even though every other hero has, at one point or another, been played with a gun-damage build. So, what’s the reason?
Before we get to the answer, let’s review what constitutes weapon damage in the game. Each hero has a starting bullet damage and a per-level scaling—that’s the first component. The second component is the weapon damage stat, represented as a percentage. The third most important component is fire rate, which determines how many bullets you can pump into an opponent per second. And the last component, which is the least important in most cases, is the reduction of resistance to bullet damage.
So what’s wrong with burst-fire weapons? The problem is that fire rate works very poorly on them. Consider this: for all heroes except those with burst weapons, fire rate is a linear damage multiplier. That is, if you have 50% extra fire rate, your DPS increases by a factor of 1.5. In the case of burst weapons, this is not true. For Paradox, 50% fire rate will give a ×1.16 damage increase, for Lash ×1.24, and for Seven ×1.23. As the classics would say, “What the hell?”
Let’s break it down. What does fire rate give a weapon? It increases the number of bullets you can fire in the same amount of time. How does it do this? Essentially, it just reduces the delay between shots. But here’s the catch—for most heroes, a shot is instantaneous, it literally takes 0 time, whereas for heroes with burst weapons, the shot itself lasts for a certain duration. If we write this out as formulas, it looks like this: $cycleTime = shotTime + \dfrac{pauseTime}{1 + fireRate}$
$dpsMultiplier = \dfrac{shotTime + pauseTime}{shotTime + \dfrac{pauseTime}{1 + fireRate}}$
But since for non-burst heroes $shotTime = 0$, for them it becomes: $cycleTime = 0 + \dfrac{pauseTime}{1 + fireRate} = \dfrac{pauseTime}{1 + fireRate}$
$dpsMultiplier = \dfrac{0 + pauseTime}{0 + \dfrac{pauseTime}{1 + fireRate}} = \dfrac{pauseTime}{\dfrac{pauseTime}{1 + fireRate}} = 1 + fireRate$
Now let’s try to calculate the $dpsMultiplier$ for a case where the burst shot time = 1, the pause time between bursts = 1, and the bonus fire rate = 50%: $dpsMultiplier = \dfrac{1 + 1}{1 + \dfrac{1}{1 + 0.5}} = \dfrac{2}{1 + \dfrac{1}{1.5}} = \dfrac{2}{1.67} = 1.2 = 120\%$
So, instead of our damage being multiplied by 1.5, we got a damage increase that another hero would get from 20% fire rate instead of 50%. If we take 100% bonus fire rate instead of 50%, the damage increase is only 34%. This means the dependency isn’t even linear, but logarithmic. For clarity, here is a graph showing the dependence of the damage multiplier on bonus fire rate. The straight diagonal line represents the DPS growth for all heroes with automatic and semi-automatic weapons, followed by the lines for Seven, Lash, and Paradox.
xychart-beta title "DPS Dependence on Bonus Fire Rate" x-axis "Bonus Fire Rate in %" [0, 25, 50, 75, 100, 125, 150] y-axis "Damage Multiplier" 1.0 --> 2.5 line "Base" [1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5] line "Paradox" [1.0, 1.09, 1.16, 1.22, 1.27, 1.31, 1.34] line "Lash" [1.0, 1.13, 1.24, 1.33, 1.41, 1.47, 1.53] line "Seven" [1.0, 1.13, 1.23, 1.31, 1.39, 1.45, 1.50]
Below is a table of the values used to create this graph. They are not perfectly accurate because the game’s interface rounds all stat values, whether it’s bullet damage or DPS.
fullCycle | shotTime | pauseTime | |
---|---|---|---|
Paradox | 0.66 | 0.38 | 0.28 |
Lash | 0.52 | 0.22 | 0.3 |
Seven | 0.52 | 0.23 | 0.29 |
What Can Be Done?
The first option is to simply do nothing. In this case, we would consider this injustice not a bug, but a feature—a part of the game’s balance.
However, if we do want to restore fairness and make it so that burst-fire heroes get the same damage increase from bonus fire rate as other heroes, we have several options, which are detailed below.
The most straightforward option is to reduce the burst’s $shotTime$ in proportion to the bonus fire rate, just as the $pauseTime$ between shots is reduced: $$ cycleTime = \dfrac{shotTime + pauseTime}{1 + fireRate} $$ This option might not be ideal, as the burst’s shot time could become too fast, and the animation might become unpleasant or jarring.
A slightly more complex option is to still only reduce the $pauseTime$, but to reduce it in such a way that it meets this goal: $$ cycleTime = \dfrac{shotTime + pauseTime}{1 + fireRate} $$ This option has a limitation, as the pause between shots cannot be less than zero, which means $cycleTime \ge shotTime$, and thus $dpsMultiplier \le 1 + \dfrac{pauseTime}{shotTime}$. To give concrete numbers, for heroes where $shotTime = pauseTime$, the maximum $dpsMultiplier$ is 2, which is achieved at a $fireRate$ of 100%.
And the third option, which I believe is the best but requires the most effort from the developers, is one where $shotTime$ and $pauseTime$ change differently, but their sum, $cycleTime$, still depends linearly on $fireRate$: $cycleTime = \dfrac{shotTime + pauseTime}{1 + fireRate}$. For example, a developer might decide that $pauseTime$ should decrease twice as fast as $shotTime$. Then, one would just need to solve the following system of equations: $$ \begin{cases} cycleTime = \dfrac{shotTime + pauseTime}{1 + fireRate} \\ cycleTime = \dfrac{shotTime}{x} + \dfrac{pauseTime}{2 \cdot x} \end{cases} $$ The solution is the formula below, which can be used directly in the game’s code to calculate the reduction coefficients for $shotTime$ and $pauseTime$: $$ x = \frac{ -B + \sqrt{B^2 + 8,\text{fireRate}(\text{shotTime} + \text{pauseTime})^2} }{ 4(\text{shotTime} + \text{pauseTime}) } $$ where $$ B = \text{shotTime} + 2,\text{pauseTime} - \text{fireRate}(2,\text{shotTime} + \text{pauseTime}) $$
In the same way, you can substitute any function that defines the ratio in which $shotTime$ and $pauseTime$ will be reduced, ultimately achieving the same damage scaling from bonus fire rate as other heroes.
Of course, any of these fixes would require additional balancing of the stats and abilities of burst-fire heroes. Imagine if the already overpowered Seven was given the ability to build fire rate and double his damage without changing the values on his Power Surge—that monster would dominate public matches like never before.
Conclusion
In summary, we’ve figured out why bonus fire rate works so poorly and unfairly for burst-fire heroes and have even proposed several solutions. Ultimately, however, it’s all in the hands of Valve and the Deadlock development team. It’s quite possible they don’t see this as a problem and therefore don’t consider a fix necessary.
Author’s Note:
tg: @kremovdl
After publishing this article, I plan to post it on the forums.playdeadlock.com forums. From there, we’ll see if Yoshi or someone else on the team does anything about it.
Subscribe, as in the near future I plan to write articles about how the map and shop reworks broke the game’s balance. It will be a story about how the developers plugged each new hole only to find another one appearing, with a full retrospective and analysis of the patches. I will also try to offer my own solutions for how one problem or another could have been solved.