# Linear vs Exponential vs Logarithmic Growth

#### Frostorm

##### []D[][]V[][]D
Just wanted to get everyone's \$0.02 on character stat curves. You guys have probably played w/ the "Generate Curve" button and its Fast-Normal-Slow growth slider. A "Fast" setting equates to a logarithmic growth curve, whereas a "Slow" setting would mean an exponential growth curve. I personally don't use the "Generate Curve" function at all, opting for a formula-based growth curve such as `atk = level * 1.7 + 7;` or something, a linear function. So how do you guys approach growth characteristics? Do yall prefer Fast or Slow?

Last edited:

#### ATT_Turan

##### Forewarner of the Black Wind
There are really only two things that make this decision matter:
1) Do you have a preference for big/small numbers? There's a style of game and gamer that gets off on skill sequences that deal a dozen hits for 10k each - obviously, this requires you to have large numbers.

2) How do you want interaction between level ranges to work?

If you want it to be trivial to go through lower level areas, then a higher curve means a lower level enemy will quickly be ineffective against you (however, see below*). Conversely, if there's a way for a player to access higher level material (some end-game dungeon or something), they will be unable to do anything against it until they get to a certain level.

This can make the balancing of your game trickier, however, as any given spot is going to have a "sweet spot" in terms of a level where the balance is what you want, and the player being under-/over-leveled will drastically affect that. Balance is much more forgiving with a linear progression.

*One game series that takes this approach and handles it very well is Suikoden. When you get to a new, higher-level area, the first few fights will be very challenging, but defeating enemies gives you a ton of experience so that you quickly level up to them. Once you've done 3-4 battles to level up, the exp curve flattens right out and you're at that appropriate level for the rest of that area.

Also, when fighting lower level enemies, the Escape option changes to Release, so you're not forced to fight battles that won't give you rewards, you just let them go.

#### Milennin

##### "With a bang and a boom!"
I go all linear with level-ups. Nothing fancy, but it gets the job done.

#### Tai_MT

##### Veteran
Personally, I don't like "bloat". If a monster dies in 3 hits, it doesn't matter if we're hitting 10 damage per hit or 1,000,000,000,000,000. The end result is the same. The only difference is some people just really like seeing big numbers. Because, big numbers divorced from context are so SUPER COOL.

Yeah, I don't understand those players either. I don't design for such players. They're non-sensical.

So, I tend to have "linear" progression. A few points at a time per stat. A few points per new piece of equipment. Nothing crazy. Steadily increasing numbers.

But, I also like combat systems built around gimmicks and tactics... so smaller numbers are much easier to balance to keep your gimmicks and tactics... intact.

#### Frostorm

##### []D[][]V[][]D
So I didn't want to create another thread to ask a single question so I figured I'd ask here. Anyway, I'm having trouble coming up w/ a logarithmic formula w/ the following requirements:
Lv1 = 10
Lv50 = 200
Other than that, I just need a graph that looks like a "hill" or "hump". It doesn't have to be particularly steep or anything. I've been trying my luck w/ https://www.desmos.com/calculator but haven't been able to get the results I want...

Edit: Looks like `y = 56 * log(a.level ** 2) + 10` get's me pretty close!
Edit2: Went back into my old math textbooks and got a refresher on Vertex notation! Basically, I can set the vertex of the parabola, like this... `y=a(x - h)^2+k`

So in my case, I need a lv1 to yield a value of 10, thus I solve for a:
10 = a * (1 - 50) ** 2 + 200
a = -190/2401
Therefore, my formula shall be: `y=-(190/2401)*(actor.level-50)**2+200`

Last edited:

#### GregorDuckman

##### Villager
I'm having trouble coming up w/ a logarithmic formula w/ the following requirements:
Lv1 = 10
Lv50 = 200
A logarithmic function that goes through these two points wouldn't be purely logarithmic, it would have to be [Stat] = A * ln( [Level] ) + B, where A and B are constants to fit the two points. You'd have:

B = 10; //B is the value of the stat at level 1.
A = ( 200 - B ) / ln(50); //A is the value at level X minus the value of B, all divided by ln(X).

#### Frostorm

##### []D[][]V[][]D
A logarithmic function that goes through these two points wouldn't be purely logarithmic, it would have to be [Stat] = A * ln( [Level] ) + B, where A and B are constants to fit the two points. You'd have:

B = 10; //B is the value of the stat at level 1.
A = ( 200 - B ) / ln(50); //A is the value at level X minus the value of B, all divided by ln(X).
Why is it divided by ln(x) just to be multiplied by ln(x) right after? Won't that cancel each other out? Cuz I plugged in your formula, and that's what it suggests...

[Stat] = A * ln( [Level] ) + B
[Stat] = ((200 - 10) / ln(x)) * ln(x) + 10

Edit: Nvm, I figured it out... [Stat] = (200 - 10) / ln(50) * ln(x) + 10
Also, I put them in graph form for easy comparison. However, it turns out that the log function is too "steep" for my needs. I'll keep playing around w/ it tho...

Last edited:

#### GregorDuckman

##### Villager
However, it turns out that the log function is too "steep" for my needs. I'll keep playing around w/ it tho...
This is true, because of the logarithm being the inverse of the exponential, logarthims grow very quickly at first but very slowly towards the end, that's why your blue curve manages to cross over it towards the end.

I'm assuming your system has a level cap at Lv. 50? If not, you'll run into trouble with a parabola, because the stats will start to decrease past level 50. If you want, you could try square/cubic/fractional roots to see if they have a good apparent growth, such as:

[Stat] = A * ( [Level] - 1 ) ** (p) + B, where B is the "level 1" stat, p is the fraction (1 makes it linear, 0.5 makes it square root, 0.333333 makes it cube root, etc.) and A is a scaling factor. p controls the curvi-ness and A controls the steepness. If you want to be able to calculate a value of A from a given end point (ie 200 as in the previous example), you need to choose a value for p first, which will be arbitrary.

#### Frostorm

##### []D[][]V[][]D
I'm assuming your system has a level cap at Lv. 50?
That is correct, the lv cap in my project is 50. I'll try out this latest formula as well, thx!

### Latest Profile Posts

I'm just so close to replacing LUK with a different stat, maybe DEX but we'll see.
Slapped together a title screen and working on some dungeon clutter + portraits for Dubhghaill and Einar. Usual CW for minor body horror wrt Einar

>studying for months for an exam
>does exam
>waits 3 months for the results to come out

What the heck. As a son of a Karen, I'm going to file a few complaints.
Apparently Amazon Prime users get free Genshin Impact stuff like primogems and whatnot every month, but I'm not sure I ever want to fall into the abyss of F2P ever again.