Author Topic: Experience formula  (Read 403 times)

Offline Chris

  • Game Owner
  • Level 35
  • *
  • Posts: 2,217
  • Reputation: +28/-1
    • View Profile
Experience formula
« on: December 15, 2011, 06:44:28 PM »
I need a formula that would behave more or less this way:

You get 100 experience per day (it is not affected by your current level, just flat +100 per day).

- during 1st day you reach level 3
- during first 7 days you reach level 10
- during first month one level per 3 days
- during first 3 months one level per 5 days
- after that one level per 10 days (it should keep this pace for 3 years)

I need it only roughly similar to this, this is more like a very general example than actual numbers desired.

Online Barrikor

  • Level 21
  • *
  • Posts: 248
  • Reputation: +3/-0
    • View Profile
Re: Experience formula
« Reply #1 on: December 15, 2011, 10:44:26 PM »
I took a stab at it using Python, my math is disjointed but the numbers look right, should work the same in PHP

Code: [Select]

from math import sqrt

numberOfDaysToTestRun = 365
flatExpiriancePerDay = 100

currentDay = 0
currentLevel = 0
totalExpiriance = 0



while currentDay < numberOfDaysToTestRun:
currentDay += 1
totalExpiriance = totalExpiriance + flatExpiriancePerDay

if totalExpiriance < 750: # to Day 7
levelSpeed = 0.38
numToAdd = 0
elif totalExpiriance < 3050: # to Day 30
levelSpeed = 0.31
numToAdd = 2
elif totalExpiriance < 9050: # to Day 90
levelSpeed = 0.32
numToAdd = 1
elif totalExpiriance < 36550 : # to Day  365
levelSpeed = 0.34
numToAdd = -1

currentLevel = int((levelSpeed * sqrt(totalExpiriance)) + numToAdd)


print 'day #' + str(currentDay), '   ---   Lvl', currentLevel, 'Exp', totalExpiriance



Yep, my math is terrible, "numToAdd" is a lame hack to fix the numbers where the leveling rate changes.


Output:

Code: [Select]

day #1    ---   Lvl 3 Exp 100
day #2    ---   Lvl 5 Exp 200
day #3    ---   Lvl 6 Exp 300
day #4    ---   Lvl 7 Exp 400
day #5    ---   Lvl 8 Exp 500
day #6    ---   Lvl 9 Exp 600
day #7    ---   Lvl 10 Exp 700
day #8    ---   Lvl 10 Exp 800
day #9    ---   Lvl 11 Exp 900
day #10    ---   Lvl 11 Exp 1000
day #11    ---   Lvl 12 Exp 1100
day #12    ---   Lvl 12 Exp 1200
day #13    ---   Lvl 13 Exp 1300
day #14    ---   Lvl 13 Exp 1400
day #15    ---   Lvl 14 Exp 1500
day #16    ---   Lvl 14 Exp 1600
day #17    ---   Lvl 14 Exp 1700
day #18    ---   Lvl 15 Exp 1800
day #19    ---   Lvl 15 Exp 1900
day #20    ---   Lvl 15 Exp 2000
day #21    ---   Lvl 16 Exp 2100
day #22    ---   Lvl 16 Exp 2200
day #23    ---   Lvl 16 Exp 2300
day #24    ---   Lvl 17 Exp 2400
day #25    ---   Lvl 17 Exp 2500
day #26    ---   Lvl 17 Exp 2600
day #27    ---   Lvl 18 Exp 2700
day #28    ---   Lvl 18 Exp 2800
day #29    ---   Lvl 18 Exp 2900
day #30    ---   Lvl 18 Exp 3000
day #31    ---   Lvl 18 Exp 3100
day #32    ---   Lvl 19 Exp 3200
day #33    ---   Lvl 19 Exp 3300
day #34    ---   Lvl 19 Exp 3400
day #35    ---   Lvl 19 Exp 3500
day #36    ---   Lvl 20 Exp 3600
day #37    ---   Lvl 20 Exp 3700
day #38    ---   Lvl 20 Exp 3800
day #39    ---   Lvl 20 Exp 3900
day #40    ---   Lvl 21 Exp 4000
day #41    ---   Lvl 21 Exp 4100
day #42    ---   Lvl 21 Exp 4200
day #43    ---   Lvl 21 Exp 4300
day #44    ---   Lvl 22 Exp 4400
day #45    ---   Lvl 22 Exp 4500
day #46    ---   Lvl 22 Exp 4600
day #47    ---   Lvl 22 Exp 4700
day #48    ---   Lvl 23 Exp 4800
day #49    ---   Lvl 23 Exp 4900
day #50    ---   Lvl 23 Exp 5000
day #51    ---   Lvl 23 Exp 5100
day #52    ---   Lvl 24 Exp 5200
day #53    ---   Lvl 24 Exp 5300
day #54    ---   Lvl 24 Exp 5400
day #55    ---   Lvl 24 Exp 5500
day #56    ---   Lvl 24 Exp 5600
day #57    ---   Lvl 25 Exp 5700
day #58    ---   Lvl 25 Exp 5800
day #59    ---   Lvl 25 Exp 5900
day #60    ---   Lvl 25 Exp 6000
day #61    ---   Lvl 25 Exp 6100
day #62    ---   Lvl 26 Exp 6200
day #63    ---   Lvl 26 Exp 6300
day #64    ---   Lvl 26 Exp 6400
day #65    ---   Lvl 26 Exp 6500
day #66    ---   Lvl 26 Exp 6600
day #67    ---   Lvl 27 Exp 6700
day #68    ---   Lvl 27 Exp 6800
day #69    ---   Lvl 27 Exp 6900
day #70    ---   Lvl 27 Exp 7000
day #71    ---   Lvl 27 Exp 7100
day #72    ---   Lvl 28 Exp 7200
day #73    ---   Lvl 28 Exp 7300
day #74    ---   Lvl 28 Exp 7400
day #75    ---   Lvl 28 Exp 7500
day #76    ---   Lvl 28 Exp 7600
day #77    ---   Lvl 29 Exp 7700
day #78    ---   Lvl 29 Exp 7800
day #79    ---   Lvl 29 Exp 7900
day #80    ---   Lvl 29 Exp 8000
day #81    ---   Lvl 29 Exp 8100
day #82    ---   Lvl 29 Exp 8200
day #83    ---   Lvl 30 Exp 8300
day #84    ---   Lvl 30 Exp 8400
day #85    ---   Lvl 30 Exp 8500
day #86    ---   Lvl 30 Exp 8600
day #87    ---   Lvl 30 Exp 8700
day #88    ---   Lvl 31 Exp 8800
day #89    ---   Lvl 31 Exp 8900
day #90    ---   Lvl 31 Exp 9000
day #91    ---   Lvl 31 Exp 9100
day #92    ---   Lvl 31 Exp 9200
day #93    ---   Lvl 31 Exp 9300
day #94    ---   Lvl 31 Exp 9400
day #95    ---   Lvl 32 Exp 9500
day #96    ---   Lvl 32 Exp 9600
day #97    ---   Lvl 32 Exp 9700
day #98    ---   Lvl 32 Exp 9800
day #99    ---   Lvl 32 Exp 9900
day #100    ---   Lvl 33 Exp 10000
day #101    ---   Lvl 33 Exp 10100
day #102    ---   Lvl 33 Exp 10200
day #103    ---   Lvl 33 Exp 10300
day #104    ---   Lvl 33 Exp 10400
day #105    ---   Lvl 33 Exp 10500
day #106    ---   Lvl 34 Exp 10600
day #107    ---   Lvl 34 Exp 10700
day #108    ---   Lvl 34 Exp 10800
day #109    ---   Lvl 34 Exp 10900
day #110    ---   Lvl 34 Exp 11000
day #111    ---   Lvl 34 Exp 11100
day #112    ---   Lvl 34 Exp 11200
day #113    ---   Lvl 35 Exp 11300
day #114    ---   Lvl 35 Exp 11400
day #115    ---   Lvl 35 Exp 11500
day #116    ---   Lvl 35 Exp 11600
day #117    ---   Lvl 35 Exp 11700
day #118    ---   Lvl 35 Exp 11800
day #119    ---   Lvl 36 Exp 11900
day #120    ---   Lvl 36 Exp 12000
day #121    ---   Lvl 36 Exp 12100
day #122    ---   Lvl 36 Exp 12200
day #123    ---   Lvl 36 Exp 12300
day #124    ---   Lvl 36 Exp 12400
day #125    ---   Lvl 37 Exp 12500
day #126    ---   Lvl 37 Exp 12600
day #127    ---   Lvl 37 Exp 12700
day #128    ---   Lvl 37 Exp 12800
day #129    ---   Lvl 37 Exp 12900
day #130    ---   Lvl 37 Exp 13000
day #131    ---   Lvl 37 Exp 13100
day #132    ---   Lvl 38 Exp 13200
day #133    ---   Lvl 38 Exp 13300
day #134    ---   Lvl 38 Exp 13400
day #135    ---   Lvl 38 Exp 13500
day #136    ---   Lvl 38 Exp 13600
day #137    ---   Lvl 38 Exp 13700
day #138    ---   Lvl 38 Exp 13800
day #139    ---   Lvl 39 Exp 13900
day #140    ---   Lvl 39 Exp 14000
day #141    ---   Lvl 39 Exp 14100
day #142    ---   Lvl 39 Exp 14200
day #143    ---   Lvl 39 Exp 14300
day #144    ---   Lvl 39 Exp 14400
day #145    ---   Lvl 39 Exp 14500
day #146    ---   Lvl 40 Exp 14600
day #147    ---   Lvl 40 Exp 14700
day #148    ---   Lvl 40 Exp 14800
day #149    ---   Lvl 40 Exp 14900
day #150    ---   Lvl 40 Exp 15000
day #151    ---   Lvl 40 Exp 15100
day #152    ---   Lvl 40 Exp 15200
day #153    ---   Lvl 41 Exp 15300
day #154    ---   Lvl 41 Exp 15400
day #155    ---   Lvl 41 Exp 15500
day #156    ---   Lvl 41 Exp 15600
day #157    ---   Lvl 41 Exp 15700
day #158    ---   Lvl 41 Exp 15800
day #159    ---   Lvl 41 Exp 15900
day #160    ---   Lvl 42 Exp 16000
day #161    ---   Lvl 42 Exp 16100
day #162    ---   Lvl 42 Exp 16200
day #163    ---   Lvl 42 Exp 16300
day #164    ---   Lvl 42 Exp 16400
day #165    ---   Lvl 42 Exp 16500
day #166    ---   Lvl 42 Exp 16600
day #167    ---   Lvl 42 Exp 16700
day #168    ---   Lvl 43 Exp 16800
day #169    ---   Lvl 43 Exp 16900
day #170    ---   Lvl 43 Exp 17000
day #171    ---   Lvl 43 Exp 17100
day #172    ---   Lvl 43 Exp 17200
day #173    ---   Lvl 43 Exp 17300
day #174    ---   Lvl 43 Exp 17400
day #175    ---   Lvl 43 Exp 17500
day #176    ---   Lvl 44 Exp 17600
day #177    ---   Lvl 44 Exp 17700
day #178    ---   Lvl 44 Exp 17800
day #179    ---   Lvl 44 Exp 17900
day #180    ---   Lvl 44 Exp 18000
day #181    ---   Lvl 44 Exp 18100
day #182    ---   Lvl 44 Exp 18200
day #183    ---   Lvl 44 Exp 18300
day #184    ---   Lvl 45 Exp 18400
day #185    ---   Lvl 45 Exp 18500
day #186    ---   Lvl 45 Exp 18600
day #187    ---   Lvl 45 Exp 18700
day #188    ---   Lvl 45 Exp 18800
day #189    ---   Lvl 45 Exp 18900
day #190    ---   Lvl 45 Exp 19000
day #191    ---   Lvl 45 Exp 19100
day #192    ---   Lvl 46 Exp 19200
day #193    ---   Lvl 46 Exp 19300
day #194    ---   Lvl 46 Exp 19400
day #195    ---   Lvl 46 Exp 19500
day #196    ---   Lvl 46 Exp 19600
day #197    ---   Lvl 46 Exp 19700
day #198    ---   Lvl 46 Exp 19800
day #199    ---   Lvl 46 Exp 19900
day #200    ---   Lvl 47 Exp 20000
day #201    ---   Lvl 47 Exp 20100
day #202    ---   Lvl 47 Exp 20200
day #203    ---   Lvl 47 Exp 20300
day #204    ---   Lvl 47 Exp 20400
day #205    ---   Lvl 47 Exp 20500
day #206    ---   Lvl 47 Exp 20600
day #207    ---   Lvl 47 Exp 20700
day #208    ---   Lvl 48 Exp 20800
day #209    ---   Lvl 48 Exp 20900
day #210    ---   Lvl 48 Exp 21000
day #211    ---   Lvl 48 Exp 21100
day #212    ---   Lvl 48 Exp 21200
day #213    ---   Lvl 48 Exp 21300
day #214    ---   Lvl 48 Exp 21400
day #215    ---   Lvl 48 Exp 21500
day #216    ---   Lvl 48 Exp 21600
day #217    ---   Lvl 49 Exp 21700
day #218    ---   Lvl 49 Exp 21800
day #219    ---   Lvl 49 Exp 21900
day #220    ---   Lvl 49 Exp 22000
day #221    ---   Lvl 49 Exp 22100
day #222    ---   Lvl 49 Exp 22200
day #223    ---   Lvl 49 Exp 22300
day #224    ---   Lvl 49 Exp 22400
day #225    ---   Lvl 50 Exp 22500
day #226    ---   Lvl 50 Exp 22600
day #227    ---   Lvl 50 Exp 22700
day #228    ---   Lvl 50 Exp 22800
day #229    ---   Lvl 50 Exp 22900
day #230    ---   Lvl 50 Exp 23000
day #231    ---   Lvl 50 Exp 23100
day #232    ---   Lvl 50 Exp 23200
day #233    ---   Lvl 50 Exp 23300
day #234    ---   Lvl 51 Exp 23400
day #235    ---   Lvl 51 Exp 23500
day #236    ---   Lvl 51 Exp 23600
day #237    ---   Lvl 51 Exp 23700
day #238    ---   Lvl 51 Exp 23800
day #239    ---   Lvl 51 Exp 23900
day #240    ---   Lvl 51 Exp 24000
day #241    ---   Lvl 51 Exp 24100
day #242    ---   Lvl 51 Exp 24200
day #243    ---   Lvl 52 Exp 24300
day #244    ---   Lvl 52 Exp 24400
day #245    ---   Lvl 52 Exp 24500
day #246    ---   Lvl 52 Exp 24600
day #247    ---   Lvl 52 Exp 24700
day #248    ---   Lvl 52 Exp 24800
day #249    ---   Lvl 52 Exp 24900
day #250    ---   Lvl 52 Exp 25000
day #251    ---   Lvl 52 Exp 25100
day #252    ---   Lvl 52 Exp 25200
day #253    ---   Lvl 53 Exp 25300
day #254    ---   Lvl 53 Exp 25400
day #255    ---   Lvl 53 Exp 25500
day #256    ---   Lvl 53 Exp 25600
day #257    ---   Lvl 53 Exp 25700
day #258    ---   Lvl 53 Exp 25800
day #259    ---   Lvl 53 Exp 25900
day #260    ---   Lvl 53 Exp 26000
day #261    ---   Lvl 53 Exp 26100
day #262    ---   Lvl 54 Exp 26200
day #263    ---   Lvl 54 Exp 26300
day #264    ---   Lvl 54 Exp 26400
day #265    ---   Lvl 54 Exp 26500
day #266    ---   Lvl 54 Exp 26600
day #267    ---   Lvl 54 Exp 26700
day #268    ---   Lvl 54 Exp 26800
day #269    ---   Lvl 54 Exp 26900
day #270    ---   Lvl 54 Exp 27000
day #271    ---   Lvl 54 Exp 27100
day #272    ---   Lvl 55 Exp 27200
day #273    ---   Lvl 55 Exp 27300
day #274    ---   Lvl 55 Exp 27400
day #275    ---   Lvl 55 Exp 27500
day #276    ---   Lvl 55 Exp 27600
day #277    ---   Lvl 55 Exp 27700
day #278    ---   Lvl 55 Exp 27800
day #279    ---   Lvl 55 Exp 27900
day #280    ---   Lvl 55 Exp 28000
day #281    ---   Lvl 55 Exp 28100
day #282    ---   Lvl 56 Exp 28200
day #283    ---   Lvl 56 Exp 28300
day #284    ---   Lvl 56 Exp 28400
day #285    ---   Lvl 56 Exp 28500
day #286    ---   Lvl 56 Exp 28600
day #287    ---   Lvl 56 Exp 28700
day #288    ---   Lvl 56 Exp 28800
day #289    ---   Lvl 56 Exp 28900
day #290    ---   Lvl 56 Exp 29000
day #291    ---   Lvl 56 Exp 29100
day #292    ---   Lvl 57 Exp 29200
day #293    ---   Lvl 57 Exp 29300
day #294    ---   Lvl 57 Exp 29400
day #295    ---   Lvl 57 Exp 29500
day #296    ---   Lvl 57 Exp 29600
day #297    ---   Lvl 57 Exp 29700
day #298    ---   Lvl 57 Exp 29800
day #299    ---   Lvl 57 Exp 29900
day #300    ---   Lvl 57 Exp 30000
day #301    ---   Lvl 57 Exp 30100
day #302    ---   Lvl 58 Exp 30200
day #303    ---   Lvl 58 Exp 30300
day #304    ---   Lvl 58 Exp 30400
day #305    ---   Lvl 58 Exp 30500
day #306    ---   Lvl 58 Exp 30600
day #307    ---   Lvl 58 Exp 30700
day #308    ---   Lvl 58 Exp 30800
day #309    ---   Lvl 58 Exp 30900
day #310    ---   Lvl 58 Exp 31000
day #311    ---   Lvl 58 Exp 31100
day #312    ---   Lvl 59 Exp 31200
day #313    ---   Lvl 59 Exp 31300
day #314    ---   Lvl 59 Exp 31400
day #315    ---   Lvl 59 Exp 31500
day #316    ---   Lvl 59 Exp 31600
day #317    ---   Lvl 59 Exp 31700
day #318    ---   Lvl 59 Exp 31800
day #319    ---   Lvl 59 Exp 31900
day #320    ---   Lvl 59 Exp 32000
day #321    ---   Lvl 59 Exp 32100
day #322    ---   Lvl 60 Exp 32200
day #323    ---   Lvl 60 Exp 32300
day #324    ---   Lvl 60 Exp 32400
day #325    ---   Lvl 60 Exp 32500
day #326    ---   Lvl 60 Exp 32600
day #327    ---   Lvl 60 Exp 32700
day #328    ---   Lvl 60 Exp 32800
day #329    ---   Lvl 60 Exp 32900
day #330    ---   Lvl 60 Exp 33000
day #331    ---   Lvl 60 Exp 33100
day #332    ---   Lvl 60 Exp 33200
day #333    ---   Lvl 61 Exp 33300
day #334    ---   Lvl 61 Exp 33400
day #335    ---   Lvl 61 Exp 33500
day #336    ---   Lvl 61 Exp 33600
day #337    ---   Lvl 61 Exp 33700
day #338    ---   Lvl 61 Exp 33800
day #339    ---   Lvl 61 Exp 33900
day #340    ---   Lvl 61 Exp 34000
day #341    ---   Lvl 61 Exp 34100
day #342    ---   Lvl 61 Exp 34200
day #343    ---   Lvl 61 Exp 34300
day #344    ---   Lvl 62 Exp 34400
day #345    ---   Lvl 62 Exp 34500
day #346    ---   Lvl 62 Exp 34600
day #347    ---   Lvl 62 Exp 34700
day #348    ---   Lvl 62 Exp 34800
day #349    ---   Lvl 62 Exp 34900
day #350    ---   Lvl 62 Exp 35000
day #351    ---   Lvl 62 Exp 35100
day #352    ---   Lvl 62 Exp 35200
day #353    ---   Lvl 62 Exp 35300
day #354    ---   Lvl 62 Exp 35400
day #355    ---   Lvl 63 Exp 35500
day #356    ---   Lvl 63 Exp 35600
day #357    ---   Lvl 63 Exp 35700
day #358    ---   Lvl 63 Exp 35800
day #359    ---   Lvl 63 Exp 35900
day #360    ---   Lvl 63 Exp 36000
day #361    ---   Lvl 63 Exp 36100
day #362    ---   Lvl 63 Exp 36200
day #363    ---   Lvl 63 Exp 36300
day #364    ---   Lvl 63 Exp 36400
day #365    ---   Lvl 63 Exp 36500

Projects: Pith Framework (at 0.5), CactusGUI (at 0.3)

Offline arai

  • Level 6
  • *
  • Posts: 22
  • Reputation: +1/-0
    • View Profile
Re: Experience formula
« Reply #2 on: December 16, 2011, 04:25:56 AM »
Just to be clear, you're looking for a smooth relationship between absolute level and the xp required to fulfill that level (barring any experience requirements for previous levels)?

Offline Chris

  • Game Owner
  • Level 35
  • *
  • Posts: 2,217
  • Reputation: +28/-1
    • View Profile
Re: Experience formula
« Reply #3 on: December 16, 2011, 07:36:19 AM »
I would prefer a formula rather than an alogrithm (no "if" statements, preferably pure math).

Just to be clear, you're looking for a smooth relationship between absolute level and the xp required to fulfill that level (barring any experience requirements for previous levels)?
You used a lot of difficult words :) I basicly need something similar to this:

experiencerequired = (2^level)*10


Offline Monatar

  • Level 4
  • *
  • Posts: 11
  • Reputation: +2/-0
    • View Profile
Re: Experience formula
« Reply #4 on: December 16, 2011, 08:23:29 AM »
This is quite similar to a sqrt-function.

The formula would be something like: Level = 3.33 * sqrt(daysPlayed).

Days / Yours / Formula
1........ 3.......... 3.33
7........ 10........ 8.82
30...... 17.67... 18.26
90...... 29.67... 31.62
360.... 56.67... 63.25
1000.. 120.67. 105.41

Offline AltarofScience

  • Level 12
  • *
  • Posts: 90
  • Reputation: +1/-0
    • View Profile
Re: Experience formula
« Reply #5 on: December 16, 2011, 04:49:38 PM »
To keep it stable after a while you would have to cap it. So you need an if statement of some kind.

Offline arai

  • Level 6
  • *
  • Posts: 22
  • Reputation: +1/-0
    • View Profile
Re: Experience formula
« Reply #6 on: December 16, 2011, 05:57:03 PM »
You used a lot of difficult words :) I basicly need something similar to this:

experiencerequired = (2^level)*10

I'm sorry if my difficult words intimidated you :P

Lets take Monatar's equation as a base:


This is a pretty good start, but I graphed it and felt that a slight adjustment to a few constants would make for a better fit:


While this is great, the relationship should really be between xp and level, not days and level.  Fortunately we can substitute this:


Into eq2 to get:


Now all we need to do is turn the equation inside out...


And calculate it's derivative:


And vola, your experience formula.  The cost of raising a character's level from l-1 to l is roughly x experience.

A few tests:









It's all simple algebra and calculus, so it shouldn't be too hard for you to modify on your own if you want to try.
« Last Edit: December 16, 2011, 07:34:34 PM by arai »

Offline arai

  • Level 6
  • *
  • Posts: 22
  • Reputation: +1/-0
    • View Profile
Re: Experience formula
« Reply #7 on: December 16, 2011, 07:12:05 PM »
Haha, I'm an idiot.

For even simpler math, reduce Monatar's equation in the other direction, down to: l = 3d^0.5

That gives you: l = 3(x/100)^0.5 or x = 100(l/3)^2

Derivative is: x' = (200/3^2)l or approx 22l.



Looking back at Montar's original equation: x' = (200/3.33^2)l or approx 18l.



Since you're making stuff up anyways, you might as well set it to 16l.

It should fit your requirements pretty well, and then you can use the arithmetic shift operator to keep your code optimized, and be the cool kid on the block  ;D

x = l << 4 // FOR THE WIN!

And I am so done thinking about this.
« Last Edit: December 16, 2011, 07:43:23 PM by arai »

 


SimplePortal 2.3.3 © 2008-2010, SimplePortal