Bernard Osmond wrote: > aagh, mayybe i should go digging around in the mailing list archives... I'm pretty sure it was on our old list (a year or so ago) and it's therefore lost. > so basically what you're saying is that your attributes are at the > root level of the "experience tree" ( i couldn't think of any other way > to describe it ), and then your skills are derivatives of either these > attributes or other skills ( i'm thinking diablo skill tree style here > -- ie you need a skill at a certain level before you can become > proficient at another skill ) That's how we started (with a tree), but if you know anything about relational databases, you'll know why restricting it to a tree is a recipe for limitation and problems in something as complex as this skill system. Basically, a tree structure restricts you to only two directions of travel from a node: to the parent, and to the children. Since the children "derive" from the parent, they hold no useful information (in the situation of a skill system). Therefore, only the parent is useful and we have only one source of information. There are ways to work around this, but they are all just messy. For some systems, a simple tree is most efficient, but not for us. What if we want your Sword skill to derive from your Dexterity and your Strength? If Dex and Str are both roots of their own tree, it is impossible. Relational systems allows any node to connect to any other node. By using a relational skill system, we have much more flexibility and the Sword skill example becomes trivial. We simply have a "link" from Str to Sword, and a link from Dex to Sword. There are more benefits as well, as I will show. Your Str, Dex and Training control how good your are with your sword. But as I've already proposed, using your sword should benefit your sword skill. Also, swinging the sword is physical effort, which should also benefit your Str and Dex. Thus, when the Sword skill is used, Str, Dex, and the Sword Skill itself should increase slightly. Thus, your character develops naturally both physically and mentally. Specialization Weapon specialization is another advantage. Let's say you use a Bastard Sword a lot. After a few years, you have 80% skill with the Bastard Sword. Obviously, were you to pick up a Long Sword instead, you aren't going to suck at it. You'll be good, but certainly not as good as your were with the Bastard Sword. To model this, we can create a weak link between Bastard Sword and Long Sword, and even define a function to control how your work on the Bastard Sword adjusts your Long Sword skill. For instance, we could define the function: Change to Long Sword = Sqrt(Change to Bastard Sword) Therefore, if your Bastard Sword skill increases by 100, your Long Sword will only increase by 10, and no matter how good you get at the Bastard Sword, you'll never be as good with the Long Sword unless you specialize with it as well. The next issue is how to change your skill when you use it. I suggest your skill should improve either when you train or when you use the skill, and these should be handled seperately. Skill Develoment by Use First I'll discuss use. The likelihood of using a skill successfully depends on the "input" values of that skill. For the Sword skill, the inputs are Str, Dex, and the skill's value. We can define an equation for your "immediate" likelihood for successful use: % chance success = InFactor(Str, Sword) * Str + InFactor(Dex, Sword) * Dex + InFactor(Skill, Sword) * Skill where InFactor(X, Y) is the importance of attribute X when using skill Y (e.g. 0.25). Whether this use is successful or not, other attributes will benefit based on the output values of the skill: change to output = OutFactor(Str, Sword) So for the Sword skill, your Str would go up by OutFactor(Str, Sword) (e.g. 0.0001) every time you use your Sword. You can only learn so much with by using without training. For instance, you might get really good at what you've learned already, and maybe invent a couple new little things, but training is essential. Until you train, your skill increases at a rate that lessens the longer you go without training, until your stop developing altogether. For example, you train your Sword skill and finish your training with a Sword skill of 40%. You can increase your skill via use until you reach 48%, but then you stop increasing your skill, and only maintaining it. The closer you get to 48%, the harder it is to increase the skill. Skill Development by Training The other way to increase your skill, as I've mentioned, is with Training. Training abruptly increases your skill by an amount based on the length of time you train, the skill of your teacher in the "Training" skill, and your abilities as a student. In order for someone to train you, they must have a certain percent higher ability than you in that skill. This percent varies by skill. Your abilities as a student are based on your intellectual attributes. The criteria that your trainer must be better than you by some percent mean that as your specialize more and more, it becomes increasingly difficult to find trainers. This is also reasonable. If you are a 20th degree black belt, good luck finding a trainer. This slows down specialization as players specialize more, a realistic and gameplay-beneficial process. It should ensure that there are few at the top of any skill, but many at the bottom. Balancing with Forgetting The next issue is balancing. If everyone can run around using their skills all the time, eventually they will be able to specialize at least once in everything and become a "Tank Mage". To counter this, we created a system of "forgetting". If you do not use a skill for some time, you begin forgetting it. You can forget the skill down to some percentage of your all-time maximum value, and this percentage varies from skill to skill. Thus, if you have 80% skill with the Bastard Sword, and you stop using it in favour of a Halberd, your Bastard Sword skill would slowly drop. If the "forget percentage" for the Bastard Sword skill was 75%, your Bastard Sword skill could only drop as far as 60% (80 * 0.75 = 60). Note that if you started using the Long Sword all the time instead of the Halberd, your Bastard Sword skill would still drop, but much slower than with the Halberd. If, at this point, you start retraining yourself with the skill you forgot, you will learn faster by some multiplier. For insteance, the "remembering" multiplier might be 2, so you'll learn twice as fast up to your previous maximum value for this skill. This "forgetting" system models real life in that if you stop riding a bike for 10 years, you'll still be able to get on it and ride it, but you'll be a bit shakey at first and you certainly won't be doing any cool tricks. However, you'll get the hang of it pretty quick and you'll be doing all your old tricks in no time. > maybe you are making it a little too complex here. i think that the > player needs to be able to 'head' his character in a certain direction ( > ie -- necromancer; so they become a mage and start using/learning spells > and stuff like that until they are proficent enough to specialise into > the specific area they want ) currently i dont understand how you are > going to make it obvious enough to the player where they are heading. Ha! You thought it was complex before?! hehe... I've already addressed specialization in this email and my previous email. You can specialize through use and training. > with numeric experience, or a numeric based system, the player can > specify a skill set that they want to enable / upgrade and work from there. They can do so artificially, instead of role-playing it. > since it will be an integral part of our game, we want it to be simple > for our players to understand and rock-solid. Indeed, it needs to be easy for the player to understand, and you're probably thinking right now "Holy Crap! The players will never be able to understand this system!" That's probably true, they won't, but fortunately this is a CRPG and they don't have to understand it. All the formulas and rules I've defined are for us, the designers and coders, to implement the system. Not for the players. All they need to know is: * Your skill increases when you use it or train with it * Training helps you learn faster * Not using your skills makes you get worse at them which is really pretty simple. I think the rest they will figure out quickly. For instance, if the player decide he wants to be a necromancer, and he looks in his spell book and can't find "Raise Undead", he'll know he needs to go find someone who knows Necromancy. Whew. Ok, enough of that. Darryl