This means that the behaviour, personality, and skills of a creature are not really attributes of the creature himself, but rather his soul. This also means that swords, potatoes, chairs, and mirrors can also have souls - that's the fun part. It also means you can switch souls, so that Fred might get possessed or hypnotized so that someone else controls his actions.
The soul receives all events that its body receives, processes them,
and creates new actions when applicable. Most souls are limited by
the sensory perception of the body, ie even if a sound event "reaches"
the body the soul will only detect if the body has good enough hearing
ability. This is reflected using the Senses
object.
There are two fundamental subclasses to Soul:
An NPCSoul is much more complicated, and there will be many subclasses to NPCSoul representing different personality types and things like that. This is where all AI stuff needs to be added. When an NPCSoul receives an event it will process it and, depending on things like it's current state, it's personality, it's "memory", and things like it may or may not schedule a new action. See the Souls & AI document for more details about this.
Thus there is no real difference (from the body's point of view) between a computer controlled creature and a player controlled creature - they just have different souls controlling them. It's almost religous, isn't it? One thing that's nice about this project is that it allows us to experiment with philosophy :o)
NPCs also must have some kind of brain to memorize things. An NPC should know, where his home is, for example, or where to go to get some beer. This is static information given the NPCs beforehand, before the birth I might say. However, NPCs can also memorize things that happen in their life. The hostility of a certain player, or a safe route to the next village, the location of dungeons, information given by players in conversations, etc. We will provide a knowledge base (KB) for this. The KB will allow for insertions of facts about the world it is in. Special rules can infer on this knowledge and (hopefully) create an emerging behaviour. The KB will also serve to keep track of quests to solve or tasks that were given to the player by those unavoidable agicians that lost the ring of ultimate-destruction and want you to bring it back (but DON'T use it :)
Another aspect of the framework that is most crucial to a rich virtual world is of course communication. As you all know, creating a realistic conversation with a NPC is very hard to accomplish and we are still discussing, whether we should use a real natural language parser (which is something, a lot of scientists try to figure out) or a keyword based system or a menu driven system. A hybrid system of the above is also possible. Please mail us, if you'd like to tell us of the best communication system you have encountered so far.
Of course, you can do a lot of fancy things with the rules and the rule
set. Rules can insert new rules in the rule set or delete rules from it.
They can arrange that they are deleted automatically, if they fire or change
their priorities. Special time table rules allow to specify the general
daytime behaviour of NPCs
and for special occasions like combat or communication the ruleset
can be exchanged.
Last updated: