This question already has an answer here:

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.)


marked as duplicate by Anko, MichaelHouse May 3 '14 at 15:13

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


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. ;)


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)


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