Releasing Ren'Py Games

PyTom <pytom@bishoujo.us>

Updated: 2005-11-21


Okay, so you've finished creating a game using Ren'Py, and now you
want to release it. Congratulations! This tech note will help you to
package up your creation and send it into the world.

The first thing to do is to check to see if you have the latest
version of Ren'Py. New versions of Ren'Py fix bugs in old versions. If
you're not using the latest version, your game may have known bugs in
it. At the very least, ask about what was fixed between versions if
you insist on using an older version.

The next thing to do is to ensure that you actually have a finished
and working game. Did you remember to run add_from? The easiest way to
do this is to change into the tools/ directory, and run
game_add_from.bat.  That tool will add from clauses to all of the call
statements in your program, ensuring that everything continues working
after a game is reloaded. It will also create .bak files for each of
the .rpy files it can find, so you'll probably want to delete those by
hand once you've tested the changes.

You'll also want to run game_lint.bat, also found in the tools/
directory. This is a tool that will check your Ren'Py game for subtle
bugs. If it reports any bugs, you should fix them, and run lint.bat
again until they're all fixed. If you've changed the name of the .exe,
you'll probably need to edit lint.bat so that it runs. In general, you
don't want to release a game with lint errors, or at least a good
excuse for said errors. Many of the problems that are found this way
are fairly subtle, and only manifest themselves on some of the
platforms Ren'Py supports.

If you're not totally sure that everything is A-OK, you can send me
the game and I will check it over in confidence. If there's enough
demand, I'll put together a tool that will elide the game text, so
just the code and structure is left.

I also ask that you add a Ren'Py credit into your game. I tend to use
the line "Powered by Ren'Py.", but feel free to word it however you
want.

Another thing to do is to change the icon of the exe file. The best
way to do this is to create a .ico file containing 48x48, 32x32, and
16x16 versions of your icon, and then to use XN Resource Explorer to
go in and change the icon of the file. Just delete off the existing
icon, and then do a command like "Import image resource..." (going
from memory here) to add in the new icon. Save the modified
executable.

Now, we have everything that goes into the final distribution. In
fact, we have more than enough, as Ren'Py ships with a number of tools
that aren't needed to run a game. So we need to decide which files to
keep in various circumstances.

There are basically three different kinds of distributions you can
make. The first is a windows executable distribution (abbreviated
windows), that allows the user to run your game without having to
download any additional software. The second kind is a
python-dependent (python) distribution, which can run on any computer
that supports python 2.3 and pygame. The final type of distribution
that is supported is a cross platform distribution, which can run both
on windows and on any computer that supports python.

To make a windows distribution, you need the files that I'll mark
windows or all. To make a python distribution, you need the files that
I'll mark python and all. And to make a cross-platform distribution,
you'll need all the indicated files.

Anyway, the list of files that you may concievably want to include as
part of your game are:


common/ [all] - A directory containing common script files that help
Ren'Py work.

lib/ [windows] - A directory containing the code and libraries needed
to run Ren'Py on windows.

game/ [all] - The game directory containing your scripts and
data. You probably do not want to distribute the saves/ directory
inside here, so remove that. Be sure not to distribute
game/saves/persistent, and be warned that it is recreated each time
Ren'Py is run.

run_game.exe [windows] - The game executable that the user runs.

moonlight.py [python] - The main python script that runs your game.

python23.dll [windows] - The DLL containing the python interpreter. It
may change versions in the future, in which case the numbers will
change.

renpy/ [python] - Contains the python source code for Ren'Py.

module/ [python] - Contains the source code for the _renpy module.

LICENSE.txt [all] - The license for Ren'Py. You may want to integrate
this into the license for your game as a whole.

README_RENPY.txt [all] - Instructions for running a Ren'Py game. You
may want to integrate this into your own README.

Anyway, once you have all of the files, you can zip them up (perhaps
adding in things like README and license files) and post them on the
web. You've just released a Ren'Py game!


For the record, the following are the files distributed with Ren'Py
that should not be distributed with a game.

CHANGELOG.txt - The Ren'Py changelog.

console.exe - A console/debugging version of Ren'Py.

extras - Scripts that give additional features. Uninteresting as a
whole, as to be used the scripts must be in the game/ directory.

scripts - Example scripts.

tools - Development tools.

game/saves - This is the directory containing the savegame info. It
should be deleted before distribution, but please note that running
Ren'Py recreates it automatically. It contains a file named persistent
that stores the list of seen lines. Shipping a persistent file
may lead to the option to skip seen text skipping text not seen by
the end-user.