I'm pleased to announce the release of Ren'Py 4.3.1. This release fixes a bug with persistent data on windows, and also has a few requested features. As usual, you can download Ren'Py from its official website:
Upgrading a script from Ren'Py 4.2 or 4.3 to 4.3.1 is as simple as unpacking 4.3.1 and copying over your old game directory. If your script contains a line setting library.file_page_length, delete it.
This is a maintainence release of Ren'Py, containing a number of enhancements and bug fixes suggested by members of this forum. As I'm working on my game, there probably won't be another release for some time, assuming this release proves to be stable. (But I've said that before
Please post on this forum, email, or IM me if you have any questions, problems, comments, or suggestions.
New in 4.3.1
New, but undocumented, in 4.3 was the console.exe windows binary. This is a windows executable that opens a windows console. This could be useful if one wants to have a script that prints debugging information to standard output, as in:
$ a = 1
$ print "a =", a
There is now a new style property, enable_hover. This must be set to True for a widget to respond to hovering by changing its style. However, if it's set to False, no style change/redraw occurs, making Ren'Py snappier. It defaults to True.
Ren'Py is now built with psyco, the python specializing compiler. This makes program startup a bit slower, but in return the running time once it's loaded should be faster.
A new config variable, config.window_icon, allows the user to specify an image file to use for the window icon. Counterintuitively, this should probably be a PNG, as the ICO format is not supported by the SDL_image library.
Game menu navigations and preference buttons now have their own styles, allowing their look to be customized.
A bug that prevented the reloading of persistent data on windows has been fixed.
New in 4.3
Now, when the library first starts up, it tries calling the "splashscreen" label, if it exists. The splashscreen will not be called in the case of a full reset (known to the user as a return to the main menu).
Added a new text property, antialias, that controls the antialiasing of text. Also made the font property optionally take a comma-separated list of font names, which are searched for in the
Added a new class, DynamicCharacter, which is now the preferred way of having a character with a changable and/or user-input name.
A new random number generator has been implemented as renpy.random. This random number generator cooperates with rollback, always producing the same random numbers when a rollback occurs.
Added a set of UI functions, that allow the user to build up a user interface themselves. These could be useful when implementing more complex games, such as those that require the user to schedule a day in advance. Also new is a new imagebutton, a button consisting of two images.
Sticky postions have been implemented. Enabling this (using the variable config.sticky_positions) cause the at clause corresponding to a given character to be remembered, allowing the character to change emotion without changing places on the screen (or requiring a second at clause).
Rewrote the implementation of preferences, to clean up the code. Moved it into its own file, preferences.rpy. Also, made it possible for a user to add his own preferences into the system, although that isn't really recommended.
The various imagemap functions now have a new parameter, unselected, which gives an image to use when a hotspot is present but not hovered. This lets us distinguish between between hotspots that are present and exist, and hotspots that are totally absent. This could be used to implement something like an image gallery that only displays unlocked images.
Implemented config.keymap, which allows the changing of keys and mouse buttons that trigger various Ren'Py events.
There's now a new look for loading and saving games, that allows 10 saves to be presented at once. I strongly recommend removing the library.file_page_length line at the start of your game scripts, if it exists.
Fixed a bug in sound.init that lead to crashes in some cases.
Fixed a bug in ast.Node.predict that was causing an exception when config.debug was turned on.