I am currently working on a game with RPG mechanics. Imagine a first person shooter like Doom but mixed with borderlands. Normally a game like this has a fairly complex system in place for number crunching. Its not uncommon to see, for example, huge numbers when dealing damage to an enemy unit.
However, I decided to balance everything around a basic mathematical system. Your health only goes from 0.0 to 1.0. And a pistol that is not meant to do very much damage would inflict 0.1 damage per shot. That means this pistol would take 10 body shots to kill a target with 1.0 health. I am doing this simple math for pretty much everything in the game.
The problem with this is that 0.0 to 1.0 are boring numbers. But I have a plan and I am looking for advice on how I might be able to further spice things up.
I decided to set a base health value at level 1 to a visible value of 237 for all characters in the game. The soldier class has a max health of 0.9. I chose 237 because it is a more interesting number. It gets a bit more complex when factoring in a leveling system though. Right now when you gain a level the displayed number will increase by 10%. So its basically the visible value is multiplied by 1.1
You are probably wondering how that would make sense when under the hood you still only have 0.9 health as a soldier. So what happens is, I determine how much damage you take based on the level of the attacker. If you are level 5 then you take a flat 10% less damage and deal 10% more damage to an enemy that is 1 level below you. This means that your level plays a big role in how much damage you take and can dish out.
At level 2 the game will say you have 261 health as a player class with 1.0 health. While an enemy unit at level 1 with 1.0 health will have 237 health. If the enemy unit is shot by the level 2 player then the enemy unit will take the proper amount of damage because no correction is needed at level 1. But if the level 1 enemy unit attacks the level 2 player then the 1 level difference results in taking 10% less damage. This means that the visual health value will be accurate to having an extra 10% health on the level 2 player.
This system also means that every weapon and item in the game will have a corresponding item level. And the item level will determine the items stats when compared to the player. Level appropriate items will have a 1.0 stat ratio but if the item is 1 or more levels below the player then the items stats will degrade 10% for each level.
The advantage of a system like this is two fold. It allows me to very simply create potentially infinite level treadmill that is very easy to balance at all level ranges where you constantly need to upgrade your gear because nothing actually changes under the hood. The entire system is a lie. Nothing genuinely changes. The numbers are fake. the leveling treadmill is fake.
So in order for me to do this I need to make sure I have a universal mathematical formula to apply to every possible situation.
Currently it looks like this: ((((Level * 0.10000) - 0.10000) + 1.000000) * VisualValue) * HealthValue
So my question to you is, can you think of a universal mathematical formula that would be even more interesting than a flat 10% system that would work for this?
More or less that's its how it works in a D&D based game, a warrior (player for example) has a d10 health points (d10 dice), at level 1 has 10 health points, at level 10 has 100 points, each level you can earn a bonus to health points based on constitution , if you have constitution 12, then you have a +1 to each level, so, at level one you will have 11 health points and at level 10, 110. Your system is as good as this one if you compare it. :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Did someone say math? Perhaps you could go with a scaling percentage based system to make the transition of the numbers less "clunky" and also limit the fact that you have a 20 level +/- relation to character window in which enemies are "farmable." So let's say base player health = x (pick whatever number you want it doesn't matter) and players health is displayed as a percentage on HUD and maybe go into actual number stats in inventory or stats screen. Class health is a percentage of base health at starting level so something like a survival tanking class gets a 1.05 modifier and mage or warlock or something gets a .85 modifier making for 105% base health on the stats screen and the HUD displays percent of stat screen health as 100%. lower the level gap to +/- 5 levels or tighter depending on how varied your level progression is going to be, maybe even base the level of enemies on a x=level scaling= ((level number +player level)/2)
for item quality = y =(player level)(x)
This gives the ability to lower the chance of earlier level abuse by higher level players farming for items and experience.
Player health = z = (Base health)(n) n= percentage scaling health gain based on level
Hopefully that makes some sense.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Just thought about something. Coop would get dicey basing item stats off health percent, because higher percentage units would always get better gear, but using a character lvl times (character level + map level)/2 would scale assuming item stats are strictly level based.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Drops are instanced per client and are based on the stats and the level of the enemy unit dispatched. The only way to share items between players is for a player to drop a looted item on the ground.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Maybe class bind items that shouldn't be available for certain classes or use a primary stat modifier based on class role. So like gloves of the wolf give +stam + strength for a warrior/soldier role and agil and stam for a ranger type class. Just have to code each classes primary stat into a set position on stat sheet and make the items + whatever formula to primary stat. That way all classes could benefit from all items. Might simplify loot randomization.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Right now loot is universal but its not super crazy to have class specific equipment. Thats a pretty cool idea actually. Class specific gear and weapons hmm :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
The main reason I think you should consider it or the "primary stat" approach is easy factor" you can basically negate a lot of the hard balancing issues by only having to modify 1 interger per class, unless its a specific item that is unbalanced. Assuming this is a solo project and most likely not for profit, so you would want to reduce necessary test hours.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
For some stupid reason it wont let me respond to your post. SO responding to your first post.
That's the entire point, I describe a system where balance is far easier than anything else because the numbers are all a lie. Nothing changes past level 1. I am doing a completely different method of balance than I think I have ever seen before.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Oh lol I thought you really wanted the formulas.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I think you are talking about design formula. Which is fine, I didn't think about class specific gear until you just mentioned that.
((((Level * 0.10000) - 0.10000) + 1.000000) * VisualValue) * HealthValue
This formula is applied to every characters health. This includes damage as well. You calculate gear and stats and damage then simply apply a flat 10% per level. Its a method that simulates larger health pools without having larger health pools.
but a flat 10% seems kind of boring.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Want to look at this more closely later. I do a bit of scripting so may be able to help. Interesting idea. Thanks for sharing
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit