Settings Based Skill Advancement (e.g., Practice vs. Combat)

Started by
20 comments, last by Heaven 22 years ago
I''ve recently had a thought on the development of skills in an RPG like game (or RTS to a certain degree). Instead of "leveling up", where you get to increase skills that you may not have even used recently, you would gain skill in a certain area only with use. Now I realize that this method is already widely in use, but here''s the catch: the setting. Say you have a newbie character, and that you''ve chosen to dump every starting resource you had into one skill, say Swordfighting. Realistically how did you come across your skills? Typically through practice, which is the rationale behind why 1st level or starting characters aren''t as good as higher level or more experienced characters. But you''ve got the technical equivalent of say a level 5 degree in Swordfighting. Why wouldn''t you, newbie though you are never having stepped foot outside your pre-adventure world, be as good as someone who experienced his way to a level 5 degree in Swordfighting? Because you have no experience. You''ve got ability, but not experience, and this is where the Setting comes in. Briefly: Newbie Adventurer { Swordfighting:5 Practice Setting:5 Combat Setting:0 } Experienced Adventurer { Swordfighting:5 Practice Setting:0 Combat Setting:5 Other Skills:X pts worth } So when Mr. Newbie trains with somebody, he operates at full capacity. If he trained with Mr. Exp, he would actually have the advantage. Mr. Exp would be fighting in a sparring mode, deliberately trying not to seriously injure his partner, something Newbie is trained from birth at but which Mr. Exp is not at all familiar with. Imagine the Newbie gloating over his ability to best the Veteran Swordfighter. But when they enter into a real combat situation, Mr. Newbie will be hamstrung while Mr. Exp will excel. Call it combat shock, fear, anxiety, etc., but Newbie is not TRAINED to do anything under pressure. So what happens if Mr. Newbie survives a combat setting encounter? His swordfighting won''t go up so much as his ability to operate in a combat environment. BTW, this would modify not only his fighting ability, but any other skill he may use while in that setting. So then training becomes important to raise your raw ability, but experience becomes if not equally important then at the least a big modifier of ability. I would also imagine that practice would still provide quicker advancement in a field than real world training, depending on the skill. Obviously swimming in a calm lake you would learn more quicker than swimming while being shot at by a hostile party. Heh. Settings wouldn''t be limited to Combat and Practice of course. I just couldn''t think of any more off the top of my head at the moment. That''s where you guys come in! Any ideas? Comments? I welcome them. Care, Chris Rasmus Florida, USA RTS Engine in Development http://www.knology.net/~heaven Jesus is LORD!
Florida, USA
Current Project
Jesus is LORD!
Advertisement
Just a couple of questions:

1) Why would you train if it didn''t give you a benefit in actual combat (save your butt)?

2) Is there a corrolary, where 1 training point = .7 combat points and vice versa or is it completely independent? Do they affect each-other''s development?

I had considered a system something like this and ended up settling on straight skill stats and using training to increase the rate of skill gain. Doubling your skill db size and adding more calculations to every combat when not necessary can be somewhat dangerous to gameplay.
Solinear wrote:

1) Why would you train if it didn''t give you a benefit in actual combat (save your butt)?

Let''s take fighting for example, since it''s often easiest to analyze. Basically there is Skill, and a modifier to Skill, Setting. When you practice your combat skill or use it (i.e., fight somebody for real), your Skill level increases. Raw skill levels would actually increase FASTER when practicing than when fighting. However, your ability to cope under stress when practicing isn''t affected so your actual overall gain in skill isn''t as much as it would be if all things were equal.

Solinear wrote:

2) Is there a corrolary, where 1 training point = .7 combat points and vice versa or is it completely independent? Do they affect each-other''s development?

No. Training is training. You have ONE skill. The settings modify any skill performed in that setting.

Consider: Newbie has 5 skill in Sword, all gained under a Practice setting. His Practice setting ability is pretty good then. It''s all he''s ever done. Practice, practice, practice. His Combat setting ability is consequently nil. The settings act as modifiers (the mechanics of which I haven''t even thought on, but here goes) so if Newb has a 10 Practice setting ability compared to someone who has a 5, then all other things being equal Newb will be 2x better. Same with combat. If Mr. Exp has a 5 Combat setting ability compared to Newb''s 1 (I guess I need to min the settings at 1), then all other things being equal Exp will fight 5x better than Newb in real combat.

Say Newbie has a 5 Sword skill and a 1 Combat setting ability, compared to Soldier''s 1 Sword skill and 5 Combat setting ability. In combat, they will be equal even though Newbie is 5x the swordsman than the Soldier. Why is this? Because the soldier doesn''t flinch from blows which he realizes are aimed to actually KILL him. Because his brain is WIRED for combat, not just practiced moves. It''s the difference between playing soldier and actually being on the field with live fire going over and around you. Sure, Soldier may be slower and strike less accurately, but he strikes and defends with assurance, whereas Newbie is nervous, worried, etc.

A "discipline" stat could perhaps modify the penalty associated with a low setting ability, such that those troops with high disciplines perform better all around regardless of setting.

And let me say this, the Setting abilities are transparent. You have no way of telling how well you perform in combat vs practice vs whatever other setting without observation. You can however tell if you''re Novice, Competent, Adept, etc., in a particular skill. So if in a practice setting you''re evidencing Adept level abilities in a certain skill, but in a combat setting you''re performing like a Novice, blame it on the fact that you''re not used to performing in a combat setting and go out and fight more orcs! .

Solinear wrote:

Doubling your skill db size and adding more calculations to every combat when not necessary can be somewhat dangerous to gameplay.

Same number of skills. I''m simply adding a few modifiers, or stats if you will, to each character.

Thanks for the thoughts! Keep ''em coming.

Care,
Chris


Florida, USA
RTS Engine in Development
http://www.knology.net/~heaven
Jesus is LORD!
Florida, USA
Current Project
Jesus is LORD!
I''m also designing a RPG with a mix of RTS and I was thinking of similar skill advancement. However, I find your ideas a little vague.

Can you write an actual mathematical formula for computing skill advancement?

if you can''t reduce your idea to specific formula, write several formulas
if you use derived variables, write formulas for those variables too
Sounds like a job for some sort of skill web system. Your skill in any given area is derived from a score for that area in particular plus the scores for several related skill.

Or you might just separate things into Situations and Skills. Each situation will call on a variety of skills to generate your chance of success. For example, when in combat trying to hit a goblin with a sword, the skills the system considered might include Sword Theory, Battle Theory, Goblin Knowledge, and Battle Experience. The situation would decide the relative weighting of the skills, and what function to use to combine them, whether multiplicative, additive, some sort of min/max function, or whatever. The implementation is up to you

[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]
quote:Same number of skills. I''m simply adding a few modifiers, or stats if you will, to each character.


Actually, no. You need "sword_tr" and "sword_cm". It''s about database structure, unless you want to do a data transform, where you''re clipping the first byte off sword skill to represent training and the second byte represents combat experience. But even then you''re still doubling the data amount (from 1 byte per field to 2 bytes), just playing games with that data (which requires more calculations in the code). How else are you going to tell the difference between someone with 2 training, 3 combat and 5 training, 0 combat?

If you just add training as a skill, how can you tell (in the database) the difference between sword training and mace training? It''s just a field in the db. Ideally you need to keep everything in byte amounts (the smaller the better) and use numbers instead of making string fields, which grow very quickly in comparison to number fields.
Berserk wrote:

Can you write an actual mathematical formula for computing skill advancement?

I''ll try.

First, it would help to understand what kind of framework I''m using. Something very similar to I.C.E.''s Rolemaster system (paper and pencil) where things are percentile (1-100) based including stats, skill and combat rolls, etc. I plan on using a WORD (2 bytes) to store skill values, and each 64 units equates to a +1 bonus on a percentile system (i.e., Sword of 2048 = +32). This would yield a maximum bonus in any skill of +1024 (ok, +1023.984375, but who''s counting).

Settings act as modifiers to final ability, with some kind of formula used to determine actual rate expressed as a percentage. Probably something like:

mod=min(0.25+settingMod,1.0)

So you would initially get 25% of your skill in an untrained setting, up to a maximum of 100% of your skill. The 25% is arbitrary at this point, and will be adjusted later based on game balance (i.e., if it results in adjusted skills that are too low for a given level of experience in that setting I can always bump it up).

Skills increase with usage, or even studying, so important to know would be the given delta time required to increase a given skill by 1 unit.

dt=SkillTime(skillID,currentSkillLevel,actionID)

SkillTime would return a number based on the skill being worked with as well as the current level of skill, modified by the action being performed to raise the skill (i.e., practicing on target dummies, practicing with live partner, real combat, studying a book, etc.) Certain skills would advance faster than others, and the higher your skill the slower the rate of advancement.

Also, for an example take working with practice dummies to increase your sword skill. There would be an initial state, say up to skill level 960 (i.e., up to +15), where your skill rate would advance steadily with time. From +15 to +25 that rate would double, taking effectively twice as long to raise your skill another +10 points. From +25 to +30 would take twice as long as that, and from +30 to +32.5 twice again as long. This rate would continue such that you could only realistically improve up to about +35 by utilizing practice dummies.

Say you chose to practice with a live partner (i.e., sparring). The same principle would apply but the ranges would be shifted. Say up to +35 would be steady, up to +50 would take 2x the time, up to +65 4x the time, up to +75 8x the time, etc., such that practicing with live partners would only ever be practical for skill gains up to +80. The time could also be modified by the skill level of your partner, with a more skilled partner reducing the time to increase the next unit, or a lesser skilled partner actually increasing it. This would actually shift the ranges such that even if you''re over +80, if you train with a sufficiently skilled enough partner your rate of advancement could be considerable.

Of course things like combat and studying would also have their own ranges of advancement, and the material being studied could also modify the range. An introductory book on swordfighting may have a range even smaller than that of practice dummies (say up to +25), where an advanced swordfighting book may have up to a near +50 absolute resultant increase.

Basically, for something like sword skill I would internally accumulate a counter every time the trooper swung his sword or studied some material. Data wise this would be represented by having the unit''s actual sword skill (2 bytes), and a dt for that sword skill (1 byte?). When dt increased past 255, I would increase the sword skill by 1 unit (1/64th of a +1). SkillTime could return values greater than 255, so I would wrap the resultant increase of skill accordingly (i.e., if dt was 512 then skill would increase by 2). As an arbitrary example, using practicing dummies when your sword skill is <+15 would yield high dt values, say 8192. Every other sword swing would yield a +1 sword skill (8192/256=32) up to +15. From +15 to +25 would take four sword swings per +1 (dt of 4096), from +25 to +30 eight swings per +1 (dt of 2048), from +30 to +32.5 dt would be 1024, etc., etc. These dt values would all vary based on skillID and actionID as detailed above. If in the actual RTS game swinging a sword at a practice dummy took 1 second of real time, your progression would be as follows:

To get to +15 would take 30 seconds
To get to +25 would take 70 seconds
To get to +30 would take 110 seconds
To get to +32.5 would take 150 seconds
To get to +33.75 would take 190 seconds
To get to +34.956 would take 510 seconds

So you band select 20 sword troopers and then right click on your practice dummies. Assuming enough dummies to go around, a little over a minute later you''ve got troopers with +25 sword skill.

Assuming their practice setting increased apace (i.e., after a minute they have a +25 practice setting ability) then using the mod formula above:

mod=min(0.25+settingMod,1.0)
mod=min(0.25+0.25,1.0)
mod=min(0.5,1.0)
mod=0.5

Or 50%. So when the game calculates their chance of hitting the dummies they''re only getting a +12.5 added to their "hit roll". Note that even if they miss they are gaining experience.

Conversely, their combat setting ability has not increased at all. If you now took your 20 band selected peons with +25 sword skill and right clicked on some incoming orc soldiers, their modified ability in life or death combat would be:

mod=min(0.25+0.0,1.0)
mod=min(0.25,1.0)
mod=0.25

Or 25%. The game would only add +6.25 to each of their rolls "to hit" when fighting the orcs.

Take an example of a group of 20 peons who had fought their way to +25 as opposed to practicing. When "fighting" the dummies, they would be hitting lots less than their more practiced peers, with a practice setting ability of 0 resulting in only a +6.25 "to hit". However when they opposed the incoming orcs they would have a 50% combat setting modifier applied, resulting in a +12.5 "to hit" in real combat. The "veteran" troops would take less casualties and do more damage than their more practiced, yet "green" peers.

Of course the practiced peons who survived the above mentioned combat, and successive combats, would end up being more effective than the "untrained" veterans, having had the +25 as a base to start with.

Finally, all of the math involved above would be completely transparent to the players. They would have no way of knowing how many seconds results in a certain bonus to their skill, or how many seconds it takes to increase their "practice" or "combat" setting modifiers.

Just like in real life, where you only logically know that if you train you will be better, and courage under fire is only bought with experience.

Care,
Chris Rasmus

Florida, USA
RTS Engine in Development
http://www.knology.net/~heaven
Jesus is LORD!
Florida, USA
Current Project
Jesus is LORD!
Solinear wrote:

You need "sword_tr" and "sword_cm".

Actually, no.

I just need "sword" skill. "Training" and "Combat" would be similar to a trooper''s "Strength" or "Intelligence" stat, for instance. They would act as modifiers to any skill used during that setting.

The game would have to differentiate between actions to determine the setting. Say attacking a practice dummy would automagically use your "Training" modifier, and so would attacking your own or allied troops (it''s assumed you''re sparring). However if you attacked enemy troops the game would use your "Combat" modifier.

Solinear wrote:

If you just add training as a skill, how can you tell (in the database) the difference between sword training and mace training?

You''ve got it backwards. Sword and Mace would be two separate and distinct skills, used when your trooper is equipped with a sword or mace respectively. The "Training" or "Combat" would be two separate attributes the unit has which would be universally applied to ANY skill used in that setting, be it Sword, Mace, Swimming, Picking Lock, etc. For things like the latter two skills, the game would have to be "aware" of things like the presence of active enemies nearby, etc.

Care,
Chris Rasmus

Florida, USA
RTS Engine in Development
http://www.knology.net/~heaven
Jesus is LORD!
Florida, USA
Current Project
Jesus is LORD!
This is an interesting concept. However, for character advancement purposes, I don''t recommend you allow a character to be created with skills that are at expert level. Just don''t give the character enough points to do so, even if they dump every point into creating that skill.

I intend to set it up so that every additional skill level is harder to acheive (costs more "experience points"). So, to go from level 10-11 takes 11 points, while from 20-21 takes 21 points (of course, these numbers are entirely arbitrary, but you get my point -- plus, these are "instant levels" -- when you achieve another level+1 experience points in a skill, that skill increases). So, with this system, it would take 65 points to go from skill level 10 - 15, but 115 to go from 20 - 25. Granted, doing more difficult tasks with that skill would result in more points (so, fighting a more difficult enemy would add more skill experience points). Combined with the "skill experience median" I''d discussed in several past threads, this would be an effective way to control skill explosion, but still allow characters to eventually acheive that level of expertise.

So, you can basically give the user enough points to do moderately well in several skills, or good in a single skill (and forgettably in others).

Assuming a base of zero (I plan to actually base all of my skills off of a default derived from a statistic, but bear with for ease of calculation):

It takes 210 points to get to level 20 on a single skill (from base 0). If you want to allow a user to do that well on 4 skills, that would give them a grand total of 840 points. This same point value could be used to buy a skill of roughly 40 points on a single skill (should the user go that route). Hence, instant balancing.

Another thing you may consider is the use of "Disadvantages". Basically, the players could give themselves some sort of "problem" (that could haunt them all game -- kind of) in exchange for points which they could use in initial construction of their character. In the above example, say that the player REALLY wanted to get themselves up to level 50 in swordfighting. That would cost roughly 450 points to get from 40 to 50, so they take a few levels of the "Combat Shock" disadvantage (which would effectively take, say, 5% of their skill off per level of the disadvantage for any true-combat situation -- or at least one where they feel they could lose... if they had to take 5 levels for the 450 points, they lose a quarter of their skill when in combat should they fail some sort of "will" roll -- not a nice feeling).

Anyway, a disadvantage such as this one would be "bought off" over time. In the case of "Combat shock", a percentage of experience points from combat skills used IN COMBAT could be diverted to paying off this "experience debt". The more battles they fight in, the more experience they contribute, and the less combat shock affects them. Say that for each level, they dedicate a 5% of their weapon experience in combat to reducing the disadvantage. They have 5 levels of the disadvantage (at 90 points per level -- remember the 450). So, for every 90 points they contribute, they lose a level of the shock (it affects them less), they lose less experience, as well... this means that it takes them longer to "pay off" the remainder of the disadvantage, but this could be attributed to the fact that they''re no longer "scared to death" of combat, but are just still a little uneasy, which is a little harder to shake (until they become battle-hardened veterans).

Though "slow buying off" works well for certain disadvantages, whole adventures could be based around others. A "cursed" disadvantage could make the player go on a quest to figure out what the curse is caused by and get rid of it. An "enemy" disadvantage could force the player to address the issue -- especially if the enemy keeps "popping up" at the most inopportune time. In this case, there is no need to "pay off" the original experience points, as the quest itself is the work for the payoff (and will undoubtedly result in the player spending large amounts of time and virtual money to remove the disadvantage, with little reward except to get rid of the dang thing)

Unfortunately, certain other disadvantages won''t be able to be removed at all (without excessive amounts of money), such as appearance flaws ("Butt ugly"), and the like. Again, if you do allow ways to get rid of them, make sure the player has to give SOMETHING up in the course of the game. Otherwise, you may as well just give them the free points at the beginning.

Hope this makes sense (it''s late, and I need to go back to sleep).

-Chris
---<<>>--- Chris Rouillard Software Engineercrouilla@hotmail.com
quote:Original post by Heaven
You''ve got it backwards. Sword and Mace would be two separate and distinct skills, used when your trooper is equipped with a sword or mace respectively. The "Training" or "Combat" would be two separate attributes the unit has which would be universally applied to ANY skill used in that setting, be it Sword, Mace, Swimming, Picking Lock, etc. For things like the latter two skills, the game would have to be "aware" of things like the presence of active enemies nearby, etc.


Interesting. The only problem I have with it is the fact that certain skills CAN''T be handled using the same "Training" and "Combat" (or "Real-Life") stat -- bear with me for a second. Though your single stat would work great for melee weapons, what about ranged weapons? Their use in combat is different than melee weapons, because you could conceivably become an expert with a bow without ever shooting at an enemy (if they go hunting, they''ve got unpredictable moving targets). Though combat would help hone their skills, they could certainly achieve a higher level of expertise with a bow without combat than a melee skill without real combat. I have a hunch most snipers aren''t out picking people off to train their skills. People with ranged weapons tend to be in less immediate danger, so they tend to be able to apply their training a bit better and suffer from less combat shock.

Then, you''ve also got magic and "craft" skills to consider. Undoubtedly, magic would actually be MORE difficult to pull off in combat than melee skills (at least initially). Unfortunately, per the current thoughts on the subject, magic would be completely thought-based, while for melee skills, you''ve got adrenaline to fall back on. Then you''ve got skills such as lock-picking that would never be used in combat... however, their use in "real life" would be much different than in training (in training, there''s no chance of being caught).

Just some things to consider. It''s an interesting core idea with potential, but there are many cases where a single stat like this just won''t work.

-Chris

---<<>>--- Chris Rouillard Software Engineercrouilla@hotmail.com

This topic is closed to new replies.

Advertisement