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


Ren'Py 6.5.0 "Breakeven"

Ren'Py 6.5.0 "Breakeven" was released on December 29, 2007. The main distributions are:

Each of these files contains the full Ren'Py development environment, which is enough to allow you to develop Ren'Py games on Windows 98 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. It also includes a text editor and sample games.

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.

For your convenience, we've posted the Release Announcement and Changelog.

Known Issues

There are no known issues at this time.

Release Announcement

I'm happy to announce the release of Ren'Py 6.5.0 "Breakeven", the 12th release of 2007 and the 72nd release of the current Ren'Py codebase. The largest change in this release is that we have moved to Python 2.5, allowing us to benefit from nearly 3 years of Python core development. This release several feature enhancements to Ren'Py proper, including:

This release also includes four bug-fixes, so I encourage everyone to upgrade.

Downloads and a full release announcement can be found at:

http://www.renpy.org/wiki/renpy/releases/6.5.0

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

CHANGELOG for Ren'Py 6.5.0

We are now using Python 2.5. Python 2.5 syntax should be allowed any place that python syntax is allowed.


Rewrote the Bar class, which implements . This class now optionally takes an adjustment object, which is what stores information about the range, value, page size, and step size of the bar. Scrollbars can now indicate what fraction of the viewport is being shown.

Bars now take a new style property, bar_resizing. If this is true, we resize sub-bars, rather than rendering them at the full bar size and then cropping. This changes the look of bars a bit.


Viewports now use adjustments to control their x and y scrolling information. They properly fill in a range and step size, allowing scrollbars to indicate the fraction of the viewport that is being displayed to the user.

Viewports now also support several new ways of scrolling around. If a true mousewheel argument is given to , the user will be able to scroll the viewport using the mousewheel. If the draggable argument is true, then the user will be able to drag the viewport around using the mouse.


We have implemented a new container, . This container divides a space into the center, four sides, and four corners, and allows one displayable to be placed in each.


Windows (and related things, like frames and buttons) now take a new foreground style property. This is like background, but it goes on top of the rendered child of the image. It could be used to add things like shines to buttons.


The new function returns a matrix that can rotate the hue of an image.


We have implemented a new family of transitions, the ease transitions. (Such as ease, easeinright, easeoutbottom, etc.) These are counterparts to the equivalent move transitions, that use a cosine-based function to slow the start and/or end of the move as appropriate. The new define.move_transitions function simplifies the creation of your own family of move transitions.


Modified the default hyperlink handler such that a link of the form:

{a=http://www.renpy.org}link{/a}

will bring people to athe user's default web browser. Modified config.hyperlink_callback so that if it returns a value, that value will be returned from the current interaction. (For example, one could have it return True to end a say statement.)


and now take an alpha argument. If this argument is True, the alpha channel is preserved across dissolves, at the cost of some speed.


There is a new function, that returns the set of all labels defined in the script.


User-defined statements can now be provided a next function, which is called to get the label of the statement to be executed after the current one.


Modified to take a new parameter, horizontal, that causes it to move particles in a horizontal direction.


Renamed two style properties: box_spacing is now spacing, and box_first_spacing is now first_spacing. These properties can now be used by grids and sides. The old names are left in as aliases.


The archiver will now ignore presplash.png.


Lexer tokens beginning with __ and not containing __ are now munged in a filename-dependent manner. This means that one can use __word in a file, and be sure it will not conflict with __word in a different file.


Fixed a bug that made syntax errors more confusing than necessary.

Fixed a bug that caused corruption in zip files created by the launcher.

Fixed a bug that prevented image prediction from working in many cases.

Fixed a bug that prevented {w} from working when a ctc indicator was set, but a ctc_pause indicator wasn't.

Fixed a bug that manifested when a RotoZoom was larger than the screen.

Other Downloads

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