Post navigation

Introducing Versu

Versu is a new interactive storytelling platform Richard Evans and I have been working on at Linden Lab. Some of you may have seen lead-up presentations about it at GDC (possibly long enough ago that it was still called Cotillion).

Today, the first four Versu stories are available for iPad. Clients for Kindle and Google Play will follow, as well as stories in other genres and by other authors, and both character- and episode-authoring tools will be made available to the general public in the future.

Versu focuses on character interaction as its primary form of play. The Versu platform can do rooms, objects, movement, and the “medium-sized dry goods” interaction of a typical interactive fiction engine, but it’s primarily designed for interactive stories about people: how they act, how they react to you, how they talk to you and talk about you, the relationships you form with them. The social landscape in which you act is constantly changing.

Versu uses an AI engine designed by Richard Evans, the lead AI designer for Sims 3, which allows each character in a story (and in some cases a drama manager AI) to act autonomously or be played by a human player.

Because there’s a strong social model at work in Versu, it’s possible to form relationships with characters that the story author did not explicitly create. In play, you can decide you want to pursue a romance or make an enemy, and that outcome can occur even if the author did not write an arc specific to those two characters.

Versu has a choice-based interface, but it’s very unlike standard CYOA. At any moment in the story, you can choose to act, or wait for others to act. If you choose to take action yourself, you’re offered a set of options drawn from the world model at that moment, from taking a bold stand to giving someone a significant sideways glance. Just about everything you can do affects your character’s opinion of the other characters, and theirs of you, altering the playing field for what’s to come. Inaction can be a powerful choice.

Versu offers moments of narrative emergence. Late in testing, one of my characters was talking to another in confidence when a third party wandered in. Because the speaker didn’t feel comfortable around that third person, he fell silent and didn’t continue the conversation — there was an awkward pause and dialogue moved on to other things. I’d never written the “awkward pause when X walks in on a private conversation” outcome — just an engine that knew when the characters would be willing to discuss those topics, and also that it was awkward for someone to stop talking about a conversation topic when others were expecting them to go on.

This can happen elsewhere too, in large and small ways. The degree to which emergent character behavior affects large story outcomes depends on how flexibly the author has written the overarching plot. “The Unwelcome Proposal” is an example of Versu being used very conservatively, capturing as much as possible of the story text from a scene in Pride and Prejudice, and allowing for few deviations from that story. “House on the Cliff” and “A Family Supper” have a much broader spectrum of possible results, depending on character choices and relationships. Even more sandbox-like experiences are in the pipeline.

Versu allows for characters who act distinctly. A social model is only interesting for building fiction if it doesn’t make everyone act like identical automata. In Versu, different characters are built with different abilities and parameters — not a handful or a few dozen character traits, but a potentially infinite range of quirks and habits. It is possible to craft social behaviors that are unique to just one character — giving one guy the ability to get under people’s skin more than anyone else, say — or to make a character who hates being in a crowded room.

In addition, because characters are defined as separate entities in this way, they could be transferred from one story context to another, and even cast in stories that weren’t specifically written for them.

The stories we’re releasing today are just a taste of what is possible with this engine. I’ll post more of my usual analysis content over coming weeks — what it’s like to write for Versu, the difference between authoring characters and authoring stories, details of the conversation modeling system, and more about what we’re expecting to see in the future.

This is wonderful. I’ve already spent the whole afternoon exploring. I keep meaning to commit to a serious investigation of the House on the Cliff but it’s just so tempting to become indecorously drunk or make clumsy passes at other characters! The interactions between them work beautifully.

I can’t wait for the opportunity to try my hand at creating something with these mechanics.

I clicked the “save” button, the one that looks like a skeuomorphic bookmark, wondering what it does. When the save action finishes, you’re brought back to the title page. For a moment, there’s a single button, labelled “Play”. I reached for that button, but while my finger was in the act of pressing it, it changed to “Start Over”, with a “Continue” button appearing beneath it. So I accidentally wound up hitting “Start Over”. I made a movie of it here: https://www.youtube.com/watch?v=4eEF2_e_hfw

A small bit of advice, along the lines of Wilde’s comment that “The only thing worse than being talked about is not being talked about”: the reaction of the games community is likely to come in three classes. The first of these, furious denunciation by game players, will provide you with excellent feedback on the creative success of your effort — the angrier their response, the better you’ve done. The second class of response will be the pundit commentary, which I suspect will be respectful but quiet. The third class of response is the most negative in implication: no response. In any event, do not forget that game players are not your real target, so if they don’t like it, screw ‘em.

Not having an iPad, I have no idea what happens in the game. I’ve watched the video carefully, trying to make sense of the rapid-fire screen captures, and I’ve read every review I can find, of which there are few. (And the few I’ve read don’t seem to be based on actually playing, but rather relying on the video and this post for source material.) I’ve been able to divine that the granularity of response is the sentence, but I cannot decide whether the available set of responses is generic or specific. Most of the responses I saw looked specific to the situation, suggesting a directed graph architecture, but I saw two situations in which it appeared that there were some generic responses as well. Perhaps the architecture mixes some specific responses with a few generic responses?

Perhaps the architecture mixes some specific responses with a few generic responses?

I have a much longer post about the inner workings in progress for later; I’m holding off posting it only until it’s been read over by a couple of other people. But I’m not indifferent to the requests for more information. Unfortunately, posting a straight transcript would be a tricky way to convey the nature of gameplay and fluidity of the system — it would at the very least need to include all the options available at each moment as well — and that would be a simply colossal file to put together, given the granularity of action. In any case I certainly look forward to your being able to play this yourself and assemble your critique from there; perhaps when it spreads to other devices, that will be possible?

To answer the narrower question now, though: it’s not exactly that there are “specific” vs “general” responses, because that implies a simple two-layered system.

Rather, there are some responses that are specific to the kind of activity you’re engaged in — e.g., you’re eating dinner, and therefore you can take a bite of your food; some responses that are specific to your character — if you’re a flirtatious young lady who likes to smile encouragingly at just about anyone you see; some responses that react to what just happened, which might be as narrow as a hand-crafted reply to a specific piece of conversation, or as broad and reusable as getting jealous because your girlfriend just implied she thought someone else was attractive.

I suspect that answer may raise more questions than it quashes, but the more thorough discussion of conversation structure, which may shed more light on all this, is forthcoming.

This sounds great and I’m looking forward to it, though as a non iPad owner I was disappointed I couldn’t load it on my iPhone – you could likely reach a much wider audience by changing it to a Universal app rather than keeping it iPad-only, and text IF seems very usable on the smaller screen. I do have an Android tablet though so am very glad to hear you’re planning a release for that.

The initial titles seem to favor conversation-heavy Victorian social situations; this is all very good as I look forward to plenty of arch glances, indecorous moments and strychnine in the tea. But I’m wondering to what extent the Versu system of reactive agents with their own rules and motivations could also be adapted to include situations that are not primarily conversational, or the “agents” aren’t necessarily even human. For instance a complicated puzzle involving hacking into a computer system, where each of its subroutines works semi-independently following their own sets of rules or motives, and the puzzle could be solved by subverting or manipulating the interactions between these agents in a variety of ways.

It would certainly be possible to do other types of situations; indeed, some parts of the longer stories are not solely about conversation, but include other types of action and exploration. The hacking puzzle would also be possible, though you’d want to suppress much of Versu’s built-in support for social interaction: totally possible to do, just probably not the most common use case to start with.

I am also conscious of using up more than my share of bandwidth, but want to remark on one aspect that seems especially intriguing. I say “seems” because I am coming at Versu from more of an educational than entertainment vantage and might use terminology in a slightly different manner. The effort to author emergent narrative-based interaction is hardly new, of course. Web search on “author emergent narrative-based” for a sense of scope.

Anyway, as mentioned, we use improvs for character education. That often runs up against problems in mimesis and authenticity. Improv actors know they are performing and tend to play to the audience (e.g., slapstick, contradiction of already-declared facts, breaking the fourth wall, becoming nonplussed) rather than acting out of a character’s perceived objectives in “real life”. This is largely because they are in the emotional envelope of performing to their peers, not that of, say, interpersonal tension between a harried supervisor and disgruntled employee. Thus, the representation cannot convey the target emotional envelope and characters break mimesis.

However, the possibility of narrative emergence is intriguing in that it may open avenues not likely to develop in an improvisation. We can possibly learn new things about underlying values or motive and sensitivity as they relate to third parties. Maybe we could acquire subtle insights into a character that are not inherent in the code. Sometimes the subtle is pivotal.

Quick example: a mediation in which a supervisor seemed to be over-zealously terminating non-tenured nursing staff was traced, with considerable difficulty, to said supervisor’s sense of self that he would relate to his niece — see how powerful uncle is, with command over the livelihood of others. The emotional envelope of the supervisor is subtle, but pivotal. He was not likely to reveal it (not even aware it was happening) and it could only be teased out through careful observation of the supervisor’s conduct. To re-present that scenario we would need an improv actor who was aware and consistent. Not an easy assignment, and one easily sidetracked into playing to the audience. A Versu narrative interaction, on the other hand, might bright it fourth, might maintain mimesis given that the supervisor’s character would stay true to him acting as a bully to feel important in the eyes of his niece.

At one point I made use of the combined IF/CYOA possible with a refinement of Michel Van der Meiren’s XML adventure system.

It was easy to add changing backgrounds to enhance the story mood and, of course, one could make choices (CYOA) or get/use objects (IF). It was useful to a point and relatively easy to code; simple Javascript. It doesn’t achieve narrative emergence, however, and the character interaction is limited. Even so, it overcame some limitations by the synergy of IF/CYOA together. I have high hopes that Versu will go much beyond this without, perhaps, being much more difficult to code.

Okay, I will now try to be quiet, contain my enthusiasm, and give others a turn to talk. ;-)

I’m interested in Versu for its potential to provide interactive experience in teaching character education. Presently we use improv with participants acting from their given goals until they reach an inevitable impasse (inevitable given conflicting objectives). Then we introduce a character strength (e.g., compassion, sense of perspective, prudence) and re-run the improv. Switch character strengths again and monitor the character interaction to see whether they bet past the impasse, negotiate based on objectives or get to underlying interests. So, it will be interesting to see whether this could be used to develop rich character interaction for character education.

It will be interesting to see to what extent a character’s traits are modular and transportable to other scenarios. For instance, if I have a stereotypical grumpy old man, can I write him for a can-I-have-my-frisbee-back scenario, then place him or key elements of his persona in a ship-sinking scenario?

Is there any indication yet as to when the authoring tool(s) will be available? Cost?

So, it will be interesting to see whether this could be used to develop rich character interaction for character education.

That’s a use case we’ve discussed before: I’d really like to see some experiments in that direction. I see no reason at all why it should not be possible.

It will be interesting to see to what extent a character’s traits are modular and transportable to other scenarios. For instance, if I have a stereotypical grumpy old man, can I write him for a can-I-have-my-frisbee-back scenario, then place him or key elements of his persona in a ship-sinking scenario?

Yes, characters can be transferred from story to story. There’s more to it than this, of course: you can’t put any other random characters into the Unwelcome Proposal scenario because the story itself dictates that the characters must be Elizabeth and Mr Collins. But stories can also be written for more open-ended casting, like “this role could be played by any character”, “this role could be played by any male”, and so on. The character would then bring with it its interaction preferences, habits, even generalized dialogue about its personal history; and could be further customized to have story-specific interactions. (Again, I have a longer discussion in draft form.)

Is there any indication yet as to when the authoring tool(s) will be available? Cost?

I can’t answer this yet, but will certainly share information when I can.

This is good news. Modular generic characters allows for the creation of a library of characters. That makes it easier to populate a scenario with a supporting cast and devote more attention to the major roles.

Think of the cast of Gilligan’s Island and the cast of Scooby Doo. There are a lot of parallels: the loveable goof, the socially myopic geek, the hapless bit of cheesecake [male or female], and so on. And just how many episodes do that have between them . . ., exactly. A metric bazillion. Values underly character and character drives conflicts, sets up numerous pursuits, reveals oh so many human foibles.

( Imagine Emily short writing IF with the cast of Gilligan’s or Scooby ).

Who knows, maybe there could be a shared stock-character set or character exchange. Certainly there are libraries of generic scenarios and I am working with a set of two dozen character strengths based on Peterson and Seligman, Character Strengths and Virtues [Handbook and Classification, American Psychological Association and Oxford U. Press, 2004].

I would love to see a sample of the authoring “code” to get a sense of whether this is for developers only or within the range of an interested novice.

Well — the other thing to bear in mind is that the system I used to write the existing episodes != the friendliest user tools we’ll ever have. But for that, I don’t want to go into a lot of detail until we have something concrete to announce.

I’d like to offer the uncertain opinion that exporting characters is putting the cart before the horse. A character’s traits are meaningful only in relation to the decisions the character makes. As Harry Stottle noted, character is established by actions. For example, if you assign the trait “promiscuity” to a character, that trait is only meaningful in a storyworld about sexual activity.

Moreover, the precise meaning of any trait is defined by its effect on decisions. When you and I talk about promiscuity, we each entertain slightly different interpretations of that word. For conversational purposes these differences are not significant, but when you put that concept into a computer, you must quantify it, and then differences in interpretation can lead to serious problems. Inside the computer, promiscuity is not what I think it is, or what you think it is, or even what the OED says it is. Inside the computer, promiscuity is a term used in a calculation leading to a decision. If you confine it to a single bit of resolution (a character either is promiscuous or is not promiscuous), then it’s easy for everybody to understand its meaning. But as you increase the number of bits of resolution, and use it in a larger number of calculations, it becomes more difficult for people to apply. You may think that promiscuity is the tendency to engage in sexual behavior, but inside the computer, promiscuity is defined by its uses:

So if we export a character from one storyworld to another, that character’s promiscuity value, which means one thing in one storyworld, could mean something completely different in another storyworld if the equations are different.

The conclusion is that you must export verbs before you can export characters.

I understand your point, of course, but you’re providing pseudocode for your own imaginary system, not ours.

It would take a long post to explain all the differences, but the simplest point is that characters can have desires that are expressed not as “I want to do this action” or “I have N probability to do this action” or “I am especially likely to do this action under these circumstances”, but as “I want to attain this world state”, which means that they can navigate through a large collection of specific and generic affordances to select the ones that aren’t gated against them but do achieve their highest-priority aims.

Emily, the method you describe is a standard method in AI and has been applied successfully to many problems. The core problem with this method is that it works best with long combinations of a few fundamental actions. For example, the algorithms that drive the Mars rovers are ideal applications of goal-seeking AI. However, as the number of unique verbs required to achieve a specific goal increases, goal-seeking algorithms start to have problems.

Every few years I return to the possibility of applying goal-seeking methods to my own technology, and each time I have discovered that they don’t work when dealing with the hugely complicated problems of social interaction. I don’t claim that my reaction-oriented methods work better; in fact, they’re not as good for guiding long-term behavior, even with the various patch-up schemes I have devised.

The other problem with these methods is that they are designed for boolean calculations; when the calculations become probabilistic, things go to hell very quickly.

I do retain some hope that multi-layered goal-seeking techniques can solve the problem, but as yet the definition of the layers remains for me an insurmountable obstacle.

Yeah, I think at this point we’re talking at cross-purposes until you have a chance to encounter the system yourself. There’s just more to explain about the model, to make it make sense, than really works as a series of comments.

3. Why no stand-alone? Playing the game requires an internet connection. Is that just for the sample stories?

4. Slow response time. The game noticeably lags at times. Would this be due to Internet connection or yet-to-be optimized code?

It’s great that the protagonist can select an achievement, whether ostensibly positive or negative, and be recognized for having achieved it. First I was the dutiful young lady in “An Introduction to Society”, then replayed it with less honourable objectives. Here I discovered that pressing the icon of Grandma shows “Grandmama looks pleased” even though the italicized text states “Grandmama looks horrified.” Similarly, the icon of “Lucy looks annoyed with Mrs Quinn” appears only after Mrs Quinn is out of the drawing room and headed for the street outside. This may be a lag issue of a different sort.

5. Would it be possible to have text read aloud? Even with the iPad’s default voice the experience becomes a bit richer with audio.

6. Ability to change brightness in the app. Most readers, even PDF readers, can do this.

7. If authoring tools are eventually released, how will it be possible for a casual user to distribute stories from peer to peer — or must one actually get an app approved by Apple or subscribe to a Linden Research account for a fee (shades of Adobe).

The first six points are for ease of use. The last point will likely exclude casual writers and may eliminate many educational uses.

I’m coming here fresh from Zarf’s blog, which had a picture. The two buttons, “Act Now” and “More”: why “more”? One button is an imperative verb, the other isn’t. One is a generic description of what the PC will do, and the other is… talking in the language of system-level UI stuff. That seems imbalanced to me. Shouldn’t the second button be “Wait” or “Listen” or some other descriptor of the PC’s non-action? I see “more” and think, “More what? Choices?”

Maybe that’s what led Zarf to keep hitting it, “waiting for my turn”? I dunno.

Hey Emily! Congrats! I remember you talking about this during Phrontisterion. Very exciting. I don’t have an iPad so I can’t check it out but I’m really looking forward to it. Also looking forward to playing with the development tools, so if you need Beta testers let me know.

Hey! Thanks for your comment on my blog. I checked out Versu and it is looking just like something I had in mind. I am very impressed. I just hope you do come out with more versions so that people without iDevices can play, and I’m looking very forward to your authoring tools once they are released. I appreciate the work you’ve done in interactive storytelling.