While learning more about skill progression systems I found an article about a real world system used in military training known as, Human Performance Development Model. The topic of skill progression has come up several times, and I thought now would be a good time to share and get some feedback. Some pieces of this system are already implemented in some ways, but under different names, such as morale, focus and stamina. Below is the heart of the system, and the original article can be found at the bottom for anyone interested.
Motor Pattern Development (MPD)
- Motor pattern development refers to the development of fundamental movement patterns and skills. It also concerns the restoration of movement patterns. This component of training is dominated by training designed to maximize neurological skill the establishment and maintenance of the appropriate range of motion for the task/activity.
Biomotor Development (BMD)
- Once the correct motor patterns and range of motion have been established, it is time to load those patterns to produce new physical abilities. Loading is accomplished by increasing external resistance, speed of execution or both. By altering the variables of execution we can develop very specific outcomes such as strength, speed, stamina, power, etc…
Energy System Development (ESD)
- Very closely tied to biomotor development is energy system development. ESD is approached in both a general and specific manner. In that way it acts as a bridge between biomotor development and technical skill ability. For example, in general terms, a soldier requires a very large aerobic capacity. On the specific side, the soldier requires a large loaded aerobic capacity in locomotion, specifically speed walking with 32kg on roads and cross-country.
General Skill Development (GSD)
- General Skill Development (GSD) can also be thought of as both General Physical Preparation (GPP) and Gross Motor Skill (GMS). There is also a close link with Fundamental Movement Skills (FMS). All of these terms refer to the development of skills that are generally, but not always, gross and continuous. These skills, such as swimming, walking, running, cycling, etc. do not significantly degrade over time and are dependent on biomotor development (BMD) and fine motor skill to produce award winning performance. These skills and their general performance are quick to return after long layoffs provided the biomotor development is appropriate. General Skill Development varies, but for humans in general these skills always include locomotion, stability and manipulation skills. In the athletic world it also includes the development of several biomotor abilities in the preseason. General skills are usually autonomic requiring very little conscious attention to detail.
Technical (specific) Skill Development (TSD)
- Technical Skill Development can also be thought of Specific Physical Preparation (SPP) and Fine Motor Skill. All of these terms refer to the development of skills that are discrete, specialized and specific to a task or activity. Fine motor skills like shooting a rifle require a large number of fine motor skills to be employed in harmony and with a very high level of precision. That harmony is composed of not just the technical skill possessed, but also with the factors of speed, time, distance, physical relationship, prediction/anticipation, reaction, skill-strength, skill-stamina and fatigue. Initially technical skills require a large amount of conscious attention and effort. As training history and experience increases, these tasks become more autonomic. An old hand doesn’t think about these technical skills but devotes his attention to tactics, strategy and leadership.
Neuropsychological Development (NPD)
Cognitive ability: Cognitive ability is our ability to process information, recognize patterns and combine information. The more experience in training and real world experience one has, the greater their cognitive ability. Tasks like complex target recognition and accurate prediction become ever more autonomic with experience. Specific training should always be performed to stimulate ever more complex memory and information processing abilities.
Emotional Fitness: Emotional fitness is our emotional state. This is critical because the seat of memory, emotion, hormones, and action is the Limbic System of the brain. Emotions have a profound impact on performance, training, recovery and psychological wellness. Excessive physical training, poor leadership, poor decision making, poor coping skills and more have profound effects on soldiers, athletes and civilians alike. Careful attention must be devoted to improving emotional resilience, psychological conditioning, stress inoculation and emotional recovery.
As you can see, the big picture is significantly more complex and it gets more so as you dig deeper. The reason is that each domain is interconnected to the others. One does not develop these domains in order, you develop them simultaneously at approximately the same pace. The coach’s objective is to see full spectrum improvement each year, and to pay a little extra attention to the domain(s) that cause the most difficulty. A good coach will also stress different domains depending on the season. For example, in the athletic world the coach will focus hard on BMD, ESD and ESD. As the season nears the competitive phase, there is a gradual shift toward prioritizing TSD and NPD and addressing specific deficiencies while maintaining the general skills and biomotor performance levels.
Full article: https://spotterup.com/components-of-a-military-fitness-training-system/
That's interesting, but it doesn't provide a model for skill training, it just lists a bunch of interrelated elements of it.
We would need time more in-depth resources outlining how this is used in practice to even start applying it to the game.
That's exactly what it provides. A model for skill training. Are we reading the same thing? What I mean to say is that this model uses some language so similar to C:DDA that it easily lends itself to outlining it in the terms we use everyday. For instance, "new physical abilities" could easily be labeled "mutations" or "skills", depending on context. (Which in this case is skills.)
Okay, I can see that some of the professional athletic language he uses is getting in the way of understanding the heart of the system, so let me break it down further.
Each of these components are interrelated, like the members of a class. And at the heart of these components is Total Performance Ability aka Skill Progression. I've relabeled some things to better illustrate my thoughts, and used [] wherever I changed the source. The original author readily alternates between athletes and soldiers, so I'll use similar terms whenever possible.
*_mpd relates to basic motor patterns, such as using computers or performing basic sewing tasks. At this level things require very little from the "energy system" mentioned in *_esd, and this component is summarized perfectly in the second sentence. _This component_
…is dominated by training designed to maximize neurological skills, and the establishment and maintenance of the appropriate range of motion for the task/activity.
*_bmd requires *_mpd and relates to finer coordination, such as hitting a baseball with a bat. In fact, this component describes the very essence of learning new skills.
Once the correct motor patterns and range of motion have been established, it is time to [apply pressure] to [*_mpd] to produce new physical abilities. [Pressure] is accomplished by increasing external resistance, speed of execution or both.
(The next sentence also touches on stat gain, which is connected to this system, but not part of this discussion.)
By altering the variables of execution we can develop very specific outcomes such as strength, speed, stamina, power, etc… [This is all prior to factoring in things like energy, which is handled by the next component.]
In essence, did the action require increased external resistance, speed of execution or both? If yes, then increase related skills.
*_esd is energy system development, such as tasks that require higher physical ability and energy, and his linked energy systems article begins:
The human body uses energy from food to fuel movement and essential body functions, but the body cells don’t get energy directly from food,
Furthermore, the very first paragraph of that article describes in-a-nutshell how the body converts food into energy, which harmonizes nicely with the recently mainlined nutrition system.
The next sentence describes how *_esd
…acts as a bridge between [*_bmd] and technical skill ability. For example, in general terms, a [character] requires a very large aerobic capacity.
Energy transformed into action.
On the specific side, the [character] requires a large loaded aerobic capacity in locomotion, specifically speed walking with 32kg on roads and cross-country.
*_gsd is the basis for fundamental movement skills (walking, swimming, cycling, driving, etc.) I believe you recently used the phrase "quick to return" when discussing how skill "rust" would rebound faster for certain skills.
…skills, such as swimming, walking, running, cycling, etc. do not significantly degrade over time and are dependent on [BMD] and fine motor skill to produce award winning performance.
Award winning performance is one step below Olympic Class in my mind. And then, on skill return:
These skills and their general performance are quick to return after long layoffs provided the biomotor development is appropriate.
*_tsd is the basis for specific skill development:
[TSD] can also be thought of as Specific Physical Preparation and Fine Motor Skill. All of these terms refer to the development of skills that are discrete, specialized and specific to a task or activity. Fine motor skills [such as] shooting a rifle require a large number of fine motor skills to be employed in harmony and with a very high level of precision.
*_npd relates to current skill level and intelligence, and utilizes morale and focus.
Cognitive and Emotional should be self-explanatory by now. I'll stop here and let things simmer.
It's nice that you broke all this down in simpler terms, but none of that provides any information on how to implement any of this in a game.
As an example, a survivor who has read all of 101 Wrestling Moves goes out and gets in an unarmed fight with a zombie and wins with minimal injuries. What does the HPD model indicate about how his skills should improve?
As a second example, a survivor who has read all of Under the Hood goes out and fixes a badly damage mini-fridge in an RV. What does the HPD model indicate about how his skills should improve?
It's nice that you broke all this down in simpler terms, but none of that provides any information on how to implement any of this in a game.
Are you certain? Wasn't a basic understanding of nutrition required by @KorGgenT to implement his changes to that system? And, from what I understand, nutrition will continue grow and improve based on that understanding.
As an example, a survivor who has read all of 101 Wrestling Moves goes out and gets in an unarmed fight with a zombie and wins with minimal injuries. What does the HPD model indicate about how his skills should improve?
Are monsters rated by danger/difficulty in the source? If not, then we use length of combat and energy expended (and possibly hp loss) to determine skill gain. Tougher battles receive higher skill gain, but short battles with weak opponents and at high skill levels receive very little. Obviously, this is a very simplified explanation and doesn't include every factor involved.
As a second example, a survivor who has read all of Under the Hood goes out and fixes a badly damage mini-fridge in an RV. What does the HPD model indicate about how his skills should improve?
See my notes on bmd/esd. Current skill level would be compared to the required skill level, and that result would be passed to bmd to determine load. Then, load would be modified by the time and energy expended to determine skill gain. Tougher tasks receive higher gain.
Of course, all of this is modified by npd based on the elements it involves.
So, there's an element you're missing. I worked closely with KorGgenT on the nutrition system, and there are three steps:
This is a good step towards (1), but it doesn't include any of (2). Saying "tougher battles receive higher skill gain", or even "we use length of combat and energy expended (and possibly hp loss) to determine skill gain" isn't an algorithm, or even a design, it's a statement of objective. How do you perceive these moving parts interacting with one another, not in vague terms but in crunchy mechanics?
There's an element that _you're_ missing. Moving from (1) to (2) isn't a realistic expectation for the majority of the player base. But, I'm willing to meet someone halfway, and if someone else does likewise, then we can bridge the gap between (1) and (2) and move forward. This is where the discussion lives or dies.
Perhaps someone familiar with the source can share what they see lacking in the current skill progression, or ask questions about functions or equations they've already seen at work in the game? Then, I can begin to translate those into crunchy mechanics.
In fact, anyone could provide me with the necessary language (through this discussion) to express this in terms they understand. Many others have had their mind in that space for a much greater length of time than us plebs. (By _that space,_ I'm speaking of the code base.) Thanks again @mlangsdorf for the earlier examples.
To be quite blunt, I'm happy with skill progression as it stands, but I saw a need expressed for something more robust and fulfilled it. In fact, if anyone gains insight or inspiration from what I've already shared, then I've _surpassed_ my original goal. This isn't a WIP or a PR, but it could become one. A win-win for everyone involved.
With that said, if this discussion continues, then I'm likely to expend more time and energy into putting forth an algorithm to express this model using elements already present in the source or adding to them where necessary, as I learn them from participants. In truth, there might already be an algorithm or equation on the Internet to express this model, but it's under another name, and using ideas from this discussion we can discover it. :wink:
The beauty of this model is that it can work for physical and mental skill progression, although it was originally intended for physical skills. (Thanks goes to the original Author for using terms that made sense for both!)
Thanks to everyone for their precious time and energy.
I don't think there's enough meat to what you're proposing right now to attempt to help you go from 1 to 2 here. You've just tossed some extremely vague theoretical concepts at us, single paragraph summaries of loose categories in a subject that people spend years researching. These questions we're asking are examples of the kind of things you need to answer to take the concept forward. In other words, how do you imagine this system working? How do you see these six loose concepts affecting something concrete? You don't have to know code, or even math, to answer these questions, but you do need more than just "here is a theoretical document with no bearing on game design".
For example, when KorGgenT wanted to know how the digestive tract worked, I gave him a very brief rundown, and then we discussed relevant things like where nutrient absorption takes place, or how various vitamins are depleted from the body, or how long it takes food to transit in the gut and how much of that is spent on nutrient absorption, and from there we calculated a loose formula that would absorb nutrients from food over that span of time. I don't know anything about c++, but I didn't just say "the digestive tract consists of the oropharynx, a multi-part organ with teeth, tongue, and salivary glands; the esophagus, a muscular tube leading to the stomach; the stomach, an acidic organ where food is mixed up to form chyle; the small intestine, a very long winding organ; and the large intestine, bigger in diameter but shorter in length." Like your summary, that is descriptive, but more or less useless from a design perspective.
Erk, i think you have the wrong idea. The article does indeed break down what it talks about quite well, which is specifically what makes it easy to reference here in CDDA. For example:
These skills, such as swimming, walking, running, cycling, etc. do not significantly degrade over time and are dependent on biomotor development (BMD) and fine motor skill to produce award winning performance.
This sentence clearly defines to us (with CDDA in mind) that "swimming, walking, running, cycling" shouldn't degrade fast, and shouldn't degrade fast because
These skills and their general performance are quick to return after long layoffs provided the biomotor development is appropriate. General Skill Development varies, but for humans in general these skills always include locomotion, stability and manipulation skills.
Which brings us to the conclusion that simple motor tasks depend on our characters biomotor development, which then depends on the energy system development, the ability to maintain an intensive task for longer periods of time (stamina) of the player, and
On the specific side, the soldier requires a large loaded aerobic capacity in locomotion, specifically speed walking with 32kg on roads and cross-country.
Which tells us that the body is responsible for providing aerobic capacity, and through the even more general "Biomotor Development", we can train our player to increase said aerobic capacity. And so on...
The article is very well laid out in that you can draw long conclusions that reference the article over and over. So I believe the article is already in a state to be understood by someone and transferred into the game. You also say that these are "loose concepts" when they are not. The article does a very good job of keeping everything information-dense. I have to agree with Ricky simply because the article is very inter-related like he said before, and does indeed provide a basis for skill training.
The only problem now is that there should probably be another issue opened to define more precise changes to CDDA to match the article
Let me start with this:
When a real coach examines an athlete or program, he does so through the lens (or variation thereof) of six development domains or components:
Then the author continues with the diagram of HPD and explains how each component is used to produce increased skill and training in a soldier or athlete. Yes, some of the language is dense because it's based on training professional athletes and soldiers.
This isn't a theoretical model or a hypothesis. This is a real world model that's in use every day by training professionals. The article is very short at only 7 paragraphs besides the model and the list of tips at the end. Speaking of which, for anyone that doesn't want to read the article here's the list.
When it comes to applying the six domains in your program, here are some tips to follow:
You can only do an exercise if you have the ability to perform the proper range of motion and do it without load. If not, choose a less demanding exercise using a more restrictive range of motion and constantly work on improving your range of motion and skill of execution.
Develop the biomotor ability you actually need. If you’re a runner, you do not need much if any maximal strength training! By the way, if you’re a soldier, you’re a runner! When training a biomotor ability, do it in all basic movement patterns so that imbalances are not created. Speaking of which, if they do exist, fix them before adding load to anything! For example, you may have a 400lb squat, but if your lunge isn’t 85% of your squat, you’re not adding any more weight to the squat until you fix that!
When developing energy systems, you must do so according to an activity. One does not develop loaded aerobic capacity by rowing in the aerobic zone (wrong activity) or sprinting (wrong energy system)
General Skill Development can be considered everything that doesn’t fall into the Technical Skill domain. But that’s not permission to throw everything including the kitchen sink into the program. Just don’t leave out the fundamental movement skills.
Technical Skill Development is best performed in similar conditions to those where it will be employed. That said, use the crawl-walk-run approach. Master it slow, speed it up a little but maintain accuracy and precision. Continue until mastery is realized.
Neuropsychological Development is a highly complex subject I will cover in a later article series.
Ok, please answer the questions that you have been asked about how it applies to specific scenarios then, because I do not see how anything in the article tells us anything meaningful about questions we actually care about, like rate of skill gain, rate of loss of fitness, what activities are eligible for skill training, translating skill level into performance level, etc.
The concrete statements I see like "These skills, such as swimming, walking, running, cycling, etc. do not significantly degrade over time and are dependent on biomotor development (BMD) and fine motor skill to produce award winning performance." don't change anything about how we handle these skills, translated into game terms, these are not skill based activities, instead they are dominated by stats (strength and dexterity).
This is a real world model that's in use every day by training professionals.
I don't doubt that the model and related systems are very useful, but what we need are things like training schedules or fitness test curricula or research papers in the area, not a magazine article about it.
Attacking the source of the information is unproductive. Don't you think? I found a source condensed for quick consumption, which conveys the meat of a system that's robust enough to provide every aspect of skill progression. Anyone want to pore over reams of training manuals, fitness guides and medical journals?
I do not see how anything in the article tells us anything meaningful about questions we actually care about
That's unfortunate, but I trust that we can fix that soon. Feel free to share concrete function names, class names, variables, etc. I want to learn.
like rate of skill gain, rate of loss of fitness,
The rate of skill gain would be determined in part by the load. Do you understand loading as it was explained above? I used the phrase "apply pressure," but I don't know if that was sufficient for everyone.
what activities are eligible for skill training,
Any activity that has sufficient load will produce some form of gain. Perhaps I'm not fully understanding your question. Aren't skills already defined by the game?
translating skill level into performance level, etc.
I was too tired when I first read this question. HPD as a whole produces total performance ability. I'll consider this question when I'm more alert. What's the current method? How does CDDA translate skill level into performance level? Let's apply our differing spheres of understanding to what's already there, and see if it improves or fails.
Thank you for the examples, @kevingranade! These were concrete questions, and I've worked hard to translate the answers into something tangible and meaningful for everyone. I want to explain things much deeper, but I must keep my answers in digestible chunks until we're on the same wavelength.
I have some questions of my own. How does CDDA determine the percentage of skill increase for a specific task/activity? (Let's avoid skill gain by book for the moment.) Also, what variables and/or functions determine rate of skill gain?
Thank you to everyone, for their time and energy!
skill increase per task varies with skill and task, but a common formula is you get task difficulty points of exercise every ten minutes if the task difficulty * 1.25 is greater than your current skill. That exercise is adjusted by your current effective focus. You need to accumulate 100 times the square of the next skill level of exercise to increase a skill.
So:
exercise = task difficulty * task length in minutes / 10 minutes * focus / 100
if task_difficulty * 1.25 < current skill, then exercise = 0
if exercise > (current skill + 1)^2 * 100, current skill += 1
For my two examples:
Survivor with Unarmed 3 gains bash damage / total damage * random number between min and max damage of practice every time he hits a zombie. He's doing between 0 and 10 damage per strike, all of it bash damage, and the zombie has 80 HP, so I think he should earn about 80 experience for the fight (before adjusting for focus, and each of those 16 punches and 16+ dodges drains focus). He needs 1600 experience to reach Unarmed 4, so he needs to kill 19 more zombies at focus 100.
Survivor with Mechanics 3 does a skill 3 mechanics task for an hour. Consulting the helpful table in veh_utils.cpp, we see he earns 60 practice before focus adjustment. He needs 1600 experience to reach Mechanics 4.
Relevant code references: src/player.cpp
for player::practice()
, src/skill.cpp
for SkillLevel::train()
, src/veh_interact.cpp
, src/veh_utils.cpp
for repair_part()
and calc_xp_gain()
, src/melee.cpp
for melee_train()
.
What should we be doing differently?
What should we be doing differently?
We should change the xp requirements from "100[next skill level]^2" to something like "100[next skill level]^2.5" and create practice actions.
This is more or less the plan I think though.
Attacking the source of the information is unproductive. Don't you think?
I'm not disregarding usable information because of the source, there's no information to disregard.
which conveys the meat of a system
I disagree, it's barely the bones of the system, much less the meat.
The outline provided does confirm a number of features of the existing system, such as many tasks not being skill based, fatigue leading to poor outcomes from training, the need for retraining (skill rust), and others that were AFAIK assembled based on intuition and informal understanding of these processes. What it does not do as far as I can tell is give a path forward to something better.
Anyone want to pore over reams of training manuals, fitness guides and medical journals?
Yes, I do. It's called research. I've read hundreds of scientific and technical papers investigating how things work in order to improve how cataclysm handles them. I havent found any particularly good sources that read on fitness and skill training, but that is the kind of thing I'm looking for to fill the gap.
You havent answered a single question that has been asked. You seem to think generalities like, "Any activity that has sufficient load will produce some form of gain.", are answers, but they're just rephrasing the question into a statement. We know that practice leads to improvement, that's common knowledge, what we need is what kind of practice, in what amount, leads to what level of improvement.
Putting this another way, unless you have a source for numbers, this is going to continue to be fruitless.
I'm not disregarding usable information because of the source, there's no information to disregard.
I know from your work on this project, and your previous posts and comments, that you aren't lacking in cognitive ability. And yet, writing "there's no information" is such a sweepingly broad generalization that nearly anyone could see that it's false. What am I to gather from this fact? Is this how you operate as a person?
On the (very) positive side, it does put a large load on the other individual's capacity. The kind of load that's used in biomotor development to increase (mental) stamina, speed, etc. In this circumstance, the load either leads the person to increased ability, or to simply give up.
That kind of activity is very healthy for the system! :heart:
and others that were AFAIK assembled based on intuition and informal understanding of these processes.
As far as I can tell, you never made it past the second paragraph of the article. The author establishes his competence with the subject matter within the first 3 paragraphs and, although he doesn't have an especially unique name, he alone dominates the first page of Google results for "Nate Morrison".
He is the founder of the Pararescue Combatives program and cofounder of the AFSOC Human Performance program. He was a military freefall, mountain warfare and special operations medical instructor. He is the founder of American Defence University specializing in full spectrum soldier and operator development to include human performance optimized equipment and TTPs. He has vast experience in teaching a wide variety of special operations skill sets in the private sector to military, law enforcement and other government agencies.
You should toss him an email and tell him what we're trying to accomplish here. Yes, I'm suggesting you, because you know exactly what to ask from him to fulfill your informational requirements, and you're the leader of this project. Something that a man in his role would respect. I'm just a player looking to improve the game that I love.
I handpicked those sentences from his bio, because they're of special note. Nate doesn't just deal with athletic training, but highly specialized cases, such as those we might find in a survival situation or cataclysmic event.
Putting this another way, unless you have a source for _numbers_, this is going to continue to be fruitless.
Haven't you found a good source for _numbers_, since your post in 2013?
Fruitless? I heartily disagree. Much information has already been exchanged in this discussion. Thank you so much, everyone!
I am still waiting for a response about how the current algorithm should change with respect to the two examples I requested.
You said you were willing to meet someone halfway on developing an algorithm, moving from i-am-erk's stage 1 to stage 2. I am trying to meet you halfway and provide my coding knowledge. I'd like to see less exhortations for developers to do research and send emails, and more answers to my specific questions.
I was already working on a complete reply to you, @mlangsdorf when Kevin's appeared. Everything you shared was extremely valuable! No worries, I was only thrown off by the clearly false generalization and responded as such.
Task difficulty directly relates to loaded capacity, and I can continue from there to produce something concrete based on the model. Exhortations aside, I'm inclined to contact Nate myself and see what insights he might offer. Why waste hours scouring the Internet when there's someone that already knows where to find the information you're seeking?
Onward and upward.
Most helpful comment
skill increase per task varies with skill and task, but a common formula is you get task difficulty points of exercise every ten minutes if the task difficulty * 1.25 is greater than your current skill. That exercise is adjusted by your current effective focus. You need to accumulate 100 times the square of the next skill level of exercise to increase a skill.
So:
exercise = task difficulty * task length in minutes / 10 minutes * focus / 100
if task_difficulty * 1.25 < current skill, then exercise = 0
if exercise > (current skill + 1)^2 * 100, current skill += 1
For my two examples:
Survivor with Unarmed 3 gains bash damage / total damage * random number between min and max damage of practice every time he hits a zombie. He's doing between 0 and 10 damage per strike, all of it bash damage, and the zombie has 80 HP, so I think he should earn about 80 experience for the fight (before adjusting for focus, and each of those 16 punches and 16+ dodges drains focus). He needs 1600 experience to reach Unarmed 4, so he needs to kill 19 more zombies at focus 100.
Survivor with Mechanics 3 does a skill 3 mechanics task for an hour. Consulting the helpful table in veh_utils.cpp, we see he earns 60 practice before focus adjustment. He needs 1600 experience to reach Mechanics 4.
Relevant code references:
src/player.cpp
forplayer::practice()
,src/skill.cpp
forSkillLevel::train()
,src/veh_interact.cpp
,src/veh_utils.cpp
forrepair_part()
andcalc_xp_gain()
,src/melee.cpp
formelee_train()
.What should we be doing differently?