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.
- Start up Terminal
- Navigate to the StoryAssembler root directory
- Type command to start up a Python webserver:
python -m SimpleHTTPServer
- Start a web browser and go to http://localhost:8000
- If you don't have Python, download it (2 or 3 is fine)
- Start up Command
- Navigate to the StoryAssembler root directory
- Type command to start a webserver:
- Python 3:
python -m http.server
- Python 2:
python -m SimpleHttPServer
- Start a web browser and go to http://localhost:8000
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)
All the tutorials, walkthroughs, and technical explanations live in the wiki
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
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.
There's a viz for an older version of this library here, but because it still has some pernicious bugs, we're not including it in the library (for now).