I’m currently in Germany for the Dagstuhl seminar Artificial and Computational Intelligence in Games: AI Driven Game Design. Wednesday, I was part of a workshop focusing on social network analysis and its application to narrative: how are social networks graphed? What kinds of information can they contain? What data could be associated with an edge — number and recency of interactions? Emotional valence of average interaction? More than this?
And — given the graphs available — how might we build interesting narrative game mechanics that in some way made use of a knowledge of the network? Might there be games that turned on either a human or an AI interacting to modify a social graph as the primary mode of interaction? What about gameplay experience interventions that were triggered by the discovery of particular graph states?
This is interesting to me in part because I feel a lot of our game design is currently poor at facilitating stories about communities and group dynamics.
One of several contributions from the graph theory members of the group was the idea of a “motif,” a recurring pattern from within a larger graph, which could be reasoned about. The motif here might represent the idea of a small family — all the members know one another. Many other social situations could be represented this way, including ideas like “one character knows everyone else” or “this character is a loner.”
It occurred to us that this might make the useful basis for an authoring tool where motifs were used to specify prerequisites and post-conditions for narrative moves — a little the way StoryNexus specifies numeric range prerequisites and post-conditions for its storylets.
Depending on the rest of the system, eligible narrative moves might be presented as options to the player — it’s up to you to choose which one you want to use to advance the story — or executed by an AI automatically, in which the AI would need to select among all currently valid narrative moves.
The author would have a palette of motifs to work with, and could apply these to a story segment to say “if this configuration of relationships exists in the game, the following narrative segment is eligible for use; please fill each role with an available character who fits that slot.” (This is a system with dynamic requirements, a bit more flexible than a quality-based narrative system.)
For instance, here’s how this system might express a narrative moment involving a love triangle:
In these examples, for the purpose of argument, one of the nodes is colored to represent the protagonist/point of view character about whom the story is told. Link colors could also represent relationship types, with the red link (for instance) representing a relationship between enemies.
So it might be possible to reuse the same motif shape as both the prerequisite and result states, with only a change in the coloration of a line. (On this blog, the difference between red and grey lines may be less obvious than we’d want them to be on the actual hypothesized tool.) The author might select, drag, and drop a motif into the prerequisite area, but then also further constrain the situation by clicking on a node (to make it the protagonist) or a line (to toggle its state through states such as “love / hate / neutral”).
If we selected a different node to emphasize, we could shift the point-of-view character from the insider in a tight social group to an outsider of that same group:
We could imagine several different sub-palettes, presenting motifs for different group sizes and configurations. Groups in which every member is connected to every other would be cliques, and there might be a palette pertaining to clique membership. In this palette, we could imagine a palette that covers total-connectedness, a clique with an outlying person, and a condition of solitude, which could be used to condition stories about joining or leaving a group:
We might also say that the clique size is actually flexible (despite the appearance in the diagram that it has exactly six numbers), and this might be represented by a numeric specification.
And we might also choose to slightly expand the range of states available for node characters:
The motifs would allow us to go beyond readily named structures (like love triangle) to identify situations of greater complexity — such as the idea of a character who is the only connection point between multiple sub-communities, for instance.
To be clear, this is not describing any narrative mechanic that fundamentally couldn’t already be generated using logic programming languages: you could use Prolog to specify narrative beats that can only be triggered if there exists some character X who has two other lover characters Y and Z. But expressing these ideas in code tends to be off-putting to non-technical authors, and often conceal bugs that aren’t obvious at first glance. Thinking in terms of graph transitions also gives us a way to work out whether some narrative sequences produce a dead end, or whether forward momentum is always possible.
In addition, encouraging the author to think in terms of social state transitions puts an emphasis on kinds of change that tend to feel dramatically meaningful: a character dies, moves, makes friends or enemies, gains a family or loses one, and so on.
Implementing a tool like this is left as an exercise to the reader.