Page 1 of 1

Reproducing the conversation system used in Glass by E.Short

PostPosted: Thu May 12, 2011 8:39 am
by ElliotM
While I still haven't figured out everything about Adrift 5's new conversation system, I think I have figured out how in Adrift 5 one could reproduce the conversation model used in Glass by Emily Short. You can see the Inform 7 source code over at http://inform7.com/learn/eg/glass/source.html . If you take a look at the conversation tables in the Glass source code, you will find that conversations are stored in tables containing three columns, one for the starting topic, one for the final topic, and then the comment itself.

http://emshort.wordpress.com/how-to-play/writing-if/my-articles/conversation/ wrote:Topics with Interstitial Quips.
In this model, used for “Glass”, quips are associated not with specific topics but with the transition from one topic to another. Order of topics is important here, where it was not important in the two-topic quips model above. When the player or an NPC mentions a new topic, the model looks up the current topic and the last topic, finds a quip associated with that specific conversational transition, and prints the result. The quip used is then erased from the table in order to avoid repetition.
...
Major state changes in the conversation, where the characters can be assumed to be using a new set of information and moving towards a new endpoint, are modeled as scene breaks; so each scene might be understood as a contextual domain in which certain facts are known and certain attitudes are at work.


Now for here is how I think it would work in Adrift 5.

Create two text variables:
  • %previous% , which holds the previous topic and will be used as a part of our Text Override targets.
  • %scene% , which will be used to help mark scene changes and can be used for restricting conversation topics and may be helpful in building the Text Override targets if your game warrants it.

Create Ask/Tell topics:
  • Write a Text Override target for the Topic Conversation text in the form of "[%previous%] topic keyword"
  • In the Topic Actions include an Action setting the variable %previous% to the new topic. (Here I am really hoping that the Text Override will trigger before this Action, otherwise I have some more thinking to do.)

Create Text Overrides
  • Each unique pairing of topics will require its own Text Override. Order matters, so "[King's Health] Heirs" and "[Heirs] King's Health" would need two different overrides.
  • To create multiple comments per topic pairing will require the use of a blank default description and multiple alternate descriptions with the Display Once property enabled.
  • The last Alternate Description should contain a generic message, perhaps indicating that there is nothing more useful to say, but shouldn't have the Display Once property enabled.

With these pieces (variables, ask/tell topics, and overrides with alternate descriptions and display once), I think a reasonable reproduction of how it worked would be possible, though I haven't figured out how AI for NPC conversation goals would work yet. Barring any misunderstandings of how Adrift 5's mechanics function, I think this would work. Blank as a topic is interesting and could be used in a Topic restriction message in an override target for handling awkward silences or something if there was no smooth transition between topics.

I'd be interested in thoughts on this or other conversation systems. Emily Short's article on Conversation Systems ( http://emshort.wordpress.com/how-to-pla ... versation/ ) is interesting reading and I may take a look at how some of the other models she discusses might work in Adrift at another time.