Archived

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

RPG: conversation trees & relationships

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

Recommended Posts

Share on other sites
It would be a mistake to include alignment in there. Change it to apparent alignment or something. If I am evil, you have not one clue to this unless I perform evil acts. If I make it a point to always make sure there are no witnesses to my crimes, I could be well liked/respected...sounds like a politician, doesn''t it?

Share on other sites
Use the conversation tree that was implemented in Ultima7. I haven''t found a better one since then. Only problem is the complexity in coding and writing dialogue for it...

Share on other sites
quote:
Original post by krez
originally i was planning on using a tree-like setup, where the player has several options of what to say to the NPC... but upon further thought i realized how much i hate those in other people''s games
then i remembered Ultima 4, where the player can type in what they want to say.
...
while this isn''t really any more open-ended than a tree where you click on what you want to say, it seems to be since you can try to chat about whatever you like, and also i can throw in some interesting yet unrelated stuff just for kicks (if you type in something about "rabbits" maybe the NPC has a bit of something to say about the topic, although it wouldn''t be worth making a clickable line in the tree-like version).

I''d hate it. Although you may not consider this relevant, it goes against basic human-computer interaction principles by making the interface to the system less explicit. You are now having to play an extra sub-game of "guess the words". At worst, this will lead to people noting down everything the NPC says, in order to type it in, a word at a time, to see what information you get. So what have you gained then? You''ve wasted the player''s time by forcing them to note/memorise the conversation before they can get the information.

The only way I would think such an interface would be justified, would be if the NPC knowledge was really dynamic, and they really could talk about almost anything. However, I doubt many people will be putting anything so useful into their programs right now. And no, this doesn''t include hacking some Eliza program in there: I mean adding some sort of knowledge base so that NPCs can talk sensibly about a range of subjects.

quote:
also, i am planning on implementing a "relationship" tracker for each NPC... it''ll track several things that might change what they have to say to you, and how they say it.

This is going along the right lines... but given that your system is essentially still a tree system (with hidden branches), it''s just going to lead to a combinatorial explosion of dialogue for each character.

Share on other sites
I''ve got to say that I (and most people) probably wouldn''t like it that much. Wizardry 8 uses a similar system (words appear in your list as you hear about them), but then when you hear a word, you have to go and click on the word with everyone else you''ve talked to (that it may apply to). Unfortunately, this ends up with a couple things:

1) A long list of words you end up clicking on every NPC on the chance they may know something about it (most of the time they don''t).

2) Generic sounding sentences just to fit the "key" words in... everyone starts to sound the same, then... no personality.

Though I agree with you that the tree method leaves a lot to be desired (especially when the sentences they give you often sound NOTHING like something your character would say), I don''t know if doing it this way is much better. Keep in mind, though, that unless your system is horribly unintuitive, it probably won''t hurt the gameplay either way you do it (though I''m not a big fan of the Wiz8/Ultima7 method, the games were good enough that the speech method didn''t bother me a whole lot).

-Chris

Share on other sites
As has already been noted, I don''t think there is a really "nice" way to model NPC dialogs.

Personally I dislike the "word-game" solution, and I''m not a big fan of conversation trees either. I''d probably try to stay right out of actually allowing interaction in conversation.

A lot of games do this by simply allowing a character to ''converse'' with another character. Then the game checks to see if there is anything of importance that the character should be told, and that information comes up as dialog. If there is nothing relevant, then the person just says something unimportant to any quests (but perhaps useful in some way such as the ingredients for a potion). Conversation might take up a certain amount of game time depending on how much information the player received.

Share on other sites
This is an interesting topic!

Crouilla's description of the Wizardry 8 system seems different to the Ultima7 one in this way: You don't build up a list of words for everyone. The words you can ask are only relevant to that conversation.

Words which lead to further conversation are highlighted too, so there's no need for "guess the words".

I actually liked the Ultima7 one. I guess what I like about this system is it does, in a way, represent the way we converse in the real world. We pick up things along the way that we want to talk about, and occasionally we bring the conversation in that direction. Of course, the person we're conversing with often has the same agenda. That needs to be reflected somehow.

These days, many consider using the keyboard to be out of the question, and higher screen resolutions would allow display of keywords for selection.

Krez may be right in saying that it's structure could be simpler to implement than the traditional tree. You just tie a response to each keyword.

As some extra relationship variables, depending on the setting, you might want to consider prejudices and magnetisms, in terms of sex, race (species if we're doing Sci-fi or fantasy), age, social status, etc. You don't have to include them all, but some standout ones give insight on the culture of the setting.

Trevize

---------
"it's not like the movies

Edited by - golan trevize x on January 14, 2002 10:29:24 PM

Share on other sites
Everyone,

The tricky bit with NPCs is that you always know that at their heart they''re not really people, but little locks which you must finagle with to spring and release juicy information. At this point, the only true way for NPCs to converse normally with the PCs is if all the characters in the game are PCs: that is, a MMORPG. Even in MMORPGs, certain NPCs are necessary: think Deckard Cain, the Identify Station, in Diablo 2. At first, the NPC personalities are interesting, but after a while you get annoyed by what is essentially a device acting like a person.

One way to solve this is have paid GMs running a set of NPCs: when the NPC is asked to perform standard functions, it goes through the motions with a minimum of fuss, but when a PC tries to converse with it in a way it doesn''t understand, the GM is called in to run the conversation. This only works with online games, though, and it''s rather expensive, even if relatively few people can run most of the NPCs. Another way is to admit that NPCs are essentially devices and make all of them robots, with a simple menu printed right on the front. Of course, when everybody except you is a robot, this makes for a rather lonely play experience. Someone mentioned Eliza; is that the chatroom Turing machine? That could be used to good effect to give nonessential NPCs the ability to chat about this and that and thus make the world a little more believable. Furthermore, if NPCs use word recognition, then they could spill what they know in the course of casual conversation. However, this could be a frustrating experience if you''re only out to gather information, rather than chitchat about the weather.

I think the conversation system''s parameters depend in part on the kind of game you want. If you want an action game, then NPCs should be strictly functional: perhaps with an interesting backstory, but overall giving quick access to their necessary abilities. If you want an immersive RPG, then go with the chatty people. Just make sure that if you''re looking for information, it will be obvious who has the information you need; or include a "shout to bar" function where you ask a direct question to everyone in the room and immediately find out what everybody who does know something knows. I truly hate trying to find the right person to ask the right question to unlock the next part of the game, and it''s this kind of "treasure hunting" that I suspect people are reacting to when they say they prefer conversation trees to natural-language systems. Just don''t make us bang our heads against the keyboard, and any system should do fine!

---------------------------------------------------
-SpittingTrashcan

You can''t have "civilization" without "civil".

Share on other sites
Reading this, I got to thinking about a system for regular conversation. ( eg. Nice day, eh?) This could be done with various flags. Something like: If weather is nice pick a random response for nice weather. If the PC happens to mention something like the war with the neighboring nation or something else that would prompt info, then you could have a set response.
This might be impractical due to the amount of extra programming, but it would make NPCs a lot more lifelike.

Share on other sites
I think NPC conversations should be functional only. When you''re playing a game you don''t want to talk about the meaning of life with a computer programme.

If I go to a store in the game the NPC shopkeeper should just facilitate the transactions. There could be some "ear candy" where the NPC has a few original phrases but that''s it.

Now I go to the inn cos I want info about a quest. I agree that a shout the bar approach is best here. An NPC comes forward and there is a short dialogue and off I go. Given that the NPC, by coming forward, has told me he knows something about the quest, I don''t need a lot more than to ask him / her specific questions.

What is interesting Krez is whether I get the right information. This is perhaps where your alignment system works. The NPC has two or three programmed responses depending on alignments. One could send me into a trap. One could send me on a detour and the other to the right place.

But why do you want extensive NPC conversation? What purpose does it serve in the overall game?

Share on other sites
I agree NPC interaction is boring. This is because we know they are not real and who wants to talk about thw world with a computer?

So I would propose to shorten the interaction for those who do not want to talk and throw in soem candy for those who want to:
When initiating talk with a NPC you get vertain things you could say to him/her and can choose. For every topic a sentence (or more) is prodeuced for those wh owant to read it. would look something like that:

NPC(when initiating conversation): "Leave me alone stranger!"

on screen:

---------------------
With [Name] you can:
- harass him
- leave him be
---------------------

For every "topic" there happens something, they talk (or not), the player gets a job, or starts a fight.
Somehow like Diablo, I guess...

------------------------------

Share on other sites
I think this is a really interesting topic, since I just happened to think about a conversational system for my own RPG earlier today. Cool

Here are my .2 Eurocents:
If the game includes 'useful' NPCs only, is it still an RPG?
I mean, most people don't consider Diablo to be a 'real' RPG since it is just kill monster, advance etc.

The good part about conversation is, that it can assist you a great deal in conveying the story to the player.
Sure, it can be annoying sometimes when you have to talk to everybody about everything just to get the key to advance to the next level. Maybe an option here is, that NPCs just start talking about what you want to know. Then conversation is much easier. If I wanted to tell you something, I probably would anyway without you having to specifically ask me about this and that.

For example, if you introduce yourself as the adventurer who wants to slay the evil mage that terrorises the country, I would probably tell you that I overheard two of his guards the other day talking about how he had begun hatching a dragon egg. I don't think you would have to ask me about the egg itself, maybe if you asked me 'is it a red or a green dragon?' I would tell you specifics that I wouldn't automatically tell you.
The point is, people who want to help will actually help you as much as they can. Sometimes the PC will have to say something along the lines of 'really?' or 'tell me about that' to keep the conversation going, but I don't think it would help the player in clicking on those things.

Then there is another extreme, when the conversation just takes place without any interaction at all. This is (although easier to implement) quite boring. Interaction can be done by choosing the right things at the right time, so the player has a hand in how the NPC feels about you. Maybe you make a funny joke, or maybe he considers it offensive. If it's actually funny, he'll think you're cool and tell you what you want to know. If it's offensive, he'll tell you to leave (or kill you )

Of course, if you can't get information from one person, you shouldn't create a game 'lockup' (without information you can't go on, but you can't get information anymore). This is easiest with things people posess. If someone has the key (let's keep it simple) to some dungeon you could just ask them for it, go on a quest for them and earn it, but you could also pickpocket him, kill him or ask a merc to kill him for cash and bring the key to you (So that your honour won't drop, but maybe the merc runs away with it if it's the key to a treasure)

---
Allow me to clear my head for once...
Stop polluting the air!

Edited by - Airhead Zoom on January 15, 2002 5:55:57 AM

Share on other sites
Ok, here''s an idea I got that takes this stuff a little further...

We''ve got physics, rendering, and game engines, ie, seperately developed component libraries, so why can''t we have generic human interaction libraries? This would be a whole load of classes that simulate human mannerisms, in this instance conversation.

It would be developed independent of any particular game, so you could have your rpg, put 100 npcs in a town, then load up the dialog library, choose values for gender, education, humor etc, and that''s it, you''ve got a whole bunch of possible generic responces leaving the more game specific stuff for you to write.

That example is one (quite simplistic) way of doing it. It''s the idea of seperate dialogue AI, that could be useful for many people who don''t have the time or knowledge to implement one themselves.

I wouldn''t be surprised if I saw this done in the future. Someone would write a comprehensive dialogue library that could freely be modified,(could even have it''s own gui), wouldn''t you use it?

Share on other sites
wow, thanks peoples... while i hoped a few more of you would like my idea (well, my copy of richard garriot's version of someone's idea), at least now i know what not to do
the main problem people seem to have is that there will be too much useless information, and "word guessing" and whatnot... well, i'm not killing the idea yet, maybe i can refine it to something that is better. i intended to either highlight the key words, or have character A say, "ask character B in the village of springfield about the sceptre," or something to that effect. so, the only time wordgames or guessing would be involved would be if the player is trying to "cheat" by asking things that they think might give a good clue (such as asking everyone they see about the sceptre). oh, and conversing with a jester might be a chore if you don't have time to waste, but that is the risk of chatting with a knave. i planned to include some red herrings for this (i.e. a few characters that want attention, so they tell you all about the sceptre and the cave it is in and the dragon that guards it, even though they are "making it up").
the reason i don't like the tree-type thing is because the player doesn't have to bother trying to find clues; they can go to each character, click on every possible choice, and then go on to the next (knowing full well that when those clues are useful they will take care of themselves, i.e. the guy the last character spoke of will automatically have that new conversation-choice in his menu). such an extremely simple conversation engine is no better than the NPC being replaced by a key to some door somewhere, or worse yet just a flag in the game that opens a new path. i want the player to have to think about what they say, so they can get the info without being lied to or chasing off their information source.
a good conversation engine is important for my game though, as the player can play it as he/she likes: fighting anything and everything, or sneaking around them, or tricking them, or searching the villagers' memories for clues about something relevant. i do not want to short-change the NPC interaction by making them say "Hi! I'm a villager, and you must go to the cave to the North if you want to get the magic ring!"

btw, i was considering a "shout to everyone" type thing, although this might be unsafe in certain situations (if you are trying to subvert the kingdom, it is best to be sneaky-sneaky)...

Airhead Zoom: there will be PLENTY of useless NPCs in my game!
ShadeStorm: yah, i meant "apparent alignment"... obviously an evil character would be fain to help out a paladin (who cannot hide his identity because that would be against his principles), but if you play an evil guy you might pretend to be good to weasle out something from a good NPC.

--- krez (krezisback@aol.com)

Edited by - krez on January 15, 2002 1:21:33 PM

Share on other sites
Krez:

Good luck on your idea -- if you think of a good way to handle this, tell us about it. Unfortunately, conversation always seems to be an after-thought in most games. Hopefully you''ll be the one to come up with a great way of handling it. That way, we all can steal it

Maybe a good way of handling it would be to have the word list, but highlight the words that would best apply to the particular conversationalist. (So, a person in town A would be unlikely to know stuff about town B... highlight all of the Town A words, but allow them to choose the Town B words if they so desire -- in rare cases, this Town A person could have a "cousin" in Town B from whom they got some information).

As for your "shout" idea, that''s a pretty good one. At least it would be a quick way to get information

-Chris

Share on other sites
maybe i could have an "auto-notebook" thing (similar to those auto-mapping features) that "writes down" and important info the player finds. when someone gives a clue, "remember to ask bob in springfield about the sceptre" will be written in the book, and when you talk to bob a message will pop up, "hmm... there was something i was supposed to ask this guy" with a link to the notebook message.
?
...
?

--- krez (krezisback@aol.com)

Share on other sites
krez, I didnt really readed all the posts here, readed your first post, then posted, because this all relates to an idea I have in mind for my game.

I have posted the idea at least 3 times but no one seems to bite I guess because I have been too generic explaining it.

what I want to do is make a MegaHal Game module (a static and as well as a dinamic library).

MegaHal as stated on the site "is a "conversation simulator": a computer program which responds in natural language to what you type". It is quite customisable, which means you can create "brains" for it, depending on those brains the Bot has previous knowledge about certain things, it learns as you speak to it, and gives you new answers all the time.

So what? well, I figured, if I could change the code so it can handle multiple brain instances, I could give each NPC in my game a Megahal brain, so players could just go and speak to any npc in their own words, and get the info out, NPC''s could talk to eachother too (so the knowledge is spreaded) and so on, it will be needed to code something so secrets are kept secret to anyone but the player at any given time, but that would be coded later.

things to keep in mind:
Megahal is GPL, we can use it and change it, but must share the source (no problem, a sourceforge project can be opened).
in order to use it in comercial or closed source projects it will have to be a shared library (no problem eighter).

I have already fidled with the code, and found it very well structured, not much work to be done, however, I am not in the same phase you are on your development, so I havent done much to it, if you like the idea, we could join forces (anyone interested is welcome also) and get a nice MegaHal Game Module for our games, and other people''s games (we can demand credit, and of course give credit to Jason Hutchens the original author ).

Share on other sites
I wonder if any of you who say that interaction in games is boring and should be quickly bypassed have played Planescape:Torment. It''s just a conversation tree style approach, but its so well implemented (and the writing is so good) that interacting with other characters is a primary draw of the game.

The great character interaction in that game is what created the cult following it has. It does a lot to make you see the NPCs as people, not as "locked chests with good information to smuggle out."

I''m all for experimenting with new ways of doing things, but the basic tree approach can still work very well.

Share on other sites
Kwizatz: i think that would be massive overkill for my current game. it sounds very interesting, and i''m going to check it out, but i don''t want to go that far right now. i simply want to simulate random NPC people better than those one-sentence or conversation-tree NPCs in many games do.

Narcus: i have not played that game either... but i hope to get my characters to come alive with good dialogue rather than the crap in most RPGs. whether i go with the tree approach, or the text one that i hope to work out, i want the NPCs to be more than "locked chests."

--- krez (krezisback@aol.com)

Share on other sites
Nice discussion, people.

This area interests me because conversation applies to several of my game designs, mainly the MUD I am working on, and the RPG I would like to do in a few months. Both games require that the player can get information from NPCs. In the MUD, the emphasis is on being able to store a lot of information, perhaps shared among different NPCs, whereas for the RPG the emphasis is on interesting information, which is liable to change or be augmented as the game draws on.

In the MUD, players aren''t afraid of typing, so it''s reasonable to expect them to type the word they want to know more about. There is also a lower expectation placed upon the NPCs, so for the NPC to respond with "I don''t know anything about xyz " is reasonable.

In an RPG, players expect talking NPCs to be useful, interesting, amusing, or all of the above. If you have to try out lots of random words to get the useful, interesting, or amusing response, then the player will get frustrated. There are only three answers, as far as I can see:
1) have the NPC say everything of interest automatically,
2) direct the player towards the correct inputs,
3) make the NPC react better toward ''incorrect'' inputs.

Option 1 leads you through the game by the nose, with the disadvantage of showing you all the boring/repeated information every time you talk to the NPC.

Option 2 is just as bad as Option 1 in that the conversation topics are largely predetermined. However, by splitting the conversation up and allowing the player to click on a menu or keyword, you cut the amount of ''useless'' dialogue that a player has to click through when talking to an NPC for the 2nd time.

Option 3 suffers from the problem that there is no easy way of making NPCs react better to the ''incorrect'' inputs. Eliza, MegaHAL, or any other conversation making program are still just throwing out largely useless sentences as far as the player is concerned. So the amount of useful information you get from the NPC is barely increased, but the chance of getting one of the truly useful responses is diminished by virtue of the fact that you now have a freeform input system.

So, given these options, I go for option 2 all the time as the best compromise: direct the players towards the information, but let them choose which topics of conversation to ask about and the order in which to ask it.

[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]

Share on other sites
I think the relationship tracker idea would be cool. For example, a player could decide his generic attitude during the conversation by setting a mood-o-meter of some sort or just by clicking on variations of a topic, like ''tell me where treasure foo is now or I''ll kill you'' and ''Do you happen to know anything about treasure bar?''.
And when you''re being rude to someone, word spreads that you''re annoying to hang out with so people will not speak up to you (which I miss most games, that people will walk up to you and say ''I heard from so and so that you want to know where the princess is held captive'') or the opposite, that you''re a cool guy and people will start buying you beers and talking about everything you want to know (and, of course, more than you want to know. i.e., gossip)

The ''leave me alone stranger'' is good, but also remember that different people would actually react differently to a famous person walking into their house. So if you''re famous because you killed the dragon that terrorised the land, in some homes you would be let in if you knocked on the door and said you''d like some food or water. And if you knocked on a door and when they open, you put a foot between the door and threaten those who live there, you could get the information you need. (that''s got to be fun for the evil aligned )

I agree that the typing system will lead to guessing or frustrations about not typing a word right, but a tree isn''t that good either. I hope we can come to a good new conversational system we can all use in our future RPGs (or adventures, if anyone is still interested in making those). I do like krez''s idea of a notebook. There are a lot of games with notebooks, but the ''artificial intuition''/auto-notification is good. The X-files:The game (although I don''t really see it as a game, more an episode where you have to click once in a while) had such a system. You should consider allowing the die-hard RPG player to disable this system since it could make things too easy.
Oh and always keep open other options of obtaining what you want than talking! (for the Diablo-esque playing style)

---
Allow me to clear my head for once...
Stop polluting the air!

Share on other sites
Kylotan: you said that you go for option 2 all the time (directing the conversation, but allowing the player choose the topics and order). did you mean this as a tree-type interface (picking the line you want to say), or with a text one (typing it in)?
i have no intention of making anything close to eliza... one or two word input, which are more or less matched to a few different NPC responses based on the relationship stuff i was talking about earlier. a player who paid attention to which words were highlighted in the previous conversations would have no problem getting useful information (the proper keywords are right there for them); but they could also fish around for other non-key information (side quests, storyline/history details that are for effect and not gameplay), or enjoy the witty and wonderful chitchat of medieval farmers.

Airhead Zoom: i like that "mood-o-meter" idea... i had a vague idea that you could change your attitude somehow while talking to an NPC, but i didn''t really think it out. although i don''t know if it would be a meter per se; there are several factors that i could use such as polite-rude, timid-forceful, friendly-formal, and so on...
because i plan on allowing the player to be of any alignment, etc, there are going to be many "leave me alone stranger" (or worse) NPCs throughout the world... depending on who you play as that is. a good player will have many helpful NPCs in some villages that wouldn''t give an [openly] evil character the time of day, but he shouldn''t expect friendly advice in the pirates den.

--- krez (krezisback@aol.com)

Share on other sites
Thought I''d jump in here with a quick description of my nearly-complete conversation engine.

I''m using a dynamic conversation engine. The player enters one-letter commands for non-essential bits of his dialog, like prepending his question with the NPC''s title (I hate the guess-the-right-word game too), and types out the name of what he is asking about (or name of the thing he is telling the NPC about, my NPC''s ask for information too, and act on it). I have implemented real-time conversation by giving each character a word balloon, and what he is saying scrolls across the balloon. Characters can be talking over each other and can interrupt each other.

I am also using the note-book idea. The player can go to his note-book, type in the name of a person or resource, and will get back a list of all the information nodes he has concerning that resource. During conversation, he can choose to express the currently selected information node to a NPC, which makes the transfer of information a little easier than forcing the player to remember exactly what it was he heard about Holy Hand Grenade of Antioch. The player can also make up a complete lie and jot it in the note-book, and relate that to a NPC if he chooses.

Sean

Share on other sites
quote:
Original post by krez
Kylotan: you said that you go for option 2 all the time (directing the conversation, but allowing the player choose the topics and order). did you mean this as a tree-type interface (picking the line you want to say), or with a text one (typing it in)?

Depends on the game: if you have a graphical interface, I'd show a list of keywords onscreen and let the user click one (as in Ultima VII). But for my MUD, which is text-based, I just display a list of keywords and let the player type in the one they want to know about.
eg.
"The goblin is willing to talk about:sword, ruins, dungeon, city, orcs>ask goblin about swordThe goblin says "the sword is mine! keep off."

Ok, so I'm not a game writer But the important thing to me, is to show the user the options rather than to let them guess. If you went to a restaurant, you'd want to be shown a menu before you ordered, not to keep asking for different foods and be told "no, we don't sell that".
quote:
a player who paid attention to which words were highlighted in the previous conversations would have no problem getting useful information (the proper keywords are right there for them);

If they are highlighted, that helps, but then if you don't present the words to them each time, this will either require a very good memory, or a lot of use of scrap paper (I always tend towards the paper). Additionally, expecting a player to remember things that the character should remember is disagreeable to some people as it blurs the line between player skills and character skills. (A problem cunningly sidestepped in the Ultima games by having you play yourself.)

quote:
but they could also fish around for other non-key information (side quests, storyline/history details that are for effect and not gameplay), or enjoy the witty and wonderful chitchat of medieval farmers.

The problem is that time spent implementing non-essential features is often wasted time. You can almost always incorporate storyline and history details into the 'useful' conversations.

Another problem with the "stab in the dark" conversation method is that you don't know when to stop. To draw an analogy, the game Hexen 2 featured lots of destructible scenery. Sometimes you'd break a piece of scenery and find something useful behind it. This effectively meant that you have to destroy absolutely everything , otherwise there was a chance that you'd miss something. The same goes with conversation: players may feel compelled to keep trying more and more keywords, just in case they missed something useful. Giving them a 'menu' up front may remove some of the problem-solving aspect from conversation, but it removes far more frustration (in my opinion).

In my opinion: keep the puzzles and problem solving to the other game mechanics, and let the conversations focus on revealing information, whether essential to the plot or merely interesting for the story.

[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]

Edited by - Kylotan on January 15, 2002 9:13:02 PM