one dataset · paper, tables, graph, wiki
simgrammar the grammar of simulation

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 sections
paper

6. Five ceilings

linked in this section of the paper

paper
paper

7. The technique landscape, 2019 to 2026

linked in this section of the paper

paper
paper

8. Where the techniques land

linked in this section of the paper

paper
paper

Appendix B. Technique catalog

linked in this section of the paper

paper

relations

5 stored edges
affects

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.

Deepens
affects

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.

Deepens
affects

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.

Enables new form
affects

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.

Deepens
affects

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.

Explains

claims

8 with sources
c01high

The 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

src-ryan-2018-curating-simulated-storyworlds

c02high

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

src-ryan-2018-curating-simulated-storyworlds

c03high

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

src-ryan-2018-curating-simulated-storyworlds

c04high

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

src-ryan-2018-curating-simulated-storyworlds

c05high

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

src-ryan-2018-curating-simulated-storyworlds

c06high

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

src-ryan-2026-viv-runtime-model

c07high

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

src-ryan-2026-viv-introduction

c08high

Viv ships a single JavaScript runtime, with a C# runtime for Unity planned.

A C# runtime tailored for Unity is planned.

README, Status

src-sifty-2026-viv-repository

sources

4
James Ryan (2018-12). Curating Simulated Storyworlds. PhD dissertation in Computational Media, University of California, Santa Cruz
James Ryan (2026). Introduction to Viv. Viv documentation (Sifty)
James Ryan (2026). Viv Language Reference, 20: Runtime model. Viv documentation (Sifty)
James Ryan (2026). Viv: An Engine for Emergent Narrative (monorepo). GitHub (siftystudio/viv)

provenance

runs in log/runs
2026-10-28
created2026-10-28-story-siftingtechnique