Conversation

Parent Previous Next

Conversation

There are various ways the player can converse with characters.  The most simple way is to use an "ask/tell <character> about <subject>" method.  However, you can also "say <something> to <character>".  ADRIFT also allows you to keep track of a conversation, so saying things later on in the conversation will give a different response to the same thing earlier in the conversation.


The Conversation tab initially looks like this:



When you press the Add Topic button, the New Conversation Topic dialog opens:



The Summary field is just a description to remind you what this conversation is about.  


The Type of topic checkboxes determine what commands this conversation responds to.  Some checkboxes are not compatible with others (for example, if you select the Introduction checkbox you can only optionally select the General Command checkbox).  Any incompatible checkboxes will be greyed out.


If you create an Ask topic, keywords can be specified, and are triggered on ask character about subject tasks. Keywords are listed using commas to separate them. Note that a keyword can actually be a short phrase rather than a single word.


If the player's command matches more than one topic, the one with the highest percentage of matches will be the one chosen.  For example, if the player types ask Hamish about the green cheese, and you have one topic with keywords "green, boat" and another with "cheese", the second topic will be picked as it will match 100% of the keywords, whereas the former will only match 50%.


Tell works the same as Ask, obviously with a tell character about subject task.


General Command allows you to set a statement of what can be said, using Advanced Command Construction or Wildcards, much like task command matching. These are triggered with a say <whatever> to character task.


The player is either in conversation with a character, or is not.


General Commands can be flagged as Introductions or Farewells.  These then become explicit introductions/farewells.  That means the command will either enter you into conversation with a character, or leave the conversation with that character.  So for example, you could create a general command "[hello/hi]".  So if you then typed the command "say hello to campbell" it would enter the player into conversation with Campbell.


Introductions/Farewells can also be set without a general command.  These then become implicit introductions/farewells.  If the player starts talking to a character without using an explicit intro, the implicit intro (if it exists) will kick in automatically before the particular command.


So for example, if the player isn't currently in conversation with Campbell and just types "ask campbell about adrift", and you have an implicit introduction defined, you might get the following:

Campbell looks up from his computer as you start to speak. <- implicit intro
"Hey Campbell, how're you getting on with ADRIFT?", you ask.
Campbell smiles. "I'm getting there. Thanks for asking."

If, for example, you don't type an explicit farewell, such as "bye", and the conversation is ended (for example, you start conversation with another character, or you leave the room), any implicit farewells will be triggered. So for example, in the case about you might have:

Campbell turns back to his computer and resumes coding furiously.  <- implicit farewell
You move south.

Nodes are just each entry within the conversation tree. You might want to stay at a particular node within the tree until a specific choice is made, hence the checkbox.


You can use restrictions on the conversation nodes to prevent them from being asked a second time. Or if it's simply a matter of changing the displayed output, you can use the alternative descriptions within that node.

Conversation Trees

Conversation trees in ADRIFT work by keeping track of where the conversation currently is in the tree.



In this example from the Conversation sample, if the player asks this character about flowers then the "Ask about flowers" node will print some text and ask the player a question (do they like flowers) that they can reply Yes or No to.


If the player says "yes" or "no" then this will trigger the "Reply no (like flowers)" or "Reply yes (like flowers)" node that is nested under the "Ask about flowers" node. If neither is entered, then ADRIFT goes back to the start and tries to match the players input to one of the top-level topics.


If the player says "yes" then the "Reply yes (likes flowers)" topic asks if the player wants the flower and the conversation moves to the topics nested below it, "Reply no (want flower)" or "Reply yes (want flower)".


Again, the player must say "yes" or "no" to match one of these topics, otherwise the conversation will go back to the start.