Hi. Im making a game where you shoot your gun and if it hits the target, you will earn EXP for the gun which will make the gun level up and become stronger. The thing is i dont know how much EXP it should take to max out the gun. The max level for each gun is Level 15 and the gun will be **very, very** strong at that point (3x stats than level 1). I want to make it so it takes atleast 4-8 hours to max out a gun. Lets say the gun is a single fire, if it hits the body, you get 10 points, if its a headshot, then 20 points. The reward doubles if it hits another player (not a dummy). Any suggestions on how my level system should roll out?

Well, there are a plenty of experience progression models you can use. Level 15 is max level, and you want it to take 4-8 hours per gun.

Iâ€™ll cover both 4 and 8 hours as boundary examples.

4 HOURS:

4 hours for 15 levels. Assuming you want to do a â€śharder as you progressâ€ť leveling system, you can use some sort of exponential or polynomial model. But first, we will lay out some assumptions:

Letâ€™s say, since each gun is single fire, it takes around 0.5 seconds to fire, and that on average, each player hits 25% of their shots (I feel this is too generous, but itâ€™s just an example). Also note that players will not be shooting all the time, so really we should take this into account. Thus we can say that for 50% of the time, players arenâ€™t shooting at anything.

Alright, letâ€™s do some math then. In 1 second, we are only firing for half the time, so one shot per second. Then 1/4 chance to hit someone, so we are at 0.25 shot *landed*/second. If we extrapolate to 4 hours, 0.25 * 60 seconds/min * 60 min/hour * 4 hours = 3600 shots landed in four hours. So we have an (approximate) count of how many shots you need to get to level 15.

Now, you said you want to give 10 points per shot. Letâ€™s leave the double points out (you can still include it as a bonus for skilled players, so there is some fair level progression for better players). That means you need 36 000 experience points for level 15.

Now, just to keep this short - if we use the same assumptions, and just double the time, it should take 72 000 experience points to do it in 8 hours. So at this point, the difference between 4 hours and 8 hours depends on the progression. As mentioned above, we can use an exponential model (which is the steepest model you can choose) that requires more experience than before for each level.

There is, however, a catch. While we are thinking about experience *exponentially*, level is progressing by itâ€™s inverse, *logarithmically*. Yes, lots of math mumbo-jumbo. But the idea is, you can calculate level using the amount of experience you have.

For example, Level = log10(XP) + 1 will start at level 1 for 0 XP. As XP gets larger, it takes more and more to increase your level. The only thing we need to change is the point at which level = 15. So now itâ€™s just algebra. Note that in the example, I used log10. For your specific leveling system, max XP = 36 000. So we can solve for the base of the log.

15 = logX(36 000) + 1

â†’ 14 = logX(36 000)

â†’ X^14 =36 000

â†’ X = (36 000)^(1/14) ~ 2.116

So the progression for your leveling system would be Level = log2.116(XP) + 1.

Note for 8 hours, X = (72 000)^(1/14) ~ 2.223, so you get Level = log2.223(XP) + 1.

See how drastically a small change in the base affected your max experience?

Anyhow, these are just *rough* estimates made on assumptions (how often you shoot, unproven statistics on percentage hits, etcâ€¦). So take these numbers with a grain of salt. I just thought it would be helpful to go through the process with numbers, rather than just using variables alone.

Hope this was of some help.

EDIT: To avoid errors using log, use Level = logX(EXP + X) instead of logX(EXP) + 1. It will throw an error at 0 EXP.

Also I forgot to mention, you will need to take floor(Level) so you donâ€™t have a decimal level.

I havent actually learned these complex math functions yet, but you did shed some light on how my level system should roll out!

I should be learning these functions later this year. Ill bookmark this post for now, Thank you!

Ahh I see. If you need help when you get to that point, just shoot me a dm or reply to this thread again. Glad I could help.

Start off with xp being gained really easily (4-5xp a shot) then as you level up the xp you gain lower amounts of experience (1xp a shot) then after 4 hours, the gun * should * be ready.

How many guns are there? You donâ€™t want players to be sweating out the game for about 8 hours a day and maxing out 2 guns a day.

If there were only 10/11 guns they would complete the game within 5 days.

For the first release, i want to have atleast 6 guns in the shop. The reason i want them to take a total of 8 hours to max out one gun is so that people would play the game longer. When i say 8 hours, i mean 8 whole hours of *pure* grinding, no breaks, so an average player would probably take about 3 days to max out a gun. I dont want to make the type of simulator where you just unlock everything in a single game session.

Also, the stats of the gun become higher as they level up, this includes the fire rate and bullet speed. So the more it levels up the more experience is required, and the faster they earn that experience.

In my opinion, the gun gaining lower exp every level isnt a good idea, because with the exp requirements becoming higher each time, it would be *too* much of a pain for players. also a pain for me to code

Thank you for helping though