A flexible and highly extensible engine for telling interactive stories.

Sample story screenshots

The Elm Narrative Engine provides a unique and powerful engine written in Elm for adding narratives to your games through a simple, "salience-based" system.

Instead of building up narrative "branches," you define rules that govern how your story world changes as the player interacts with your story world.

rules =
   [ { interaction = with "River"
     , conditions =
          [ currentLocationIs "Cottage"
          , itemIsInInventory "Cape"
          , itemIsInInventory "Basket of food"
          ]
     , changes =
          [ moveTo "River"
          , moveCharacterToLocation "Little Red Riding Hood" "River"
          ]
     }
   -- etc
   ]
        

(A visual editing tool is currently under development as well)

The interactive story starter comes with a pre-built theme, but you are free to embed the narrative engine into your own app in any way you please, even across languages and frameworks.

Features

Getting Started

Play some sample stories, read the documentation, and start writing your own interactive story.