Wednesday, February 13, 2013

Implementing an EXP Curve

"Ranking up" has been implemented. Currently it has no effect on the actual gameplay, it just makes you feel good about yourself because you ranked up. Which isn't necessarily a bad thing.

I don't want ranking up to effect your stats in any way. That takes away from the loot, which needs to be all-important. So that's out. I would also like the game, to some extent, to scale with your level. Weak enemies will stay weak, strong enemies will stay strong, but they will stay strong and weak relative to your current power. Ranking up will cause you to find "higher" stats on your gear, but you will also need more of a particular stat in order to get the same benefit. Think "leveling up" in traditional MMO-style games. However I'm not sure if this feels like a punishment or a success -- it will need to be implemented in order to really tell.

I also implemented a particle system. Two major systems in one night meant sleep at 6 AM and no time for a blog post. That's been happening a lot lately, so that's why the posts have been coming in at weird times. Particles are divided up by  types and behaviors, and each can be customized through a ParticleEmitter to change its lifetime, color, etc. -- This, of course, also paves the way for things like the sword Visual Stats.


ParticleEmitters can gracefully deactivate and clean themselves up. I used this here, so when you click off the "Rank Up" screen the confetti slowly fades out. Looks nice.

Of course, "ranking up" being implemented means that "EXP" was also implemented. This is functionally EXP in its traditional sense, however I wanted to stray away from the concept of actually having "exp". I wanted the ranks to feel unattached in that regard. So while you do gain EXP from kills, it is not shown and you're not aware of how close or far away you are from the next rank. Playtesting will tell if this is a good idea (probably not, but let's try something new).
Now for the more mathy bits. I calculated the exp "curve" based on the expontential formula with a few varying factors.

exp needed for level = (e^[x-1]) / (x * f)

Where x is the current rank and f is a reduction factor, used to stunt the curve. e is itself, the mathematical constant.
In the charts below you can see the formula in the Excel spreadsheet. 

Cx = Bx / (Ax * Dx)

Where x is simply the row number and A, B, C and D match their respective column numbers.



It isn't complicated, but I think it gets the job done. I'd like to see some comments from other programmers/designers who have done similar things in their games! (If anyone reads this anymore!)

I'm thinking the next build will have saving and level unlocking -- followed, most likely, by the combat revamp. It's the last clunky system in the game -- time to fix it.

No comments:

Post a Comment

Enter your comments here!