Skip to content
StoryAssembler: a dynamic choice-based narrative generation engine
JavaScript HTML CSS
Branch: master
Clone or download
Latest commit c394e7c Aug 3, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets More files. Sep 10, 2018
js quick fix Aug 3, 2019
license.txt added BSD-4 license Dec 10, 2018


A narrative system for procedurally generating choice-based interactive narratives!

  • Powered jointly by an HTN (hierarchical task network) planner and forward-state planner.
  • Text and choices are dynamically assembled from pre-authored fragments that have effects.
  • Narratives are driven by lists of states which are reached by fragment effects.
  • Text templating is also available to make narratives dynamic on a word-by-word basis.

How to Run (Mac)

  1. Start up Terminal
  2. Navigate to the StoryAssembler root directory
  3. Type command to start up a Python webserver: python -m SimpleHTTPServer
  4. Start a web browser and go to http://localhost:8000

How to Run (Windows)

  1. If you don't have Python, download it (2 or 3 is fine)
  2. Start up Command
  3. Navigate to the StoryAssembler root directory
  4. Type command to start a webserver:
  • Python 3: python -m http.server
  • Python 2: python -m SimpleHttPServer
  1. Start a web browser and go to http://localhost:8000

Example Scene

A simple example scene's files are located in

  • js/StoryAssembler/data/scene-configs (the config file)
  • js/StoryAssembler/data/scene-content (the content file)

How Do I Start Writing?

All the tutorials, walkthroughs, and technical explanations live in the wiki

Why Would I Want To Write With This Thing?

StoryAssembler's good for creating quality-based narratives. In general it's good if you want to write a story where any of these are true:

  • most choices are gated by certain conditions
  • how the story progresses is dynamically determined via state
  • you want game variables from a concurrent game to influence the direction of the story or choice availability

The dynamic templating system means it's also good if:

  • you want to write stories where different characters take on story roles
  • individual qualities of characters influence choices or structure of the story

Who's Used This Thing?

A version of this system was used to drive the narrative component of Emma's Journey, a generative game about climate change created by UC Santa Cruz.

You can’t perform that action at this time.