Knowledge skill, methods?
by Erik Madison · in Game Design and Creative Issues · 10/12/2004 (1:52 pm) · 5 replies
I'm at an impasse here, trying to come up with the best method.
I need a system somewhat like GammaWorld used, dealing with how well a player knows an item. ie, a newbie sees a long metal rod with a wooden handle. Playing with it, they most likely will set off some type of explosion killing themselves. Someone with knowledge of the item however, sees it as a rifle, and knows which end is for business.
The simplest answer, is just an array of all items with a players knowledge. %player.rifle[50]. This could quickly grow to mass amounts of memory required though. 50 players * 1000 items = ouch. I could simplify it greatly, by classifying everything generically, such as pistols, rifles, melee. That would lost quite a bit though.
Anything else I'm missing?
Edit: I do know how to pass differing info as needed, its only the manner of storing the knowledge I'm having problems with.
I need a system somewhat like GammaWorld used, dealing with how well a player knows an item. ie, a newbie sees a long metal rod with a wooden handle. Playing with it, they most likely will set off some type of explosion killing themselves. Someone with knowledge of the item however, sees it as a rifle, and knows which end is for business.
The simplest answer, is just an array of all items with a players knowledge. %player.rifle[50]. This could quickly grow to mass amounts of memory required though. 50 players * 1000 items = ouch. I could simplify it greatly, by classifying everything generically, such as pistols, rifles, melee. That would lost quite a bit though.
Anything else I'm missing?
Edit: I do know how to pass differing info as needed, its only the manner of storing the knowledge I'm having problems with.
About the author
#2
:)
10/13/2004 (1:01 am)
If you need to store all that in one place 50*1000 single variables isn't going to come to much, even if you want huge numbers it'll only be something like 50*1000*4bytes or about 200k or am i missing something here...:)
#3
@Nick I guess I never actually did the math. Yeah, its not quite so bad sounding, seeing it written as only ~200k or so. I doubt I'll actually have 1000 items, and 50 players at a time online is also a maybe.
@Randall You're bringing up a good point. I think I will still keep them seperate, since they players are coming from a tribal background. They have _never_ seen weapons like this, so assumptions we make won't necessarily apply. But, learning one weapon surely would impart a bit of knowledge in others. I think what I'll do is give minor knowledge in similar items if a player gains a degree of understanding in one specific item. Once you've actually learned to fire a pistol effectively (say skill level 2-3), you can begin studying the rifle more effectively, deeply lessening the danger of shooting yourself (skill level 1).
10/13/2004 (1:25 am)
Cool, I must have been blinded staring at it for so long. @Nick I guess I never actually did the math. Yeah, its not quite so bad sounding, seeing it written as only ~200k or so. I doubt I'll actually have 1000 items, and 50 players at a time online is also a maybe.
@Randall You're bringing up a good point. I think I will still keep them seperate, since they players are coming from a tribal background. They have _never_ seen weapons like this, so assumptions we make won't necessarily apply. But, learning one weapon surely would impart a bit of knowledge in others. I think what I'll do is give minor knowledge in similar items if a player gains a degree of understanding in one specific item. Once you've actually learned to fire a pistol effectively (say skill level 2-3), you can begin studying the rifle more effectively, deeply lessening the danger of shooting yourself (skill level 1).
#4
EDIT: Sorry randal, just read ur post more closely :(
10/13/2004 (1:34 am)
I'd think in a database way to solve this and use am item descriptor. This method would reduce the data needed and give a more realistic application of the characters knowledge.<Item Type> Item Name Item Type = "Archery, Projectile, Trigger weapon" Knowledge Level 1 = "What is it?" Knowledge Level 2 = "End that fires" Knowledge Level 3 = "Trigger makes it fire" Knowledge Level 4 = "Needs bullets, they go in here" Knowledge Level 5 = "Have to line up the sight" </Item Type> <Player Knowledge> Archery Level = 1 Projectile Level = 2 Trigger weapon = 4 </player knowledge>Using this technique and grouping objects you need to write less handling code and knowledge learned from a pistol will be applied to a rifle so the learning system will be more realistic.
EDIT: Sorry randal, just read ur post more closely :(
#5
While it is true, to some extent, that being trained, or having experience with, a certain class or specific make/model of weapon would alow an overall proficiency, it is also true that no one weapon performs exactly like another, even within the same make and model. weapons will be sighted differently for different people, a particular weapon may have just that bit of give in the stock or receiver, slightly different trigger pull, etc.
So at some point, familiarity with a particular weapon will negatively affect your proficiency with another weapon of the same make/model, though not as much as, say, with a completely different class of weapon (assault rifle vs pistol, for example). This familiarity efect is why soldiers are typically issued a weapon to keep (and even name, in some services) through the life of the weapon.
@Erik Madison
To alleviate some of the potential memory issues, you could have a system similar to what was done in Silent Storm, in that you would track proficiency for only a couple of items per person, with familiarity deteriorating when you start using another weapon. A better explanation is probably in order:
Suppose I start out with a clean slate. I find myself a nice, slightly-used Colt M1911A1 and a battered M14. Now, if I get into a number of firefights, I'll start getting comfortable with the little quirks of each, be it trigger pull, aiming point, etc. So, say, my familiarity for the M1911 is now at 25%, and 33% for the M14. Now, in my last successful firefight, I relieve one of my fallen opponents of his M14, which is in much better condition than my own. The problem is that it just feels different. There's no give in the stock. The trigger pull is crisp, rather than a little squishy. And most important of all, it's zeroed for the dead sucker's eyes, and not mine. So over time, I learn to adapt to the new M14, and zero the sights to my own eyes. If I were to run across my old M14 somehow, I would have to get accustomed to it once again. Therefore, my familiarity levels would look like:
Old M14: 0%
Any other random M14: 0%
Current M14: 50%
12/13/2004 (10:44 am)
@RandallWhile it is true, to some extent, that being trained, or having experience with, a certain class or specific make/model of weapon would alow an overall proficiency, it is also true that no one weapon performs exactly like another, even within the same make and model. weapons will be sighted differently for different people, a particular weapon may have just that bit of give in the stock or receiver, slightly different trigger pull, etc.
So at some point, familiarity with a particular weapon will negatively affect your proficiency with another weapon of the same make/model, though not as much as, say, with a completely different class of weapon (assault rifle vs pistol, for example). This familiarity efect is why soldiers are typically issued a weapon to keep (and even name, in some services) through the life of the weapon.
@Erik Madison
To alleviate some of the potential memory issues, you could have a system similar to what was done in Silent Storm, in that you would track proficiency for only a couple of items per person, with familiarity deteriorating when you start using another weapon. A better explanation is probably in order:
Suppose I start out with a clean slate. I find myself a nice, slightly-used Colt M1911A1 and a battered M14. Now, if I get into a number of firefights, I'll start getting comfortable with the little quirks of each, be it trigger pull, aiming point, etc. So, say, my familiarity for the M1911 is now at 25%, and 33% for the M14. Now, in my last successful firefight, I relieve one of my fallen opponents of his M14, which is in much better condition than my own. The problem is that it just feels different. There's no give in the stock. The trigger pull is crisp, rather than a little squishy. And most important of all, it's zeroed for the dead sucker's eyes, and not mine. So over time, I learn to adapt to the new M14, and zero the sights to my own eyes. If I were to run across my old M14 somehow, I would have to get accustomed to it once again. Therefore, my familiarity levels would look like:
Old M14: 0%
Any other random M14: 0%
Current M14: 50%
Torque Owner Randall
Now effectively, I am probably NOT a very good shot with any of them without practice. Especially if I couldn't locate the safety or couldn't figure out how to reload. Same thing with melee weapons.
But lets go a bit further. Even if I saw the "long metal rod with a wooden handle", I could still try to use this as a melee weapon by swinging it like a club or baseball bat.
But you really don't state the purpose of introducing these variables- different purposes might require different methods. Classifying them into groups may actually make sense in this regard. A person that has massive knowledge of rifles can pretty much pick up and shoot a variety of rifles effectively. I would also suspect they could fire a pistol with a certain amount of accuracy. But certain weapons may be MORE effective with a person (Snipers are a good example).
As far as memory goes, I am not so sure. It looks like you intend to store everything serverside, possibly through a database (I can't see why each client would need to have the variables for 49 other players).