One of the manifold strengths of games is their ability to codify and contextualise interaction and through that provoke a sense of agency and investment.
At the heart of stories, and vital to their ability to provoke emotional reactions, are characters in conflict with each other, either directly or indirectly.
If we are to even consider interactive or systemic storytelling we need to leverage the strengths of games in a way that gets to the heart of what give stories their power. The following are some of the my own first steps towards a conceptual framework for systemic storytelling.
Of the concepts and techniques described below the majority are implementable in a basic form using current technology, however they are still only building blocks and a substantial amount of further development in design and implementation terms is required.
Part 2 can be found here.
Characters and Players:
- Don’t create allies or antagonists create Characters.
Define Characters both contextually and functionally. Create AI Characters that are autonomous Agents with their own personalities, goals and motivations. Use these variables to determine their behaviour and reaction to the Player’s actions. Let them become allies or antagonists based on the Player’s behaviour and their own perception of it.
- Provide Characters with a view of the world based on actions and outcomes.
Model the world based on objects with associated variables. Make this space searchable, in an AI sense, so each Agent can select the appropriate actions to take based on the desired future state of objects in the world, as determined by their specific personalities.
- Alter the state of objects indirectly.
Don’t allow Players or Characters to directly change object variables, instead utilise temporary objects to provoke changes in other objects: A Grenade creates an Explosion and a Fire object; a Door reacts to the Explosion object by taking damage and the Fire object by starting to burn, the Fire Alarm object also reacts to the Fire object by sounding an alarm and initiating Sprinkler systems. Multiple objects can react to a single temporary object depending on context and proximity.
- Model knowledge of events based on connections between Characters.
Initially only allow knowledge of an event to be passed directly to those Characters who witnessed the event. Propagate that knowledge through the network of Characters based on their connections to each other: Allies share information, Enemies don’t. Any Characters who don’t receive knowledge of events directly should only receive knowledge of the consequences as represented by the changed state of objects within the world. Propagate changes in the world to the player through the same channels.
- Define Character “intelligence” based on their ability to comprehend object interactions.
Limited the searchable possibility space for each Character based on their personality traits. The more “intelligent” a particular Character the further along the chain of indirect object interactions they can search. Standard “Grunts” are only aware of first-order actions and their consequences, limiting their perceived intelligence but allowing for faster reaction times.
- Determine player knowledge through evaluation.
Test Player’s knowledge of the state of objects within the world by requiring them to make use of that knowledge in future actions. If they fail to act on this knowledge either reinforce or continue, as required.
- Contextualise Player behaviour based on Player knowledge.
If Players are repeatedly acting against the interest of a Character whose motivations they have been made aware of, it can be assumed that they are choosing to act in a fashion they know to run counter to that Character’s desires. Use this to codify Player motivations and then reinforce/reinterpret based on future Player behaviour.
- Use past Player actions to make predictions about future actions.
Assume consistency and use that to make predictions about the Player’s likely actions. Have Characters base their interactions with Players on these predictions.
- Use predictions based on past Player actions to define each Character’s “emotional reaction”.
If a Player has consistently been helping a specific Character and then acts against them treat that as a betrayal and have the Character react according based on their personality. Use similar behavioural predictions to handle emotional reactions to other changes in Player behaviour over time.