Tiny Heroes is an action-platform game I'm working on. I want to include some light RPG elements. The purpose of the RPG elements is to let you customize your character so that two different characters give you different gameplay experiences. This lets you tailor the game to your preferences to make it more enjoyable, it also gives you a reason to play through it multiple times.
I want to do this without making things too complex. You'll have items and stats, but you won't go crazy trying to figure out the optimal way to allocate points in skill trees.
Here's an overview of how the combat math will work:
Mobs have four stats: power, speed, mind, and armor. Each attack has a constant damage value that's a weighted sum of those stats (the first three of them, at least). For example, a wizard's attack might deal (2*mind) damage while an assassin's attack might deal (power+speed) damage. The sum of the coefficients will generally be 2 (like it is in those examples), but a strong attack (with a longer cooldown or higher mana cost) might deal (3*power+speed) damage.
The randomness is introduced by armor. Each attack's damage is reduced by a random value between (armor) and (2*armor). Because the lower bound of the random value is your armor value, armor gives you some guaranteed reduction in damage.
If the enemy's armor value is greater than the damage done, they'll take zero damage. If it's less than the damage done, you're guaranteed to do at least one point of damage. This way you can tell the difference between an enemy you can't kill yet (because their armor is so high) and bad luck (when they keep rolling high values for damage reduction).
I'm not sure how I want to handle non-physical damage. I don't know if I want to consider damage physical or magical, or if I want to have separate elements. The math would work the same way except a resistance stat would be used in place of armor. I think having separate elements allows for more interesting things. For example, a player can do an optional quest to get a fire resist item, which comes in handy later. If all magic damage is resisted by the same stat, you just have to get one "magic resist" item and you're set.
Stat Growth and Items
I'm not entirely sure how stat growth will work. I like the idea of having the player accumulate stat points which they can distribute however they'd like, but I often don't like the way it works in games. I wouldn't want the allocation to be permanent, but if it can be changed, it's less meaningful. Players will also be able to equip items to increase their stats.
The reason I'd want to go with letting the player allocate stat points is that the player chooses major and minor classes. My plan is that you pick a major class, then part-way through the game you pick a minor class. If your stats grew in a way based on your class, being an assassin-knight would be better than assassin-wizard because, while you're an assassin, your stats will grow in a way that doesn't benefit wizard abilities.
I'm almost convinced to go this route and have a way for players to reallocate all stat points, I just need a way to limit how often or when that can be done. I wouldn't want a player going all power/speed because assassin is their major class, then reallocate to speed/mind once they take wizard as a minor class.
1. Because the damage reduction is rand(armor, 2*armor), the damage you take varies more as your armor stat gets higher. I'm not sure I like this. I suppose I could use a non-uniform distribution and call the unlikely event that the damage is only reduced by (armor) a critical hit, but then I probably wouldn't like how this works when the numbers are smaller.
2. I'm concerned that it'll only be well-balanced for attacks where the sum of the coefficients is 2. Attacks with higher coefficients will be guaranteed to do significantly more damage. I can try to balance this out by making their mana cost and cooldown greater, but I would've done that anyway.
3. Initially, before I had thought of the system defined here, I had decided that I wanted to have a way that some enemies will just be invincible to you. This system sort of accommodates that. When the enemy's armor value is greater than the damage you're doing, you can't deal any damage to them. The problem is that this is specific to one attack. You might have one ability with a higher damage value that can hurt the enemy but your weaker ability doesn't do anything. I'm not sure if this is a good or bad thing.
1. Is it too simple?
2. Do you have any suggestions?