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.