Moar Interactiveby Moar InteractiveSafe for work

Moar Kit

Ren'Py tools you can drop into a game.

Small, focused tools for Ren'Py developers. Plain files, no installers, clear docs, and licences that let you ship commercial games.

  • Python 3.8+
  • Deps none
  • Price Free · PWYW
save_safe_check.py
$ python3 save_safe_check.py v1.0/ v1.1/

✕ BREAKS OLD SAVES
  Label removed · after_class
    Where script.rpy:214
    Why   saves made inside it can't resume
    Fix   add a stub label that jumps on

  default changed type · coins
    Fix   migrate it in after_load

! RISKY
  call without from · chapter2.rpy:88

· GOOD TO KNOW
  new default weather

exit 1 — fix before you ship
Example output. Every real finding lists Where, Why and Fix.
  1. 01Save-SafeAvailable
  2. 02Gallery & Replay RoomAvailableBuy on itch — $9 (opens in a new tab)
  3. 03Choice & Relationship TrackerIn the works
AvailableFree · PWYW

Save-Safe

Update checker

Check your Ren'Py update for save-breaking changes before your players find them.

It compares your last release with your new build and reports every change that would break a player's existing saves, with a fix for each: a stub label, an after_load migration, or an image alias.

Open on itch.io (opens in a new tab)

01 Quick start

  1. 1Keep a copy of your previous release: the project folder, a git tag, or the old zip.
  2. 2Point the checker at the old version and the new one.
  3. 3Read the report. Every finding tells you where, why, and how to fix it.
python3 save_safe_check.py path/to/OLD-version path/to/NEW-version

Tip: add --strict before a release so risky changes fail the check too.

03 What it checks

✕ Breaks old saves

  • A label renamed or removed
  • jump or call to a label that no longer exists
  • A default variable renamed
  • A default value that changed type
  • A new $ variable with no default, used across scenes
  • A Python class removed or renamed

! Risky

  • call without from
  • .rpy files removed or renamed
  • default switched to define, or define values changed during play
  • init python objects changed during play
  • Python random instead of renpy.random
  • Screens removed or changed
  • Missing images
  • persistent. fields removed or renamed

· Good to know

  • Harmless notes, like a new default

04 Flags & exit codes

Exit codes make it easy to run before every build, or in CI.

--quietShow only problems
--strictMake risky findings fail too
--output report.txtAlso save the report to a file
exit 0Nothing breaks saves
exit 1Something will break saves
exit 2Wrong usage

05 Tested on real saves

17/17found by Save-Safe
1/17found by Ren'Py lint

We built a sample game and an update with 7 save-breaking and 10 risky mistakes, then loaded real saves from the old version in Ren'Py 8.3.7. They failed to load, crashed or lost values. After the fixes Save-Safe suggested, the same saves loaded and played to the end.

On the workbench

Available tools are linked out. Prices for the rest can change before release.

03In the works

Choice & Relationship Tracker

We are still designing this tool. It will help a game track choices and relationships.

Price TBD

Next tool

No spam. Unsubscribe anytime.