0
\$\begingroup\$

I'm sort of a newbie here, so pardon me if I don't get any of the lingo right.

But I'm trying to create a level progression that charts with the "10,000 hr" rule such that, basically, each hour worked will equal 1 XP and level 99 (xx, if you will) charts with having accumulated 10,000 XP.

I understand how I can make a straight progression of levels, but what I really want to do is create a sloped progression, where you level up more often early and then it requires more and more effort to level up as the progress goes on. (The only targets, I guess, are level 1 being 0 and level 99 being 10,000.)

Any ideas? Can anyone help? (I'm sure this is simple, but if you can show me the way toward the answer, I'll gift you by first-born sword.)

\$\endgroup\$
0
\$\begingroup\$

A simple method is to use a Geometric Series:

TotalXP(level) = a + ar + ar^2 +...+ ar^(level-1)

Where a is the XP required to reach level 1, and r is the common ratio by which the level gaps increase.

Then the total XP is:

a(1 - r^maxLevel)/(1 - r)

You can plug in numbers for r until you get the steepness of acceleration that you want (say using a spreadsheet or graphing app), then divide your magic number 10 000 by (1-r^n)/(1-r) to get the required a.

As an aside, please don't make me work for a full hour to get one measly XP. ;)

|improve this answer|||||
\$\endgroup\$
0
\$\begingroup\$

What you want to generate is a table of values that can be hand-tweaked to adjust the gameplay experience as necessary.

To make the maths simple, generate a curve that goes from 0-1 on both axes and then scale the result as appropriate.

One possible curve that will give you fast progression at the start and slow at the end is simply:

xp_required = level * level

To get control of the steepness of the curve try a function of this form, where bigger values for k will give you steeper curves.

xp_required = (k^level - 1) / (k-1)

|improve this answer|||||
\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.