Versu: Conversation Implementation

This is one of several design articles about the new interactive narrative platform Versu, which Richard Evans and I have been building with a team at Linden Lab.

versu_logo

Any platform focused on social interaction needs strong conversation handling. The following article goes into a certain amount of technical detail about what the system does and how it works, and Richard kindly agreed to write about the sections on which he had the most design influence.

Richard and I each had some examples in our previous work to draw from, but they needed substantial revision to work for Versu. Moving away from a turn-based parser-driven model means that we could dispense with the contextual parsing challenges that take up so much room in the Threaded Conversation system for Inform; on the other hand, it introduces a whole other dynamic. In a multi-agent story, conversation flow has to be explicitly controlled; we have to track whose turn it is to talk next (if anyone’s), enforce rules of topicality; we have to give characters the option to interrupt others, and appropriate responses if they do so.

In addition, conversation in Versu scenes needs to be interleaved with other character behavior. Characters might be talking while dancing, or eating dinner, or during a fight; so we need to provide to make conversation flow around the other social activities that are occurring at the same time.

Much of the design work on this aspect of the system was done by Richard Evans, based on Harvey Sacks’ studies of conversational interaction.

Richard describes the design here:

Membership Categorization Devices

Versu models multiple concurrent social practices. For example, during a conversation at dinner, there is a social practice modeling the dinner itself (providing affordances to eat and drink), and another practice modeling the state of the conversation (whose turn it is to talk, what topics are currently salient). Each practice assigns a character a role. So when there are multiple concurrent practices, each character is simultaneously assigned multiple roles. He is playing many roles at once. This makes the social interaction more like real life, adding depth to each character.

For each role, we can ask: how well is he performing that role?

For example, Mr Darcy is:

  • A loyal friend to Bingley
  • A kind brother to Georgiana
  • A lousy participant at the ball

For each role evaluation, we also store reasons:

  • Darcy is a loyal friend to Bingley because he tries to look after his best interests and give him advice, even if it is unwanted
  • Darcy is a kind brother to Georgiana because he is very supportive
  • A lousy participant at the ball because he refuses to dance

Evaluations, and the reasons which justify the evaluations, can be communicated from one character to another. For example: in an early play-test, I was wondering why the doctor was being so rude to me when I had never spoken to him before. I found out, after much debugging, that the reason for his rudeness was that I had been mean to the butler, and the butler had been gossiping about me in the kitchen.

Choosing how to Respond

When someone says something, the others (both player characters and NPCs) have a choice how to interpret it; replies to a particular action are not automatic.

In Versu, a response is just a normal type of action. A character uses the same utility-planner to choose a reaction as he does to choose any other type of action. For example, at dinner, Miss Bates makes a sycophantic remark about the wine. Brown can choose to interpret this remark as:

  • betraying low breeding
  • polite
  • or we can ignore the remark altogether

Each of these interpretations involves updating one of the role-evaluations described earlier:

  • If he decides she was betraying her low breeding, then he will evaluate her harshly as a member of the gentry
  • if he decides she was being polite, he will evaluate her positively as a polite guest

Your Response is Itself a Public Act, Witness-able by Others, itself Susceptible to Further Responses

When a character decides on a particular way of interpreting another’s actions, this decision is itself publicly witness-able, and susceptible to further evaluation. If, for example, you (playing Brown) decide that Miss Bates’ sycophantic remark betrays her low-breeding, then others might interpret your displeasure as:

  • properly critical (displaying good judgement)
  • snobbish

Because evaluations are themselves subject to further evaluations, a trivial initial remark can snowball into something dramatic, with consequences piling on consequences.

Respecting and Violating Norms

Every social practice comes with a set of norms: things the participants are expected to do.

For example: at dinner, you are expected to finish your food. During a conversation, you are expected to respond when asked a direct question.

Now we want the NPCs to (usually) respect these norms, but this has to be handled delicately.

We don’t want the norm-violating actions to simply be unavailable. If they were, the player would never be able to break out of the social straitjacket. Some players like to experiment with the boundaries of the system, and if a player wants to interrupt a conversation, he should be free to do so. The NPCs should notice, and disapprove accordingly.

The requirements for norm-following, then, are these:

  • an NPC should respect the norms
  • but any character can violate the norms at any moment – it’s just that NPCs should not typically want to do so
  • if a character does violate a norm, it should be noticed. The others should understand that a norm violation occurred, and respond accordingly

These requirements hold in particular for the social practice of conversation.

There are a number of subtle norms involved in conversational turn-taking which we all know implicitly – even if we might find it hard to spell them out in detail.

NPCs tend to respect these norms of conversational turn-taking, because the simulator assigns a lot of weight to norm-compliance when determining what an AI agent wishes to do. (It is possible for an author to remove these norms for individual NPCs, creating someone who talks apparently at random or interrupts — but the effect is typically confusing rather than appearing as plausible characterization.)

Meanwhile, the player must be free to violate the norms if he so wishes – but if he does so, it should be noticed.

Modeling Conversational Context

The norms of conversational turn-taking are spelled out in remarkable detail in Harvey Sacks’ lectures on conversation, and in the seminal paper “A Simplest Systematics for the Organization of Turn-Taking for Conversation”.

We implemented a simplified version of this model in Versu. A conversation has various fields:

  • a selected speaker : the person who should speak next
  • a set of selected topics: the next person to talk should speak about one of these topics
  • a selected speech-act: the next person to speak should use this particular type of speech-act

When a specific character is asked a direct question, or addressed in some other direct way, she is made the selected speaker. She is expected to speak next. Other people can speak out of turn, but it will be noted as an example of interruption, with various consequences. If the selected speaker fails to speak when expected to do so, this also constitutes a (minor) norm violation. People will notice.

Some speech-acts do not set a selected speaker at all. If one character makes a general remark about the weather, for example, anybody can respond. There is no expectation that a particular person will speak next. In these cases, the selected speaker field is cleared. But there are still other norms in play: people should not talk about any old thing – they should continue talking about the weather. The conversation has a set of selected topics describing what may be talked about next. The player is free to talk about something else, but it will be noted as a (minor) norm violation.

In an earlier prototype, each conversation had a unique selected topic. This meant that the player’s choice in conversations was highly restricted. Conversations tended to exhaust one topic before moving mechanically to another. An important modification that Emily made was to expand the conversation context to include a set of salient topics, rather than an individual one.

Each quip can be “about” multiple topics at once, and a conversation stores all of them. This encourages flow and fluidity between topics, while maintaining conversational salience.

Another feature of conversation is that a significant pause in the exchange “wipes out” any existing conversation information. After several turns, conversation information is wiped, allowing characters to introduce new dialogue.

Conversation Data
(returning to Emily)

Versu’s conversation data draws on a number of ideas about conversation modeling I’ve published before in the context of Inform projects. Specifically:

  • pieces of dialogue are represented as quips
  • a quip may be unique to a single speaker, or may be speakable by any character
  • a quip can be said to “directly follow” or “indirectly follow” another quip, which allows some control of dialogue flow where one utterance only makes sense in context of another
  • a quip may convey factual information, and be speakable only if the character speaking it believes that factual information to be true
  • a quip may be said to be about one or several conversation topics; characters will prefer to stay on topic if possible, unless enough narrative time has passed that that topic can be considered dropped
  • a quip may be tagged as “introductory”, which means that it is able to introduce a new conversation topic; other quips are appropriate only if that topic has already been raised

And also nuclear options that let you do pretty much anything, at the cost of making you type more:

  • quips may have arbitrary prerequisites for being spoken
  • quips may trigger arbitrary functions to follow up

Those arbitrary prerequisites make it possible to attach more character- or genre-specific details: for instance, an employee who doesn’t like to talk about certain topics in front of his boss, or a confidential conversation topic which can only be spoken if everyone else in the room is friends with the speaker.

In addition, because Versu’s model concerns itself with character moods (happy? sad?) and the types of evaluations described above (Ryan is not very bright!), mood and evaluation information can also be conveyed in a quip.

This means, for instance, that we might have a quip where the dialogue is

“So Ryan failed another math exam. Guess we can stop saving for college. Just what I always wanted, a kid living in the basement working at Burger King when he’s 40.”

This quip would be tagged to show that it encodes factual data (Ryan failed his exam), evaluative data (Ryan is not a good student; possibly also Ryan is not a good son), and emotive data (I am annoyed).

Responses

All of these types of output then offer reaction options to other characters. This same piece of dialogue might cause:

  • Ryan to get angry because he’s heard himself being evaluated negatively. Maybe he makes a rude gesture or storms out of the room; maybe he starts a fight with his father and causes permanent harm to their relationship state.
  • Ryan to wonder whether his father might be right about his study skills, and change his self-image to be more self-critical.
  • Ryan’s girlfriend to get angry on Ryan’s behalf, because she doesn’t like to hear someone say negative things about her romantic partner.
  • Ryan’s brother, who is on bad terms with Ryan, to smirk rudely, because he enjoys hearing negative evaluations of people he dislikes.
  • Ryan’s brother to speak a custom line of follow-up dialogue: “Don’t get your hopes up. I hear you have to be able to make change at Burger King.”
  • Ryan’s teacher to offer a factual contradiction (“Actually, Ryan didn’t fail.”).
  • The speaker’s wife to comfort the speaker (either with dialogue or a physical gesture like touching his shoulder) because he’s demonstrating a negative emotion.
  • The speaker’s sister, who has poor self esteem about her own intelligence, to remark that not everyone can be great at these challenges.
  • The speaker’s brother to say that there are traits that matter more than intelligence, because expressing a strong evaluation about a role implicitly asserts that that role is an important one (and then other characters can dispute that implication).
  • Ryan’s fellow student, who has previously evaluated Ryan positively for intelligence, to reply with a positive evaluation he’s remembered from that occasion (“Ryan understood the dialogue in that Mandarin movie better than anyone else in Chinese class.”).
  • Another kid’s parent to look uncomfortable at hearing things that shouldn’t be aired in front of strangers.

…and so on. There are even a few other possibilities that this example doesn’t cover: for instance, dialogue that is meant to be a joke can be tagged as that sort of speech act, inviting listeners to laugh and also to evaluate the speaker as funny, for future reference. And characters can respond to a factual statement not only by agreeing or disagreeing, but in some cases by drawing additional inferences, if one belief has been specified to “imply” another belief.

A listener’s choice of response will depend on that character’s preferences and traits, relationships, and current moods, and the scene as a whole will play out very differently depending on who is in the room at the time, and how people react to one another’s reactions. In addition, other characters may accept the speaker’s factual or evaluative statements and incorporate them into their own world view, so that from then on other characters may also view Ryan as an inferior student who failed his exam.

This complexity comes from a juxtaposition of fine-grained specific features (such as the pre-written follow-up quip) with several general systems. There’s a general system for allowing people to react to things said about themselves, another general system for allowing people to respond to others’ expressions of emotion, and so forth. Drawing from all of these systems means that any given quip of conversation can have a unique combination of effects that would not have been reproduced by saying something else.

Authors can give individual characters unique response styles and strategies: for instance, in the existing stories, there is a character who prefers to make the most negative evaluations possible about his own son, so he will select his dialogue and responses accordingly. Characters can also come into a story with pre-existing relationships and judgments of other characters, self-evaluations, and beliefs about the importance of particular traits (“intelligence is not so important”) that will shade their responses. When those beliefs change, the behavior can change as well.

24 thoughts on “Versu: Conversation Implementation”

  1. Very interesting system :) and excellent work, I haven’t “played” it because I don’t have an iPad.

    I have a few observation I dare to share if you don’t mind. I beg you to pardon myself in advance for my poor poor english, i hope you get something out of what I want to say.

    I echo the comments of Auntie Pixelante and Isaac Schankler, perception might kill the “format” into a “genre” much like like comics = superheroes. Seminal and initial works are very important to any formats because it generates a “king”, something people will follow and that will define the voice of the format.

    Also, regarding the general “state of the art” of gameplay and interactive storytelling, it might also reduce innovation it introduce to a specific genre (specific input, specific presentation, specific content, specific tone, specific audience, specific gameplay) and might not be seen as translating well into other design by simple affiliation with his initial genre and interface.

    It would be interesting to make works that are “similar” to popular video games to draw comparison (and eyeballs) and highlight the gain in design (and enjoyment). For example something “similar” to “reference” like mass effect or deus ex (without the gunfight or only implied) to let emphasis on dynamism of character, theme handling and pacing difference. It would help people get a picture and make the “translation” from one type of game to a type of mechanics.

    Comedy of maneer is notoriously difficult to do with existing game mechanics, even in friendly genre like IF or some adventure games. It would help this genre blossom if it doesn’t stuck in its own format ghetto. By affiliation, closer genre and theme from “typical” video games would also help these aspects and type of content “bleed” into other different genre, further enriching the quality of expression in video games overall, and exposing this genre to more people in a different context, maybe prompting them to jump to the initial context.

    The last aspect is a matter of presentation. Jane Austen story is part of identity of literature culture, it convey this strong sense of being from a certain “book person type”, and Versu’s presentation draws admirably from element associate to this culture. It provide the right affordance for the right identification, it might drew an audience who had never consider this kind of interactive media before. Games like the sims also use the right identity affordance, drawing heavily from dollhouse, sitcoms and soap to build an identity who draws the right audience previously under served.

    And there this is not a “but” but an “and”. This elements of presentation as a huge impact on perception AND if we provide many different ways to “interface” with the system, using the same mechanics but with different affordance for different identity, it might address the concern I had raised so far. I would rather see versu became the next “book” rather than the next “science fiction”, more of a media and less of a genre.

    For example picking clue from annotation system for animation like in http://www.gdcvault.com/play/1012460/Automated-Emotion-Facial-Animation-in or this http://gdcvault.com/play/1014361/Cinematic-Character-Lighting-in-STAR as just an example of providing different affordance to prime the mechanics instead of the presentation (just like video games encompass IF and platformer) . Not telling you to implement these things specifically, but suggesting to encourage anyone breaking from the initial presentation.

    I want to stress that this is not, absolutely not, a critic of Versu as it is or its content, not at all. It’s more a plea to consider the broad picture to allow video games to grew, without cornering itself yet again in a ghetto, and broadening interactive storytelling, mean of interactive communication and just communication itself.

    1. Yes, I understand what you’re saying — it is very important what one launches with. I’ve actually got a whole article in process about why we started with Austeniana and what effects that had on the system, but it’s absolutely not the only thing that will be around; other genres are in the content pipeline. We do want to establish, early, some of the breadth of what Versu can do.

      In my experience with any new IF system there is always a certain amount of scheduling tradeoff here, because you want to

      — make at least one work, and ideally several, that are substantial enough that they’re not just a demo, so that you can discover issues in scaling, narrative structuring, pacing, etc., that do not manifest themselves in a smaller piece. House on the Cliff and A Family Supper are these pieces for us;

      — make a number of different works that stress different aspects of the system, to check that you’re not making too many core assumptions about what your system is going to be used for;

      and also at the same time

      — get your tool in front of players and authors within a reasonable time frame, because whether or not you are working on a commercial product, you need to be checking your assumptions against the wider community, start getting feedback from tool users about what they want to create, and allow that to help shape your priorities and project direction. (Within reason — there’s always some number of users who really wanted a screwdriver and no amount of critique or redesign on your hammer is going to make that work for them. But these things need a community to thrive.)

      So I’m quite conscious of these things. When working on Inform 7, Graham and I had some similar challenges, though in that case we were at least working within a broader medium that had a number of established genres that we could work against.

      Of course it is a much larger jump to make entirely other interfaces to the underlying engine. I can’t comment on what might happen there in the long term.

  2. Hi Em,

    Played it last week and it was a really great interactive experience. Enjoyed its flow a lot. I’m yet to play The House on the Cliff, looking forward to it.

    Is the platform going to be released for others to create their stories as well? :)

    Best to you,

    Tim

  3. Hoi hoi,

    I’ve been following the articles about Versu with great interest. It is clear that the narrative experience, because of the elaborate design of the system and content, is very in-depth. After reading Richard Evans’ article on Exclusion Logic (as a form of Deontic Logic) I have to wonder how easy it is to inspect a narrative under creation. With all the aspects that have to be taken into account it sounds quite difficult to understand the structure of what drives IF like this. How do you, as the content creator, know that new quips you add make sense given what has already been entered into the system?

    Regards,

    Martin

    1. Martin mentions an article by Evans on exclusion logic as a form of deontic logic. I got a bit side-tracked reading “Representing Personality Traits as Conditionals” http://philpapers.org/archive/EVARPT.1.pdf

      Traits-as-conditionals links up nicely with Inform 7 in terms of simplicity and versitility. Maybe “robust” is the term I’m after. In any case, I began to wonder whether personality traits could be object-oriented. Encapsulation is already evident to a certain extent, but I am referring to a cascade whereby personality instances (e.g., Jack and Jill) inherit conditional rule sets such as the following, using inventive pseudo-code inspired by the Evans article.

      { Rambunctious
      Extroverted: if I meet a new person, then Excitement
      Careless: if I do a task poorly, then Satisfaction
      Boisterous: if I am clumsy, then Enjoyment
      }

      Could the Rambunctious trait be assigned to both Jack and Jill, or must each character contain all its own rules in order to be modular? Could there be a superset of OO traits, e.g. “Foibles” which includes { Rambunctious, Eccentric, … }? Could the Rambunctious trait be turned off universally, so no character shows it? If traits could be encapsulated, could one turn off a contained trait (e.g., both Jack and Jill are Rambunctious, but Carless is off for Jack)?

      Yes, yes, I know there has been no indication that Versu uses traits-as-conditionals, let alone affords OO structuring. Just pausing for a bit of academic wonderment.

      1. Thanks for the links! And since they go to papers on philpapers.org, that means that what I’m doing now officially counts as work. ;)

        Emily could speak to this more than I could, but there doesn’t seem to be any reason that that couldn’t be done in Inform 7. I7 has lots of provision for more specific rules (or similar structure) overriding more general ones — but the details would be in the implementation.

    2. Martin: For creating Alabaster, we used a combination of automated charting of the system and a content-creation tool that assists the author in creating a new piece of dialogue within the game whenever she reaches a point where nothing has been implemented to follow up.

      An advantage of this method is that the in-game creation tool already knows a great deal about conversation state at the point of insertion, so can prompt the author and fill in parts of the template (reducing typing effort and likelihood of mistakes). It also gives the author a sense of extending an existing, functioning dialogue rather than throwing bits of code into the mix and hoping they attach to the story at the right points.

      For Versu, I’ll be able to go into a bit more detail when the completed UGC tools are announced, but we’re drawing on lessons learned from previous projects, and Alabaster especially.

  4. Wow, it’s clear a great deal of research has gone into this! (I hope that sycophantic remark doesn’t betray my low breeding..;))

    If each character can choose how to interpret any action (and some of these reactions can be unspoken), I can see how many responses that make perfect sense in terms of the game could come across as arbitrary or jarringly out of character if interpretations and the reasons behind responses are largely hidden, as you pointed out in the example about the “rude” doctor and gossipy butler.

    It could help if characters have visible reactions to some events (eg “Brown arches an eyebrow at this display of low breeding”) or occasionally allude to them (the doctor mentioning your ill-treatment of the butler as he criticizes you). However it could be obtrusive to include expository statements about everyone’s reactions after every action; and it can be very stilted to state many motives explicitly (eg “as you know Jim, I’ve been silently resentful for months about you dating my ex-wife, so I’m going to passive-aggressively spill coffee on you.”)

    In one of the screenshots, I noticed a “thought bubble” appear above one of the character portraits giving some insight into her interpretation of recent events. I’m hoping that this may represent a form of “tooltip” that can give some partial insight into others’ thoughts or reactions when hovering over the character portraits? From an interface standpoint I’d think that would be a really ideal way to be able to perform a casual inspection of other characters’ reactions without interrupting the story.

    1. In one of the screenshots, I noticed a “thought bubble” appear above one of the character portraits giving some insight into her interpretation of recent events. I’m hoping that this may represent a form of “tooltip” that can give some partial insight into others’ thoughts or reactions when hovering over the character portraits?

      Yes, that’s exactly right. Tapping/hovering on a character image brings up a message that indicates what mood they’re in and why (annoyed at another character? frightened by something that just happened? etc.).

      However it could be obtrusive to include expository statements about everyone’s reactions after every action; and it can be very stilted to state many motives explicitly (eg “as you know Jim, I’ve been silently resentful for months about you dating my ex-wife, so I’m going to passive-aggressively spill coffee on you.”)

      Discovering exactly how best to use this information is one of those design challenges about working in a new medium, yeah. Currently explicit exposition about relationships tends to pop up when a relationship state changes, for instance — like, if you wind up becoming someone’s enemy, they may mention specifically something they dislike about you by way of explanation.

      We also try to avoid situations where lots of judgements are occurring with no signal at all. It can happen sometimes, especially if characters are talking behind your back (as in the doctor/butler example), but over the course of development we moved increasingly towards indicating at a minimum that they had made a judgment (“X gives you a funny look…”). People make silent judgments in real life all the time, of course, but in IF it can feel broken.

      There are also some behind-the-scenes tuning tweaks to make characters more likely to react to the player character than to one another. It’s funny how being the viewpoint character/agent shifts one’s perceptions: when NPCs had no bias about whom to react to and treated everyone equally, it too often felt like you were being “ignored”; when they were given a bias to respond to the player character preferentially, that felt more “natural”.

      1. “People make silent judgments in real life all the time, of course, but in IF it can feel broken.”

        I think that’s just because of the 2nd-person viewpoint. In an omniscient viewpoint it would be fine and natural. Reading what’s going on in other’s heads is one of the prime pleasures of reading, since visual media cannot do that. Granted, when the reader is also being one of the characters it can lead to some problems of telepathy, but I think that could be solved by clever foreshadowing in the way a murder mystery shows scenes from the serial killer’s present perspective without tipping his hand too much, keeping the reader curious along with the protagonist-investigator.

        Emily, how is Versu authoring as far as “writing in lots of tiny little boxes,” as a few writers have characterized using IF tools? Worse than Inform?

        And how does Versu balance character believability vs. manipulativeability? There was a discussion a few years back that to make social IF playable the player needed to be able to manipulate the other characters to acheive their goals, but that very ability to see how to manipulate them makes them seem like automatons rather than people. Is it even a problem?

      2. how is Versu authoring as far as “writing in lots of tiny little boxes,” as a few writers have characterized using IF tools? Worse than Inform?

        To some extent those are questions that can only be answered by other people after we release the toolset — I mean, I personally don’t feel that writing Inform is like writing in tiny boxes either. And it’s hard for me to go into a lot of detail about the tool design philosophy without basically making a premature announcement of how it’s going to work, so I think I’ll hold off trying to go into that.

        There was a discussion a few years back that to make social IF playable the player needed to be able to manipulate the other characters to acheive their goals, but that very ability to see how to manipulate them makes them seem like automatons rather than people. Is it even a problem?

        Well, I think this question assumes a couple of things:

        (a) Social IF must be about achieving goals via puzzles, and therefore the characters have to be able to be controlled. That’s true of some of the kinds of things one could create with Versu but not necessarily with all of them; or even true in some moments of a story but not in others.

        One of my favorite moments testing A Family Supper was when I spent some time sitting and sewing with another character who was upset, as we both tried to calm down after a traumatic event. I know this was my own projection, but for a moment it felt as though we were enjoying some sympathetic contact, being together in a room without talking, in a way that often happens in real life but not often in games. That felt like an important moment in that story runthrough, for me; it was narratively meaningful and arose from the simulation, and it affected how I played my character afterwards (continuing to pursue friendship with the other person).

        So characters do not always have to be handled instrumentally. Sometimes their behavior and your interactions with them can be about roleplaying or imagining a particular mood.

        (b) Figuring out how people work diminishes them into robots. I think this is most problematic if the character implementation is very general and standardized, rather than specific to each character. If the characters feel like individuals, if their vulnerabilities vary, and are justified by backstory, then the discovery of how to manipulate them can be part of the narrative experience; and can be on the order of “this particular character gets upset when I talk about his son” (realistic, potentially interesting) rather than “here is a sequence of remarks I can always make that is a cheat code to upset any character” (implausible, illusion-breaking).

        In the more successful VN dating sim works, a lot of the time the player’s task there is to figure out which types of action will be most appealing to which characters, essentially making a puzzle out of the personalities of the different possible date-ees; and if we imagine something like that, but even less about score-counting and puzzleness, then I think you have a solution to the problem you just described.

        In any case — we’re still in early days on this platform, and there’s a lot still to be seen about what it can do, and what it could do given other people’s visions that I haven’t considered.

      3. Granted, when the reader is also being one of the characters it can lead to some problems of telepathy, but I think that could be solved by clever foreshadowing in the way a murder mystery shows scenes from the serial killer’s present perspective without tipping his hand too much, keeping the reader curious along with the protagonist-investigator.

        I think… well, Versu is to a great extent a drama-management system as much as a game. In more drama-directy things, it’s okay if the player has access to a lot of game information that the PC doesn’t; they’re going to use that information to contrive more interesting story things, rather than Make Their Guy Win.

        The trick is delivering that information in a way that’s not unnatural, overwhelming or irrelevant.

    1. I have to put a disclaimer around this comment to the effect that I’ve never used Comme il Faut myself nor programmed any Facade content, so what I’m about to say is based on my understanding of those systems from playing with the games, reading articles and listening to talks, and some conversation with the authors. I’m also not going to compare the content-creation tools, not because this doesn’t matter but because ours aren’t public yet.

      So, with that said:

      ===

      There are many major differences between Versu and Facade — we’re not trying to do natural language processing, for instance, nor are we going for Facade-style drama management where the simulator picks beats and assembles a dramatic arc based on algorithms to decide where there’s rising action. Those are both hard and interesting problems, but just not what we’re doing here. (Versu has its own notion of drama management, but its ambitions are different.)

      There are more similarities with Comme il Faut. Both Versu and Comme il Faut allow characters to make judgements of one another and store data about those judgements for later use in conversation to justify choices. Both track relationships between characters and have a concept of multiple ways for characters to evaluate one another. In Prom Week there are three aspects of mutual judgement, and in the existing Versu stories there are many types of mutual evaluation, but there’s a conceptual similarity here.

      There are also significant differences, though. Versu characters are constantly acting independently, whereas in Prom Week pretty much everything that happens is the result of player action in moves; and Prom Week is oriented heavily towards puzzles and unlocking different social states, whereas Versu allows for less goal-oriented interpersonal interaction as well.

      Also, Comme il Faut is modeling social acts at a slightly different level. If in Prom Week you start an interaction with someone, that interaction will play out in full (with multiple quips on both sides) before you have a chance to act again, so that the atom of interaction is something like “brag to Oscar” or “ask Mildred out” and the entire conversation that emerges around that.

      The conversation model in Versu operates, as we’ve seen, more on a sentence-to-sentence level. If someone reacts badly to your bragging, there’s space to respond to their rejection, for instance — and, as we’ve seen, a lot of the time text has multivalent effects. At least for me, this has the effect of focusing the player more on the specific text of what is said, in comparison to Prom Week where the emphasis is on picking a social action at one level up. Whether that’s a good or bad effect depends on what you’re trying to build — it’s just there.

      Prom Week also does a lot of silent work in the engine (or, rather, does a lot of work which is then exposed to the player through graphical displays rather than in narrative events per se) to do with social networks — characters changing their opinions of people because of relationships between friends and enemies, etc. In Versu, those effects have to percolate through the network through explicit acts: the butler has to actually tell the doctor that Miss Bates is rude, for instance, and then the doctor has the opportunity to accept or reject that information, incorporate it into his worldview or not — which he is probably more disposed to do if he likes the butler. The doctor doesn’t automatically adjust his view of Miss Bates in response to a knowledge of the butler’s social network alignments.

      As to PsychSim — I don’t know it well enough to discuss in detail, but from what little I’ve read, it looks like it does a lot with having agents model the knowledge, emotions, and judgments of other agents.

      Versu does not currently do this in depth: so for instance, in Versu, the doctor might think the Miss Bates is rude, and he might also react to learning that the butler thinks Miss Bates is rude (by, in that moment, adjusting his own view of Miss Bates, or deciding the butler was untrustworthy, or starting a discussion about the importance of manners, or whatever).

      But the doctor does not then permanently retain a full map of information about others’ evaluations or belief states as he last learned about them, so unless the author had customized some content to accomplish this, the doctor would not be able to go tell Mrs Quinn that the butler said Miss Bates was rude.

  5. Hi Martin, Just to follow on from what Emily was saying.

    I know Comme il Faut well. I was on Josh McCoy’s thesis committee, and have been giving them feedback since the beginning. I’ve always been fascinated by Facade. The UCSC guys rock hard.

    At a high-level, these systems have a lot in common with Versu: they are all aiming to provide interesting individual characters in dramatic situations. But at the ontological level, there are some fundamental differences.

    ——–

    In Facade, the scripts are hard-coded to the particular characters who are involved in them. There is no general making-cocktails activity – instead, there is the particular activity of Trip-making-cocktails. Because the scripts and characters are baked together, it would be hugely nontrivial to replace a character in Facade with another (replacing Trip with John Malkovich, say). It would involve rewriting most of the scripts. Relatedly, the scripts are hard-coded for one character (the guest) to be the player character. Again, if you wanted to rework it so that you could play Trip, this would involve a major rewrite.

    In Versu, by contrast, the social practices and the characters are authored separately. The domain-specific language in which the practices are written encourages a style in which the practices are *agnostic* about which characters are playing which roles, and whether the roles are being played by players or NPCS. So if a practice is authored to have two roles, it can immediately be reused in various permutations: a human plays role 1 and the computer plays role 2; a human plays role 2 and the computer plays role 1; humans play roles 1 and 2 (multiplayer); the computer plays both roles 1 and 2 (used in automated stress-tests). The practice provides affordances for roles – not for specific characters. So it is always already straightforward to replace one character by another in a situation – without needing any script changes. Versu has a two-sorted ontology: social practices and characters. Each is authored separately.

    ——–

    In Comme il Faut, as Emily says, the agents take turns to perform discrete speech acts. When a speech act is performed, the others respond by updating their evaluations of each other. One significant difference between this model and Versu is that in Comme il Faut, the responses are a different sort of activity from the speech-acts which initiated them. The agents use a different decision-making process when deciding which action to perform than when deciding which response to make. In this system, the agents do not really choose how to respond: their responses are more like *reflexes* (even if the responses are based on their personality and relationships). You can see this from the fact that the player never gets to choose how to respond to an action in this game. The responses are under the hood.

    In Versu, by contrast, responses are first-class citizens. A character chooses from an array of responses using the same code (a conditional-effects planner) and the same considerations as he does when evaluating which new speech-act to initiate. This means the player can *choose* how to respond. Concrete example: Jack makes a risque joke. Jill (played by a human) has various ways of responding to it. She can decide, for example, that it was funny or offensive. Say the player decides (for Jill) that it was offensive. Then her response is itself a further action, itself susceptible to further evaluation. Jack can decide that Jill’s deciding-to-take-offense is a symptom of her sense-of-humour-failure, or a sign of her being quick-to-anger, or whatever. This snowballing process can go on and on.

    The other major difference between Comme il Faut and Versu is how they treat social practices. Activity in Comme il Faut involves a sequence of discrete speech acts. In Versu, individual actions are *coordinated* by social practices which provide meaning to *sequences* of actions. For example, a game of whist involves a sequence of actions by multiple participants. These actions make sense as a whole because they are all contributing to the one game. At any moment, the practice provides affordances to its various participants. The practice also provides implicit norms: expectations of what the participants should do next. If an agent fails to satisfy these norms, new affordances will come into play, to remind or scold the recalcitrant performer.

    These social practices are authored separately, and then combined together at run-time. In Versu there are typically multiple practices running concurrently, each providing affordances to the characters. For example, one of our test cases is a whist game where the players are also simultaneously talking about the weather, flirting, arguing and so on. In the transcripts, the actions from the various concurrent practices are deeply intertwingled together. Comme il Faut does not model concurrent social practices: instead, it models a sequence of discrete speech-acts.

    Emily and I have a paper on this stuff, coming out later in the year, which goes into more detail.

Leave a comment