Curveship

Automatic Narrative Variation

Curveship is a system for automatic narrative variation: It can relate the same underlying events in different ways, expressing the same content via different narrative discourses. Curveship can tell events out of order, as with flashback. It can designate different characters as the narrator or narratee (the one telling or the one to whom the narrative is told), and, for instance, can tell the story from a standpoint before, during, or after the events themselves.

Curveship-py, the original system with (in 2019) slight changes to work in Python 3, is an interactive fiction system that provides a world model (of actors, items, rooms, and events) while also modeling the narrative discourse, so that the narration and description of the simulated world can change. This system also has a parser, and can accept typed input from a player. This system is in version 0.6, and has been used for several research and creative projects, but is not being actively updated or maintained.

Curveship (the current, JavaScript version) has its own underlying representation of a storyworld (with actors, things, places, and events) and is intended to implement narrative variation online. Unlike the Python system, it does not include all the aspects of an interactive fiction simulated world (testing to see if a door is locked or unlocked, for instance), and it also lacks a parser. However, these capabilities got little use in the earlier system. The current Curveship be used to tell the same underlying story in different ways, which was the main point of the original project.

See the Curveship documentation for all details.

Curveship for JavaScript/ES6

—Nick Montfort
February 2, 2011–
September 2025 *

* February 2, 2011 was the first free/libre/open-source software release of Curveship. The system was being developed for years beforehand, and the first publication about it was in 2006.