Frostorm

[]D[][]V[][]D aka "Staf00"
Veteran
Joined
Feb 22, 2016
Messages
1,846
Reaction score
1,608
First Language
English
Primarily Uses
RMMV
@Wavelength As the person who put forth the idea of Utility Scaling, I was curious if you prefer percentage or flat number bonuses for skills that use Utility Scaling. Since the nature of percentages means they intrinsically scale with the target's stats, making the % bonus scale with the user's stats is basically like having a number being multiplied twice, i.e. a quadratic function.

Example: Let's compare a low lv Mage & Warrior vs a high lv Mage & Warrior and also compare it using Utility Scaling vs normal scaling. I'm just going to keep using the Stoneskin example btw.

Low Lv Normal Scaling: Stoneskin increases DEF by 50%
Mage: 10 MAT, Warrior: 10 DEF
= +5 DEF for the Warrior, giving him a total of 15 DEF

High Lv Normal Scaling: Stonskin increases DEF by 50%
Mage: 100 MAT, Warrior: 100 DEF
= +50 DEF for the Warrior, giving him a total of 150 DEF

Low Lv Utility Scaling: Stoneskin increases DEF by MAT%
= +1 DEF for the Warrior, giving him a total of 11 DEF

High Lv Utility Scaling: Stoneskin increases DEF by MAT%
= +100 DEF for the Warrior, giving him a total of 200 DEF

Notice how Utility Scaling results in a wider spread. In essence, it's weaker when your a scrub and it's stronger when during end/late-game. Look at this next example where I try to balance that formula and find a good midpoint, otherwise, the results could have easily been too one-sided for either the low or high levels.

Low Lv Utility Scaling: Stoneskin increases DEF by 25%+(MAT÷2)%
= +3 DEF for the Warrior, giving him a total of 13 DEF

High Lv Utility Scaling: Stoneskin increases DEF by 25%+(MAT÷2)%
= +75 DEF for the Warrior, giving him a total of 175 DEF
 
Last edited:

Wavelength

MSD Strong
Global Mod
Joined
Jul 22, 2014
Messages
6,050
Reaction score
5,707
First Language
English
Primarily Uses
RMVXA
So I've had several months to work on this in my game and test stuff out, and as @Frostorm noticed recently, something I did find was that (assuming characters' stats scale up throughout the game) Utility Scaling tends to work better with absolute amounts (such as +50 ATK) rather than percentage adjustments (such as +50% ATK) - because otherwise you get the quadratic "double scaling" of the target's base stat and the user's utility stat, as in his example above.

When feasible, I aim for States and other effects that use absolute amounts, rather than percentage adjustments. However, there are times where that isn't feasible - for example, a state that changes a battler's Element Rate (makes an enemy weak to elements, or makes an ally resistant to them). The value being adjusted is a % on its own, so introducing Utility Scaling makes the state much more valuable in the late-game than the early-game, to the point it causes balance issues. What I do for situations like this is to add a base amount of % adjustment to the state (regardless of utility scaling), such as 20%. That's added to a utility scaling part of it, for example 1% per 10 MAT that the caster who applied the state has. In most cases like this, I also use Diminishing Returns on the total amount - for example, I might apply diminishing returns after 50%, up to a theoretical maximum of 100% (the most the state could do if the caster had infinity MAT power). (I describe the formulas for creating this kind of diminishing returns dynamic here.)

The one other problematic area is disable states (like Stun and Petrify). It can be problematic if you are using only the caster's stats in the Utility Scaling effect, because - for example - what is a two-turn stun early in the game will be a ten-turn stun late-game, which is ridiculous. A good solution is to use one of the target's stats in the Utility Scaling effect as well, providing an opposite effect to the caster's stats. At first I was playing around an "Aura" stat whose purpose was to reduce the length and/or magnitude of all incoming hostile states. It was cool in that it had a unique purpose, but I found that it just wasn't as useful as most other stats. So what I did was I only used the caster's stats for most states, but for disables and other gamebreakers, I use the target's Max HP stat to reduce the effect. Not only does this scale well against the caster's growing stats throughout the game, meaning that in general these disable states remain about equally useful all game long, but it provides the additional benefit of making these disables considerably weaker against bosses (who usually have pretty high Max HP totals), meaning I can freely allow players to use disables against bosses without making it a matter of "keep boss in stun-lock, free win".
 

Frostorm

[]D[][]V[][]D aka "Staf00"
Veteran
Joined
Feb 22, 2016
Messages
1,846
Reaction score
1,608
First Language
English
Primarily Uses
RMMV
@Wavelength Cool, it's reassuring to see you came to the same conclusions I did. Looks like you've employed the +base amount technique as well, like in your element rate example. Diminishing returns sound promising, idk why I hadn't considered it when I already use diminishing returns for armor scaling/damage reduction. Your solution for disable states is most impressive btw! Using target HP is ideal in such scenarios. Again, idk why it hadn't crossed my mind when I already use the same technique (of using target's Max HP) for my Assassinate & Headshot skills. Simply genius in its simplicity and elegance.:kaopride:
 

Wavelength

MSD Strong
Global Mod
Joined
Jul 22, 2014
Messages
6,050
Reaction score
5,707
First Language
English
Primarily Uses
RMVXA
@Wavelength Cool, it's reassuring to see you came to the same conclusions I did.
Likewise ;)

Looks like you've employed the +base amount technique as well, like in your element rate example. Diminishing returns sound promising, idk why I hadn't considered it when I already use diminishing returns for armor scaling/damage reduction. Your solution for disable states is most impressive btw! Using target HP is ideal in such scenarios. Again, idk why it hadn't crossed my mind when I already use the same technique (of using target's Max HP) for my Assassinate & Headshot skills. Simply genius in its simplicity and elegance.:kaopride:
Oh! Thank you for such kind compliments... honestly, the reason you might not have considered it is just that you haven't been thinking about it for months and months. The Max HP-as-disable-defense one in particular took a long time, and a lot of grasping at whatever levers I had to see if they might make for good design. A lot of them made no sense or left open severe abuse cases, but when I stumbled upon and thought through Max HP, it seemed to work very gracefully. It was a stroke of luck more than anything.
 

Frostorm

[]D[][]V[][]D aka "Staf00"
Veteran
Joined
Feb 22, 2016
Messages
1,846
Reaction score
1,608
First Language
English
Primarily Uses
RMMV
It almost feels like we (as in some of us in the RPG Maker community) put more thought and effort into our combat mechanics/formulas than some AAA titles. Or maybe I just haven't experienced enough "behind-the-scenes" work of the AAA devs. But many of the examples I see throughout the forum just seem more sophisticated or well designed than many well-known RPGs.
 

Frostorm

[]D[][]V[][]D aka "Staf00"
Veteran
Joined
Feb 22, 2016
Messages
1,846
Reaction score
1,608
First Language
English
Primarily Uses
RMMV
So I just thought of something that I'm not sure will be an issue or not. Basically, let's say our hero is a Mage type character or something w/ a spell that buffs the target's MAT by an amount that scales w/ the caster's MAT. My question is if the caster casts this on themselves, will there be some kind of infinitely looping calculations going on? Let's say, for simplicity, the formula would be: value = a.mat / 2

Edit: Nvm, I just realized it would only check once, silly me lol.
 

Wavelength

MSD Strong
Global Mod
Joined
Jul 22, 2014
Messages
6,050
Reaction score
5,707
First Language
English
Primarily Uses
RMVXA
So I just thought of something that I'm not sure will be an issue or not. Basically, let's say our hero is a Mage type character or something w/ a spell that buffs the target's MAT by an amount that scales w/ the caster's MAT. My question is if the caster casts this on themselves, will there be some kind of infinitely looping calculations going on? Let's say, for simplicity, the formula would be: value = a.mat / 2

Edit: Nvm, I just realized it would only check once, silly me lol.
Yeah, the way that I employ it at least, the caster's appropriate stat is checked once during the skill usage, before the effect of the skill is applied (in this case a state that buffs that same stat). So there are no loops or infinitely-scaling formulas. However, if the caster was to use the MAT-increasing spell (which also scales on MAT) on herself, then cast it on herself or anyone else the next turn, the second state applied will be more powerful than the first!

Just checked it in my own Utility Scaling setup - her original MAT was 265, casting it on herself once brought her MAT to 299, and then casting it on herself again brought her MAT to 305 (as the more powerful version of the state took priority over the less powerful version she already had on her). Had she cast the second buff spell on an ally after casting the first on herself, it would have brought about the same 40 MAT boost (regardless of whether they already had the weaker version on them, and also regardless of their base MAT - so for example, it might increase them from 82 MAT to 122). I don't have much of a point here, but I think that's kind of cool, the way you can keep reaching higher heights, albeit with diminishing returns.

Getting very deep into theory here, if the formula for how much of a boost you'd get was simpler, such as your "value = a.mat / 2" example, and only one version of the state can provide value at a time (rather than full stacking), then the maximum amount a battler could boost themselves to could be calculated using a logarithmic equation, which is essentially 1 / (1 - preservation) where "preservation" is the percentage of the user's MAT we are applying to the target's MAT. So 50% in your example, because if the user's MAT is 100 we are only boosting the target's by 50. 1/(1-0.5) = 2, which means that the maximum amount the character could buff herself to, after casting this spell infinite times on herself, would be 2x her original, base MAT before she uses this spell (casting a very large number of times would also get her there due to rounding). If the equation were "value = a.mat / 3", the preservation is now one-third (0.333), so the maximum becomes 1/(1 - 0.333) = 1.5x her original MAT. Where preservation is greater than 100% (e.g. "value = a.mat * 2"), infinitely-high scaling is possible by repeatedly casting the buff spell on herself. :p
 

Latest Threads

Latest Posts

Latest Profile Posts

Quite the versatile cast so far :p

Characters.PNG
Degica Games Turn Komodo | RPG Maker News #77

Well, rats. Was really looking forward to trying out FPS Creator, but trying to install and set it up was pretty much impossible for my tiny brain to comprehend. So much for that, then.
Ah, home once more! I think I can safely work on my games now.
Let's hope power remains on for the day

Forum statistics

Threads
112,405
Messages
1,068,090
Members
146,055
Latest member
djdune
Top