Announcing Elm Narrative Engine Version 5.0 Release

I’ve been working slowly but steadily on the Elm Narrative Engine, and have just released version 5.0.

The Elm Narrative Engine is a browser based IF tool offering a flexible “schemaless” world model, a salience/quality based rule matching system, and is view agnostic.

This release focuses on adopting the simplified authoring syntax suggested on this forum in an earlier post. It also adds some debugging tooling.

I have been testing this version in beta on a more complex game that I have been working on (which was a part of last year’s IntroComp), and it has reached a level of stability and utility that is ready for release.

You can play with the new release in a live online sandbox at

The full documentation is at

The release blog with more information is at

I feel this release makes the Elm Narrative Engine a solid option for writing IF. Future plans involve creating a JavaScript wrapper for people who do not want to writing in Elm, and an online editor/publishing platform for minimal friction usage, similar to the tooling available around Twine.

I hope more IF authors give it a shot. Please feel free to contact me with questions, feedback, or to show off games you have made with it. :slight_smile:


The pink and black with a white background is very hard to read with my low vision.


1 Like

Hi fos1. Thanks for mentioning this! Which part are you referring to?

If you are referring to the code syntax highlighting in the sandbox editor, I do not have control over how that displays, but you can see the same code on github at (you can actually clone that repo and try it out locally too).

If you are referring to the actual sample game, you can change the background color (and any other aspect of the view) via normal CSS styles. The debug bar has hard coded styles (it’s actually yellow on black), but you can overwrite those too with custom CSS. I made another version of the sandbox code with these minor changes in place to demonstrate:

If you were talking about something different, please clarify what you meant for me. Thanks for taking a look, and thanks for the feedback!


Hi Jeff,

Thank you for the feedback and the suggestions. I did play with the interface and the HTML/CSS settings based on your alternative sandbox code. It is much more readable. The initial settings were just washed out with my color perception.

I will experiment further.

Thank you,


Just to let you know I’ve been following Ellie’s development for a while now ( although silently, it is just today upon joining here I decided to start trying to interact with the IF community) and ice loved it ever since I stumbled upon it and for the last year steady have been trying to figure out how to get it to run natively on one of my systems, I use 4 of the 5 bigones, windows 10, Linux, Android and iOS no Mac … yet … I have no life) so would really love it if you were to make something like that one day but till then thank you and keep up the good work!

1 Like

Hi Josh, happy to hear about your excitement, so thank you for posting. To be clear, I am the author of the Elm Narrative Engine. I used Ellie as a sandbox to share an example game made with my engine, but I did not make or contribute to Ellie. That credit is primarily due to Luke Westby. But nonetheless, I’m glad you like it.

As for running it natively, have you checked out those apps that let you run web apps in a native “wrapper”? Something like I don’t know if they work for your systems or not, but there are a few out there to try.

Thanks again for reaching out, and welcome to the IF community!

Seems an interesting approach. so are the actual game scripts basically just strings, and you have your own interpreter for those? or is this all actual Elm code?


This does seem a bit complex for non-developer people to write and as strings there’s no type checking in the online editor, i would imagine it’s quite error-prone.
Why not separate out the scripts from the code and use a simpler format like Yaml or something?

I’ve heard good things about Elm as a web framework but never really used it.
Is your part of the code/runtime posted anywhere?

1 Like

Hi @dcsan, thanks for the question/input. You are correct in noting that the “scripts” you reference are a string based DSL that I created, which gets parsed into a strongly typed custom data structure that my engine can work with. In the sandbox example, they are intermixed with actual Elm code, but in real production they would probably be imported from an external source (a spreadsheet for example, or a custom editor - see below).

It might be somewhat complex, as it requires learning the (limited) DSL and thinking through the correct declarative rules to achieve the desired effect, but it provides great power and flexibility in defining reactive narrative systems. Compare it with Inform 7, which is also quite complex to learn and use well. My syntax and engine is significantly more limited than Inform 7, but it uses a similar approach (it is closer to Inform 7 than Twine or CYOA engine for example).

You are right about losing type checking, which is a definite shame. Since the author can define their own world models and contexts, I am limited in what I can type check. I decided that the flexibility of this string based DSL is worth the trade offs, plus it allows authors to create stories without having to know Elm. I do have very stringent parsing errors to catch invalid syntax at runtime, which has been sufficient in the games I am working on in this syntax.

The ultimate plan is to allow authors to use a bespoke, collaborative, web-based editing tool to author and manage these entities and rules. The editor provides intelligent auto-completion, with real time in game previews of newly added content. I currently have a prototype of some of these features, and I plan to make it available hopefully in the near future.

Of course, you can always author directly in the native Elm types if you want the strong type safety, but it is much more verbose (see

The full code for my engine is posted at

I appreciate your interest, and welcome further questions or suggestions. My goal is to make it as simple as possible to create stories that are as dynamic as possible. I think the editor is the last missing piece to bring it all together, and I hope to reveal that as soon as I can.

along with not having a life as I stated earlier, a few posts down, I am apparently incredibly stupid as well, It has been nearly a year or so since you kindly replied and by chance I stumbled upon these posts again as I was trying to get the Elm Narrative Engine running locally again , so when I had asked you about running the Ellie App natively you gave me the 100% correct information to which I then attempted to apply that to the Elm Narrative Engine. It was a frustrating experience and I left it without success feeling like I just wasn’t understanding. What I more appropriately wasn’t doing was asking for the correct help and making sure I knew what I was asking for, when I found ENE it was through the Ellie App sure you had the engine on and I assumed that it was called Ellie App.
I have literally realized this merely ten minutes or so ago and am feeling quite foolish and am rambling now I apologize.
Anyway I am once more going to give running the Elm Narrative Engine a shot on my PC and want to say again thank you and wish me luck, hopefully my fooishness and obvious lack of experience gave you a little bit of a laugh,
Thank you again,

PS Along with my idiocy mentioned above I think I have made this ramble worse by replying to myself attempting to delete it pasting my self reply in a reply to you and now having to add to that to hopefully change it enough that the system will let me post it.
Forehead Smack
I am going to my corner now

Haha, hi Josh. No worries! Hope you have better success this time.

I do have plans to create a javascript wrapper, for this engine, which might make it easier to run locally.

Also, here’s a sneak preview of a visual editor that I have been hinting at for a while: It is still in progress, but it makes it easier to author, and it includes a preview tab. If you copy the strings in the Ellie example into the editor you can play with the example without needing to worry about any of the code. Hopefully I’ll announce more about it soon with better instructions.

Anyway, thanks for the follow up :slight_smile:

Man you made me gasp then laugh out loud, thank you so very much for responding to a absolute nobody like me man you have no idea how much it just made my day, I still go into the ellie-app and play with the Elm engine and have been trying to learn elm on my own but it seems that the newest update dosent have some of the support that previous versions did , or more likely my understanding lacks greatly. So a visual editor would be awesome! I am excited, would it be like CSide or informs? Anyway I am going to check it out and again thank you so very much.

Hi Josh. I wanted to give you a heads up that I expect to be announcing the visual editor becoming publicly available with in the next week or two, which gives a no-code and no-elm knowledge required to get started. So keep an eye out for that :wink:

1 Like