I am creating a game similar to the old browser game Batheo or the mobile game Three Kingdoms - Art of War. In short I have started with the battle system and don't know how to think about dealing/taking damage.
The hero will have some base stats for attackPower and defensePower respectively and they will be somewhere between 1 and 100 or so. The player can also train their heroes for better stats (troops and power e.g.), put on equipment with extra power, upgrade tech etc. I can probably come up with some way of calculating the attackPower and defensePower for the player with these, but any advice here is appreicated too.
The enemy will just have a attackPower and defensePower for simplicity, which will have all extra things included from the start. All enemies will have different stats and become harder of course.
Main issue
So now I come to the point of dealing damage. I am thinking of first doing something simple like:
damage = attackPower - defensePower
However I think I at least want some sort of floor and roof.
damage = Mathf.Clamp(damage, minDamage, maxDamage);
This will be a bit boring I think though. So I would like to have something that is less sensitive around 0 (when defense is much higher than attack) and also at max (when attack is much higher than defense). Maybe some sensitivity curve:
damage = Mathf.Sign(damage ) * Mathf.Pow(Mathf.Abs(damage ), sensitivity);
Any advice on how to create a nice system which will feel natural and always give some damage, but not too high or at least be less sensitive on the edges?