Event driven conversation system
Here is a snippet from my design document regarding NPC conversation, I think it adds more dynamics to conversation without being overly complex. It is by no means my full conversation system, but does cover a wide range of scenarios. Feel free to discuss...
"The fourth point about memory shall be remedied by giving the NPC’s a memory of certain things. For example, NPCs will be given a memory of whom they have seen within the past hour. This would allow players to question NPC’s to see who had been around the area occupied by that NPC. There will also be implementation of a new system. The G/LES (global/local event system). All noteworthy events will be flagged by the engine and NPC’s may be questioned on these events if they have any knowledge of them. This system will work as follows. NPC’s will have pre-determined knowledge of events (local or global). Players will only be able to question an NPC on an event if he has by some method obtained knowledge of the event(thereby stopping a player asking about something he shouldnt have any knowledge of). Different things may cause the player to have knowledge of an event. If a player for example has witnessed a murder, “Witnessed murder in Smallville”, might be appended to his list of known events, alternatively he may hear something from an NPC to similar effect.
Now when interacting with NPC’s he may choose to ask about any one of the subjects on his “known” list. If the NPC is flagged as knowing something about this event, they respond appropriately, otherwise saying something to the effect of “Sorry sir, I have no knowledge of that event”. If the NPC is on bad standing with the player asking, he may give false information to a player, thus able to lie. Memory again comes into play here. In order that the list of known events never becomes too monstrous in size, both players and NPC’s will have a limited memory. They can only know about a certain amount of events at any one time, if any are added to the list then whichever events were added least recently that exceed a characters memory will be removed to make room for the new events. Events may be flagged as irremovable until resolved, which is the only time that the memory may be expanded upon. This will mean that players and NPC’s will never forget an event until the event has been considered resolved. Further to this is the topic of event resolution. Drawing on our previous example, if the player works out what the murder was about and has brought the character responsible to justice, this will remove the event from his list and from all associated NPC’s lists, so that a dead topic may not be further discussed. Alternatively NPCs and characters may remember event resolution for a period of time to get views from one another on the resolution itself, but this again will be forgotten over time. If the system becomes too slow, this event resolution memory may be removed to speed up the process somewhat.
If an event is in the global list, everyone will have a response, there will be a default response for those NPC''s who have not specifically been told by the system to remember an event. The other factor that may affect the system is alignment. If this does become a problem a standard reply for each alignment could be implemented."
Steve AKA Mephs
Cheers,SteveLiquidigital Online
Hehe you guys seem quiet. Does nobody have any opinions on this idea? Good or terrible? If nobody has any comments or suggestions or whatever then I''ll let it slide down the board, but I''m just wonderin if maybe people hadn''t thought to check it as the title is indeed kinda dull!!
Anyways I guess that makes this a shameless /bump.... but only once,
hehe
Mephs
Anyways I guess that makes this a shameless /bump.... but only once,
hehe
Mephs
Cheers,SteveLiquidigital Online
Sounds interesting... actually could affect actions too, if NPCs would be allowed to gossip and the information would change down the path, so if the player asked someone too far down the line (maybe because the initial NPC''s memory had expired?) they could make a wrong conclusion and get themselves in trouble. Esp. in an online rpg, and if NPCs could propagate incorrect information involving other players.
WNDCLASSEX Reality;......Reality.lpfnWndProc=ComputerGames;......RegisterClassEx(&Reality);Unable to register Reality...what's wrong?---------Dan Uptonhttp://0to1.orghttp://www20.brinkster.com/draqza
Something like this...even more advanced...is being created for a game called "Project Ego" for the Xbox. I suggest you look it up...it''s coming late this year...
-Mac
-Mac
"I''ve said what I''ve said, now get over it..."
Hmm so far as gossip goes I have another vague idea in formation. I am working on other stuff at the minute so I wont develop the idea yet. The idea is that these events could somehow have the NPC who knows of them assign a privacy value to the information. I''m not sure right now how this would be determined, but it would determine how likely an NPC is to spread information. Imagine a game where instead of a player questioning NPC''s the NPC decided he felt like telling someone the information he has and ran off and told the first person of adequate standing with him (ie someone considered a friend). This could be another NPC, or he could see a player he likes and pass on the information to you!! Alternatively if the information has a high privacy value to him then he will either tell nobody or only thos ehe has implicit trust in.Just another thing to throw into the works =)
Best of all I think with further development this could create for extremely dynamic conversation while not being so complex it brings a game grinding to a halt.
Best of all I think with further development this could create for extremely dynamic conversation while not being so complex it brings a game grinding to a halt.
Cheers,SteveLiquidigital Online
Mephs,
Hey fellow brit looks like we both have spend a considerable amount of time on the same subject perhaps we could disguss npc AI ideas via email? as this is such a big subject. nomax5@hotmail.com
Hey fellow brit looks like we both have spend a considerable amount of time on the same subject perhaps we could disguss npc AI ideas via email? as this is such a big subject. nomax5@hotmail.com
quote: Original post by Mephs
"The fourth point about memory shall be remedied by giving the NPC’s a memory of certain things. For example, NPCs will be given a memory of whom they have seen within the past hour.
How are you going to implement this? What is going to be stored? A simple list of NPCs with timestamps?
quote: All noteworthy events will be flagged by the engine and NPC’s may be questioned on these events if they have any knowledge of them.
How does it determine noteworthiness? Are there events that are not noteworthy?
quote: Now when interacting with NPC’s he may choose to ask about any one of the subjects on his “known” list.
What about when the player has been playing a long time and has seen a hell of a lot... won''t this list be massive, and large portions of it be irrelevant to any given NPC?
quote: If the NPC is on bad standing with the player asking, he may give false information to a player, thus able to lie. Memory again comes into play here.
So the NPC not only needs to be fed true information about each event, but also false information in the event of needing to lie. Or did you have some sort of Automatic Lie Generator lined up?
Memory of seeing NPCs, memory of knowing about events, and memory of standing with the PC are all pretty different concepts, only linked by the vague notion of ''memory''. How are you going to handle all these?
quote: In order that the list of known events never becomes too monstrous in size, both players and NPC’s will have a limited memory. They can only know about a certain amount of events at any one time, if any are added to the list then whichever events were added least recently that exceed a characters memory will be removed to make room for the new events. Events may be flagged as irremovable until resolved, which is the only time that the memory may be expanded upon. This will mean that players and NPC’s will never forget an event until the event has been considered resolved.
So, under what circumstances would an event ever get removed? I might not want one removed. I might want to come back to it later, and will be pissed if your system arbitrarily discarded it, meaning I can no longer follow that line of research any more.
quote: The other factor that may affect the system is alignment. If this does become a problem a standard reply for each alignment could be implemented.
Eww... alignment. (Ok, so that''s not quite as constructive a comment.) Better to base it on a few personality traits.
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost | Asking Questions | Organising code files ]
quote: Original post by Mephs
The idea is that these events could somehow have the NPC who knows of them assign a privacy value to the information. I''m not sure right now how this would be determined, but it would determine how likely an NPC is to spread information. Imagine a game where instead of a player questioning NPC''s the NPC decided he felt like telling someone the information he has and ran off and told the first person of adequate standing with him (ie someone considered a friend). This could be another NPC, or he could see a player he likes and pass on the information to you!! Alternatively if the information has a high privacy value to him then he will either tell nobody or only thos ehe has implicit trust in.Just another thing to throw into the works =)
...or, if it has a low privacy value, the NPC might not spread it because "Eh, who cares" ... and if it has a high privacy value but the NPC hates the person it involves, he might spread it. You''d have to implement an effect of it--say in the high privacy case, if the NPC hated the person it involved but it would make that person more popular, then he might not spread it; if it would drag that person''s name throught the mud, he would definitely spread it.
Of course, that gets into modelling human thought process and emotion...
WNDCLASSEX Reality;......Reality.lpfnWndProc=ComputerGames;......RegisterClassEx(&Reality);Unable to register Reality...what's wrong?---------Dan Uptonhttp://0to1.orghttp://www20.brinkster.com/draqza
You could create the illusion simply by creating a database of "knowables" and then doing a die-roll for whether a given NPC actually knows, based on their social stats (eg., no of friends, distance from home to event location, social status low/high, etc.). No need to work out whether they actually discovered this or that bit of info.
I''m interested in how you plan for the user to query the NPC.
Are you talking about an interface in the vein of Lucasarts - a list of possible questions, or are you going to allow the player to compile the question themselves (anyone remember Captain Blood?)
If the former option then is seems there are going to be a LOT of questions in the list.
Are you talking about an interface in the vein of Lucasarts - a list of possible questions, or are you going to allow the player to compile the question themselves (anyone remember Captain Blood?)
If the former option then is seems there are going to be a LOT of questions in the list.
<a href="http://www.purplenose.com>purplenose.com
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement