Advertisement

That gossip engine got me thinking...

Started by January 30, 2001 03:23 PM
23 comments, last by morfe 23 years, 7 months ago
i was reading over the posts here and came up with a few ideas
one-
an npc''s predisposition to tell another a certain piece of info should be based on a few things. first: the npc''s personality i.e. wiether or not he/she is the gosiping type second: wiether the info would harm or help this friend or foe.
example: npc1 is the gosiping type but does not disclose the info because of its potential affects on npc2 whom npc1 cares for deaply

two-
i love the idea of decay and it would be cool if each npc hade a set level of decay for a certain type of info so info of certain types would decay faster than others based on the importance of the info the the npc example: npc1 obtains two seperate pieces of info one about treasure the second about his nieghbor npc1 loves adventures and the idea of treasure hunting more than gosip of local events so the info of his neighbor would decay faster than the info of the treasure

just a few ideas =D great topic!

Sure... all this will add to complexity and reality. In fact, that''s always the case, especially in AI. Good routines are hard to write and slow to execute. Fast routines have to be approximations..

Anyway, make sure that the rate of decay increases when the NPCs eat beef

cu,
Prefect

Resist Windows XP''s Invasive Production Activation Technology!
One line of sourcecode says more than a thousand words.
Widelands - laid back, free software strategy
Advertisement
All of this sounds like a more detailed version, and a lot more in depth of the NPC system in the game Daggerfall. You might want to check that out for some ideas....

"There is humor in everything depending on which prespective you look from."
"There is humor in everything depending on which prespective you look from."
What if this was to be implimented on a Commercial scale, for a MMRPG. Would it make sense to have new Gossip and data become available as players retrieve legendary weapons, and slaughter other players. NPC''s gossiping about who killed who, how and when. Talk of which NPC''s/Players are in town, what they''ve been doing, spread word of new quests that are being hatched, ect.

And about storing the data, If it is a Commercial level game, that would be running on dedicated servers, would it then not make sense to storing NPC data In large databases, on an Oracle server or something, and instead of holding pointers to the data, hold specific parts of SQL statements that the game passes to the server to retrieve the data, if being sent to the player, otherwise, they can just pass the small, probably A couple long int values to the other NPC''s, (such as the composite key (MessageID,TruthLevel)) and completly remove the need for access to the database server amont the NPC''s except to write new data to the database. doing this would not only free up processing time to transfer all requests for data, just by passing a couple numeric values about like pointers, but it also eliminates the dependency problem that is recieved for when players die, ect.

Allot of data dependency issues, can be taken care of on an external database server. by dropping timestamps into each message, the problems with new and old data about anything go away, since they are each different messages. it also adds a degree of scaleability to the world. If the NPC''s just become rows in a table on a different server, it is completely theasable for memories and characteristics of long dead NPC''s to be brought back to life without using any more processing power on the level servers than for mere character initialization, and when they die, all their stats saved over their, for future queries. this would also allow for players to ask questions about the world from outside of the game such as from the web, and get the same results as if they where in the game. Just as long as its not vital information, which the Query statement can easily filter out.

Any other ideas

Sulgurth@hotmail.com
As humans we are all gods, just to different extents of power.
Ok, I skimmed all of the above, and here''s the path I would take / am taking. It is detailed, would only work for a small world, or there would have to be judicious management of resources (i.e. instantiating NPCs for key areas and ''winging'' it for more distant NPCs).

The idea is to get realy intense with NPCs which interact with the player or nearby. Actually, all that aside, let me just discuss how people trade knowledge and how that can be implemented using belief systems and formation of hypothesis.

Assume an NPC''s memory is stored as a semantic net. Assume an NPC has basic facts which it just knows. The NPC can make inferences or elaborations based on these facts so the NPC knows more than just these basic facts. For example, if Bob knows that Jack is Robert''s father, then a rule instantly fires which records Jack as being male, Jack as being the parent of Robert, and that in turn fires a rule which says Jack is an ancestor of Robert, and that in turn fires a rule which says Jack is older than Robert. These rules fire only once and are stored. If any antecendent of any elaboration is retracted, all consequents are retracted also.

Now, Bob knows stuff about Jack, namely all the stuff list above. Now, let''s say Mary tells Bob that Jack is the daughter of Robert. Now, here''s where it gets interesting. Please follow along.

Bob also has rules which fire according to assertions related to someone being a daughter. Things like if x is the daugher of y, then x is female. Also, if x is the daugher of y, x is the child of y and if x is the child of y, then y is the parent of x. And that of course fires off rules about older than and younger than.

The point is, when Bob is told about Jack being the daughter of Robert, while that in itself does not conflict with what Jack knows, the inferences Jack makes from that fact WILL conflict wiht what Jack already knows. Therefore, Jack MUST refute and choose not to beleive this new fact, or reevaluate what he knows about the world.

Here''s how he does it. As described above, Bob knows things about Jack. Mary now tells Bob something else about Jack. Bob builds a hypothesis in his mind called "A hypothesis: the world according to Mary". Bob then runs all of his common sense rules on the fact told to Bob from Mary about Jack and sees if the inferences made conflict with what Bob already knows.

If "the world according to Mary" conflicts, Bob keeps this hypothesis around as beliefs according to Mary. If Mary tells him more things, Bob will continue to add these facts and inferences to his hypothesis about Mary. Bob will also make inferences that Mary either has unreliable information or is privy to information that might make Bob need to reevaluate his own beliefs. Also, if Mary came along and told another fact which conflicted with what Mary already apparently believes, then Bob could make the decision that not only does Mary have unreliable information, she is also illogical.

If "the world according to Mary" does not conflict with what Bob believes, then he can unlitmately add this fact into his own knowledge base and make all the eloborations and inferences on this fact that he was told. In this case, he was told that Jakc is the daugher of Robert. So, Bob will then know instantly that Jack is female, Robert is the parent of Jack, Robert is older than Jack, etc.


_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.

This topic is closed to new replies.

Advertisement