Renser is a narrative scripting tool meant to take the familiar Ren’Py scripting language and migrate a subset of it to other engines.
Features:
Script organization, through named labels
Calls, call stack management, and Jumps
Easy branching and choices
Simple implementation of Ren’Py sprite management using the show, with, at, and hide keywords
History tacking and boolean logic based on what labels have and have not been seen.
Extensible, either on the parser level, with the Signal keyword, but also on the language level
Easily traversable, so that it can be integrated smoothly with any game.
For an example of a game that uses Renser, check out Apple of My Eye, a two-week long jam project that uses Renser for it’s narrative aspects and also as a component of the turn based battle system.
The code for the project can be found on github, here.
Renser previously has been used in projects built on a variety of engines and frameworks, including Unity, Godot, Phaser/vanilla JS, and Ren’Py itself. Renser was re-imported to Ren'Py for instances where we wanted to preserve the narrative workflow writer's were used to while breaking out of Ren'Py's standard interaction loop.