GamePress

# How to Calculate Comprehensive DPS

Submit Feedback or Error
Article by

## Introduction

This article introduces the Comprehensive DPS model. The model takes into account of:

• Energy gains from damage
• Energy waste from overcharge
• Edge cut off damage from fainting

when calculating a Pokemon's true DPS. Basing on Felix's work, this author has improved the model and applied it in various case studies:

## Notation

We are given two input variables:

• $x$: the energy left of the Pokemon when the battle ends
• $y$: the DPS of the enemy

And the following parameters from the Game Master file or calculated by the damage formula:

• $FDmg$: the Damage per use of the fast move
• $CDmg$: the Damage per use of the charge move
• $FE$: the Energy gained per use of the fast move, positive
• $CE$: the Energy used per use of the charge move, positive
• $FDur$: the Duration of the fast move in seconds
• $CDur$: the Duration of the charge move in seconds
• $CDWS$: the Damage Window Start of the charge move in seconds
• $Def$: the current Defense stat of the subject Pokemon
• $HP$: the effective HP of the subject Pokemon

Our metrics of interest are:

• $FDPS$: the DPS of a fast move, which equals to $\frac { FDmg }{ FDur }$
• $FEPS$: the EPS of a fast move, which equals to $\frac { FE }{ FDur }$
• $CDPS$: the DPS of a charge move, which equals to $\frac { CDmg }{ CDur }$
• $CEPS$: the EPS of a charge move, which equals to $\frac { CE }{ CDur }$
• $DPS_{0}$: the Simple Cycle DPS
• $DPS$: the Comprehensive DPS

## Formula

$$DPS = DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ x }{ HP }) \cdot y$$ where $$DPS_{0} = \frac { FDPS \cdot CEPS + CDPS \cdot FEPS }{ CEPS + FEPS }$$ Special adjustment for one-bar charge moves: $$CEPS = \frac{ CE + 0.5 FE + 0.5 y \cdot CDWS }{ CDur }$$

## DPS Theory

### Derivation

Define:

• $n$: the total number of fast moves used by the Pokemon in the battle
• $m$: the total number of charge moves used by the Pokemon in the battle
• $T$: the duration of the battle

The first equation is the Time Equation :

$$n \cdot FDur + m \cdot CDur = T$$

The second equation is the Energy Equation :

$$n \cdot FE + 0.5 HP = m \cdot CE + x$$

Note: for one-bar charge moves, to account for overcharge, we adjust $CE$ by treating it as if it requires more energy to fire. The overcharge energy could result from either fast move overcharging (on average $0.5 FE$) or losing the energy from damage before your energy gets used (at $CDWS$):

$$CE = CE + 0.5 FE + 0.5 y \cdot CDWS$$

Note2: The above formula is to be improved, though.

Then we solve the above linear system for $n$ and $m$:

$$n = \frac { T \cdot CE + CDur \cdot (x - 0.5 HP) }{ FDur \cdot CE + CDur \cdot FE }$$ $$m = \frac { T \cdot FE - FDur \cdot (x - 0.5 HP) }{ FDur \cdot CE + CDur \cdot FE }$$

Last but not least:

$$T = \frac { HP }{ y }$$

Finally, by the definition of DPS (total damage over time):

$$DPS = \frac { n \cdot FDmg + m \cdot CDmg } { T }$$ $$= ...$$ $$= DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ x }{ HP }) \cdot y$$

### Assumption

Comprehensive DPS must be no less than the Fast Move DPS and no greater than the Charge Move DPS.

In mathematical expression, it is:

$$FDPS \le DPS \le CDPS$$

First, this implicitly assumes that $FDPS <= CDPS$, which is true in most cases (hence the incentive to use charged moves), but fails to hold in some edges cases like a Confusion/Low Sweep user against Gengar where spamming fast move yields higher DPS. The DPS formula doesn't apply there.

Second, it implies that however much energy you gain from damage, your overall DPS is capped at $CDPS$. This should make sense - even in the best case where you spam charged moves, your DPS is just $CDPS$.

### The Domain

The DPS Assumption above can imply the domain of $DPS(x,y)$ as a function of $x$ and $y$. Recall that

$$DPS(x, y) = DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ x }{ HP }) \cdot y$$

For simplicity, define

$$z = (0.5 - \frac{ x }{ HP }) \cdot y$$

Then the Comprehensive DPS formula can be rewritten in the weighted average form:

$$DPS = \frac{ FDPS \cdot (CEPS - z) + CDPS \cdot (FEPS + z) } { CEPS + FEPS }$$

The formula suggests that $DPS$ is the average of $FDPS$ and $CDPS$ with the weights of $(CEPS - z)$ and $(FEPS + z)$ respectively. To satisfy the DPS Assumption, both weights must be non-negative:

$$CEPS - z \ge 0$$ $$FEPS + z \ge 0$$

which is then

$$-FEPS \le z \le CEPS$$

This is the domain of $z$. In terms of $x$ and $y$, it is just $$-FEPS \le (0.5 - \frac{ x }{ HP }) \cdot y \le CEPS$$

Along with the non-negative nature of $x$ and $y$: $x \ge 0, y \ge 0$, the domain of the $DPS(x,y)$ is defined.

### Relationship with Simple Cycle DPS

How does the Comprehensive DPS introduced in this article ($DPS$) relate to the traditional Simple Cycle DPS ($DPS_{0}$)? Recall that:

$$DPS = DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ x }{ HP }) \cdot y$$

Therefore, Comprehensive DPS is a generalization of Simple Cycle DPS. It can be expressed as a range while changing $x$ and $y$. Some important implications:

• When $y = 0$ (i.e., there's no damage from enemy; the battle lasts infinitely long), $DPS = DPS_{0}$.
• Another case where $DPS = DPS_{0}$ is $$0.5 - \frac{ x }{ HP } = 0$$ or, $x = 0.5 HP$. This means that the total wasted energy ($x$) exactly cancels out the total energy gained from taking damage ($0.5HP$), resulting the DPS the same as if there was no damage taken - which is just the Simple Cycle DPS.
• The term $$\frac{ CDPS - FDPS } { CEPS + FEPS }$$ is seen in some other DPS models which also consider energy from taking damage. We may name this term "Energy Efficiency" and denote it as $EE$. From the Comprehensive DPS Axiom, $CDPS > FDPS$, therefore $EE > 0$.
• Since $y > 0$ and $EE > 0$, whether $DPS$ is greater than $DPS_{0}$ only depends on the sign of $(0.5 HP - x)$:
• When $x > 0.5 HP$ (i.e., there is more wasted energy than the total energy from damage), $DPS < DPS_{0}$
• When $x < 0.5 HP$ (i.e., there is less wasted energy than the total energy from damage), $DPS > DPS_{0}$

## Application

When making a DPS spreadsheet, we want to compute the average value of $DPS(x,y)$ when $x$ and $y$ take different values. Assuming $x$ and $y$ are independent and all other terms don't depend on $x$ or $y$, We have:

$$E[DPS(x,y)] = E[DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ x }{ HP }) \cdot y]$$ $$= DPS_{0} + \frac{ CDPS - FDPS } { CEPS + FEPS } \cdot (0.5 - \frac{ E[x] }{ HP }) \cdot E[y]$$ $$= DPS(E[x], E[y])$$

Note: For multi-bar moves, "all other terms don't depend on $x$ or $y$" holds. For one-bar moves, however, since we apply punishment to $CE$, $CEPS$ depends on $y$. That said, the relative error is minimal. We will use the formula $E[DPS(x,y)] = DPS(E[x], E[y])$ for both one-bar and multi-bar moves.

Then the next question is to find $E[x]$ and $E[y]$. Basing on empirical simulation data, the following formulas are used in a neutral settings:

$$\begin{cases} E[x] = 0.5 CE + 0.5 FE \\ E[y] = \frac { 900 } { Def } \end{cases}$$

In a more specific setting (when the enemy is specified), some more sophisticated formulas are used:

$$\begin{cases} E[x] = 0.5 CE + 0.5 FE + 0.5 \frac{ \lambda \cdot FDmg_{enemy} + CDmg_{enemy} } { \lambda + 1 } \\ E[y] = \frac{ \lambda \cdot FDmg_{enemy} + CDmg_{enemy} } { \lambda \cdot (FDur_{enemy} + 2) + CDur_{enemy} + 2 } \end{cases}$$

where:

• $\lambda = 3$ if the enemy has one-bar charge move
• $\lambda = 1.5$ if the enemy has two-bar charge move
• $\lambda = 1$ if the enemy has three-bar charge move

On an extra note, the damage formula in DPS spreadsheet doesn't use $floor() + 1$; instead, it adds $0.5$ after the fraction term $(0.5 \cdot \frac{Atk}{Def} \cdot Power \cdot Multipliers)$.