- Joined
- Jan 5, 2016

- Messages
- 148

- Reaction score
- 94

- First Language
- English

- Primarily Uses
- RMVXA

I'm here today to give an overview on how to create more balanced damage output using lower stats. If you've ever played bigger franchises like Final Fantasy or Pokemon, you'll notice that the stats intentionally begin very low (10-20) and end up in the multiple 100s range. The purpose of low numbers growing exponentially into higher ones is to give your player an indirect sense of growth and progression with their party - so that's what we're going to try to achieve with our own games here.

__________________________________________

__Analyzing the issue:__Let's begin with a well-recognized example - the 9999 damage mark. Hitting this should represent an achievement in maximum or near-maximum strength in your party members. So let's start with the default RPG Maker "Attack" formula:

**(a.atk * 4) - (b.def * 2)**

Simple enough. This formula provides us with a

*linear growth*model for damage increase, meaning damage increases at a steady, linear rate as A's Attack stat goes up. Dividing 9999 by 4 rounds to 2500, meaning

**an actor's Attack stat must be 2500 or higher to hit for 9999 damage**. This, of course, doesn't even factor in B's defense. So requiring a stat to be at 2500 to reach the damage cap is an obvious issue, but not the main one here. The real issue is that

**small stat increases barely affect damage output**. This is a bigger concern because we want our players to feel like every stat, every equipment, and every buff matters.

When a change of +5 Attack only results in 20 extra damage, the player may not feel like equipment is worth changing until they find stuff which gives 50-100 differentials from what they have right now. I've played RPGM games where end-game weapons had values of 800 or higher, which is a little ridiculous. There's also the fact that bigger stats are also more of a nuisance to compare and manage.

__________________________________________

__Exponential Growths:__To fix this, we can first look to an exponential growth model in favor of a linear one. Exponential growth means that the

__rate__of damage growth

*itself*increases as Attack stat increases. Let's look at a sample graph, with red showing

**linear growth**and blue and green showing

**exponential**

**growth**.

So while the numbers begin low in an exponential growth model, they grow much higher than the linear model does given higher numbers - which is precisely what we want. Using the blue formula (x ** 3), it would only take ~21.54 Attack to reach the 9999 damage cap. That's

*way less*than we want, however, so let's continue refining this.

Let's assume a reasonable cap for a high-Attack party member would be 300 Attack. Stack on that a 120 Attack weapon for 420 Attack stat.

**A simple formula of (a.atk ** 1.5) gives us around 8600 damage output**- a solid option if you don't want your Attack command to reach 9999 without buffs. More importantly,

*small stat changes now have a bigger impact*. Let's go back to our previous example and see how much a change of +5 Attack could help:

a.atk = 10 -----> damage = ~32

a.atk = 15 -----> damage = ~58

a.atk = 20 -----> damage = ~89

a.atk = 25 -----> damage = 125

*damage = (a.atk ** 1.5)*

a.atk = 10 -----> damage = ~32

a.atk = 15 -----> damage = ~58

a.atk = 20 -----> damage = ~89

a.atk = 25 -----> damage = 125

So the changes aren't

*huge*but it's more significant than a flat change of +20 damage each time. The numbers here also appear much more balanced than a linear rate of (40, 60, 80, 100) which doesn't give the same feeling of damage progression.

__________________________________________

__Exponents in Practice__Here's an example of how I put exponents to use to formally balance a game. Note this formula was designed so "Attack" wouldn't reach 9999, but would still present a desirable growth pattern for basic damage output:

**damage = (((a.atk + a.level * 2) - b.def) ** 1.33)**

a.atk = 26, a.level = 10 ----> ~117

a.atk = 35, a.level = 12 ----> ~226

a.atk = 38, a.level = 14 ----> ~263

a.atk = 84, a.level = 30 ---> ~742

a.atk = 138, a.level = 50 ---> ~1448

a.atk = 219, a.level = 75 ---> ~2595

a.atk = 312, a.level = 99 ---> ~3990

__Examples:__a.atk = 26, a.level = 10 ----> ~117

a.atk = 35, a.level = 12 ----> ~226

a.atk = 38, a.level = 14 ----> ~263

a.atk = 84, a.level = 30 ---> ~742

a.atk = 138, a.level = 50 ---> ~1448

a.atk = 219, a.level = 75 ---> ~2595

a.atk = 312, a.level = 99 ---> ~3990

Now this is obviously way different than what I've shown so far, however everything in this formula has a purpose. First, it's at your own discretion whether you want to factor

**a.atk**and

**b.def**in the same exponential function or separate ones. Doing something like

**((a.atk + a.level * 2) ** 1.33) - (b.def ** 1.33)**is also fully functional, in fact you can basically do whatever you want with

**b.def**because

*you have full control over the progression of your enemies' stats in the database*.

Now, including a

**a.level**in this formula is an interesting choice - basically, I wanted to prevent a feeling of stagnation in characters who have low Attack growth. When you have a basic "Attack" command at the nucleus of your battle system, it's rarely if ever a good idea to have that skill be obsolete even when a character is high-leveled. Using a.level ensures that they'll be getting

*some*bonus from leveling up, establishing a difference in damage output between the last level and the current one, even if their Attack growth was 0.

The 1.33 exponent reiterates what we've discussed here, increasing the

*rate*of damage growth as Attack

*and*Level grow higher. This allows for lower numbers in the beginning parts of the game with way higher numbers towards the end - as it should be and as it is in just about every major RPG out there. Note that any exponent between 1.25 and 2.0 is more or less viable, however the rate may increase

*way more*than you intend the higher you go. Using higher exponents runs the risk of party members becoming extremely overpowered with just a few level/equipment changes.

__________________________________________

__Adding in an Attack bonus__Now remember, the point of this type of balancing is to give the player the impression that small stat changes make a significant (or at least some extent of) difference. After tailoring your formula to your own game's stat progression, you can always add in a

*stat bonus*to foster that impression of stat growth. Here's an example building off of my last formula:

**damage = (((a.atk + a.level * 2) - b.def) ** 1.33) + (a.atk / 2)**

The highlighted portion of this formula is what I call a bonus because it

*ensures*that your player can tell that their stat growths make a difference. Your actor receives a direct +1 damage bonus every time their Attack increases by 2 - you can alter this bonus as much as you want. While the main damage output increases exponentially, your bonus will increase on a linear basis, meaning that

*at any level*, the bonus will convince your player that their decisions/progress matter.

You can also do this with enemy attack formulas (this is in Ruby):

Code:

```
def enemy_attack(a, b)
num = num.to_f
num = 1 + ((b.def.to_f - a.atk) / 25)
quo = ((a.atk ** 1.5) / num) - (b.def / 3)
return quo.round
end
```

*bonus,*where every 3 Defense points that an actor gets results in exactly 1 less damage, ensuring that all defense changes (above 2) are perceived.

This is a totally optional thing to include in your formulas, but I consider it a safety net to ensure statistics play an important and noticeable role in your game.

__________________________________________

__Conclusion__

Just to conclude,

**using exponential growth is an effective way to ensure lower stats output greater damage without needing to make your stats exceed 500 or 1000.**There's a lot of things you can do with this knowledge and a lot of it boils down to how you've already designed the stats for your game. Therefore, using my personal formulas in this thread may not work the same it does for my database. However, there are a few things for certain to take away from this:

- Using lower exponents (**) in place of multiplication in formulas results in a better damage progression and allows you to structure the beginning of your game around low damage and low stats. Using this, you can set the minimum of your stats around 5-10 and the maximum in a range of 200-300 for solid balance/modest stat growth.
- Exponents allow for small stat changes to have bigger impacts. Adding in bonus values in formulas also helps to achieve this.
- Keeping exponential factors between 1.25 and 1.75 is the best way to avoid overpowering your party members.
- Include
**a.level**in your damage formula to ensure low-Attack characters achieve*some extent*of growth. - As far as skills are concerned: A personally like using the "Attack" formula to determine the power of skills. Maybe a "Power Attack" skill copies the Attack formula, then multiplies it by 2. This can be repeated rather easily throughout your database and is a good method of organizing the power of your skills.
- The ultimate goal of damage balancing is to make sure your player is aware and cognizant of statistical changes in their characters, and values their new equipment/stat increases.