Advertisement

How to make NPC's "gossip"

Started by February 01, 2002 08:43 AM
66 comments, last by Gollum 21 years, 6 months ago
Well Mr. Anomymous, computer today have TONS of RAM. Mine has 768MB. So memory isn''t really as much of an issue to me and many other people compared to realism. Don''t get me wrong: I see your point and understand your intent, but I think that idea eliminates NPC''s gossiping if they have random memory. Also, you could make it less memory cosuming by making a unchanging common snese network, and then give each NPC a small, maybe 1024 node network of his or her own.
Anon, you make a good point - these kind of routines could be very expensive if not implemented and used carefully. Probably more CPU than memory intensive - this kind of cognitve modelling tech tends to use graph and network based structures, and we all know how well they scale up

It's a question of getting value for money (or bytes/cycles, whatever). I reckon this kind of gossip system could enhance an RPG nicely (to the extent it would be noticed, at least subconciously) if used properly. Here's a few possible benefits:

* Enhancing "whodunnit" scenarios and other investigations. Eg, a murder has been committed. Using the kind of knowledge distrbution system being discussed here, the player(s) will need to engage in a more focused investigation - eg if a baker was killed, the player would need to consider the kind of people he would be associating with, investigate contacts, etc. Basically, the networking of contacts would be improved - it wouldn't be enough to randomly question patrons of an inn, for example.
* Increase the need for subtlety. Eg, the player is investigating a crime. They start asking questions all over town. Using our knowledge distrbution system, word gets back to the thieves' guild that someone is prying. They take action... This kind of thing makes the PCs think twice before asking random punters for sensitive information. PCs on the run/outlawed would have to be careful who they share information with - you never know who's going to be chatting with the Captain of the Watch... Combined with a system of alignments/motivations, this could make PCs trust certain indivduals and not others, etc. In a reguar CRPG, players think nothing of wandering around a tavern, asking prying questions to random peasants - these techniques could be a nice twist to the gameplay dynamic.
* Dynamic plot systems. Some form of information sharing system could be useful in the implementation of such a system.

While most of the above could be hard-coded or scripted, the use of AI techniques such as the cognitive modelling being discussed here will allow for differing scenarios and dynamic gameplay on a larger scale than any designer could allow for. If knowledge is distributed in a (semi)realistic manner, the gameplay will most likely differ from one game to the next. This greatly increase replayability, non-linearity, etc. One of the best things to watch in game AI is when your creations do something competley unexpceted - take on a life of their own, as it were.

Anyone else have suggestions for gameplay enhancements and possibilities provided by this kind of gossip system?

Edited by - NeverSayDie on February 20, 2002 7:21:34 AM
Advertisement
Another idea - a more realistic reputation system. Most RPGs simply give the player/party a reutation score that goes up/down with their actions. Things could become much more interesting if this system was based on the knowledge distrubtion network. Each NPC would have their own opinion of the PC - which would increase/decrease depending on actions witnessed - and the gossip they had heard about the PC. For example, if you murder a villager in the Far North, it could be a long while, if ever, before you gain a nasty reputation in the Southern Desert. But you never know, that peddler who was in town on the day of the murder might be spreading stories wherever he goes...
This could also allow the player to be framed/defamed - that noble you insulted might start spreading nasty rumours...
One of the first things that got me interested in designing more realistic games was playing Final Fantasy VII. I''ve never finished that game, even though I''m very near the end. Why? Because even when my party was tremendously powerful, we still had to fight the same crappy level 1 monsters every three paces. It took forever to get anywhere, the experience points were worth basically nothing, and why were these little wimpy monsters attacking me in the first place? All the people seemed to know I was bada$$. What, none of the monsters knew I had killed thousands of them?

If you built a real, dynamic reputation of alignment and power (which would travel theough the gossip system), everyone could react to it. Weaker creatures might leave you alone. Thieves could seek you out if you''re right for the job, or plot to assassinate you if you''re prying too much. You can become a "marked man" (or woman).

The biggest advantage of all of this is very simple. We''re talking about rolepaying games here. Changes like this will encourage you to play a role, rather than playing every game/character the same way. Plus, they will help get rid of a lot of stupid RPG problems, like the random encounters, or the fact that you have to ask every person you meet for every piece of info they have, or the fact that you can steal to your heart''s content in most games, and nobody seems to notice, much less care. In Daggerfall, you could kill someone in town, and the guards would come after you. If you ran outside the town limits and then came back, they''d forgotten!

Honestly, at this point I''m just enjoying making it work. But I think that it can help eliminate many of the obstacles to getting fully immersed in a world.

- Gollum
This is really a great topic

I'm jumping back to the "decay time" posts. Some memories are more easily forgotten than others. For ex: an epic battle against a Dragon is remembered longer than Joe the Farmer dying (people forget him faster). You could implent this, but it would take even more variables/CPU power/etc because every person remembers something longer because of his/her interests, for ex: the family of Joe the Farmer would still remember him after 20 years, Jack the Baker who lives in another village and didn't know him very well won't remember him for long.

Good luck Gollum

"Control the media, control the mind"

Edited by - Terr on February 21, 2002 7:54:51 PM
"Control the media, control the mind"
...so you could link the decay rate to the subject class. Statements about dragons might be remembered for a long time, so might folklore. The theft at the local bakery might get momentary gossip status but be forgotten about 3 weeks later by all but the baker.

Timkin
Advertisement
Basically change the threshold and and decay rate. Now you need to decide which one to change. I'll get back to you on all of that...

Edited by - Puzzler183 on February 21, 2002 8:26:43 PM
Ultimately I believe that much of our knowledge is forgotten when it is not used or shared. That''s simply because it hasn''t been transferred to long term memory. Using knowledge, or communicating it to others, reinforces it. Eventually this reinforcement is sufficient that we store the information in a seperate part of our brain (I''m not a neuro-physiologist so I don''t claim to know EXACTLY how it works... I''ve just read some articles).

We could mimic this in an our NPC gossip system by reversing the decay on the memory each time the NPC passes the information on, or performs an action that relies on the information. That way, while something is a ''hot topic'' of conversation, it gets reinforced and remains in memory. When other items of information compete with it for ''air time'', it will either win - staying a current topic - or lose, thereby drifting off into the ether to be forgotten by all but a few who have committed it to long term memory.

Perhaps if the decay is reversed sufficiently such that the strength of the memory increases past an upper threshold, then the memory is held indefinitely and is considered to be a long term memory.

Just a thought...

Timkin
Here were my thoughts:

For reinforcement, just reduce decay rate (reduce a in your original formula). On the other hand, if somehting happens a second time, like a second war or something, decrease threshold (square it, half it, multiply it by the decay rate).

I also did some graphs on my calc and found that a should to be between one and zero but I think something like between .1 and 0 is better. The reason is that in 4 days with a at 1, the number drops extremely low (BTW I am assuming t is in game days). At .1, information was remembered for about 125 days (if I remember right), before it dropped below the same threshold. Unfortunately I can''t exactly remember my threshold value but you get the point.
I''ve thought of a better way to do it. If youare using a semantic network, you can have a variable in the NPC''s personality called memory. It would be the size of their smeantic network in nodes. Hten you could have another variable in their skills called intellegence. This would be a or the decay rate coefficient.

This topic is closed to new replies.

Advertisement