Annual Research Conference 2009 Presentation by Simon Cooper
Overview
Introduction to Interactive Storytelling
Research Background
Design & Implementation of DISE
Future Work
Introduction to Interactive Storytelling
What is Interactive Storytelling?
“A form of interactive entertainment in which the player plays the role of the protagonist in a dramatically rich environment.” (Crawford, 2004)
It aims to give players more freedom to explore and develop relationships with the game characters and world through their choices.
“In computer games characters aren‟t presented, they are experienced.” (Noyle, 2006)
Or to be Exact…
“a game world in which the user-controlled character(s) can physically and mentally interact with (perceived) total freedom while experiencing a dramatically interesting story which is fundamentally different on every play – dependent on the user‟s actions.
The user will be able to act as and when they desire, in ways which will have a perceivable long and short term effect on the story.
They will be emotionally involved in this world, and will thus greater appreciate the compelling storyline which results.” Barber (2008).
In the Past… Many systems based on rules and planning have been proposed in related literature, but these have some limitations
and drawbacks:
How much choice does the user have?
How does the user affect the story world?
How many different story threads/play-throughs are possible?
Is it emotionally engaging?
The Ongoing Battle
Story vs. Game
Our Goal?
To specify, design, implement and evaluate an interactive storytelling engine, with an accessible story model structure and editor for easier creation of new story content.
Story Editor
Storytelling Engine
Game Engine
Research Background
Literature Review of Interactive Storytelling Techniques
Game Master Directors Fuzzy Cognitive Maps & Goal Net Goal-Inference & Planning Dilemma Based Hierarchical Task Network Planning Genetic Algorithms Story Beats A Behaviour Language (ABL) Siftables - Object Based User Interface
Design & Implementation of DISE
Design & Implementation •Overview •Action
Engine •Character Engine •NPCs •Constraints Satisfaction Problems •Rule Based Systems •Homura Game Engine
A High Level Overview of the DISE Architecture
DISE Overview
What Can I Do?
Action Engine
To interact with the story a player needs to be able to describe the actions that they wish to carry out.
Players are given a choice of words that link together to form coherent sentences.
There are a limited number of words, which are made available depending on the particular scene and context of the story at a given time.
The story developer can choose these verbs/actions by listing them in the scene verb XML file, which allows them to control to some extent the direction of the story.
When an Object is Clicked Possible Actions are Displayed
DISE – In Game Action Menu
The Contents of the Character Engine
Character Engine Expanded
The Contents of the NPC Class
NPC Class Expanded
How an Agent Dynamically Reacts to its Environment Atmaram (2006)
Simple Reflex Agent
NPCs Make Decisions Based on Their Personality and Audience
NPC Actions Flowchart
Limiting Actions and Adding Context
Constraints Satisfaction Problems
Constraint Satisfaction Problems (CSPs) are used to solve many computer & mathematical problems.
They could be implemented in our engine to more efficiently filter out verbs in real time based on context and to check the choice formulae for the correct verb choices, forming the backbone of our AI and story engine.
The CCP (Clips Constraints Programming) module by Futtersack & Labat allows Jess to solve CSPs and uses The Seat Problem as an example.
Dynamic CSPs need a combination of heuristics and combinatorial search methods to be solved quickly.
CCP is composed of three modules:
The MAIN module contains the top level loop including the I/O rules.
The SEARCH module implements a classical Chronological Backtrack algorithm.
The PROPAGATION module implements the Forward Checking algorithm.
What happens When I Act?
Rules, Rules, Rules
The choice formulae for each verb are stored inside their verb definition in the verb dictionary and are different for each verb and each character role.
This difference allows a clear separation of roles meaning that a mother, for example, may act differently to a child in a given situation.
The choice formulae result in a Boolean flag or probability percentage value, depending on the type of options and rules.
The variables in the formulae are substituted with the numbers taken from an element in the personality model.
How It Works
Rules Example
For example if player2 wanted to lend a bike from player1 to ride to the shop, their decision to say „yes‟ could be represented by the formulae: If (Trust [Player1, Player2] > 0.8f) If player2’s role was girlfriend to player1 the formula may be changed to represent this relationship:
If (Trust [Player1, Player2] > 0.8f or Affection [Player1, Player2] > 0.8f) A large number of different roles can be stored in each verb and it‟s up to the story developer to choose which will be suitable for their story and to add simple new rules for any new roles or verbs.
The DISE Visualisation and Game Engine is Built Up From Homura‟s Key Libraries and Scenegraph Engine, Which We Have Also Been Working On.
The Homura Game Engine
Stack Based GameState System Allows Easy Switching Between Game Screens.
The Homura Game Engine
Art/Assets Pipeline & Tools
The Homura Game Engine
Toon Race Game
Sunny Suzie Puzzle Game
3D Editor Allows Story Designers to Drop and Move Objects in The Scene
Future Work
Future Work:
We have reviewed some techniques that have been used previously to create stories with greater interactivity and provide players with a more immersive experience, where their actions cause real changes to themselves and the world around them.
Using a combination of rule based languages, heuristic search methods and verb based actions; alongside a powerful multiplatform 3D games engine, we intend to create a game with a dynamic character driven storyline that doesn‟t bind players to a linear path and a reusable middleware codebase for story game developers.
What’s Next?
Create SWT Editor Pane
Finish Scene Editor Save/Load Files
Finish/Refractor Physics Object Generics
Build Up Starter Dictionary
Finish Generic Base Objects
Finalise Personality Model
Implement Test Planners & Rules Loader
A* Type Path Finding and Character Animation
And Most Importantly…
Make A Story
Any Questions?
?