Ren'Py Changelog

What's new in Ren'Py 8.2.1.24030407

Mar 5, 2024
  • For 8.2 only, integration with the Harfbuzz text shaping library, which supports more languages and more complex text shaping than Ren'Py supported before. This adds support for Brahmic/Indic scripts, with an appropriate font.
  • Support for displaying Emoji in color, simply by typing it into your game. 🎉
  • Support for OpenType variable fonts.
  • Improvements to the text interpolation system to allow expressions to be used, similar to Python's f-strings.
  • The ability to show multiple speech bubbles at once, and to have speech bubbles animate in and out.
  • Changes to Transform and ATL Transforms to be able to (in most cases) interpolate between absolute and relative positions.
  • A new HTTPS/HTTP fetch function that properly pauses Ren'Py as the fetch occurs, and works with the web platform.
  • Several new accessibility properties.
  • Improvements to loading translations. Loading translations is roughly 2/3rds faster, and it's possible to defer loading translations for languages not in use.
  • The ability to specify a transition that runs after each sequence of scene, show, and hide statements.
  • A modernization of the Android build process, which now can use (and requires) the supported Java 21.
  • The ability to create an Android game that can download its data from a web server, allowing the creation of games that are more than 2GB in size.
  • Improvements and fixes to Web support, especially fullscreen modes.
  • A complete rewrite of the Ren'Py updater to use a new format that works better with modern web servers.

New in Ren'Py 8.2.0.24012702 (Jan 28, 2024)

  • For 8.2 only, integration with the Harfbuzz text shaping library, which supports more languages and more complex text shaping than Ren'Py supported before. This adds support for Brahmic/Indic scripts, with an appropriate font.
  • Support for displaying Emoji in color, simply by typing it into your game. 🎉
  • Support for OpenType variable fonts.
  • Improvements to the text interpolation system to allow expressions to be used, similar to Python's f-strings.
  • The ability to show multiple speech bubbles at once, and to have speech bubbles animate in and out.
  • Changes to Transform and ATL Transforms to be able to (in most cases) interpolate between absolute and relative positions.
  • A new HTTPS/HTTP fetch function that properly pauses Ren'Py as the fetch occurs, and works with the web platform.
  • Several new accessibility properties.
  • Improvements to loading translations. Loading translations is roughly 2/3rds faster, and it's possible to defer loading translations for languages not in use.
  • The ability to specify a transition that runs after each sequence of scene, show, and hide statements.
  • A modernization of the Android build process, which now can use (and requires) the supported Java 21.
  • The ability to create an Android game that can download its data from a web server, allowing the creation of games that are more than 2GB in size.
  • Improvements and fixes to Web support, especially fullscreen modes.
  • A complete rewrite of the Ren'Py updater to use a new format that works better with modern web servers.

New in Ren'Py 8.1.3.23091805 (Sep 19, 2023)

  • Ren'Py Sync, an easy way to synchronize save games between computers, phones, and the web.
  • A built-in way for displaying character dialogue in speech bubbles, including an interactive editor for positioning the bubbles.
  • Ren'Py 8-only support for progressive web apps, including features like installing on a device and caching data locally.
  • Apple Silicon support.
  • Sticky layers, such that an image tag remains associated with a layer until it's hidden.
  • Detached layers, that are displayables themselves.
  • Support for displaying AVIF images.
  • Support for displaying SVG images.
  • Support for oversampled images, which can be used to upgrade a game to a higher resolution.
  • Support for AV1 video on PC and Mobile platforms, with web support depending on browser support.
  • A rewritten audio mixing system that works on a per-sample basis, allowing for smoother fadeouts and removing clicks.
  • Volume sliders that work in decibels, and hence are more responsive.
  • Viewports that can be dragged on touch screen devices, even if the player is touching a button or bar.
  • Support for _ren.py files, that allow Ren'Py script to be edited using Python text editors (allowing for better completion of Python-heavy files).
  • The use of lenticular brackets as a simpler syntax for ruby text (furigana).
  • The ability to substitute text before self-voicing is performed, allowing pronunciation to be changed.
  • A new warning that reminds people that it's insecure to load saves from people you do not fully trust.
  • New transform properties that control rotation on the 3D Stage.

New in Ren'Py 8.1.2.23090503 (Sep 6, 2023)

  • Ren'Py Sync, an easy way to synchronize save games between computers, phones, and the web.
  • A built-in way for displaying character dialogue in speech bubbles, including an interactive editor for positioning the bubbles.
  • Ren'Py 8-only support for progressive web apps, including features like installing on a device and caching data locally.
  • Apple Silicon support.
  • Sticky layers, such that an image tag remains associated with a layer until it's hidden.
  • Detached layers, that are displayables themselves.
  • Support for displaying AVIF images.
  • Support for displaying SVG images.
  • Support for oversampled images, which can be used to upgrade a game to a higher resolution.
  • Support for AV1 video on PC and Mobile platforms, with web support depending on browser support.
  • A rewritten audio mixing system that works on a per-sample basis, allowing for smoother fadeouts and removing clicks.
  • Volume sliders that work in decibels, and hence are more responsive.
  • Viewports that can be dragged on touch screen devices, even if the player is touching a button or bar.
  • Support for _ren.py files, that allow Ren'Py script to be edited using Python text editors (allowing for better completion of Python-heavy files).
  • The use of lenticular brackets as a simpler syntax for ruby text (furigana).
  • The ability to substitute text before self-voicing is performed, allowing pronunciation to be changed.
  • A new warning that reminds people that it's insecure to load saves from people you do not fully trust.
  • New transform properties that control rotation on the 3D Stage.

New in Ren'Py 8.1.1.23060707 (Jun 8, 2023)

  • Some of the new features are:
  • Ren'Py Sync, an easy way to synchronize save games between computers, phones, and the web.
  • A built-in way for displaying character dialogue in speech bubbles, including an interactive editor for positioning the bubbles.
  • Ren'Py 8-only support for progressive web apps, including features like installing on a device and caching data locally.
  • Apple Silicon support.
  • Sticky layers, such that an image tag remains associated with a layer until it's hidden.
  • Detached layers, that are displayables themselves.
  • Support for displaying AVIF images.
  • Support for displaying SVG images.
  • Support for oversampled images, which can be used to upgrade a game to a higher resolution.
  • Support for AV1 video on PC and Mobile platforms, with web support depending on browser support.
  • A rewritten audio mixing system that works on a per-sample basis, allowing for smoother fadeouts and removing clicks.
  • Volume sliders that work in decibels, and hence are more responsive.
  • Viewports that can be dragged on touch screen devices, even if the player is touching a button or bar.
  • Support for _ren.py files, that allow Ren'Py script to be edited using Python text editors (allowing for better completion of Python-heavy files).
  • The use of lenticular brackets as a simpler syntax for ruby text (furigana).
  • The ability to substitute text before self-voicing is performed, allowing pronunciation to be changed.
  • A new warning that reminds people that it's insecure to load saves from people you do not fully trust.
  • New transform properties that control rotation on the 3D Stage.

New in Ren'Py 8.1.0.23051307 (May 14, 2023)

  • Ren'Py Sync, an easy way to synchronize save games between computers, phones, and the web.
  • A built-in way for displaying character dialogue in speech bubbles, including an interactive editor for positioning the bubbles.
  • Ren'Py 8-only support for progressive web apps, including features like installing on a device and caching data locally.
  • Apple Silicon support.
  • Sticky layers, such that an image tag remains associated with a layer until it's hidden.
  • Detached layers, that are displayables themselves.
  • Support for displaying AVIF images.
  • Support for displaying SVG images.
  • Support for oversampled images, which can be used to upgrade a game to a higher resolution.
  • Support for AV1 video on PC and Mobile platforms, with web support depending on browser support.
  • A rewritten audio mixing system that works on a per-sample basis, allowing for smoother fadeouts and removing clicks.
  • Volume sliders that work in decibels, and hence are more responsive.
  • Viewports that can be dragged on touch screen devices, even if the player is touching a button or bar.
  • Support for _ren.py files, that allow Ren'Py script to be edited using Python text editors (allowing for better completion of Python-heavy files).
  • The use of lenticular brackets as a simpler syntax for ruby text (furigana).
  • The ability to substitute text before self-voicing is performed, allowing pronunciation to be changed.
  • A new warning that reminds people that it's insecure to load saves from people you do not fully trust.
  • New transform properties that control rotation on the 3D Stage.

New in Ren'Py 8.1.0.23042213 Pre-release (Apr 23, 2023)

  • Ren'Py Sync, an easy way to synchronize save games between computers, phones, and the web.
  • A built-in way for displaying character dialogue in speech bubbles, including an interactive editor for positioning the bubbles.
  • Ren'Py 8-only support for progressive web apps, including features like installing on a device and caching data locally.
  • Apple Silicon support.
  • Sticky layers, such that an image tag remains associated with a layer until it's hidden.
  • Detached layers, that are displayables themselves.
  • Support for displaying AVIF images.
  • Support for displaying SVG images.
  • Support for oversampled images, which can be used to upgrade a game to a higher resolution.
  • Support for AV1 video on PC and Mobile platforms, with web support depending on browser support.
  • A rewritten audio mixing system that works on a per-sample basis, allowing for smoother fadeouts and removing clicks.
  • Volume sliders that work in decibels, and hence are more responsive.
  • Viewports that can be dragged on touch screen devices, even if the player is touching a button or bar.
  • Support for _ren.py files, that allow Ren'Py script to be edited using Python text editors (allowing for better completion of Python-heavy files).
  • The use of lenticular brackets as a simpler syntax for ruby text (furigana).
  • The ability to substitute text before self-voicing is performed, allowing pronunciation to be changed.
  • A new warning that reminds people that it's insecure to load saves from people you do not fully trust.
  • New transform properties that control rotation on the 3D Stage.

New in Ren'Py 8.0.3.22083102 (Aug 31, 2022)

  • This release updates the Android port to target Android 13, ensuing that games can be added to the google play store. It also includes a way to have pauses that will expire when a modal screen is display. Please see the changelog for a full list of changes.

New in Ren'Py 8.0.2.22080705 Pre-release (Aug 8, 2022)

  • This release fixes multiple issues with Ren'Py 8.0.1.

New in Ren'Py 7.5.0.22052208 Pre-release (May 23, 2022)

  • Continues support for Python 2.7, to allow current games to release.
  • Improves support for the web platform, including:
  • Workarounds for changes introduced by web browsers that caused the browser to consume more memory when running Ren'Py, resulting in RangeErrors.
  • Detecting if the audio types supported by your game are available, and falling back if they are.

New in Ren'Py 7.4.11.2266 (Dec 3, 2021)

  • The gui.variant Decorator:
  • A new gui.variant decorator has been added to Ren'Py. This should be used to decorate a function with the name of a variant, and causes that function to be run, if the variant is active, when the game is first started, and then each time the gui is rebuilt (which happens when gui.rebuild() is called, when a gui preference is changed, or when the translation changes.)
  • This is expected to be used like:
  • init python:
  • @gui.variant
  • def small():
  • Font sizes.
  • gui.text_size = gui.scale(30)
  • gui.name_text_size = gui.scale(36)
  • ...
  • as a replacement for:
  • init python:
  • if renpy.variant("small"):
  • Font sizes.
  • gui.text_size = gui.scale(30)
  • gui.name_text_size = gui.scale(36)
  • ...
  • Which only runs once, and lost the changes if the gui was ever rebuilt.
  • Fixes:
  • The new config.mouse_focus_clickthrough variable determines if clicks that cause the game window to be focused will be processed normally.
  • The launcher now runs with config.mouse_focus_clickthrough true, which means that it will only take a single
  • When a Live2D motion contains a curve with a shorter duration then the motion it is part of, the last value of the curve is retained to the end of the motion.
  • Rare issues with a displayable being replaced by a displayable of a different type are now guarded against. This should only occur when a game is updated between saves.
  • Modal displayables now prevent pauses from ending.
  • An issue that could cause images to not display in some cases (when a displayable was invalidated) has been fixed.
  • Starting a movie no longer causes paused sounds to unpause.
  • AudioData objects are no longer stored in the persistent data. Such objects are removed when persistent data is loaded, if present.
  • Platform variables like renpy.android and renpy.ios are now set to follow the emulated platform, when Ren'Py is emulating ios or android.
  • When in the iOS and Android emulator, the mobile rollback side is used.
  • Ren'Py will now always run an unhovered action when a displayable (or its replacement) remains shown, and the focus changes. Previously, the unhovered action would not run when the loss of focus was caused by showing a second screen.
  • When config.log is true, the selected choice is now logged properly.
  • The new gui.variant() function makes it possible to work around an issue in the standard gui where the calling gui.rebuild() would cause gui variants to reset.
  • The web browser now checks for progressively downloaded images once per frame, allowing images to be loaded into the middle of an animation.
  • Live2D now uses saturation arithmetic to combine motion fadeins and fadeouts, such that if the fadein contributes 80% of a parameter value, and the fadeout contributes 20% of the value, 100% of the value comes from the two motions. (Previously, the fadein and fadeout were applied independently, such that together, the fadein and fadeout would contribute 84% of the value, with the remaining 16% taken from the default.)
  • When fading from one sequence of Live2D motions to another, the original sequence ends when a motion fades out.
  • When preserving screens in the old state for a transition, the later_at_list and camera lists are taken from the old state, preventing unexpected changes.
  • The gl_depth property now causes Ren'Py to use GL_LEQUALS, which more closely matches Ren'Py's semantics.
  • The 4-component constructor for matrices has been fixed.
  • Ren'Py now cleans out the android build directories when producing a Android App Bundle (AAB) file, preventing problems that might be caused when packaging multiple games, or a single game where files are deleted.
  • Live2d now properly handles seamless animation when the same motion is repeated in a displayable. (For example, show eileen m1 m1 m2 where m1 is seamless.)
  • Mouse motion is now tracked on Chrome OS devices. This prevents the mouse cursor from being hidden between clicks.
  • An issue with windows partially rendering on ChromeOS has been resolved.
  • An issue with transcludes in screens has been fixed.
  • An issue that could prevent a transform with both perspective and mesh true from displaying has been fixed.
  • Buttons now only propagate transform state to direct children, not to children accessed through ImageReferences.
  • The repeat_ modifier can now be applied to gamepad events.
  • A new config.debug_prediction variable has been split out of config.debug_image_cache. This controls the logging of prediction errors to the console and log.txt, making the latter variable act as documented.
  • Translations:
  • The German, Indonesian, Polish, and Russian translations have been updated.

New in Ren'Py 7.4.10.2178 (Oct 24, 2021)

  • I'd like to announce Ren'Py 7.4.10, the tenth patch release of Ren'Py 7.4. This release is a small one, to fix a regression in Ren'Py 7.4.9 that occurred when large images were displayed.
  • There are also several fixes to the way voice interacts with text with pauses; the performance of drag and drop; and how the android port automatically selects an app store.
  • The Indonesian and Polish language translation has been updated.

New in Ren'Py 7.4.9.2142 (Oct 8, 2021)

  • I'd like to announce Ren'Py 7.4.9, the ninth patch release of Ren'Py 7.4. The largest amount of work was done to update the Android version of Ren'Py to keep pace with Google Play's requirements. Ren'Py now uses the Android App Bundle format, and uses Play Asset Delivery to download assets to the player's device.
  • In addition to the Android improvements, some of the major changes are:
  • The iOS version of Ren'Py now produces more complete projects, requiring less work to get projects working.
  • Improvements to the web updater, providing a less efficient mode that works with https web servers.
  • A new option in the launcher that can tell you if a new Ren'Py release exists.
  • Improvements to the 3D stage, so that the camera statement and perspective work with transitions and transforms.
  • Transforms now can take fractional sizes.
  • The shift+A accessibility menu now has a new high-contrast mode, to make text more readable.

New in Ren'Py 7.4.8.1895 (Aug 2, 2021)

  • Fixes:
  • This fixes a major problem that could cause rollback to corrupt lists, dictionaries, sets, and objects. Everyone that uses 7.4.7 is recommended to upgrade.
  • A crash that could be caused by non-integer outlines has been fixed.
  • The correct size of a viewport is used for edge and mouse wheel scrolling.
  • Game controller detection has been fixed.
  • Features
  • It is now :possible, using PauseAction() or renpy.music.set_pause(), to pause a channel that's playing video.
  • The default channel for movies can now be set with config.single_movie_channel.
  • Changes:
  • When in developer mode, errors parameterizing an image will be reported to the developer, rather than causing a placeholder (the gray ghost girl) to appear.
  • The text window will not be shown before being hidden by the centered and vcentered characters.
  • Rolling back to a place where the shift+O console caused a change in the state of the game will not cause the effects of the console to be reverted. Rolling back one step further will.

New in Ren'Py 7.4.7.1862 (Jul 25, 2021)

  • This release includes many fixes, and some major improvements.
  • Perhaps the biggest set of changes was to the Web port of Ren'Py, which has been rewritten to use the web browser's native audio processing. This prevents expensive operations, like decoding image files, from interrupting audio playback. (However, an issue with Safari still exists.) Self-voicing has also been added to the web plaform.
  • There have also been improvements to support for the iOS platform, that allow Ren'Py games to run on the latest iPhones without aggressive pillarboxing.
  • The input displayable has grown quite a bit of functionality, with more keys being supported, and the caret blinking to indicate that text can be edited.
  • The Atom editor has been updated.
  • There is quite a bit of new functionality in this release, please check out the changelog for some of the new things that can be done.
  • Ren'Py 7.4 is the the product of over a year of development, and one of the biggest releases of Ren'Py to date. This series of releases focuses on updating Ren'Py's internals so that Ren'Py is ready for its next 15 years.

New in Ren'Py 7.4.6.1693 (Jun 14, 2021)

  • I'm happy to announce Ren'Py 7.4.6, the sixth patch release for the 7.4 series. This release contains a number of fixes for 7.4.5, both to improve platform compatibility and to extend some to the features added for the new 3D Stage.
  • This release include a new camera statement, which is used to introduce transforms that will persist until changed. This allows the show layer statement to revert to the behavior it had in 7.4.4, improving compatibility with projects in production. At the same time, it allows more concise control of the camera in 3D productions.
  • This release introduces the Model displayable. While right now focused on allowing multiple textures to be combined (it's now possible to implement dissolve-like transforms without a creator-defined displayable), it will in the future serve as a way to access 2D and 3D model functionality.
  • This release fixes a mistake in the 7.4.5 that prevented builds from working on iOS, and gets the model-based renderer working on that platform.
  • This release updates Atom and the language-renpy plugin.
  • In addition, there are a number of bug fixes and other improvements.

New in Ren'Py 7.4.5.1648 (May 26, 2021)

  • Model-Based Renderer:
  • The model-based renderer is now the default for games that are released with Ren'Py 7.4.5. To disable it for your game, please set config.gl2 to False.
  • When the model-based renderer is being used, Ren'Py now supports a "3D Stage". This adds a third dimension to shown images, allowing for perspective correct zooming and motion, the rotation and translation of displayables in 3D, and many other new effects. Please see the 3D Stage documentation for more information.
  • To facilitate the 3D Stage, the scene statement no longer clears transforms applied to a layer as a whole with show layer or renpy.layer_at_list().
  • The new Swing() transition is usable when the model-based renderer is enabled. This causes the scene to rotate around the vertical or horizontal axis, in three dimensions, and to be replaced with a previous scene.
  • The new blend transform property allows the blend function to be specified. The blend function controls how a pixel being drawn is combined to the pixel it is being drawn to.In addition to the
  • Mouse:
  • There have been a number of changes and improvements to the hardware mouse support, and it's now documented that GPUs have limits to the size of the hardware mouse that can be supported.
  • A new variable config.mouse_displayable and displayable, MouseDisplayable(), now can be used to replace the hardware mouse with a software one, similar to the way it was done in Ren'Py 7.3 and earlier.
  • Features:
  • A new function, renpy.screenshot_to_bytes(), takes a screenshot and stores it in a bytes object that can be passed to im.Data(). While these objects are large, it is possible to store them in regular and persistent saves.
  • The new renpy.music.get_loop() function returns a list of sound files that are set to be looped on a channel, making it possible to store and replay them.
  • The renpy.input() function and the input displayable take a new mask parameter, that specifies a string that masks out characters that would be shown to the player. This can be used to hide the text of a password.
  • There is now a dark theme for the launcher.
  • The new config.adjust_attributes callback allows you to intercept image attributes when show, and replace them with a list of your own. For example, it's possible to use this to rewrite eileen happy to eileen happy_eyes happy_mouth, which interacts well with LayeredImage.
  • When running lint from the command line, the --error-code option can be given to cause Ren'Py to return with an error code if lint fails.
  • Layer transitions can now persist past the end of an interaction.
  • Ren'Py avoids pausing right after a rollback, so that the rollback tries to finish at a more interactive statement.
  • When playing a sound, it is possible to sync the start time of an audio file in one channel with the time of the audio file in another channel.
  • Other Fixes:
  • The default level-of-detail bias has been set to -0.5, and can be changed with config.gl_lod_bias. This is used to bias Ren'Py into scaling down, rather than scaling up, but the previous bias would cause Ren'Py to create jagged edges on images.
  • There have been a number of improvements to the way Ren'Py handles modal screens.

New in Ren'Py 7.4.4.1439 (Mar 18, 2021)

  • Some of the bigger changes are:
  • A new model-based renderer. While this is opt-in for the moment, it opens the way to features that creators have been requesting for a long time, such as being able to recolor displayables, blurring the screen, and using Live2D to animate sprites. The model-based renderer is extensible with shaders, allowing for custom effects.
  • A new Python 3 compatibility mode has been added, to pave the way for Python 3 support in the next release. This mode changes the ways in which Ren'Py runs, to allow you to begin porting your game before full Python 3 comes out in Ren'Py 8.0.
  • Ren'Py's build system has been modernized, and the libraries underlying it have been updated. This allows 64-bit Windows to be supported.
  • The web platform has been updated, to allow for the incremental download of games.

New in Ren'Py 7.3.3.568 (Oct 8, 2019)

  • Some highlights are:
  • An audio directory that allows audio files to define themselves, similar to images.
  • The ability for Ren'Py to accept audio files generated at runtime.
  • A lowering of the version of android needed to run Ren'Py.
  • Many improvements to Web platform support.
  • Improved render-to-texture performance.
  • The ability of renpy.input to take custom screens.
  • In addition to that, this release adds many new features to Ren'Py. These include:
  • Many improvements to creator-defined statements, allowing the parsing of Ren'Py statements and block, the catching of errors, and the ability to execute a second function after Ren'Py in the body of a statement has finished.
  • Screen language improvements, like the ability to capture screen language displayables into a variable and to use a property to determine if a screen is sensitive to input.
  • Text improvements, with self-closing text tags and the ability to control the capitalization of interpolated text.
  • Mobile platforms now support non-rectangular focus masks, and 64-bit Android is supported in time for the Google Play deadline.
  • There is a new Turkish translation of the launcher and Spanish translation of the tutorial game, while several of the other translations have been updated.