story-sifting technique sourced
Story sifting with causal bookkeeping
A simulation records causal links between character actions as they happen, and authored sifting patterns match causally connected sequences in that record, so the system can find the storylines that emerged without steering the world toward them.
mechanism
Characters perform discrete actions that are written to a chronicle. As each action is performed, the engine records which earlier actions caused it: an action that names a past action in one of its roles, a reaction queued by an earlier action, or a reaction to news of an earlier action relayed by gossip or an inscribed item. The chronicle becomes a forest of causal graphs instead of a flat log. Authors write sifting patterns: a set of action slots, each filled by a query over tags, roles, importance, or salience, plus conditions such as caused, triggered, and preceded that bind the slots into a storyline (offense, vow, scheme, payback). Matching a pattern is a constrained search over the recorded graph, not causal inference over raw state. Patterns compose, so a pattern can match two storylines that share a hinge action. The same patterns can run over one character's memories, so characters can recognize and retell stories they know, and an action that retells a matched story passes knowledge of every action in it to the listener. Ryan's 2018 dissertation frames this as curation: the simulation overgenerates, a story sifter extracts material, and a narrativizer recounts it, either in a separate media experience (feedforward) or back inside the world (feedback). Viv, his public engine, implements this as a compiled language with a JavaScript runtime that a host game calls periodically.
limitations
- Patterns find only the storylines someone authored a pattern for; the dissertation leaves sifting heuristics that find unanticipated stories as an open problem.
- Turning sifted material into a told story (narrativization) remains authored or human work; the 2018 conclusion calls it a bottleneck.
- Causal bookkeeping requires the simulation to be built from discrete, recorded actions; it cannot be added cheaply to a sim that changes state directly.
- Designed for periodic background simulation over long spans, not frame-by-frame behavior; the public runtime targets JavaScript only and commercial use needs a license.
appears in
the paper, 4 sectionsrelations
5 stored edges
Gossip propagation
Relayed knowledge carries the original action, so a character who hears of an old event can react to it years later and the reaction is linked causally to both the event and the telling.
History chronicle
The chronicle stores causal links with every event, and sifting patterns retrieve whole storylines from it (a revenge arc, a rise and fall) instead of leaving the player to browse records one at a time.
Memories and thoughts
Characters can run sifting patterns over their own memories and act on the storylines they recognize, such as warning a grandchild with a remembered cycle of revenge.
Storyteller director
Policies that a director would use to steer events toward an arc can instead select and frame storylines that already happened, leaving the simulation unsteered.
Triggered event chains
Reactions and multi-phase plans are recorded with their causes, so any chain can be traced and named after the fact rather than only authored in advance.
claims
8 with sourcesThe dissertation defines curationist emergent narrative, in which simulated material is curated into a narrative artifact, recasting story generation as recounting rather than invention.
recounting, rather than invention
Abstract, p. xiii
The dissertation proposes recording contingency relationships between events as they occur, which it calls causal bookkeeping, so that storylines can be identified later.
explicitly record contingency relationships between events as they occur
p. 163
Its architecture distinguishes sifting patterns, which match against the chronicle, from sifting heuristics, abstract policies that guide sifting; it delivers patterns and leaves heuristics as an open problem.
the former pattern-match against the material recorded in a chronicle
p. 237, Story Sifter
In the feedback variant of the architecture, curated stories are mounted back into the simulated storyworld rather than into a separate media experience.
mounted back into the simulated storyworld itself
p. 232, Curationist Architecture
The conclusion names a narrativization bottleneck, turning sifted material into arbitrary stories, that the author could not solve, and proposes curation support tools that leave narrativization to human storytellers.
let us call it the narrativization bottleneck
Conclusion, p. 692
Viv's runtime records causal links between actions automatically as they occur, storing direct causes and transitive ancestors for each action.
Each action records both its direct causes and its transitive ancestors, enabling queries over causal chains of arbitrary depth.
Causal bookkeeping
Viv defines story sifting as automatically detecting the storylines that emerge as a simulation proceeds, and its runtime is fully symbolic.
There are no LLMs in the loop at runtime.
Design philosophy
Viv ships a single JavaScript runtime, with a C# runtime for Unity planned.
A C# runtime tailored for Unity is planned.
README, Status