Roles
Roles are a story-aggregate construct that is used to provide context-aware scripting for NPCs, and, to a lesser degree, for PCs as well (see playability and mundane tasks).
Each role contains a set of one or more story pairs which form an event-driven, case-based reasoning matrix. Each story pair consists of a didactic story for describing the case, and a prescriptive one for describing the appropriate action. When observed events match closely to the didactic part of a pair, the prescriptive one becomes a script for actions to be taken.
A Hypothetical Example
An (oversimplified) Castle Gate Guard Role might contain story-pairs like:
- Ask strangers for identification
- Prevent strangers without identification from entering the gate
- Defend the gate in case of attack
- Leave the gate only when relieved of duty by the Captain of the Guard.
— Ged The Greys Hain - 22 Apr 2002
— --
To my understanding (and desire), the action chosen will be written into the story itself. That is, if the story being considered has three events, and the character in question has observed the first two, ze will act according to the acts of the "character" in the story (and specifically the acts in the third event) with which the character associates itself. Fx: a character is in a castle guard role, and therefore knows the story of the guard who captured the theif who had been casing the building being guarded, then receiving a promotion. so, when that character sees someone who looks like ze is casing the castle, character will go over and arrest the supposed theif. That character will also expect a raise when ze returns with the captured theif, and will be really dissappointed to find out that the "thief" was just an artist in the process of painting the castle for the king's birthday present. Well, at least now our character knows to pay better attention to the difference between a casing theif and a gazing artist, or at least to ask some questions before incarcerating hir.
This also demonstrates how the character's role can grow and change. My statement about what our character now knows implies that the character is now considering the story ze just lived through as part of the role for guard. This is something learned which is completely separate from something like the ability to better tell if a person is an artist or a theif. This is the knowledge that when guessing about the nature of a person's actions, a failure can result in a greatly angered king.
The behavioral knowledges contained within a role are defined by the stories the owning character knows, and has the possibility of change whenever a story is learned. Therefore, one person's concept of what it means to be a guard will often be drastically different from another's, initially due to differences in race, class, culture, &c., but then also due to experiences lived through and/or specific stories heard. So of course a guard from the secretive, nomadic tribe that lives in a desolate wasteland will behave better as a guard than the one from the sugar puff village of do-gooders. This also means that a more experienced guard will behave better than a less experienced one.
This allows the ability for a character to be judged not only in hir individual proficiencies/skills, but also in hir ability to implement them intelligently, consistently, cleanly, or whatever gauge(s) make for a better [role].
— Stillflame - 23 Apr 2002
— --
I don't even think the the stories have to be generic. If the !AI can spot stories which are similar to other stories, that provides a kind of genericity (genericesqueness?) which would function like a generic story.
Of course, whichever is the easiest to store, to create, and to use should determine whether a generic version of stories should be created.
— Scotus - 27 Apr 2002
— --
May 4th Addition
After an insightful saturday meeting, more is now understood about how roles are going to work.
Stories can be merged together, with irrelevant details removed and important ones made into logical branches. Thus, behavioral learning can be much deeper. Stories are combined with generalization and logic to make a much more adaptive system.
— Stillflame - 04 May 2002
— --
January 11
Another insightfilled Saturday. Logical branches to be governed by emotion vectors. Rolemaker (the person or program generating the role) chooses two parts in the current story (or role). Whenever that logical branch is reached the role compares the developmental state of those two parts and generates an emotion vector in the following space:
(-,-) (-,0) (-,+) (0,-) (0,+) (+,-) (+,0) (+,+)
where: (-,-) is synnecrotic conflict, (0,-) is sacrificial satisfaction, (+,-) is evangelical predation, (+,0) is commensal laudation, (+,+) is symbiotic cooperation, (0,+) is benign warding, (-,+) is depressed parasitism, and (-,0) is angry sadism.
For each action the rolemaker wants to create a limb for at a particular logical branch point at least one (often more) of these emotion vectors should be assigned to that particular action. Thus in the guard-role example synnecrotic conflict, sacrificial satisfaction, evangelical predation, benign warding, depressed parasitism, and angry sadism might be assigned to the say-Halt-who-goes-there action while commensal laudation is assigned to the say-Welcome-my-Lord action and symbiotic cooperation is assigned to the say-Hi-part(approachee).name action. This creates an action matrix something like:
"Halt" "Halt" "Halt" "Halt" "Halt" "Halt" "Welcome" "Hi, Joe"
Note that this can produce very different versions of the same action: The "Halt, who goes there?" in the upper left (synnecrotic conflict) is very different from the predatory "Halt" of the lower left and from the sad, depressed "Who goes there?" of the upper right.
This also gives a player character who wants to stay within her role an easy way to enter appropriate command: If the client maps the numeric keypad to this matrix (+,+ is 3; -,- is 7; and so on), typing a number followed by a tab (for tab-completion) might auto-generate the appropriate command.
To take this one step further: the 5 key could map to an automatic emotion vector generator as defined by the role.
The distance between the emotion vector and the chosen action determines the amount of inspiration spent to perform that action. Repeated inspiration expenditure leads to spiritual fatigue and emotional outbursts. And nobody wants to see a guard cry.
— Scotus - 12 Jan 2003
