ID:1197739
 
Hey there, I was recently working on Grenze Ditrict, and felt like it was missing something, and decided to start it from scratch again.
I have been polishing the stats and how they scales per level up.

What I really do to handle the progression of a player, each stat has a level, a value, an experience and a multiplier. To get the level of a player a simple operation to calculate the rate of each stat. I guess I will post in the snippet;

Stat
var
level = 1
experience = 0
max_experience = 100
growth_rate = 0.2
value
max_value
multiplier = 1

New() // No default args, just pass a same-name variable to initialize one of the variables with the given value.
for(var/v in args)
if(vars[v])vars[v] = args[v]
if(!value && max_value)value = max_value
return ..()


Heres how the grabbing of the overall level works, although it has not much science into it, lol.
        get_overall_level(percentage = 0)
var
thevalue
divisor = 0
for(var/v in vars[v])
if(!istype(v, /Stat))continue
thevalue += v:get_value("[v]")
divisor++
return round(thevalue / divisor)


The only part I am missing here is to know how to scale both, max_experience and max_value.
I have been told to use a sigmoid function and stuff, while I know the basics of mathematic, I don't really have the grasp of how to use aid formulas.
The real concern, is if is there anywhere where I can see some examples of the most used formula, their appliances, etc, and learn on the fly while not having to read my college math book.
Probably more a developer help post than design philosophy, but I think this is highly related to the design philosphy of the game, and more than a problem is a moral question about if go the easy way, or set up my mind and progress.
I tend to increase the exp by a percentage.

The problem is that over time the gains become larger.

10% increase in exp needed with exp starting around 100, by the time level 100 hits is upwards in the 2-3 millions or so.

What you could do is decrease the gains over time based on their level OR limit the exp gain.(aka after level 50 1.02-2 percent increase in overal exp needed.)


+10% exp needed to level up for the next level OR +2000 exp, whichever is the least amount.


Also you could either choose to reset exp to 0, or allow the player to keep their current Exp, towards leveling up for the next level (which would effectively decrease the amount of time they'd spend grinding exp.) This is used in one of my favorite games Final Fantasy 6/3
Another good way is to use a base percent for leveling, if you want a nice, steady leveling experience from 1 to level cap.

What I mean is, you start at 0% EXP, when you kill a monster of your level you gain 1% exp. If you kill a monster with a level above, you get +0.2% exp per level. If you kill a monster with a level lower than the player, they take an exp penalty of -0.2%. (To a maximum of -1% for no exp gain so the player doesn't LOSE exp for killing a monster really far below your level.)

The trick is for the enemies strategies to get more advanced to increase difficulty. Which is better for turn-based RPG's or RTS's. Also, if your game is meant to tell an interactive story rather than being totally combat focused, it can also work in this case too. (But only if you just sadistically hate yourself.)

If you don't advance the enemy strategies then it never gets more difficult and doesn't ever truly challenge the player's skills and abilities.

If you still want to increase the exp required to level, it still works perfectly. At level 1, you need 1000 exp to level, you gain 100 exp base +/-20 per level above/below. Ect ect yada yada. Increasing the required exp by 200 or something each level.