If the download links on this page are missing, please download the SDK from https://www.renpy.org/dl/6.10.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.10.0 "You Ain't Seen Nothing Yet"


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

Ui.at also does not work. That can be fixed by updating renpy-6.10.0/.
Scaling is horribly broken in this release. Since scaling is auto-enabled on netbooks, this is a big problem. Update renpy-6.10.0/ to fix this.
Made 6.10.0e the final release.
Fifth pre-release (6.10.0e). Has the following updates:
  • A bug fix in ATL when using an integer or float as an expression.
  • A bug fix for ATL default parameters.
  • Improved the smoothness of ATL crop.
  • Ensures the Ren'Py module can build on Ubuntu Karmic.
  • Added the "warp" keyword to ATL, to let an arbitrary warp function be used in an interpolator.
Fourth pre-release (6.10.0d). No bug fixes. Added a new version of the ATL contains statement, which allows one ATL transform to contain, rather than include, another.
Third pre-release (6.10.0c). Most changes were to the tutorial, with a few bug fixes and one feature (show_transform) added.
Second pre-release (6.10.0b). This adds proper support for parameterized ATL transforms, and adds the ATL contains statement. It fixes a bug with the define and transform statements that requires recompilation. Files with those statements in them should have a trivial edit made (like adding an empty comment), so Ren'Py will recompile them.
Initial pre-release (6.10.0a).

Release Announcement

Ren'Py 6.10.0 "You Ain't Seen Nothing Yet", the first release on our path to Ren'Py 7, had been released. This release's biggest new feature is ATL, the Animation and Transformation language. Superseding more than a dozen special-purpose displayables, ATL provides a simple yet general way of defining images that change over time.

Along with ATL, this release:

along with many other features and bug fixes. Downloads of 6.10.0 and a full release announcement can be found at:


To migrate your game from Ren'Py 6.9.2 or later, copy the directory containing your game into your projects directory. You can choose a projects directory by clicking "Options", "Projects Directory" in the Launcher. Please see the 6.9.2 release notes for information about migrating from older releases.

Changelog for Ren'Py 6.10.0

The demo game is in the process of being converted into a new tutorial game, which shows recommended Ren'Py code examples rather than requiring the user to learn from the game itself's source code.

Ren'Py now supports an Animation and Transformation Language (ATL). This provides a convenient syntax for animating an image, or transforming it by positioning it, rotating it, zooming it, and adjusting its opacity.

To a large extent, ATL supersedes the Animation, TransitionAnimation, anim.SMAnimation, anim.Blink, Zoom, FactorZoom, RotoZoom, SizeZoom, LiveCrop, Move, Pan, Position, Motion, and Revolve functions, and perhaps others. As it allows properties to be scripted, ATL is more powerful that all of these functions. (For example, many of these functions can only do relatively simple repeats, while ATL allows complex patterns to be easily specified.)

ATL can be used in the new transform statement, and new variants of the image, scene, and show statements.

When an image is shown, Ren'Py checks to see if there was a previous image with that tag, and if that image used a transform. If this is true, Ren'Py does two things:

  1. If the new image is not a transform, it wraps it in a transform.
  2. The transform is initialized to have the properties of the old transform.

The generally has the effect of "remembering" the position of images shown on the screen. In some cases, this memory effect may override a position encoded into an image. In that case, the image must be hidden and shown again.

The default positions (left, right, center, truecenter, offscreenleft, and offscreenright) are now defined as ATL transforms. This means that showing an image at such a position will cause the position to be remembered. If you do not want this behavior, you need to redefine these positions, by adding the code:

define left = Position(xalign=0.0)
define center = Position(xalign=0.5)
define truecenter = Position(xalign=0.5, yalign=0.5)
define right = Position(xalign=1.0)
define offscreenleft = Position(xpos=0.0, xanchor=1.0)
define offscreenright = Position(xpos=1.0, xanchor=0.0)

Support for Arabic and Hebrew has been added to Ren'Py. To enable this support, needs to be set to True. It may also be necessary to set various style properties to do a credible job of right-to-left layout.)

The freetype library has been updated, and we have added support for the use of TrueType collections. Using a name of 0@font.ttc will get the first font in the collection, 1@font.ttc will get the second font, and so on.

The displayable code has been adjusted to consider strings that do not contain at least one dot as image references. Now, one can write "eileen happy" to refer to an image with that name.

A pause statement has been added to Ren'Py.

The new variable allows you to specify a save file that is automatically loaded when Ren'Py starts. For example, setting this to "1" loads the game in save slot 1. This is intended for use by developers, so they can easily return to a point in the game after restarting Ren'Py.

The now supports a prompt_images argument, which is can be used to specify images to replace the text of a yes/no prompt.

The new function allows one to specify the image tag of a UI widget. This can have positive interactions with transforms.

Ren'Py now has a define statement, which combines into a single statement running code at init time, and assigning it to a variable. Ren'Py keeps track of these definitions, which may in the future make it easier for editors to determine where something is defined.

The new variable contains a list of functions that should be called only when once the dialogue window has been shown.

The new variable, when set correctly, will cause Ren'Py to automatically define images for appropriately-named image files found in the archives and game directory.

Python blocks are now compiled in a mode that allows the python "with" statement. Container displayables now support the context manager protocol, automatically closing at the end of a with block. (Note that the python with statement postdates the Ren'Py with statement, and has totally different semantics.)

The play and queue statements now take optional loop and noloop modifiers, which force looping (or lack of looping) on that channel. The play statement takes an if_changed modifier, which prevents a song from being restarted if it is already playing on the channel. [doc]

Ren'Py now allows save games to be deleted. To do this, select a save game (either with the keyboard, or by hovering the mouse over it), and hit delete.

Buttons now take a keymap argument, which specifies an alternate keymap that is used when the button is focused.

Added the Image Location Picker to the Developer (shift+D) menu. This tool lets the user pick an image, and then pick locations that image. It displays the mouse coordinates, imagemap rectangle, and cropping rectangle.

Added a FPS meter to the Developer (shift+D) menu.

Added a .001s sleep for frames that are framerate-limited. This should prevent Ren'Py from consuming all CPU unless the game is CPU-bound.

Added , which allows Ren'Py to load files from user-definable archive types.

Added the function, which is the infrastructure needed to create a button that lets the user roll forward.

Changed MoveTransition to preserve the timebases of the thing being moved in all circumstances.

Ren'Py is now built using SDL-1.2.13. On Linux systems with pulseaudio support, it will use pulseaudio for audio output.

Fixed a bug with archive files that could cause crashing in some circumstances.

Fixed a bug that prevented {w=1} from working.

Fixed a bug that prevented style.rebuild from working.

Fixed a potential segfault bug with certain transforms, zooms, and rotations.

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.