ID:2257717
 
Currently, I am creating a game in which a player uses 'Perks' to state and determine their abilities (strength, techniques, trained physique, etc.).

Today I'm writing this post to see what ideas you all have concerning this system. The dilemma is that I am unsure how they would use these perks in combat against one another.

Previous games which have had a similar perk system like Era of the Shinobi used them like trading cards (i.e. X has a higher tier of strength perk than Y has when it comes to pain tolerance, thus Y sustains painful damage), however, this just leads to out-of-character arguments.

As the game is a role-playing one, I wish for the system to be as clear and simple as possible.

Examples of these perks


Lower tier perk

Higher tier perk

Combat is not a large part of this game, although it will inevitably creep up from time to time (possibly more so than I am anticipating), and thus I pose this question to you.

I appreciate any suggestions sent this way, and may not respond to all (although I have read them).
If any one stat dominates combat, it will be the overwhelming perk choice. So with a system like this, your perks should either have associated debuffs, or have enemies/tactics/weapons they're weak against.
In response to Lummox JR
Thanks for responding.

For core perks (i.e. physique based perks: strength, speed, etc.), how would you advise attaching debuffs to them?

An idea I just had would be at the expense of upping one stat to a high tier (i.e. tier three strength), the person is heavier and thus moves slower (their speed tier is capped at a maximum of x tier, rather than being able to reach tier 3+).
Trading off strength against agility is a good way to go, especially if both are important in combat. I think you'd also want weapons that favor different approaches more, like for instance a strong character might be best with a greatsword whereas a quick one might prefer a short sword or even a long knife.

The trick is, you want to adjust your battle stats so that the strong and quick characters are evenly matched. If a strong character does twice as much damage, ideally he should also hit half the time, relative to an opponent with a perk.

Armor of course has to be factored into your calculations, and my advice on all issues of stat balancing is to keep your stats low. Like single-digit low.

If you're trying to balance PVP combat across multiple levels and body types, these are some basics that should help:

1) Any training is much better than none, but has diminishing rewards. That is, if you were to think of general combat profieincy as its own stat, it should approach a maximum but never get there. Maybe level 5 is 60% proficient and level 10 is 80%, and 15 is 90%, halving the distance to 100% with every 5 levels but never getting there.

2) HP is traditionally a combat proficiency stat, using high health to basically signify the character's toughness and ability to survive combat rather than literal health. But in most games it does not scale according to (1) above, so it gets all out of proportion. That's why most games with PVP don't balance well with players of disparate levels. Frankly it's more interesting if a level 5 has any kind of a chance against a 15.

3) Like training, some armor is better than no armor. Leather armor will absorb a certain amount of blade damage, although it may be useless on its own against ranged weapons. Any armor will impede movement to some degree, but leather will be closest to natural and will have very very low impact, whereas much stronger armor like plate will have very very high impact on movement.

4) Shields are highly effective if used judiciously. Characters who train to use their armor and/or shields will have better defensive capabilities than those who don't.
In response to Lummox JR
These ideas are great so far. I believe they will be really useful.

The armour-movement trade-off is a very nice idea, as it enforces the whole 'swift or sturdy?' question.

HP will most definitely be tolerance/toughness as opposed something quantifiable as in standard games (both RP and non-RP).

I didn't understand the first point completely, although it did sound quite important. General combat proficiency and experience as its own stat is quite an interesting suggestion.
The main thing I think is to keep is the logarithmic curve of diminishing returns. A typical RPG often scales levels linearly or exponentially. With linear scaling, a level 50 character is twice as strong as level 25. Exponential, and 50 might be twice as strong as, say, 49 or 45. A logarithmic curve would be very different.

Chances are you'll probably need something that combines linear and logarithmic, so that the user's proficiency can gain quickly early on. One good formula for this sort of thing is a sigmoid.

sig(x) = bx / (1 + bx)

A sigmoid curve naturally ranges from 0 to 1, and it has an S shape that stretches out into infinity in either horizontal direction. The exponential base (b) determines the steepness of the curve in the middle.

There's also this law with sigmoids:

sig(-x) = 1 / (1 + bx)

That's helpful because it means we can make the calculation faster by only doing exponentiation once.

For something like combat proficiency the way I would envision it, let's say that stat goes from 0 to 1 (1 being 100%). Then you'll want something like sig(x)*2-1, where x is your level. So imagine level 1 starts at 5% combat proficiency.

sig(1)*2-1 = 0.05
sig(1)*2 = 1.05
sig(1) = 0.525
b / (b+1) = 0.525
b = 0.525(b+1)
b = 0.525b + 0.525
0.475b = 0.525
b = 21/19

So you could create this formula:

#define COMBAT_FOR_LEVEL(x) (2 / (1 + (21/19)**-(x)) - 1)


Exploring that formula a little more, if level 1 is 5% proficient, we can get combat stats for the other levels:

1 0.05
2 0.099751
3 0.149007
4 0.197536

To get to 50% proficiency:

sig(x)*2-1 = 0.5
sig(x)*2 = 1.5
sig(x) = 0.75
bx / (1 + bx) = 0.75
bx = 0.75(1 + bx)
0.25bx = 0.75
bx = 3
x = ln(3)/ln(b)
x = ln(3)/ln(21/19)
x = 10.977

So you'll just pass 50% proficiency at level 11.

The general formula, if you want to figure out which level x gets to proficiency p:

sig(x)*2-1 = p
sig(x) = (p+1)/2
bx / (1 + bx) = (p+1)/2
2bx = (p+1)(1 + bx)
(1-p)bx = p+1
bx = (1+p)/(1-p)
x = [ln(1+p) - ln(1-p)] / ln(b)

Obviously this is just a suggested system and there are many other choices, but that math should help you decide if the numbers work out the way you like.
This is great stuff. I appreciate your input, Lummox.