the way to do it would be to not do it, because relative enemies to an absolute player renders leveling and equipment irrelevant.
basically: it doesn't matter how much the player grows, the enemy will always be stronger.
This is something I hear very often, and I agree to a certain extent. However, when saying that, people always forget to consider the following situation.
- - - - - - - - - - - - - -
Explanation
Let us assume that P(x) is the function to determine the player growth. I am going to call E(x) the function to determine a
certain enemy scaling; it refers to a random sample enemy, it does not matter which one but
it is not the same for every enemy (this is important). For arguments sake I am going to consider equipment growth as part of P(x) to simplify calculations.
The following statement is true:
Code:
P(x) = k * E(x), 0 < x < maxLv, 0 < k >= 1
The reason why k is greater than or equal to 1 is because otherwise leveling up would only hinder the player, which actually happens in a few bad scaled games, but I would rather refrain from considering them a good example here.
Now, it is true that we could consider another function and set it as our player growth function. Since doing something like this is possible
Code:
T(x) = P(x) / E(x) => P(x) = T(x) * E(x)
It means that we can simply eliminate E(x) from the equation. As a matter of fact, we could use T(x) as a growth function for our player, and doing that does not require enemy scaling.
Code:
T(x) * E(x) = k * E(x) => T(x) = k
While this is a mathematical truth, people usually stop analyzing at this point. However, that is completely wrong and greatly limits our possibilities. As I said, E(x) is different for each enemy. This means that
Code:
P(x) = k1 * E1(x) = k2 * E2(x) = ... = kn * En(x), n is the number of different enemies in the game
Considering this, what we did before is no longer possible. In fact, if we pick a random enemy growth function, we obtain something like this:
Code:
T(x) * Ei(x) = kf * Ef(x) => T(x) = kf * Ef(x) / Ei(x)
This gives a different result each time we change the pair of enemies involved. Since our player growth cannot change based on the enemy the player is facing, it goes without saying that it is no longer possible. And, in my opinion, the fact that, with an infinite amount of different possibilities, people always consider the only one that makes this system useless is quite disturbing. I mean, you have
INFINITE combinations and you have to pick the
ONLY ONE that makes the system useless? Why is intellectual honesty so difficult to find?
However, a formula like that would mean that the player can face any enemy at any level, but what really happens is that enemies do not use the same starting statistics as the player. If we include that into our formula we obtain this:
Code:
P(x) = k * E(x) + s, s > 0
This also means that using different coefficients (k) for different enemies can make certain enemies impossible to beat before a certain level is reached. At the same time the player would still experience the full extend of his or her growth against enemies whose growth rate goes toward 0 for x that goes toward infinity, but, the stronger the enemy, the longer it is going to represent a challenge for the player, even after growing.
Widening the gap between enemies is a way to keep the growth sensation, while making certain enemies represent a challenge for a bigger range of levels. It is also a way to keep challenging the player when he or she is close to the level cap, which is usually something that makes every single game less challenging. All that, without removing the growth sensation, because the number of monsters that have a growth rate comparable to that of the player (and it should still be lower in my opinion) is very limited.
- - - - - - - - - - - - -
That said, provided that I am not a fan of level scaling enemies, the dynamics that scaling enemies have to offer are:
- providing different level range until the player reaches the breakpoint for a certain enemy;
- providing a decent challenge when hitting the level cap against enemies that were not encountered too late in the game.
The only question we should ask ourselves when planning things is: do we need those dynamics in our game? If the answer is affirmative, using scaling enemy mechanics is not a bad idea, even if you are not a fan of those. It can really cut the time required to develop your combat system by a big amount since you can use the same enemies for a wider range of levels. Because of that, it also lowers the amount of resources required for your enemies.
My game uses the default class stats , so I figured enemies should be the same.
That might seriously be the wrong way to do it. As I said, if your enemies scale using the same formula as players, growing only hinders the player. Equipment would be much more effective at low levels rather than at high levels.
Code:
x/a > x/(n*a), x > 1, n > 1, a > 1
If you do it like that you make the same mistake they did in FFVIII and Oblivion. Just think about it. Which one is easier: killing a level 100 enemies with level 100 equipment or using the very same equipment to kill level 1 enemies?