If the download links on this page are missing, please download the SDK from https://www.renpy.org/dl/6.9.0/. Or click here to download the latest version of Ren'Py.

Please consider linking to the Download Ren'Py page, which will be updated when a new version of Ren'Py is released.

Ren'Py 6.9.0 "The Long and Winding Road"


You only need to download one of these three files. Each of these files contains the full Ren'Py software development kit, containing everything needed to develop Ren'Py games for Windows 2000 and up, Mac OS X 10.4 and up, and Linux x86. The development environment contains the files needed to produce games for all three platforms. Each file also includes the jEdit text editor, the Ren'Py demo, and "The Question", an example game.

Java Requirement. Java 1.5 or later is required to run the jEdit text editor. If it's not installed on your computer, you'll need to download it from java.com. Java is not required to run Ren'Py games, only to develop your own.

License. Ren'Py is licensed under a very liberal license, that allows for free commercial and non-commercial use. Read the full license for details, but a short summary is that you can distribute Ren'Py games however you want, as long as you include LICENSE.txt.

Release History and Updates

Ren'Py 6.9.0 has proven to be hopelessly flawed. Please release games with 6.8.1, or wait for 6.9.1 to come out.
Ren'Py 6.9.0h has been released. This fixes a bug that triggered on Linux when a displayable moved off screen, and a bug that triggered when a RotoZoom was larger than the screen. Since the first bug isn't apparent on other platforms, all users are encouraged to upgrade before release.
Ren'Py 6.9.0g has been released, fixing more issues with the new rendering code. This also includes the pefile.py update.
An update to renpy-6.9.0/ to fixes a "RESOURCE_BASE is no longer correct" exception when building distributions that include a windows icon. (This is the second update for this problem. The first one generated incorrect executables.)
Updated the released version to 6.9.0f to fix a bug in subpixel rendering. Games using subpixel rendering should upgrade.
Officially released final version (6.9.0e).

Release Announcement

Nearly three months in the making, Ren'Py 6.9.0 "The Long and Winding Road" has been released. This release contains complete rewrite of one of the most fundamental components of Ren'Py, the rendering system, to reduce complexity, improve portability, and increase speed and framerate stability. It also adds in subpixel rendering, which can improve the smoothness of slow moves. It also allows for a new class that makes it possible to use Python to script rotation, zoom, movement, and alpha blending.

Along with these core improvements, this release includes a number of new features, including several that should begin to make Ren'Py programming easier, and the usual bug fixes.

Downloads of 6.9.0 and a full release announcement can be found at:


To migrate your game from Ren'Py 6.7.0 or later, copy the directory containing your game into the directory containing the new Ren'Py. Please see the 6.7.0 release notes for information about migrating from older releases.

Changelog for Ren'Py 6.9.0

This release features a rewritten rendering system. The rendering subsystem is what manages drawing to the screen. There have been several major improvements:

Improved the transform routine used by RotoZoom and Transform. It's now both more accurate and faster. On Intel computers, it is now accelerated using MMX instructions.

The image statement now implicitly places itself inside an init block if it's not inside an init block to begin with. The code:

image bg world = "world.jpg"

is now equivalent to:

init 990:
    image bg world = "world.jpg"

When compiling python blocks containing strings with a unicode character in them, Ren'Py will automatically prepend a u to any string that's missing it. This should make life easier for users of non-ASCII languages.

The new function makes it easy to make a bar that varies between two values over time.

The new renpy.Container class can be subclassed to create a user-defined displayable thatr contains other displayables, like Transforms.

The new image manipulator allows images to be scaled by a specified factor at preload time. This is generally faster than doing the equivalent scaling at display time with FactorZoom.

The new function allows sound and music to be smoothly panned over time.

The new variable allows a function to be called whenever control reaches a label. It can distinguish between jumps to that label and control falling through.

There have been a couple of places where properly documented functions have superseded semi-documented calls into the Ren'Py internals:

The and functions are now the preferred ways of getting access to the game menu.

The function now takes a transition argument, allowing it to subsume the undocumented _intra_jumps.

Ren'Py now looks for the file environment.txt in the directory containing Ren'Py itself. If it finds it, it loads the file as a python file, and uses it to set the default values of environment variables. This allows things like the editor or the scale factor to be set even on platforms that don't make it easy to change environment variables globally.

The reporting of parse errors involving missing quotes has been improved.

Changed the behavior of overlays during transitions. Now, both the old and new screens will use the new overlay. Previously, the overlay was cleared out during a transition, which didn't work well, as (for example) a dissolve would cause the overlay to blink out and then dissolve back in again.

and have been changed to take a layers argument, giving the list of layers the transition applies to. By default, this is only the master layer, which is a change in their behavior.

Calling theme.roundrect() no longer implies layout.button_menu().

Ren'Py now autosaves when entering the quit prompt, and will not actually quit until this autosave is complete.

Fixed a divide by zero error that occured when Alpha was used for 0 seconds.

The default framerate () has been raised to 100 frames per second.

Added as a version of that requires two function calls, rather than three.

Libvorbis has been upgraded to version 1.2.0.

To reduce distribution size, OGG Speex support was dropped.

Other Downloads

The following downloads may be useful if you want to run a windows-only Ren'Py program on other platforms, if you plan to port Ren'Py to a new platform, or if you want to build a distribution of Ren'Py. Recent versions of Ren'Py default to producing distributions for all three supported platforms, making these programs rarely necessary.