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

Ren'Py 6.3.0 "Giving Blood"

Ren'Py 6.3.0 "Giving Blood" was released on June 21, 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.3 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. We've also made available the following programs, which can be used to run Windows-only Ren'Py games on non-Windows platforms:

Known Issues

The internal subsurface operation has a problem. To fix it, replace renpy-6.3.0/renpy/display/render.py with render.py.

Note that there were major issues with pre-releases of 6.3.0. Please make sure that you are using 6.3.0d, and not an earlier version.

Release Announcement

I've released Ren'Py 6.3.0 "Giving Blood". This release features many major and minor improvements. Big on this list is a rewritten style system, which now supports indexed styles, lightweight styles that allow the customization of almost everything in the default user interface. Another major improvement is the introduction of im.MatrixColor, which allows the user to supply a matrix that linearly transforms each pixel's color. 6.3 also include many other changes, including new features, feature enhancements, and bug fixes.

Downloads and a full release announcement can be found at:


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.3.0

There is a new style inspector, which can be activated with 'I' when is true. The style inspector shows the contents of the transient and overlay layers, and for each displayable shows the type of displayable, the style used, and the size it's rendered to.

We now support indexed styles, which can be accessed by indexing a style with a value. These are lightweight styles, that do not take up any space unless they have a value set. The main and game menus have been modified to take advantage of these indexed styles, allowing just about everything on those game menus to be customized individually.

The activate_ property prefix has made a comeback. This prefix is applied to buttons that have been selected by the user. It is applied when the button is first selected (while the clicked function is running). If the clicked function returns a non-None value, or an exception, then the button remains activated forever.

Styles may now be constructed using the Style function, and accessed directly off of the style object, rather than always being referred to by name.

The Fixed displayable has been merged with the MultiBox displayable (which is what implements HBox and VBox). The box_layout property now has a new value, 'fixed', which can be used to turn an HBox or VBox into a fixed layout.

The new xoffset and yoffset placement properties allow one to specify a pixel offset to the position computed using xpos/xanchor and ypos/yanchor. This makes it easy to specify, say, that a button's label should be a pixel or two above center.

The default roundrect theme now takes a new argument, less_rounded. If True, this will use the 6-pixel rounded rectangles, even on an 800x600 game. This is the default for new projects.

Added , an image operator that uses a matrix to alter the colors in an image. This can be used by objects of the type, which can be constructed by the , , , , , , , and functions.

We also have created two convenience wrappers for im.MatrixColor: and .

The mouse is now hidden after 30 seconds of inactivity, as a boon to Joystick and keyboard users. (The time is controlled by config.mouse_hide_time.)

The renpy.imagemap function is no longer limited to images. It can now take arbitrary displayables, like animations.

Buttons now take a new time_policy style property, which can be used to warp time for the children of the button. We took a mulligan on the initial_time_base style property, which has been removed.

Added a function, renpy.file, that will open a read-only file-like object from a file that exists in the game directory or in an archive.

Added a function, renpy.seen_label, that returns True if a label has been executed at least once, in any execution of the game.

Setting _game_menu_screen = None prevents the game menu from being shown. (Setting it to a value like "_save_screen" or "_load_screen" shows the game menu again.) This is the default during the splashscreen.

NVLCharacter has a new parameter, clear, that if true causes the nvl-mode screen to be cleared after that character speaks.

Rewrote the input handling code. Now, we can deal with keysyms prefixed with alt_, shift_, and noshift_.

Show text and centered now display their text using the "subtitle" layout algorithm, which tries to minimize the difference in line length.

Made it so that {nw} interacts properly with NVL-mode.

Using backslash '\' in filenames now triggers an error message, even on Windows. Use forward-slash ('/') instead.

Made it so that MPEG-1 movies can be read out of archive files.

Fixed Ren'Py such that movies properly loop when required. Changes so that it allows delays of None, which will delay until the movie is done playing, and -1, which will cause the cutscene to wait until the user clicks.

Fixed a bug that prevented from working properly.