Game Advanced Combat System Formulas in MORPGs
GCC Academy
Hello everyone
This is Park Hyung-seon, in charge of Action RPG Balance Game Design
In this session, we will discuss the combat system formulas used in MORPG games
I will explain the most common combat formulas
and the method of converting defense values
into defense rates for calculations
Additionally, to achieve balanced gameplay,
it is crucial to convert defense
into health points
using combat formulas
I will introduce this method in detail
The foundation of combat balance
lies in organizing values for attack factors
and defense factors
to ensure equilibrium between the two
I will explain the methodology for achieving this balance
Combat Formulas and Converting Defense into Defense Rate
This is the first step in organizing values and standards related to combat balance
Today, we will examine combat formulas
and the formulas for calculating defense values and defense rates
A basic attack consists of four hits over two seconds
A mob has 100 HP
It takes four hits
from the player to defeat a mob
Since the basic attack executes four hits in two seconds,
each hit deals 25 damage,
resulting in a damage output of 50 per second
A skill attack can be used once every 20 seconds
Each use of the skill deals 100 damage to three enemies
This results in a total skill damage output of 300 per use,
so for one second, the skill attack is 15
So, in the end,
The basic attack DPS of 50 +
the skill attack DPS 15
results in 65 damage per second
The duration of a single combat session is three minutes, which equals 180 seconds
180 x 65
means the maximum damage for three minutes is 11,700
Now, let’s break this down in a more intuitive way
Suppose each mob has 100 HP
The fact that a basic attack consists of four hits executed over two seconds
means that an attack sequence consists of
slash, slash, slash, and boom
The total execution time of two seconds
also includes average movement time
If we count only the animation frames,
it would be slightly shorter than two seconds
However, considering movement animation and other factors,
we round this to two seconds
Each hit deals 25 damage
After four hits, the total damage reaches 100
And this includes the time for movement
So that's two seconds
So it is 50 for a minute
So the basic attack's DPS is 50
DPS, again, refers to damage per second
So the DPS, the damage per second, for basic attack is 50
So that concludes the basic attack damage
Now, we move on to the skill damage
Since a skill attack is used every 20 seconds
and deals 100 damage to each of three mobs,
the damage per use is 300
dividing by 20, the cooldown time,
gives a DPS of 15
That's the calculation
Because the player can use skill and basic attacks,
we add the values
The basic attack DPS of 50,
with the skill attack DPS of 15,
these are the DPS values we add up
We are assuming that the player could
use the skills along with the basic attacks
So the total DPS is 65
One combat lasts three minutes, or 180 seconds,
because that's the optimal duration for player engagement
That's the reason
So DPS here is 65,
adding the DPS values of basic and skill attacks
So it is 50 + 15 = 65
And multiplying it by 180 gives us 11,700
So the DPS values for the player, for basic and skill attacks,
are multiplied by three minutes, which gives us 11,700
So, the player can inflict 11,700 damage for three minutes
Now, the enemies should withstand
this much damage, of 11,700, for three minutes
Now, I'm talking about all enemies
This does not separate boss monsters
from regular mobs
We combine the two,
or even three, including the little boss mobs, to get the value 11,700
So here is the formula for it
We have the HP for one mob,
which is 100
Now, we divide the HP for boss and mob
Let's say the boss gets half of 11,700
The reason is, we want the player
to be fighting the boss for around 1.5 minutes
And fight the mobs for the other 1.5 minutes
So first, halve the value
So the mobs get 5850
And we rounded this value
to have 5900 for boss HP
and 5800 for the total mobs HP
One mob gets 100 HP
So 5800 divided by that will give us 58 mobs
This is how we can fine-tune the details
So, here is the summary of our values from lastt class
The player can inflict 50 damage with basic attack per second
With skill attacks, the damage is 15 per second
We have four basic attacks in two seconds and one skill in 20 seconds
The total play time is 3 minutes,
so the player can inflict the total of 11,700 damage
And this equates the total mobs HP for one stage
Each mob gets 100 HP,
and there are 58 of it
There is one boss with the HP of 5900
So the sum of the mobs HP becomes 11,700
So this is the most foundational criteria
So the player total attack damage equates the enemies total HP
The total DPS that the player can deal over three minutes
must be absorbed by the enemy over the same period,
so that's the total HP
Please keep in mind this fundamental concept
Key Elements to Adjust in Combat Balance
First, we have damage formulas and the conversion of defense into defense rate
Next are standard stats for enemies across 100 stages
Understanding how to calculate the damage dealt to enemies,
along with concepts like defense and defense rate, is crucial
The amount of damage dealt per hit
Next, converting defense into HP to simplify balancing
I will explain the detailed formulas for this later
Additionally, I will go over the standard stats for enemies across 100 stages
Each stage contains mobs
that have specific values for HP, defense, and attack power
If we assume that there are 100 stages,
we need to establish
baseline values for attack power, defense,
and HP per second for the mobs in each stage
Typically, we create base stat values using formulas
We start with these base stats,
which are then adjusted
with modifiers and fine-tuned for balance
This is essential for combat balance
Matching the total HP and attack power of players and enemies
For example, if we are currently designing Stage 10,
the player's stats like attack power and HP will reflect
their equipped gear and character progression
Similarly, enemies will have predefined
attack power and HP values
Adjustments can be made
through gear and experience rewards
After determining the enemy attack power,
the player's attack power and HP must be set accordingly
This is done by adjusting gear rewards
and ensuring that
the player's stats align with the enemy's attack level
Let's break this down further
First, we determined
how much damage the player can deal over three minutes
Next, we calculated how much total HP enemies must have to endure this damage
Now, we must also determine how much damage
the enemy should deal to the player over the same duration
Based on that information,
we adjust the player's HP accordingly
The key concept here is symmetry between player and enemy stats
The player’s total attack power must match the enemy’s total HP
The enemy’s total attack power must match the player’s total HP
This calculation must be time-based
If we set the standard combat duration to three minutes, we must:
Determine the total damage the player can deal in three minutes
Playtest to determine how much damage
the enemy should deal to the player in three minutes
Use this data to set the player’s HP accordingly
Establishing the Balancing Goals
In an action MORPG, let’s assume we have 100 stages of standard battles
We must set enemy attack power, HP, and defense across these stages
Accordingly, we then adjust
the player’s attack power, HP,
and defense to maintain difficulty balance
The goal is to maintain this equilibrium
When the game begins,
there are many stages unfolding,
like stage 1, 2, 3, 4, and on
Each stage must have a set playtime
So ensuring that
player and enemy stats remain balanced throughout the progression
is crucial for balance
The stage should be clearable within the set playtime
So, we first define the stages we will release
and adjust the balance for each stage accordingly
Each stage must be individually fine-tuned to ensure the proper difficulty curve
To achieve this, we need to study how defense affects incoming damage
through combat and damage formulas
The reason we balance stage-by-stage
is that the game’s service model is stage-based
While we’ve used 100 stages as an example,
in a real open beta scenario,
we might launch with 300+ stages
Each of these must be carefully balanced before release
To simplify, think of it this way
Player and enemy strength must scale appropriately for each stage
we delve into it, it gets more complex
because we have to consider player equipment
Unlike static enemy stats,
players gain stronger gear as they progress
This means stats are always improving, affecting the balance curve
Because of this, we must adjust not only combat balance
but also reward balance and economic balance
to that progress
to create a smooth progression
Let's now discuss the combat formula
Assuming the defense absorbs part of incoming damage,
we can express it through different formulas
Let's set example values for the defense
Let's say the attack power is 100,
the defense 50,
and HP 100
Let's use simple subtraction method
So the allies attack damage is 100,
and the enemies defense 50
100 - 50 = 50
We can just use simple addition and subtraction
So one allies attack will result in 100-50 for the enemy HP
But the problem is, this isn't always the case
Let's consider this instead
If attack power equates to defense,
with defense of 100 and HP 100,
Attack - Defense = 0
It's a subtraction method
So 100 attack damage with the 100 defense
will result in a 100% defense,
or 0 damage inflicted
There is no damage
So with this simple subtraction method,
a major flaw appears
when defense exceeds attack
Even after a lot of attack, the HP is not affected
This will make a very boring game
So this combat formula is not what we want
Some indie games have mistakenly used this formula,
but players tend to find these games unfun
Because of these major flaws, most modern games
do not use subtraction-based defense
Instead, most games use a proportional damage absorption formula
The standard formula
that converts defense into a percentage-based reduction
is Damage Absorption = Defense / (Defense + Defense Constant)
Damage absorption is the same as defense
It's the same term
And defense constant is a variable
Here, we use 1000 for defense constant
Let me demonstrate how the value changes
as the defense constant changes
Let's say the attack power is 100
and defense absorption, 0.8
0.8 equates to 80%
It means that 80% of the attack damage is absorbed
So 0.8 means 80%
It should never exceed 1
100 x 0.8 is 20
So 20 is the damage that gets through,
while 80 is being blocked
To remember it,
0.8 of damage absorption
is like a shield
0.8 of it is shielded,
while 0.8 means 80%
So we get 80% of the damage being shielded
But let's say that the conditions change
For example, 0.8 with the attack power of 100
means it's a 80% shield
So it blocks 80 and receives only 20 damage
But the attack power can change
What if the attack power is not 100 but 1000?
We have 0.8 damage absorption, or 80% shield
So 800 is being blocked and 200 inflicted
Damage absorption means the amount of damage or attack power absorbed
Defense literally means the defense rate
By adding a number,
this defense formula will give you the damage absorption rate
Let's go over the formula once again
Damage absorption is defense divided by defense plus defense constant,
for which we'll use 1000
Then the damage absorption is defense plus defense divided by 1000
So let's say that damage absorption
or the final value is the y value
Then the defense is the input value, or the x value
So y = x + x / 1000
Next, the Formula for Damage Taken Ratio
The defense constant is a freely adjustable value in the formula
Its value affects the graph’s sensitivity
With defense constants of 100, 1000, and 5000,
I will show how defense and damage absorption change
Defense rate is the same as damage absorption
The formula for both is:
Defense / (Defense + Defense Constant)
The x value is the input
that represents defense
For example, values like 0, 100, 1000, 5000, and 30,000 are set
It equals defense
Since x is the input, it equals defense
The defense constant varies,
so we’ll test different values
I will provide three examples,
when defense constant is 5000,
1000, and 100, in that order
Any formula can be customized,
but let’s start with 5000
With defense 100 and constant 5000, the result is 0.021
With defense 1000 and constant 5000, it’s 0.167
It also equates to 16.7% damage blocked
Damage absorption, defense rate,
and shield all mean the same
A defense rate,
meaning the damage blocked,
is 16.7%
Now, with a defense constant of 1000:
At defense 1000,
the rate jumps from 16.7%
to 50% with the defense constant becoming 1000
It's a huge difference
At defense 1000, the rate jumps from 16.7% to 50%
With a constant of 100,
a defense value of 1000 blocks .909
or 90.9% of damage
So if the x value is 1000
with the defense constant 1000,
it is excessively high
Blocking 90.9%
means almost no damage is taken
If defense grows beyond 1000,
there arises a big problem
Balance becomes difficult
with defense over 1000
With a defense constant of 100, a defense of 1000 already blocks 90.9%
So everything is already used out
Thus, in practice,
small defense constants like 100 should not be used
In real applications, 1000 or higher is used for defense constants
So, in practice,
this damage formula,
or this conversion formula uses
values over 1000
and typically between 1000 and 5000 for the defense constant
If you look at the graph on the right,
when using a defense constant of 100,
the curve rises too steeply
With a defense constant of 1000, it rises evenly
And with 5000, the increase is gradual
If you want to use large defense values in your game,
a defense constant of 5000 is suitable
For a general game, a defense constant of 1000 is appropriate
To prevent setting excessively small defense values,
it is best not to use a defense constant below 1000
By comparing the graphs,
you can clearly see how defense rate changes
depending on the input defense value
Now, let’s look at various derived formulas based on the defense rate formula
This part is quite complex, so it may be difficult
I will explain it slowly
First, damage absorption is calculated as Defense / (Defense + Defense Constant)
Now, let’s consider the reverse concept
This leads to the idea of the damage taken ratio
The formula for damage taken ratio is 1 - Damage Absorption
This is the inverse concept
We defined damage absorption as a shield
If the absorption rate is 0.8, it means the shield blocks 80% of the damage
The damage taken ratio is simply 1 - 0.8 = 0.2
Thus, 20% of the damage penetrates the shield
In other words, 0.2,
or 20% of the attack is actually received
The damage taken ratio represents this remaining percentage
For deriving the defense values,
by extending this formula,
we can define a new equation as follows
The formula for damage taken ratio is this
Defense Constant / (Defense + Defense Constant)
For Defense + Defense Constant,
we need to make the value 1
So the numerator and denominator have the same values
(Defense + Defense Constant) / (Defense + Defense Constant) = 1
We can rewrite it as 1 - (Defense / (Defense + Defense Constant))
It subtracts the damage absorption,
and we already defined damage absorption
Defense / (Defense + Defense Constant)
So, the damage taken ratio has been newly formulated into a rather complex equation
Once again,
(Defense + Defense Constant)
/ (Defense + Defense Constant)
It subtracts the second part from the first
We can simplify this equation further
Since
the denominator remains the same,
the denominator across
this complex equation is consistently Defense + Defense Constant
So, we can simply subtract the numerators
Since the denominator remains the same,
the left side retains Defense + Defense Constant,
and the right side retains Defense
Subtracting these leaves only Defense Constant in the numerator
Thus, the final equation for the damage taken ratio is:
Defense Constant / (Defense + Defense Constant)
Now, we've gone through three steps of calculation
Next, we substitute values
Multiplying both sides by the denominator:
(Damage Taken Ratio) × (Defense + Defense Constant) = Defense Constant
The reason for repeated adjustments
is ultimately to derive a formula for Defense itself
That is the purpose of this calculation
In step four, we have: (Damage Taken Ratio) × (Defense + Defense Constant)
Now, we move this term to the right-hand side
On the left remains Defense + Defense Constant,
and on the right remains Defense Constant / Damage Taken Ratio
This makes it easier to isolate Defense
The final equation for Defense is:
(Defense Constant / Damage Taken Ratio) - Defense Constant
By performing these calculations,
and using these formulae,
we derive a formula for Defense
Now, an important new concept appears
Effective Health
We will discuss this next
Effective health is defined as Health / Damage Taken Ratio
We will explain why this is the case later
Let’s review the Damage Taken Ratio concept
If Damage Absorption is 0.8, then Damage Taken Ratio =
1 - 0.8 = 0.2
The Damage Taken Ratio is the inverse of Damage Absorption
Subtracting the shield portion,
this is the remaining damage taken
Let’s summarize the Defense and Defense Rate formulas again
Since we already calculated these above,
you just need to review them
Damage Absorption = Defense / (Defense + Defense Constant)
Damage Taken Ratio = 1 - Damage Absorption
And as explained earlier,
after intermediate calculations,
Defense is (Defense Constant / Damage Taken Ratio) - Defense Constant
The blue text is the key equation
Another key concept is
Effective Health
Effective Health = Health / Damage Taken Ratio
Connverting Defense into Health
Here’s a more detailed explanation of Effective Health
If the Damage Taken Ratio is 0.1,
meaning only 10% of the damage is taken,
this means the actual health is effectively 10 times higher
For example,
let’s consider a case with an ally and an enemy
Ally health: 100
Enemy attack power: 100
A single hit depletes all 100 HP
This is assuming the ally has no damage absorption
Now, let’s consider the opposite case
Ally health: 100
Damage absorption: 0.9
Damage taken ratio: 0.1
If the enemy attack power is 100,
90% is blocked by the shield
The damage taken ratio is 0.1
So, out of 100 attack power, only 10 damage is received
Only 10 damage
Since each hit only does 10 damage,
the ally must be hit 10 times
This effectively makes their health 10 times higher, meaning 1000 HP
This is when the ally has damage absorption
Comparing with the previous case where there was no defense,
taking 100 damage would immediately reduce HP from 100 to 0
With 90% damage absorption, or 0.9,
and 10% damage taken ratio, or 0.1,
only 10%
or 10 of the attack is received
This is the same as having 1000 HP
Since the ally can endure 10 extra hits,
it effectively has 1000 HP
This is the concept of Effective Health
Effective health is the true HP,
sometimes called the real HP
Effective Health = Health / Damage Taken Ratio
If Damage Constant = 1000, and Health = 1000,
The key concept is that Defense can be converted into Health
Defense can be expressed as Health
That's the basic concept, that defense can be health
As the Damage Taken Ratio changes from 1 → 0.95 → 0.9 → 0.85 → 0.8 → 0.75 → 0.7 → 0.65 → 0.6,
if the Damage Taken Ratio is 1, it means no shield exists
Since Damage Taken Ratio = (1 - Shield),
if the Damage Taken Ratio is 0.9,
the shield is 0.1
To put it simply,
if Damage Taken Ratio = 0.5, then half of the damage is blocked
And Defense = 1000
With Defense = 1000 and Defense Constant = 100,
the Damage Taken Ratio becomes 0.5
Since half the damage is blocked,
Effective Health = 200
This means the effective HP is doubled
Now, why do we convert Defense into Health?
Without this conversion, balancing involves three variables:
Defense, Health, and Attack Power
Balancing both ally and enemy defense is complicated
But if we reduce balancing to only two variables, it's much easier
If we only consider Health and Attack Power,
we simply match Enemy HP to Ally Attack Power
and Ally HP to Enemy Attack Power
So, by converting Defense into Effective Health,
balancing requires only two factors,
making it easier
The core of combat balance is adjusting
Attack factors and defense factors
So, if everything is converted to Attack Power and Health,
balancing becomes simple
For attack power,
attack-related things like critical hits are converted to DPS
And Defense is converted into Health,
so by comparing the attack power and health,
you can efficiently balance combat
This concludes today's lecture
Great job, everyone
Thank you
Combat Mechanics & Balance Factors Key elements of combat balance: Damage formula, defense, and defense ratio Enemy stats for 100 stages HP and attack
Damage absorption = Defense ratio Defense / (Defense + Defense Constant) Determines how much damage is blocked when attacked
If damage absorption = 0.8 (80%), an enemy attack of 100 deals only 20 damage
Defense value: Direct stat representing a character's defense Used in the defense ratio formula to calculate damage absorption
Formulas for Defense & Damage Taken Damage Absorption = Defense / (Defense + Defense Constant Damage Taken Ratio = 1 - Damage Absorption
Damage Taken Ratio = (Defense Constant / (Defense + Defense Constant)) (Damage Taken Ratio) × (Defense + Defense Constant) = Defense Constant
Defense = (Defense Constant / Damage Taken Ratio) - Defense Constant Effective Health = HP / Damage Taken Ratio
If Damage Taken Ratio = 0.1 (taking only 10% of damage),
the character effectively has 10x HP Defense can be converted into HP equivalent
Why Convert Defense to HP? Without conversion, too many variables to balance
With conversion, only two factors to balance (HP & Attack Power), simplifying calculations
Combat Balance Basics Key principle: Adjust attack factors and defense factors to maintain balance
Convert all stats into Attack Power (DPS) and Effective Health (EHP) for simplified combat balancing