Procedural Stories and Constraint Satisfaction (Part 2 - Plot twists)

After a 1 week absence due to school starting, this week we return with more on procedural story generators for games.  In my last post, I introduced the general idea of procedural story generation as a constraint satisfaction problem.  Here, I introduced the idea of lazy evaluation -- where you generate only the information relevant to the current story.  As we'll see in a moment, this can actually be a lot of information.

Nominally, one would envision interactions with a procedural generator as being entity-driven.  When the player(s) interact(s) with an entity (a town, a character, etc...), information about that entity is generated and extrapolated.  This is fine for a static world, but for the world to be interactive, things need to change.

Furthermore, as with any game, players should be involved in the story.  They have the ability to interact with and affect the story.  However, just raw automated AI characters are unlikely to generate sufficient drama to keep players engaged.  We want stories to evolve in a way that keeps the players engaged -- generally by providing some direction to the story.  One possible approach to this is to inject certain drama-inducing plot fragments into the mix.  Plot twists, as it were, that spice up the story ("Your friend Bob is actually a foe" kind of things).  

As any writer will tell you, a good plot-twist needs set-up.  It needs backstory.  Why is Bob angry at you?  Bob should have shown signs that, while maybe not immediately apparent, could indicate that he doesn't exactly have your best interests in mind. 

This is where the problem comes in.  This backstory (which I'll refer to as the groundwork for a plot twist), has to be injected into the story quite a bit before the actual twist occurs.  In other words, the generator needs to commit to a plot twist well in advance of the plot twist becoming apparent to the characters.  Worse still, a plot twist is generally going to be fairly open-ended; giving the procedural story generator an enormous number of possibilities (many of which could potentially conflict).  

It gets even worse -- due to player actions, or other events within the story, the groundwork for a story might be made entirely irrelevant.  For example, maybe one day when the players bring Bob on a hunt, he's accidentally mauled to death by a bear.  Balancing the groundwork for plot twists in a D&D game is tricky enough for a human to do... I'm not sure if it's even possible for a computer.

Still, it would be interesting to see.

(side note: I've been discussing this idea from the perspective that players interact with the story in a linear manner.  An interesting game mechanic that this sort of procedural story generator would enable is time-travel.  Allow players to provide a basic AI for their characters, and then bop back and forth, adjusting their character's behavior at various points in time to see how it changes the world)