Advertisement Jump to content


This topic is now archived and is closed to further replies.


Dynamic NPC talking

This topic is 5884 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I''ve recently been thinking about rpg games and adventure games, and how you being the main character is really important. To this date you alone have the power to ask NPC''s unimportant questions as well as questions that may give you information. But how realistic is that? When i walk around world i hear many people talking, learning information and distributing it between colleages. I as a person dont have to initilize events between people, because im not the savior of the world. I''m one of a couple billion people in this world trying to fend for myself. So my question is, why dont more games try to incorporte a bit of dynamic system in which npc''s can learn from other npc''s. I''m sure everyone has played a game in which your the scum of the earth in a town, but after killing monster xx or yy you become well liked throughout the town. But this all happens instantly. How often have you cleaned your wifes car out or took her to a nice dinner only to come back to work the next day and have the whole workplace at your office with flowers and cards for what a great job you have just done. I''ve always been interested in how rumours are spread, especially in the day''s of highschool and junior high. So why cant we incorporate rumors being spread into games? I happen to think its a bit distracting that every time you talk to a person they say the exact same thing, (unless you hardcoded a guy to say something differnt when a quest was solved or whatever). So after this lengthy intro i want to talk about the more techincal aspects of this idea. 1) Every character has a set of questions he or she may ask anyone. These may be general, such as: "do you think it will rain today?", to the more specific, "my child is missing, have you seen him around". 2) Every character has a set of general answers to the questions. 3) Every set of question that may be asked has a timer, after the character has "learned" the question the timer starts ticking. After it is done ticking the question is no longer askable until they are reminded about it. These are three general atributes that will be used for this example. Note that while every person must have access to the answers of these questions, it takes no more work than the average RPG game to code this. The timer is here to scale down the amount of questions a particular NPC may "learn" (to minimize the overhead)and to increase the realism. For example if your friend told you that someone came into work today and bought a pair of shoes, that will stay in your memory for about 2 minutes. Your not going to be talking to your mom or dad a couple of days later about how a pair of shoes were boughten, because it isnt important. However if your friend said a man held him up at gunpoint and stole a pair of shoes, you would probably remember that for a lot longer because its a very rare event. So how can this be done? A method very well documented in the Game Gems 1 book describes creating an event driven system, in which enties can send messages to other entities. These message prototypes usually look something like this: bool Message(Type, Sender, Reciever, When to go off, Data); Now if each entity has a set of questions they can ask, the data simply adds that question to that npc''s list of questions that they can ask. Rumors can spread through the world this way, and NPC''s can interact without having to script specific events. In general it should make for a more realistic environment. Keep in mind i am not talking about building speech here. This method isnt about taking nouns, verbs and adjectives that make sentences, its just about taking preset text (which we have anyways) and allowing npc''s to talk about some of the more general (IE, how is bob doing today) questions that you can ask. I''m looking on some feedback on this method. Do you think it is plausible? Do you think it would add enough to the game to make it worth coding? Do you want to flame me because its stupid? lets hear your ideas. come visit me at!

Share this post

Link to post
Share on other sites
A very interesting point is raised in the linked thread about all the extraneous processing necessary to make this system truly accurate. If every single NPC in the universe is going to have a personal dynamic database just for gossip, and their interactions will have to be occurring even when the player is off in the mountains fighting trolls, you''ll need a Cray X1 to get it all done in real-time.

A simpler solution is to view each social center (city, town, village, dungeon, lair, crystal-palace-on-a-fluffy-cloud, etc) as an individual, and assign NPC''s who aren''t actually in them as "emissaries". The topic classes and interest levels are good ideas, but rather than giving characters vast libraries of gossip and making them choose a tidbit based on their characteristics, make one city-wide gossip bank and then have the NPCs utter the ones that they are most prone to knowing and caring about. Have the gossip choose the speaker rather than having the speaker choose the gossip. When somebody (merchant, adventurer, fugitive) leaves a city and travels to another one, all the gossip that he''s prone to knowing will be transferred to the new town. As a result, big cities will have new from all over, while remote hamlets will have very little news that isn''t generated right there.

As to decay systems, I think that you could gradually modify interest by time. If there''s an attack on a farm belt, then it''ll be of huge interest to farmers, brewers, millers, bakers and bankers. Three months later, though, bankers will have mostly adjusted, millers and bakers will have found something else to work with, and brewers will have modified their lines of production, but farmers will still be in serious trouble, and common townsfolk will actually care more now that prices are up and food stores are running low.

You might want to make it possible for an individual to have a small database of unique news, though, so that the sole survivor of an attack by highwaymen can carry his tale to the nearest village, including what was stolen, who was killed, and who might have been kidnapped or left for dead.

If you get all of this up and running, then you can turn to lies, exaggerations, chinese whispers and reputations. It''s quite a task, but once a good algorithm is developed, it''ll probably become a mainstay of RPGs.

Poorly thought out idea: In Escape Velocity from Ambrosia Software, there are news briefs at all the spaceports. You "watch the holovid" and it tells you things like "Discovery of a new vein of titanium on Tau Ceti V has lowered ore prices," or "An outbreak of scandoid fever has raised the price of medical supplies on Earth." Very simple, but maybe there could be some sort of newspapers or passenger pidgeons in the game to disperse news farther and faster.

Share this post

Link to post
Share on other sites
My best suggestion is to read the linked thread and (when the search function is available again) search back through the archives for NPC discussion/gossip related threads. There have been several fantastic discussions with lots of great ideas over the past few years.



Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!