Prom Week’s "Social Exchanges"

To celebrate Prom Week’s release on on Facebook and Kongegrate, we thought we’d share some of the details about what’s going on inside of the heads of Prom Week characters.

As we’ve posted before, Prom Week is a game where the player gets to shape the social lives of 18 highschoolers by controlling what social actions they take with one another. What each character wants to do, and how each character chooses to respond, is determined by over 5,000 social considerations.

Social considerations in Prom Week mirror the ways that characters think in fiction — the facts about the world that influence how they feel about each other. For example, if I am shy, I am going to be less likely to do something outgoing. Or if you’ve been mean to me, I’m going to be less likely to want to be nice to you.

Like real life, any single social consideration isn’t going to completely determine how a character in Prom Week will feel about another character. Social relationships are complicated, and sometimes people are mean to their friends, or feel compelled to flirt with their enemy. Prom Week’s AI system, Comme il Faut, accounts for social considerations to bring this sort of richness to characters’ social feelings.

Come il Faut achieves this through the concept of the “social exchange.” A social exchange encapsulates a social action a character takes with another character (with the intention of changing their relationship) as well as how the other character responds. For example, someone might flirt with someone in order to make them feel romance towards them. A character’s desire to perform a social exchange is determined by social considerations. At any given point, each character has a ranked list of social exchanges that he or she desires to perform (Prom Week has over 40).

Once a player selects a social exchange for a character to perform with another, the second character, the “responder,” decides whether to “accept” or “reject” the intent of the exchange (e.g., someone might reject being asked out on a date, or accept someone’s compliment). Social considerations are also used to determine whether he or she accepts an exchange or not.

Each social exchange is associated with 20+ scenes of templated dialogue. Once the responder’s general response is determined, a scene is selected and instantiated to represent how the social interaction actually takes place (this will the the subject of a future post).

Social exchanges and considerations enable is players to choose from social actions that characters specifically desire to perform and the other characters will respond for specific reasons that respect the character’s personality and social context.

For example, below shows a social exchange where Cassandra tries to spread rumors about Naomi (one of her enemies) but Simon doesn’t believe her because he is better friends with Naomi than Cassandra.

 

Prom Week can now be played on Facebook and Kongegrate! Stay tuned for more updates and information!

Prom Week Released on Facebook!

Delve into all the adolescent angst, drama, and scheming of the week before a high school prom in this online game, which uses a sophisticated artificial intelligence system to enable players to shape the social lives of 18 hapless high school students. Find dates for them, break up and make up, forge new friendships, make enemies — it’s up to you to determine whether the Prom will be a magical wonderland of disco ball lights or a nightmare of existential crises!

Play it now!!!

Prom Week Authoring: Crafting Procedurally-Driven Narratives

Cassandra uses a mismatch between her and Gunter's feelings about cultural knowledge base items to shoot down his attempt to ask her out.
Hello! I’m Aaron A. Reed, lead writer on Prom Week, and I wanted to talk a bit about the challenges the writing team faced bringing eighteen characters to life during the most exciting week of their lives. (So far, at least… I’m pretty sure Lil is going to go on to do great things.) I’ve previously worked on large-scale interactive stories before, like my 2009 project Blue Lacuna, but Prom Week presented authoring challenges on a whole different level.

One of the key differences between Prom Week and past AI-driven social simulation games (not that there are a lot of those to begin with!) is that our characters use fully realized scenes to perform social changes. That means coherent English-language dialogue, not emotion icons or vague babble. This design decision meant that each “move” the player makes– mapping to an attempt to change the social state between two characters– needs to be instantiated as a little dramatic scene, usually with something like 4-6 lines of dialogue and attached plumbing (animation choreography and other stuff). Prom Week has twelve major kinds of social exchanges (things like buddy up, romance down, or start enemy), and each can be either accepted or rejected by the responding character, so at a bare minimum, we’d need twenty-four scenes to allow the system to perform each type of social change. A (very boring) stop dating accept scene might look like this:

A: Hey, B, I don’t think we should go out any more.
B: No, probably not.
(result: A no longer dating B)

First of all, why would we write a boring scene like this in the first place? The difficulty from a writer’s perspective is that you know almost nothing about the context this scene might appear in. Which characters are speaking? Why is their relationship ending? We can’t know, and thus it’s pretty hard to make the scene more interesting without saying something that might conflict with the story as it’s happened so far.

But a boring scene like this is going to cause players to disengage pretty quickly, especially if they see it over and over again. We could author a bunch of different versions, or introduce random variation within individual lines (and in fact we do a lot of both) but this doesn’t solve the underlying problem. Furthermore, it’s not very realistic to have eighteen different characters all speaking identical dialogue.

Could we just make a unique version for each character? Well, that would be 18 characters times 24 social results, or over 400 scenes, just to have a baseline of boring scenes to choose from; that’s not viable, either. (Well, maybe for BioWare, but not us.)

A better idea is to restrict scene variants with preconditions, allowing the system to select more specific scenes when the social state allows for them. Imagine we wrote a stop dating scene when the responder has cheated on the initiator:

(precondition: A dating B, A dating C)
A: B, you jerk! I can’t believe you cheated on me with C!
B: It’s not what it looks like, A! C means NOTHING to me! I love *you*!
A: Tell it to the hand. We’re SO OVER!
(result: A no longer dating B, A angry at C)

This has certainly ramped up the drama (if not the maturity level). Not only will this scene seem more on-topic when it appears, it also can change the state in additional ways: we can note that A is now angry at C, for example. Prom Week has a lot of different social state information that can be used to restrict scenes and change the social dynamics: characters have permanent traits, like being witty or shy; temporary statuses like confused or angry at someone; relationships with and feelings about each other; even relationships to items in a cultural knowledge base, allowing for things like the fact that Doug and Chloe both think skateboards are cool to be the basis for a friendship between them.

With preconditions in place, we can create all kinds of more interesting scenes. Imagine this start enemy scene between C and A, which the “angry” change in the scene above could set up:

(precondition: A is friends with C, A is angry at C)
A: I’m so mad at you right now, C, I could kill you!
C: What are you talking about, A? We’re friends. I’d never hurt you.
A: You already did. Never speak to me again.
(result: A enemies with C, A likes C less, C is sad)

This is not bad, but the writer is pretty constrained in coming up with this scene since he or she doesn’t know why A is angry. We could write more specific variants with actual reasons for being angry, like the cheating scenario earlier, but the more specific we get with our preconditions, the less likely any individual scene is to be selected. There are millions of possible combinations of preconditions, and we can’t write scenes to cover them all. What can we do instead?

One way we address this is to remember every event that happens, and allow scenes to both use past events as preconditions and refer to them in dialogue. We can tag the cheater’s stop dating scene above with a new result:

(result: remember that C did something mean to A: “C stole A’s boyfriend.”)

“Something mean” is one of about a dozen categories of action types the system can keep track of, and the quoted text indicates we also store the specifics of this particular mean action. We could now rewrite the start enemy scene like this:

(precondition: C did something mean to A in the last 5 turns)
A: I can’t believe you’d betray me like this, C.
C: What are you talking about?
A: You know damn well what I’m talking about. (the mean thing)!
C: I… I did. I’m so sorry, A …

When this scene is performed, the system can take the reference to the mean event and replace it with an appropriate realization based on who’s speaking and other particulars (so this line might be realized here as “You stole my girlfriend!”) This brings us up to a new level of dynamism: suddenly there are actions and reactions, reintroduction of past plot material, grudges and reminiscences and embarrassing moments that can’t be lived down. It goes a long way to glue a bunch of individually authored moments into something that’s starting to approach a story, without creating the combinatorial explosion you’d get from a branching conversation tree.

The custom design tool for Prom Week authoring, showing the line in the earlier screenshot.
We have a lot of other little authoring tricks to increase variation in Prom Week’s scenes. Each character has a small library of vocabulary, for example, so we can put a generic insult tag in a line of dialogue and trust that jock boy Buzz will use the word “crapface” while goth queen Mave might pull out “emo” instead. Inline randomness and logic let us swap out any number of bad puns within a single line, or change a reference to someone from a “friend” to a “nobody” based on various parameters (tell us how you really feel, Nicholas). All this allows the same scene to be substantially different from one playthrough to the next, often to the point that players don’t even realize they’re watching a scene they’ve seen before.

At the end of the day, though, Prom Week still required authoring a lot of content. It was a very open question as we went into the writing phase just how many individual scenes we’d need to allow the system to really leverage its expressive power: 200? 500? 1000? 10,000?! We just didn’t know until we could see the whole thing in action. All told the authoring team ended up generating something approaching a thousand individual scenes that made it into the final game, each with pre- and post- hooks that allow them to intelligently interface with an ever-changing social simulation. When I see the system make use of our scenes to perform Prom Week’s characters correctly– choosing exactly the right way for shy Kate to ask someone out, or snob Nicholas dredging up the perfect bit of embarrassing past to insult a rival– I get really excited about the future of emergent storytelling and playable social systems.

Gameplay and Social Physics

When we started making Prom Week, our mission was to make social interactions truly playable. While games have increasingly gotten better at physical simulation, social interactions in games still tend to be scripted, with most games using dialogue trees of some form. A result of this is that many games end up being about physical conflict, as the physical simulation is the only part of the system dynamic enough to enable interesting gameplay.

Just like physics simulations in puzzle games such as Angry Birds support many emergent solutions to game challenges, we want to support emergent gameplay for social interaction.

Prom Week puts social interaction at the forefront, with the social simulation providing rich and emergent “social physics.” Unlike The Sims, which provides a rich simulation of abstract characters, we want concrete characters, speaking detailed lines of dialog, who have particular likes, dislikes and histories. Also, we want to support both more casual story gameplay, where players manipulate characters to find out what crazy things might happen next, and more strategic gameplay, where players try to accomplish specific goals by manipulating the social environment.

The gameplay involves choosing what social actions characters take with one another. What social actions characters want to take with each other, and how characters responding during these social actions is determined by Prom Week’s social artificial intelligence system. Given a goal, such as making two characters date, and a set of characters, there are innumerable ways to accomplish this goal, all holding true to each character’s personality, social context and history. And the game remembers every action the player takes, with this history influencing character reactions and being brought up in character dialog.

This requires a very rich social simulation. The character’s desires and reactions are determined by over 5,000 social considerations, rules that determine which social actions characters want to do and how they respond to social actions initiated by others. On the simple end, these considerations capture concepts such as being more likely to do something nice to someone if your friends with them. On the complex end, the considerations handle situations like a friend spending a lot of time with someone you’re not friends with, combined with the fact that you’re friend hasn’t spent much time with you lately, causing you to get jealous and making it more likely you’ll  be clingy with your friend. Additionally, the social actions play out with many dialog and effect variations depending on the characters involved and their traits, statuses and histories, using template-based natural language generation to create dialog fitting the situation. And to top it all off, social actions always have lots of repercussions across multiple characters, creating a dynamic social landscape for the player to navigate.

Prom Week is in beta now. Contact us if you want to be part of it! Stayed tuned for more news, stories and demos of Prom Week!

Prom Week!!!!!!

For the past two years we’ve been working on a game called Prom Week and I’m happy to announce we’ve just launched our closed beta! Look here for announcements, news, and tales of its development in the coming weeks!

Prom Week is a social simulation game where the player shapes the lives of a group of highschool students in the most dramatic week of their highschool career. Each story is centered around a character, and it is up to the player how it goes. Using our sophisticated social artificial intelligence system, Comme il Faut, Prom Week is able to combine the dynamic simulation of games like the Sims with the detailed characters and dialog of story driven games.

We will definitely say more in the near future, but for now, enjoy this video we put together for IGF! 

 

[vimeo clip_id="30709765"]