- Joined
- Mar 13, 2012
- Messages
- 1,188
- Reaction score
- 172
- First Language
- English
In my working with all the RPG Makers, I usually end up running into one problem.
Balancing level up and experience gain, and subsiquently, status up.
My first real scrip I wrote for VX was for adjusting the experience tree. The built in tree was too quick for me, even on the max settings. Then I looked back on my P&P (Pen and Paper) games and remember how long it often took to level up in some cases. So I set out to change the experience tree.
VX Experience tree
My first few tests was to play with 'm' and 'n' using variation of 100 and 10 without the additional math problems and found. Looking back in RPG Maker, I then set m and n to equal exp inflation.
this made it customisable in the maker, and crazy exponential, but I liked it, Still, inflation didn't go high enough. I needed something I can change easily. I needed to make a variable the game could read. I created "module Knoqledge"
This was getting numbers I liked. 100 for level 2. 200 more for level 3 (300 total). But got a little too high for my taste after that.
It needed slowing. i also wanted to be able to change the curve at certain points. I had already decided I was capping leveling.
Now for the labor testing. i needed to know what EXP was needed for level 10. After writing an event that levels me up I found and needed to cap it.
In the end, the script looked something like this.
##### was the experience reached at level 10. No mater what happened, my exp could not exceed that number. For added insurance, I think it capped level 10 anyways. You could also change the last part to the following I think too, but untested...
I know it looks crazy, and probably is, but if you don't NEED a lot of levels, it might be an option to consider.
What do you think of the leveling system as is (unscripted)? What would you think would be better?
Balancing level up and experience gain, and subsiquently, status up.
My first real scrip I wrote for VX was for adjusting the experience tree. The built in tree was too quick for me, even on the max settings. Then I looked back on my P&P (Pen and Paper) games and remember how long it often took to level up in some cases. So I set out to change the experience tree.
VX Experience tree
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = actor.exp_basis
n = 0.75 + actor.exp_inflation / 200.0;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= 1 + n;
n *= 0.9;
end
end
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = actor.exp_basis
n = 0.75 + actor.exp_inflation / 200.0;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= 1 + n;
n *= 0.9;
end
end
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = actor.exp_inflation
n = actor.exp_inflation;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= n;
n *= actor.exp_inflation;
end
end
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = actor.exp_inflation
n = actor.exp_inflation;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= n;
n *= actor.exp_inflation;
end
end
module Knowledge
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge
n = knowledge;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= n * i; #n still equal knowledge
end
end
end
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge
n = knowledge;
for i in 2..99
@exp_list = @exp_list[i-1] + Integer(m)
m *= n * i; #n still equal knowledge
end
end
end
It needed slowing. i also wanted to be able to change the curve at certain points. I had already decided I was capping leveling.
module Knowledge
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..99
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
end
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..99
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
end
In the end, the script looked something like this.
module Knowledge
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
def change_level(level, show)
level = [[level, 10].min, 1].max
change_exp(@exp_list[level], show)
end
def change_exp(exp, show)
last_level = @level
last_skills = skills
@exp = [[exp, ######].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show and @level > last_level
display_level_up(skills - last_skills)
end
end
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..99
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
end
$knowledge = #
end
class Game_Actor
def knowledge
return $knowledge
end
end
class Game_Actor < Game_Battler
def change_level(level, show)
level = [[level, 10].min, 1].max
change_exp(@exp_list[level], show)
end
def change_exp(exp, show)
last_level = @level
last_skills = skills
@exp = [[exp, ######].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show and @level > last_level
display_level_up(skills - last_skills)
end
end
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..99
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
end
#--------------------------------------------------------------------------
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..9
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
if i in 10..99
@exp_list = @exp_list[i-1] + Integer(m)
m = 0
end
# * Calculate Experience
#--------------------------------------------------------------------------
def make_exp_list
@exp_list[1] = @exp_list[100] = 0
m = knowledge;
for i in 2..5
@exp_list = @exp_list[i-1] + Integer(m)
m = knowledge * i
end
for i in 6..9
@exp_list = @exp_list[i-1] + Integer(m)
m += m
end
if i in 10..99
@exp_list = @exp_list[i-1] + Integer(m)
m = 0
end
What do you think of the leveling system as is (unscripted)? What would you think would be better?
Last edited by a moderator:



