I'm looking for some math to "degrade" stats over level. The idea is that if you have x value for a stat that it's affect will be less when you increase your level, making you have to put more points into that stat to maintain.

For my specific example I have a stat I call Focus. I want the Focus stat combined with the level to create a percentage. I will use this percentage against each abilities damage/heal value to get a value. This value will act as the low end and the abilities value will act as the high end for finding a random number between. So if "Strike" has a value of 10 and my focus % is 50% then then I find a random number between 5 and 10 to get the actual damage to apply.

So at level 1 ideally this % is 100% (so "Strike" will do 10 damage always). At level 2 with no more points in the Focus stat, I want this final % to go down but putting points into the Focus stat could keep it up.

This seems like the kind of thing every RPG game has, but I'm not sure how it's done. I'm picturing all stats being like this. Each level I would increase base damage/heal values for abilities by x% and then degrade other stats. Like strength for example. The idea would be to try and keep the strength state so it results in 100% of the ability damage by putting points into it each level.

Does this make sense or am I way off base in my thinking on how this kind of stuff is done or can be done?

• Is it as easy as saying each level reduces the stat effectiveness by some % and each point added increases it's % by some value and the 2 counter each other and by having this "some value" be slightly different results in a spread eventually over time so players can't get 100% effectiveness in all stats but have to prioritize what they want? May 18, 2015 at 16:05
• I don't think you want to degrade stats directly. Rather, you want them to be less effective relatively; the number doesn't go down or anything, but since everything else is getting more powerful you get the whole "sitting still is falling behind" effect. May 18, 2015 at 16:15
• I agree. There has to be some standard ideas around this. Has anyone make a library that handles all these already? May 18, 2015 at 16:24

What jhocking said in the comments is what's common in games. I don't think I could name a single game that uses the concept in the question. By that I mean that games commonly have increasingly difficult challenges/enemies such that a protagonist who does not "level" appropriately finds the challenges more and more difficult.

Your obstacle is not in implementing this concept (simply having a stat decrease every level is trivial). Your obstacle is in explaining this mechanic to the player. Simply having a "Focus" stat decrease every level with no explanation could be frustrating, confusing, and conflicts with any other RPG they might have ever played.

One reasonable solution to relaying this properly to the player is to wrap the statistic in language explaining it as a skill specifically relative to level. That is, explain that the Focus stat at level 1 is maxed at 1. Upon gaining the second level, the Focus stat remains at 1, thus lowering the effectiveness of all abilities. Couch that statistic in the same numerals used for "levels", always ensuring that "100% Focus" is "Focus = Level". You could explain that each point below Level lowers the effectiveness a fraction, or you could give the percentage to the player ("Each point Focus is lower, all abilities are 10% lower in damage!")

In addition to having a Stat variable, have a StatIncrease variable and decrease StatIncrease with every level. I.e.:

float Stat = 0f;
float StatIncrease = 10f;

void LevelUp ()
{
Stat += StatIncrease;
StatIncrease *= .9;
}

• That would be so-un-manageable over time. "What's that, there was a bug where player B received less of an increase than they should have? What was their StatIncrease at that time? No idea, it's changed since then." - "Oh, role Paladin had a OP&broken statincrease of 345f? We'd better nerf Paladins, but how much did players gain in the meantime?" Hard to deal with. Feb 5, 2016 at 15:11