Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to create some of the fundamental guideline formulas for a game I am working on. I am following on from sirlin's advice in that I am starting with some assumptions and working back from there.

So let's say that I want to have the player do an average of 1000hp damage at level 100 and 10 at level one. Is there a tool that I could use to draw this (a low exponential curve) and it would spit out a formula based on the curve?

There are some similar questions on here but none that I can find with any advice on the specifics of making the formulas for these progress curves.


share|improve this question
RPG Maker has a lot of that kind of stuff built in – Tetrad Mar 5 '12 at 21:52
Excel (or Google Docs) and WolframAlpha – Byte56 Mar 5 '12 at 21:59
None, either you grow mathematically literate or there ain't much hope. Though do note that simply being able to do maths is not enough, you have to do a combination of gameplay and maths, figuring what equations to solve is much harder than actually solving them. – aaaaaaaaaaaa Mar 6 '12 at 19:48
up vote 4 down vote accepted

Since you want an exponential curve, maybe you could teach yourself logarithms so that you are comfortable enough to solve your problem by yourself?

There are basically three things to know:

  • the reverse operation of exp is log: log(exp(a)) = a
  • exp(a+b) = exp(a) * exp(b)
  • log(a*b) = log(a) + log(b)

Let’s see your specific problem. You want a rule such that:

damage = A * exp(B * level)

Now we just need to find A and B. Write down your two requirements (damage 1000 at level 100, damage 10 at level 1):

1000 = A * exp(B * 100)
10 = A * exp(B * 1)

If these are equal, then certainly their logarithms are equal:

log(1000) = log(A * exp(B * 100))
log(10) = log(A * exp(B * 1))

Use rule 3 to break down log(a*b):

log(1000) = log(A) + log(exp(B * 100))
log(10) = log(A) + log(exp(B * 1))

Use rule 1 to get rid of log(exp(…)):

log(1000) = log(A) + B * 100
log(10) = log(A) + B

Subtract through:

log(1000) - log(10) = B * (100 - 1)

This gives the value for B:

B = (log(1000) - log(10)) / (100 - 1)

And from the original equation 10 = A * exp(B * 1) we get:

A = 10 / exp(B * 1)

The same method can be used to get a generic formula. You can replace 1, 10, 100 and 1000 with other values of your choice.

share|improve this answer

This may be controversial but get some graph paper. Draw in the axes and number range you want to cover (100 to 1000hp). Lay down a nice looking curve and read the numbers off to create your data table.

You need zero math; you can create any kind of curve imaginable and even curves with "hell levels" or "easy street" areas that would take a mathematician and a lot of code to mimic.

Plus you can easily take these numbers and hand tweak ranges that don't feel right during game testing without having to do even more corrective math.

share|improve this answer
Though, notice, if you start from a graph you'd better make all the adjustments in the graph first, even at a later stage. – o0'. Mar 6 '12 at 11:02
@Lohoris Very true. And vice versa, if you change then numbers so they feel better to play then go back and remake the graph. – Patrick Hughes Mar 6 '12 at 23:55

Use the Wolfram Alpha Regression to fit array of data into a specific type of function. Given your example, it would be something like cubic fit {1,10}, {100,1000}. Try out different models (linear, logarithmic etc.) to get different types of resulting curves

Examples of regression analysis

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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