Wednesday, October 3, 2012

The Beginning

Apologies for the delay in starting this blog. There was a confusion about when I would be doing my senior project (the attempted implementation of an A.I. based storytelling system), but it has been resolved. I will be implementing my senior project over the course of the year, hopefully under the guidance of Alexander Shoulson, who is currently doing character based story interaction research.

A quick summary of what I have done thus far:
  • Drafted a project proposal and submitted it to Norman Badler and Aline Normoyle
  • Met with Alex Shoulson to discuss his research and how my project might align with his work
  • Met with Amy Calhoun to discuss senior design time management skills
My proposal is very long, and I haven't found a way to post it to this blog in PDF format, but here is a basic summary of what I want to do and why:

While working at Microsoft Studios (formerly Microsoft Games) over the summer in their Narrative Department, I noticed that a lot of people seemed interested in dynamically generated game stories... the idea that we could have someone replay a game ten times and in that time never get the same story once. The way that was being dealt with (in my time at Microsoft) was through story trees... Every time the player makes a decision, the story branches. It's the "Choose Your Own Adventure Book" concept, and it's one that is prohibitively costly. I saw many "multiple storyline" game ideas shot down because the production doubles whenever you reach a split in the story tree. I became fascinated with the idea of procedurally generating a story in much the same way that one can procedurally generate levels, rooms, enemy encounters, etc... I was convinced that there was a way to maximize miniscule permutations so that, with a small number of story elements, you could have huge numbers of combinations that made up an actual story.

On Alex's suggestion, I abandoned my initial idea to try to create permutations of story elements, and instead chose to focus on a character driven approach. My new idea - the one outlined in the proposal - was to create simulated characters, capable of walking around and interacting with the player and one another in slightly randomized ways that allow for simple conflicts and resolutions. The core ideas I had were that characters had two basic emotions for love and hate, that could be filled by various interactions (both direct and indirect). When a character gets really emotional, they act based on the level of the emotion. They might attack another character and injure or kill them, or flirt with or sleep with another character. These events would create beats that would have ripple effects on the story, potentially based on prewritten character interactions based on relationships that remain constant (friendships, familial or romantic relationships that affect how characters react to story beats that involve their loved ones).

What I believe I have to offer is the unique perspective from which I am approaching this project, which is to say as a screenwriter and storyteller first and a programmer second. My interest is not in event generation but in telling good stories, and so I devised the most important (and probably complex) element of my proposed code... An artificial intelligence capable of recognizing story. My proposed A.I. would run through the occurring character interactions and look for anything it recognizes along standard storytelling guidelines. Which is to say, it will recognize and remember when something occurs that could be:
  • The Inciting Incident
  • Plot Point 1
  • Plot Point 2
  • Plot Point 3
  • The Conclusion
The storytelling A.I. would then suppress any new information that is not relevant or contradictory to the main story (if another random murder were to almost happen unrelated to the one driving the story, the AI would prevent it to keep the story from veering off topic). Most importantly, the AI would know what elements advance the story based on what has already happened, and would know what a good place for a conclusion would be. It's this A.I. that would distinguish my project from anything that's come before... Because I'm not interested in devising a complex, sensical story with a large number of variations. I'm interested in devising a variable story that is still good.

When I spoke to Alex he pointed me towards many articles in the field on procedural character interaction and event generation. Character interaction as a way of story generation was his suggestion, but he was intrigued by my story A.I. idea and said he'd never really seen anything like it in any papers he's read, but that it sounded like it would be worth pursuing.

My current big question is where graphics play a role in all of this. In the response to my proposal, the following was requested of me:

1. ADAPT framework setup
2. A simple scene with agents walking around doing abstract actions (perhaps shown in text over the character's head). This scene should implement some simple character variables (sim-like: hungry, angry, patient) and some simple interactions with the world (such as "use-phone", "talk", "fight", etc). This scene need not be sophisticated.


While I would love to have a graphics based demonstration of my intended world, most of the papers I read stuck with text based examples of their procedural story elements in action. I worry that translating my intended idea into ADAPT might mean I have to make concessions on the "A.I. in search of story structure" idea that really drives my interest in the project. It's something I must discuss further with Alex.

No comments:

Post a Comment