A downloadable game engine

Narrat is an open source narrative game engine for interactive fiction games and visual novels. It can also be used for text-based RPGs or even a point and click.

Made in HTML5 using TypeScript and vue.js. Works on websites, desktop and mobile.

The syntax for writing dialogue is inspired from ren'py, and the games layout is inspired by the way dialog and visuals are presented in Disco Elysium

You can view the website for more info, a demo, and how to get started

Some of the features:

  • Flexible dialog writing with branching and conditions
  • Multiple script files support with labels and jumps to organise script writing
  • Skill check rolls for branching or in choice options (Feature still early, needs a UI for viewing skills and creating characters)
  • Multiple speaking characters support with icons and poses
  • Custom variables in scripts to create flags or other data the game needs to track
  • Seamless saving and reloading
  • Visual game UI on the side of the dialog with buttons that can be used to trigger scripts (this effectively allows you to create game maps, or point n click style gameplay
  •  Sound and music support
  • Delays between script lines for effect
  • Electron build to turn the game into a pc/mac/linux app (the template already has it setup and ready to use)
  • Responsive mobile layout

Rated 5.0 out of 5 stars
(5 total ratings)
GenreVisual Novel
TagsGame engine, narrat, Narrative, Open Source, Point & Click, Ren'Py, Story Rich


narrat.pdf 49 kB

Install instructions

The zip file attached is a pdf that gives you basic info on how to get started. To avoid providing outdated files on itch.io, the latest version of the engine and game template are on GitHub. The PDF explains everything.

The simplest way to get started is to read the Getting Started Docs

Development log


Log in with itch.io to leave a comment.

Hi I really like the game engine so far but have ran into a problem. It wasnt a problem for the first couple files but the jump function no longer seems to be working. I originally had it in a choice function but that didnt work then i added it to the config.json file and that did not solve the problem. I then removed it from the choice function and added it afterwards but it still did not work if anyone has a fix for this problem that would be great

Hey, sorry I don't check itch.io very often and only noticed your comment now. I don't know about a bug in the jump function, but I've been making a lot of changes and fixes to the engine over time so it could be worth updating your engine version as that could fix the issue (especially if you downloaded the zip from itch, that's out of date. I'm going to change that download to link to github to avoid giving people an outdated version I think!).

A lot of the more recent changes also make it clearer what the error is when there is a bug, which could help diagnose what's wrong with your game.

I haven't really documented the process to upgrade narrat version yet, but generally the only thing to get an updated narrat version for your game is to go in the `package.json` file (at the root of the game folder) and in this file in "dependencies" change the version of "narrat". Current version as of writing is 0.8.4 which I'd advise using.

Once you've changed that you can run `npm install` again and it will pick up the new version.

Important note though: There have been a few breaking changes in how the engine works since older versions of this engine so you might have to change some things in your game if you do update.

Something helpful: The narrat repo has a test game that I use during development which contains a bit of every feature that I use while working on it. You can see its config and code there. That should help you compare and see if there's any new feature or change I missed (in which case I'm interested to know!)

If you have issues upgrading, you could also make a copy of the latest narrat template, and then simply copy all your `.rpy` game files and other assets into it + modify the config to match what you had before. This way you already have a setup that's known to work with the latest version.

Another thing is you can look at the changelog which should also give you an idea of what to expect when updating to more recent versions. I've been trying to list bugfixes, breaking changes and new features there.

A little list of known breaking changes if you're upgrading from older version:

  • If your game uses music or audio: The format for adding them to your config has changed, they're all in the same `audio` part of the config.  The new docs on playing audio will show you how it works.
  • You probably have existing code using `DATA`, `SKILLS`, `STATS`, or `BUTTONS`. All those things have been changed to be in lower capitalisation, so you can replace in your entire project `DATA` for  `data`, for example. I was generally making things more consistent for the future, but had to break existing code for that.

Also final note, if you have issues with the engine I'm way more likely to notice a Github issue


A great tool! Congratulations on the work.

I hope in the future it will be easier for non-programmers.

So far I haven't been able to use it, but I really liked the concept and how it reminds me of Disco Elysium.

(1 edit)

Hello, thanks for this software. It can be very useful for what I would like to do. I hope you continue to develop it. The current feature set is very useful and I hope you can keep it simple for non programmer types. I am having trouble using Electron on windows. What is NPM? is there a standalone executable so I can build the template to a windows app?

(3 edits)

npm is a package manager to install libraries in javascript, in this case used to run and build the game. If you install nodejs (https://nodejs.org/en/) you will have npm with it and should be able to run the commands to build the game in your terminal.

The electron build command worked for me when I tried it on Windows but if you have issues with it you can always post more details about what's happening 

Also probably a good idea to use the latest version of the template from github Narrat template to make your game, I'm not sure the download on itch io has the latest version. (If you had already started, copy pasting your game scripts and images etc into the template should work fine, the structure of the data hasn't changed. Only thing is there are more values in the game config now so you can look at the default one and make sure you keep everything that's there and just add your own changes to it

There are also narrat docs there https://docs.get-narrat.com/

And electron docs if you want more about info about how to customise electron for your needs (the setup for electron I included is just a basic setup, you can change the electron config and code to do whatever you want really) https://electronjs.org/docs/latest

Thank you for the information.