Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 2 [3] 4

Author Topic: An alternative skill system  (Read 5339 times)

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #30 on: June 03, 2011, 09:05:13 pm »

I have an idea to set the basic-middle-higher-advanced, etc level advanced skill system more organically.

Let's say a dwarf brainmap is 8,192 bits = 1KB, and we set 1 skill with 128 bits, that means 30/128 (23.44%) overlapping part each for 98 skills. Each bit can be anywhere in the brainmap. So we used a 128*2 bytes array to store each bit-location (since 8,192 bits require 13 bits to store a location, at minimum 2 bytes require, a short int). Let's see what's the original implementation look like:

Binary BrainMap[8192] = {0, 0, 0, 0, 1, ..., 0, 1}; // each is a binary bit, every dwarf has 1 brain
short int SkillA[128] = {315, 316, 456, 467, ..., 734}; // 128 location indexes sorted from small to large
short int SkillB[128] = { ... }
...

// When reading a skill level while wake up, just using
{
for (index=1;index<128;index++) SkillA_RawData+=BrainMap[SkillA[index]];
SkillLevel=SkillA_RawData/8;
}

// Map 1~128 possible RawData into 1~16, so SkillLevel <1 Dabbling , >15 legendary,
I know it's not optimized, but its ok for now, just do once when wake up. Worry performance later, and add algorithm like POPCOUNT(MakeMask(SkiilA) && BrainMap).

When sleep learning the SkillA potential point gather during the day will be like :
if (cache_skillA_potential_point > 0)
{
   BrainMap[SkillA[rand()%128]]=1;
   cache_skillA_potential_point --;
}

// a little complex since BrainMap is binary string, but you got the picture

When reading a book it will be like :
BrainMap[BookA[index]]=1;
// if a book can contain multiple index, it will need a for loop.

What I proposed to make it a "level" skills
, (with multi-level), say like 4 steps, the skills require 3 more index to cap each level:

{
SkillA_CapNow=32, cap_index=-1;
short int SkillA_CAP[3] = {64, 96, 128};
}

The 32 will be the first 32 bits are now basic, first 33~64 are middle, 65~96 are high, rest are advanced.

We don't have to change the Read_skill_level part. Although counting only to SkillA_CapNow, can increase the running speed :
{
  for (i=1;i<SkillA_CapNow;i++) SkillA_RawData+=BrainMap[SkillA];
  SkillLevel=SkillA_RawData/8;
}

But while sleep learning, we need an extra checking, at the point go to bed, it will becomes:
{
if (SkilA_RawData + cache_skillA_potential_point > SkillA_CapNow)
  SkillA_CapNow = SkillA_CAP[++cap_index];
  // increase skill cap
}


So while sleep learning, the cap can increasing its possible covering area :
BrainMap[SkillA[rand()%SkillA_CapNow]]=1;
So only when your gain enough potential_point, you will be able to increase your skill cap to next level;

And while Reading we check if the book index is over boundary
if (BookA[index]<SkillA[SkillA_CapNow]) SkillA[BookA[index]]=1;
So if some book is belong to higher skill level, the reading never take place at all. (Dwarf don't understand it), its essentially divided 1 skill to several no overlapping but linear related skill sets

Don't know what's your opinion, or is there any pseudo codes too hard to understand? (you need to understand C or Java at least),  However the total effect of this change will increase the expected learning/training times from dappling to legendary.

Originally : 1 + 128/127 + 128/126 + ... 128/1 = 695.4 times expected training points.
New times with worst possible situation : 1+32/31+...32/1 + 64/32+64/31+...64/1 + 96/32+...96/1 + 128/32+...128/1 = 1298.7 times expected, the more level you divided in a level, the longer it will take, but this is the maximum, actual expected times maybe shorter.
« Last Edit: June 06, 2011, 12:19:13 pm by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

Farmerbob

  • Bay Watcher
    • View Profile
Re: An alternative skill system
« Reply #31 on: June 04, 2011, 05:02:29 am »

  Very interesting idea.  I like the concept of a bitmapped knowledge curve to represent "spotty" knowledge *pun absolutely intended*

  This would make teaching and learning skills very useful, books would have high value, both as incoming trade items, and as outgoing trade items.  If you have a legendary weaponsmith, I'd bet that his "Study of oil tempering of bluemetal long blades" would have some value to the rest of the world!
 
  You could have a new profession: scribe.  The scribe would be assigned to a high skill dwarf to record what they do into a book to be sold.  The books could be made by leathercrafters (vellum) then used by scribes.  Scribes would hang out with their assigned learning targets.

  Incoming books could be used by scribes to read to the dwarves who want to learn the skills (not sure if all dwarves are literate?)

  You might get caravans with legendary dwarves who would be willing to teach your dwarves, but would leave in a season.  You would buy their contract just like any other commodity.

  Lots and lots of ideas keep popping into my head, I'll stop now, a lot of it's been mentioned I'm sure.
Logged
How did I miss the existence of this thread?
(Don't attempt to answer that.  Down that path lies ... well I was going to say madness but you all run towards madness as if it was made from chocolate and puppies.  Just forget I said anything.)

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #32 on: June 04, 2011, 10:04:58 am »

  Very interesting idea.  I like the concept of a bitmapped knowledge curve to represent "spotty" knowledge *pun absolutely intended*

  This would make teaching and learning skills very useful, books would have high value, both as incoming trade items, and as outgoing trade items.  If you have a legendary weaponsmith, I'd bet that his "Study of oil tempering of bluemetal long blades" would have some value to the rest of the world!
 
  You could have a new profession: scribe.  The scribe would be assigned to a high skill dwarf to record what they do into a book to be sold.  The books could be made by leathercrafters (vellum) then used by scribes.  Scribes would hang out with their assigned learning targets.

  Incoming books could be used by scribes to read to the dwarves who want to learn the skills (not sure if all dwarves are literate?)

  You might get caravans with legendary dwarves who would be willing to teach your dwarves, but would leave in a season.  You would buy their contract just like any other commodity.

  Lots and lots of ideas keep popping into my head, I'll stop now, a lot of it's been mentioned I'm sure.

I don't know if anyone has difficulty with my codes, but if you can understand, then the condition of raising the cap, can be modified, the original code is :

if (SkilA_RawData + cache_skillA_potential_point > SkillA_CapNow)
  SkillA_CapNow = SkillA_CAP[++cap_index];

changed into :

if ((SkilA_RawData + cache_skillA_potential_point > SkillA_CapNow) && (Dwarf->CertainConditionFlag))
  SkillA_CapNow = SkillA_CAP[++cap_index];

It doesn't have to be called at the point of going to sleep, but like there are 2 kinds of book, one is skilltool books which only tell you how to operate, and another kind of book is principle guild book, and it can raise the level skill_cap. Hence those books will be very valuable, because without them, no matter how hard you trained your dwarf, it can never go pass its cap limit.

Or Certain Condition can be triggered (flag changed), by been accompanied with a dwarf who max out current level cap_limit, (like exchanging new idea to create the new spark), or like what you suggested using a scribe, who can write down the idea, so only when a scribe accompanied dwarf, who read he only work, and able to find out what's lacking and where he can improved his skill, then skill cap will raise.

There are more possibilities indeed.
« Last Edit: June 04, 2011, 10:12:10 am by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

harborpirate

  • Bay Watcher
  • cancels eat: job item lost or destroyed.
    • View Profile
Re: An alternative skill system
« Reply #33 on: June 04, 2011, 01:52:52 pm »

I'm not sure that adding structure to prevent high level learning in the proposed system strictly necessary.

I only see a need for that if you're going to actually have bits represent a specific kind of knowledge, like "this bit represents the ability to make stone mugs" or something. I think that would be too challenging and complex for the game to manage, and probably not worth the effort since the game currently has no means of communicating that information to the player. Even if it did have that capability, it would be extremely complicated for the player to parse all the information that they would be presented with.

Knowledge gain in this system will already automatically follow a geometric curve. As the dwarf fills out more and more of his brainmap, it will be less and less likely that dwarf will be able to gain knowledge (the likelihood of random processes contributing knowledge bits into slots that dwarf doesn't already have will get slimmer and slimmer).

Thus gaining levels will become much more difficult as experience increases, which I think is one of the goals we're all trying to accomplish; and we already get this benefit without us having to do anything special to enable it.

Formal apprenticeships, informal discussions, and books should be the fastest ways to learn, and probably in that order. I think there does still need to be some method by which a dwarf can learn on their own, but this should be much more rare than learning it by other means. A random bit selected from among the valid bits for that job type should be sufficient for on the job learning. Again as the dwarf learns more, the chances of that random bit landing on an "open" slot will get quite small, and so a fortress could only hope to learn a skills in this way by devoting a lot of effort (dwarf-power) into it and having the dwarves learn from each other. That should be made doubly difficult because learning on the job, on their own, should be a rare thing indeed; and the player would have to be mixing work time and idle time so the dwarves would actually share knowledge.

Ultimately the currently broken skill system is perhaps the biggest issue with the dwarven economy. And, as Farmerbob noted, this new system allows us to treat skills and knowledge as a commodity, and thus I think we can start to insert sanity into the economy by forcing players to have to buy something (knowledge) to progress. Knowledgeable migrants will become like gold; actually better than gold because there is tons of that in just about any DF map. (We're solving a lot of problems with a simple change here.)

One more thing: I've always been against assuming 100% dwarven literacy. In thinking more about this in relation to the topic at hand, I think that a lack of literacy actually opens up a tremendous opportunity; unless your fortress has enough scribes it will be difficult for them to learn much from books. Assuming the literacy skill is a second probability filter against learning out of books, it would make it extremely slow to learn that way if your fortress had very little literacy. This could add interest in the later game, as your fortress transitions from a strictly manufacturing center to a center of knowledge as well.
Logged

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #34 on: June 04, 2011, 05:38:27 pm »

First there is a probability way to calculate the expected number of training times, giving and size of bits using in a skill of a bitmap. That is the average training times if many dwarfs training the same way statistically, I briefly mentioned it on previous post.

If a skill consist of N bits, and assume each time you train a skill, you get a random bit (you can increase the factor. And if you use it, just multiple the factor to result). The first 'bit level' will be set to 1 at anywhere, to the expect training time is 1. The second bit level will be (N-1)/N you hit the empty spot, and the rest 1/N, so 1*(N-1)/N + rest*1/N, the rest will be you hit the empty bit, (N-1)/N chance, and 1/N with the next rest again, so its a sequence of (N-1)/N + 1/N*((N-1)/N+1/N*((N-1)/N+1/N((... to infinity. And it converge to N/(N-1), I'll leave the proving part. Just you know the first of k skills will need the number of training times of :
N/N + N/(N-1) + ... N/(N-k+1) ~ N*(lnN-ln(N-k)+0.5772) times.

So total expect time is roughly N*(lnN+0.5772) times.
And the last (N) bit level will be N times harder than bit level 1. each level k/(k-1) times harder than previous one.

My post contain both the original implementation should be, and modified version. Mostly are fairly simple, and not much difference in calculation and memory usage. But I do like the idea of dwarfs talking to each other and learning their skills quickly, so they are not actually idling. But My idle/sleep learning idea, can be put into this, just make the idling learning more efficient (counter smaller), the more people join the chat, the faster. And I thank it should not over the potential points gain from actual working. Since you are just repleting with others. And you need to engage the sharing knowledge action, to actually gaining new skill bit (A lot different when you chat, and exchange experience). And I think dwarf's characters (lazy of not), should effect ow much time he used on chatting or learning from others (if possible).

And the literacy problem is a way a 2 stage multi-level skill can be used on. Some skill can be just trained, but some form of skill shouldn't be able to learn by people who can't read to become masters, or even learn them. Like Alchemist, they are wizard at middle age, can't image a wizard who can't read. Or Record Keeping, their are librarians for god sake. I think we can make a common skill as reading as the base level of these literary skills (the basic level can be shared, even after divided, it has only to do with threshold, not with intersecting other skills, as long as the skill bit number in high level is higher than basic one.

Also, the economy, Oh! MY! I don't think a simple change of a skill system can fix that. It a much much bigger issue. Not just a demand of something you can get a economy working. Player-NPCs exchange is never a problem, it the problem of NPCs internal exchange, basically the world now only simulate an exchange interface for the player only. And the problem of gold, isn't about its abundant, (not too excessive of course), but rather it is NOT meant to be the role of medium of exchange. And every kind of commodities can be used as currency, as long as they are easy to stored, not decaying, easy to carried, value didn't drop over time, and liked with other commodities through actual supply/demand relationship. The base value system is a mess, and caravans are not functioning, market place haven't implemented. Shops are just not having the function it should have. You can visit my Dwarconomy thread, I am trying to implement a button-up exchanging system. Ideally, due to the nature of commodity exchange principle, every world created should have different kind of currency composition. They will depend on the local resourced availability, how hard to trade in an area, and population, (probably race). And every region probably can have different standard for currency, (commodity money) as their base for exchange, and different prices. (That's why we need to trade). Also, it should be a hub-and-spoke structure, that a group of fortresses is forming into region, and regions into civs, and the economy should be more unify on low level, and diversify when travailing long distance. (Where great profit can be made, but also high risks). It's a big topic, I shouldn't talk too much here @@.
« Last Edit: June 05, 2011, 12:00:37 am by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

harborpirate

  • Bay Watcher
  • cancels eat: job item lost or destroyed.
    • View Profile
Re: An alternative skill system
« Reply #35 on: June 04, 2011, 07:41:20 pm »

Also, the economy, Oh! MY! I don't think a simple change of a skill system can fix that. It a much much bigger issue.

No question, but this would be a big first step in the right direction. We have to start to get needs that a fortress can't fulfill itself once it grows beyond a certain size, and furthermore we have to get the player to care about those needs (meta-needs so to speak). But thats a tangent that I don't think we need to follow, I just found it interesting when thinking about this solution space that it, in a small way, starts to patch one of the core problems with older DF forts.
Logged

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #36 on: June 04, 2011, 08:20:05 pm »

Also, the economy, Oh! MY! I don't think a simple change of a skill system can fix that. It a much much bigger issue.

No question, but this would be a big first step in the right direction. We have to start to get needs that a fortress can't fulfill itself once it grows beyond a certain size, and furthermore we have to get the player to care about those needs (meta-needs so to speak). But thats a tangent that I don't think we need to follow, I just found it interesting when thinking about this solution space that it, in a small way, starts to patch one of the core problems with older DF forts.

I really think its a topic for economics thread, it will blur the subject about skills model suggestions.

None related subject I post here.
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

harborpirate

  • Bay Watcher
  • cancels eat: job item lost or destroyed.
    • View Profile
Re: An alternative skill system
« Reply #37 on: June 04, 2011, 11:18:07 pm »

In regards to probability, we're saying the same thing (just in slightly different jargon).

This though is what I'm after discussing:

And the literacy problem is a way a 2 stage multi-level skill can be used on. Some skill can be just trained, but some form of skill shouldn't be able to learn by people who can't read to become masters, or even learn them. Like Alchemist, they are wizard at middle age, can't image a wizard who can't read. Or Record Keeping, their are librarians for god sake. I think we can make a common skill as reading as the base level of these literary skills (the basic level can be shared, even after divided, it has only to do with threshold, not with intersecting other skills, as long as the skill bit number in high level is higher than basic one.

Do we really need to insert an arbitrary wall? (Also you'd be amazed at what people that can't read are capable of doing. Adult illiterate people have been known to do jobs for years without anyone realizing that they can't read.)

I will say, Alchemy might be an exception to this rule, but it would be easy to put that in: calculate Alchemy level as the Alchemy skill + the Literacy skill. In fact you could easily add literacy levels as a requirement to any skill by adding some number of literacy bits to each skill calculation map (perhaps this is the primary skill that most skills overlap with). This would force you to store two separate maps for each skill in order to work properly, a skill learn map and a skill calculation map.

Very
Simplified example with 1 byte of alchemy and 1 byte of literacy:
1111111100000000 = AlchemyLearnMap
1111111111110000 = AlchemyCalcMap
1011101010011010 = DwarfBrain
Skill level = 7/12 = 58%

So this dwarf would have three Alchemy positions left that they could learn by doing, and his Alchemy skill is being limited by a lack of two crucial Literacy bits. He will need to study more in order to become a master Alchemist.

I actually really like this because it means scribe dwarves would have "book learning" in a number of different skills that would give them some small value in those skills, but their lack of experience would mean that they'd merely have a head start if you assigned them to that task, and they would not be instant masters.

Another thing I wanted to get to though was a napkin calculation on learning speed:

Lets assume a dwarf that starts with no skill at all.
Lets assume a dwarf consistently active in their profession gets a new knowledge bit a rate of 10 per season.
Lets also assume that each skill is represented by 128 bits, as you suggested before (I like that number).

So, this active dwarf, who is getting enough sleep time or whatever else is needed to consistently get learning to stick, lets use that formula of yours to calculate the approximate time to full mastery based on only learning on their own:

The formula is N*(lnN+0.5772). For N=128 bits, that results in 694.9 "steps".
I set an arbitrary value of 10 steps per season, so that means 694.9/10 = 69.49 seasons.
There are 4 seasons in a game year, so 69.49/4 = 17.37 game years.

So 10 seems a bit optimistic. After all, thats with no help from books or training. 1 bit per season is probably more like it, it would take essentially an entire dwarven lifetime (173 years) for a dwarf to learn enough to totally master a single skill completely on their own without using any books or training.

Something like a 17.37 years with full availability to training by masters, books, and the lot; that seems like it would be perfectly fine. Most players don't play a fortress anywhere near that long.

So perhaps a reasonable proposal within this system is that a dwarf should learn 9 times as fast through training/books as they do through learning on their own. If they are consistently using a skill, they should learn by getting about one random bit in that skill about every season.

I'm not sure how many actions a dwarf does in a season, but I think its fair to say that the chance of a dwarf getting a "learn bit" from taking an action should be extremely low.
Logged

Farmerbob

  • Bay Watcher
    • View Profile
Re: An alternative skill system
« Reply #38 on: June 04, 2011, 11:54:42 pm »

My biggest concern with this is resource related.  At first glance it doesn't seem like it's terribly resource heavy, but unless there's a purpose to the learning grid, with actual values assigned for each grid location, why not just use a numerical value instead?  If there is a knowledge grid with every little bit on the matrix indicating a specific type of knowledge, then all the poking and prodding at the grid, and learning rules, and whatnot are going to add up.

The overall concept of skills & learning and literacy can be maintained with some modification from a matrix to a simple numeric value.

Is there anything critical about the matrix system that I'm not recognizing?
Logged
How did I miss the existence of this thread?
(Don't attempt to answer that.  Down that path lies ... well I was going to say madness but you all run towards madness as if it was made from chocolate and puppies.  Just forget I said anything.)

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #39 on: June 05, 2011, 12:48:23 am »

My biggest concern with this is resource related.  At first glance it doesn't seem like it's terribly resource heavy, but unless there's a purpose to the learning grid, with actual values assigned for each grid location, why not just use a numerical value instead?  If there is a knowledge grid with every little bit on the matrix indicating a specific type of knowledge, then all the poking and prodding at the grid, and learning rules, and whatnot are going to add up.

The overall concept of skills & learning and literacy can be maintained with some modification from a matrix to a simple numeric value.

Is there anything critical about the matrix system that I'm not recognizing?

I remember at some earlier post, the 1 problem about pure numerical system, is that if you are a constant doing some low level skill job, it's weird you can become a master by doing that. (It's a constant +k% doing some jobs). But if a skill bit represent that job, your skill will not increase at all. You have to do different jobs to actually advanced in that skill, unless you are specific training, but this idea seems largely forgotten through the threads.

A tiny little advantage is that you don't need a mathematical factor that keep the higher skill learning curve drop down. It's a inherent features built into the system, since our brain are working in a similar way. (actually its the connections between neuron are storing between synaptic, but you can say they are like matrix in a way).

Another one is it make skill crossing/overlapping easy to implement, some skills are inherent related, you expect some dwarf to be a good dodge, to be a good fighter skill as well, or like the previous post, literacy/booking skills are basic of all literacy related skill, if someone can read a lot of book, he should know something about everything. Also, dwarfs can also write down what the know (or told a scribe to write it down for him, and you may have your own library of knowledge, and make book is power really true, and probably some adventure quests to find some ancient lost library/knowledge of alchemy something)

The third one is that you can make skill sharing easy. Its just exchanging skill bit location, it hard to determine 2 dwarf how much they have do the same thing or not, and makes two dwarf who done  different jobs sharing with each other their knowledge, a lot easier to implement and imagine.

Also, it makes implement books easier, instead of making each book an index, and a lot of random unrelated topics, it makes the book's contain actually means something - what skill bit it contains. Instead of implementing a lot of different level of skill books, you just assigned an array to it. The more knowledge/pages in a book (more skill bit), the better the skill book really is (and also makes compost book titles, and contain index very easy, just say what they actually has in it). And a dwarf watching the same book over and over won't make him smarter. You need to buy new one.

More to it, it also makes the matrix a true physical representation of a dwarf brain. It can be hurt, like a normal brain, (Like you can imagine certain area is temporary damaged or permanently). And makes sleeping/idling, actually has their purposes, not just to show. Even the eye of the dwarf has its functional, its an OR function to map book bits into brain bits. Possibly some physical skill related bits are actually the neurons and nerve representing of certain part of the body, like in archery there must be some related to the fingers and arms, and some damages of that area, will affect they skill, in a nature way. (Like you hands flesh are ok, but nerve damages may causing drop of performance unless you are recovered, but not impair your ability within the knowledge domain, so you can skill be a teacher, or coach, teaching advance skill by words.)

And about spatial efficiency, I think using numerical system with 100 skills each 1 byte per skill is 800 bits (I think 4 bits are using to record the current 16 level of skill, and rear 4 bits are used to record how far down into next level), and 8192 bitmap, is just a personal preference. At first, the suggester is considering just 1024 bits per matrix, which is actually the same range as the numerical one. And it still possess the same property as above. But better in many aspect, just some extra running time. (With the sleep learning + cache method, it will be almost hardly notice, since most calculating is done during dwarf sleep, and when waking up, -2 or -3 fps when there are massive dwarfs sleeping, IF they learn anything new in the day).

I believe there are many aspects I forgot. However most importantly is that, the current numerical skill method does work (in a way), as many are playing DF now. But this system will make it more realistic, as will as more reasonable, and easy to understand why dwarf do what they do in their tinny little brain. And of course makes it more FUN!!!
« Last Edit: June 05, 2011, 12:52:26 am by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

harborpirate

  • Bay Watcher
  • cancels eat: job item lost or destroyed.
    • View Profile
Re: An alternative skill system
« Reply #40 on: June 05, 2011, 01:09:25 am »

Ninjaed! Counting got to my first five or six points. I'll add a couple items.
1. It also allows some skills to have more fidelity than others without having to make any modifications to the code (just modify the skill mask data that is presumably loaded from the raws).
2. It paves the way for a more complex system where bits DO represent specific knowledge if you wanted to do that.
3. Its an extremely flexible model that more naturally fits the way that knowledge really works. For instance what I noted above there; say you want experience to only take dwarves so far in a skill like alchemy. This has an extremely simple solution, add dependencies on literacy bits in it's map (again this could be a raws change). You can't do that the way the code is written now, the calculation is compiled in the code and can't be modified.
4. I know we also brought up the idea of effects that can be temporary or permanent, counting already noted how this can model brain damage, but it can be used to simulate anything from insanity to amnesia to all sorts of strange magic effects without any trouble at all.
Logged

Farmerbob

  • Bay Watcher
    • View Profile
Re: An alternative skill system
« Reply #41 on: June 05, 2011, 04:14:57 am »

  I can see lots of advantages to a matrixed system, but if/when you fully implement such a system, presumeably you will implement for every skill, for every dwarf.  That's going to be a really complex data stack for each dwarf.

  That data stack is going to be accessed very regularly.  Will it be stored in active memory then?  How much storage space are we looking at to store a full matrix of every skill for every dwarf in, say, a 200 dwarf fort?  If we don't store it in active memory, how frequently will it be accessed on the hard drive by the game as a dwarf goes through their everyday life?

  In essence I think the idea is really cool, but can it be reasonably implemented on today's machines, or are we looking at something Toady won't be able to implement for another 10 years?
Logged
How did I miss the existence of this thread?
(Don't attempt to answer that.  Down that path lies ... well I was going to say madness but you all run towards madness as if it was made from chocolate and puppies.  Just forget I said anything.)

aepurniet

  • Bay Watcher
    • View Profile
Re: An alternative skill system
« Reply #42 on: June 05, 2011, 12:11:46 pm »

This system is a base to some great possibilities.

each sub skill will be represented by a bit, or a collection of bits (a sub skill such as stone mug quality can be 3 bits giving a numerical value to this subskill)

Each subskill will have some sort of affect. Eg. Chisel 1, could increase the chisel portion of a job by 2%.

Each job will involve a collection of sub skills.  Those sbskills will effect how long each job takes, the quantity of the output, and the quality of the output. A crappy butcher should produce less output than a good one.

Certain subskills can increase by repetition.

What would be really cool if we had tools for jobs, certain subskills could be associated with tools.  Tools (depending on their material and quality) could influence job speed and output qantity / quality.  Jobs could also be comprised of job stages, each stage would use a collection of subskills.  Certain stages could be optional (like smoothing or sanding).

I would love a total job overhaul, and this type of skill system would be perfect for it.  Seems like everything in DF is heading toward accurate simulation, we should no longer have dwarves making stone blocks with their beards, and somehow getting amazing at making statues.
Logged

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #43 on: June 05, 2011, 12:24:41 pm »

  I can see lots of advantages to a matrixed system, but if/when you fully implement such a system, presumeably you will implement for every skill, for every dwarf.  That's going to be a really complex data stack for each dwarf.

  That data stack is going to be accessed very regularly.  Will it be stored in active memory then?  How much storage space are we looking at to store a full matrix of every skill for every dwarf in, say, a 200 dwarf fort?  If we don't store it in active memory, how frequently will it be accessed on the hard drive by the game as a dwarf goes through their everyday life?

  In essence I think the idea is really cool, but can it be reasonably implemented on today's machines, or are we looking at something Toady won't be able to implement for another 10 years?

I guess you are asking the "1024 bits per skill per dwarf" question like I DID.

1. Remember, there is no SPOON skill sets! A dwarf just get a bitmap, like a brain scan x-ray photo. Everything else is dynamically generated and calculated. And I already analyze that initially its numeric way 800 bits vs 1024 bits brainmap way spatial wise.

2. I have ALREADY write the "DAMN programming code". You just need to change the name of the variables' name to be consistent with the DF codes, compiled it. And we get the new DF version. (We don't have the source code, so we can't mod it. Otherwise we already finished modified that.)

3. I think its fair to bring out both side opinions. And first, temporal efficiency is one of my concern as well. (Part of the reason I write the codes, to test it). So we come up with the idea of sleep-learning and cache-training potential points thing. (everyone get this idea partially, its collective work) And you can go back and see what's that about. (I suppose you don't like my text wall). And honestly, we don't know how much temporal efficacy this will be. how much FPS will drop. But if everything goes as we thought it would, the total difference to the player is just the sacrifice during a dwarf sleep. As long as not many dwarf are sleep simultaneously (Don't know if it will promote players to build more bed. and the ratio sleep:wake I guess won't exceed 1:3).

Feel free to point out any place we have not thought about may causing extra temporal efficiency. (or spatial). And be concrete about it. (and please read the TEXT WALL  :-*, took me a lot of time to write them)
« Last Edit: June 06, 2011, 12:46:28 am by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth

counting

  • Bay Watcher
  • Zenist
    • View Profile
    • Crazy Zenist Hospital
Re: An alternative skill system
« Reply #44 on: June 05, 2011, 01:32:54 pm »

This system is a base to some great possibilities.

each sub skill will be represented by a bit, or a collection of bits (a sub skill such as stone mug quality can be 3 bits giving a numerical value to this subskill)
It's conceptually right, a little over kill perhaps, and we really don't need to group them (in coding, just conceptually). Rather quality is about its procedure components, not 'abstract quality' (in a way it is abstract). For example, there can be bits represent "decorated pattern on surface", "putting handles on", and "making a bowel shape container". 

Although you can use a bowel shape container to be a functional mug, but its "higher quality" is due to the decoration and handles. And these bits don't need to be exclusive to stone crafter skill. Wood crafter, mason, every kind of jobs that can use a surface decorate will share "decorated pattern on surface" skill bit. The handle making is the same, like making a chair require handles or a bucket (but it can also be a functional improvement, not just quality improvement). In this way many bits can be shared, and we won't get a super-sized dwarf brain.
 
Quote
Each subskill will have some sort of affect. Eg. Chisel 1, could increase the chisel portion of a job by 2%.
I think at first job efficiency doesn't need to be assigned to each bit. A level efficiency system is enough to integrate this skillmap/brainmap into current DF skill with inherited property of each bit. In programming perspective, a numerical skill efficiency system just needs a fixed 1 multiplier and division, Separate bit efficiency will require a lot of different conditions to determine which additions to add to. (Manually input the conditions check list will take time to write into the codes, probably a lot more work than one man can handle in a short time, but the result will probably be a more efficient skill system).

Quote
Each job will involve a collection of sub skills.  Those sbskills will effect how long each job takes, the quantity of the output, and the quality of the output. A crappy butcher should produce less output than a good one.

Quantity, I guess is more about using tools and probably just some skillbits related to them, not all of them. Like decoration should reduce the quantity produce not increase. But some skillbit like" wielding tools" can be an increase factor on quantity.

Quote
Certain subskills can increase by repetition.

Some skills which affect quality very much probably need more bits. But on parallel, not in linear way. (The whole skillmap idea is about skills with parallel equality). Again, using decoration as example.There can be skill bit like : "decorate using figures", "decorate using geometry shape", "decorate using detail tools", "decorate using external attached pieces (like gem or metal or other material, shells maybe? not related with the skill itself). Different combinations of these skill bit in a product will create different quality goods, and more skillbit you get more skillful you are (kind of self explanatory). And more you do related jobs (not necessary a certain job, like stone crafting). You get better and better decorating subskill.

The thing is that there are bad repetition jobs and useful one. Do over and over a skillbit like "make a bowel shape" should NOT make you a grand master in making great artifact. Perhaps can increase quantity combined with tool wielding skillbit. But there's just 2 hands a dwarf can use at a time. Maybe some skillbit like : "muscle reflex" within physical skills like "dodging", could be used to make working faster. However, "repetition" of decorate mug, decorate wall, decorate chair, all which will give you more and more chance to become master of decoration subskill, and many of the subskills can make you masters of that particular area skills. (Like wood works isn't just about decorattion, it has many components and subskills in it. But those subskills are not suited for other skills like stone works, or bone crafting)

Quote
What would be really cool if we had tools for jobs, certain subskills could be associated with tools.  Tools (depending on their material and quality) could influence job speed and output qantity / quality.  Jobs could also be comprised of job stages, each stage would use a collection of subskills.  Certain stages could be optional (like smoothing or sanding).
I think we discussed this above. And smoothing, sanding, is a good  idea for skillbit. Wood works, stone works, masonry, can use them, but not bone works. And in metal works you need different material and tools to possibly do sanding or smoothing (or is that possible in medieval era?)

Quote
I would love a total job overhaul, and this type of skill system would be perfect for it.  Seems like everything in DF is heading toward accurate simulation, we should no longer have dwarves making stone blocks with their beards, and somehow getting amazing at making statues.

I think a lot of it doesn't need to be specific at the beginning. The whole skillbit descriptions and functionality and writing them up, consider the interactions between them, will need more then couple of us to accomplish. We need a whole team to detail all of them. And I really think we need to standardize some terminologies we used, since it should be interchangeable but confusing from time to time. Let's make a list
  • The brainmap, matrix, bitstring, bitmap, bitmask, we should decided which one to settle in, and prevent miscommunication.
  • The bits, subskills, skill components, skill bits, which should we called it?
  • A group of related bits into skills, what about the middle level subskill, that are not within current official skill sets. "a chunk?" "a grid?", they are probably less like a skill, but more of procedures.
And also the part about reading, and literacy, book keeping, and books, scribe, etc. They are not that concrete idea yet. More importantly we need a boundary about the first stage of the implementation, and its limitation. Middle and long run idea, need to be specified with detailed before put into more discussion.
« Last Edit: June 06, 2011, 12:45:07 am by counting »
Logged
Currency is not excessive, but a necessity.
The stark assumption:
Individuals trade with each other only through the intermediation of specialist traders called: shops.
Nelson and Winter:
The challenge to an evolutionary formation is this: it must provide an analysis that at least comes close to matching the power of the neoclassical theory to predict and illuminate the macro-economic patterns of growth
Pages: 1 2 [3] 4