• No results found

Full Changelog

In document Ren%27Py Documentation (Page 192-200)

Ren'Py 6.14

Ren'Py Launcher Rewrite

The Ren'Py launcher has been rewritten. Some of the improvements are:

A new visual design by Doomfest of the Dischan visual novel team.

The launcher now includes direct access to open the script and game directories, and common script files.

The launcher includes Script Navigation support. Clicking the name of a label, define, transform, screen, or callable will open the editor to the location where that name is defined.

Script navigation also provides access to individual script files.

The launcher now supports one-click project building. Instead of using multiple steps to build a project, a single click will now cause the launcher to:

Read the build process configuration from the game script.

Build the archives needed.

Generate the archive and update files.

The launcher can now use the Ren'Py updater to update Ren'Py, and to download editors.

Editra & Text Editing

For most users, Ren'Py recommends the use of the Editra editor. We have developed an Editra plugin that communicates with the Ren'Py launcher and supports the editing of Ren'Py script.

While still in beta, Editra is a fast and light editor with good code editing support. Editra also includes a spell-checker that can be enabled, and applies to dialogue and other strings.

If Editra is selected by the user, and it is not installed, Ren'Py will automatically download it.

The jEdit editor remains supported, and is preferred for use with languages (like Chinese, Japanese, and Korean) that Editra doesn't support fully. If selected, Ren'Py will download jEdit automatically.

Ren'Py also supports editing files through system-specific file associations. (This support will not send the cursor to the correct line, however.)

Ren'Py Web Updater

Ren'Py includes an updater that can update Ren'Py and individual Ren'Py games by

downloading changes from a properly-configured web server with a small number of update files uploaded to it.

The updater uses zsync to download the minimal set of changes between the local files on disk and the files stored on the server. A single set of files on the server supports updating from all prior versions of a project.

Ren'Py includes a default updater interface that can be further configured by interested users.

Transform Changes

This release changes the behavior of transforms to make them more correct and easier to use.

The xzoom and yzoom properties are now applied before, rotation. This means that the shape of the image will remain consistent as the image is rotated. Previously, the image to change shape as it was rotated.

The xzoom and yzoom properties may now be negative, with negative zoom values causing the images to be flipped. The positioning code now takes this into account, and positions a flipped image properly.

Thanks to Edwin for contributing these changes.

Screen Language, Displayable, and Transition Enhancements

The Textbutton and Label screen language statements now take properties prefixed with text_. These properties have the text_ prefix stripped, and are then passed to the

internal text displayable.

The Viewport screen language statement now takes a scrollbars parameter. If given, scrollbars that manipulate the viewport are created.

The Viewport screen language statement now takes xinitial and yinitial parameters.

If given, these control the initial positioning of the viewport.

A screen language block may now contain multiple has statements. Screen language widgets that take single children can now take a has statement.

The input displayable now supports the use of the left and right arrow keys within the text. (Thanks to Edwin for this feature.)

MoveTransition() has been rewritten. The new version now uses transforms to control the positioning of entering and leaving images, and can interpolate between the locations of moving images.

Rollback Improvements

The new renpy.fix_rollback() function allows the game to fix choices, even if they are made in rollback mode. The user can roll back and roll forward, but is restricted to making the choices he made the first time through the game.

Thanks to Edwin for contributing fix_rollback.

Rolling forward now works through a jump out of a call screen statement.

Video Improvements

Ren'Py's video playback support has been partially rewritten to improve robustness, speed, and framerate stability. These improvements should reduce the number of frame drops Ren'Py performs, and should also prevent Ren'Py from locking up if too many frames are dropped.

Ren'Py now supports the WebM video format.

Image Load Log

When config.developer is true, Ren'Py keeps an internal log of image loads.

This log can be access by showing the _image_load_log screen. This screen displays the name of an image file for a few seconds after that image has been loaded. The name is in white if the image was loaded by the image predictor, and pink if Ren'Py was unable to predict the image.

File Actions and Functions

Two screen functions have been added, and two screen actions have been changed:

The new FileUsedSlots() function returns a list of used file slots on the current page.

The new FileCurrentPage() function returns the name of the current page.

The FileSave() and FileAction() actions have been modified so that if the slot name is None, an unused slot based on the current time is used.

Taken together, these changes make it possible to create a list of save slots where the user is able to add new slots to the list.

Multiple Store Support

Ren'Py now supports multiple stores - multiple namespaces in which python code can be run.

Variables in these stores are saved, loaded, and rolled-back in the same way that variables in the default store are.

Stores are accessed by supplying an in-clause to a python block. For example:

init python in stats:

def reset():

"""

Code to reset the statistics.

"""

User-created stores are placed into the "store" package, with the default store being the package itself. Names can be imported between packages.

init python:

from store.stats import reset init python in stats:

from store import ToggleField

Note that stores do not affect the order in which init python blocks are run. A name must be defined in a block before the one that imports that name.

Platform Support and Library Updates

Linux support has been changed.

The Linux platform supports the x86_64 CPU architecture in addition to the x86 architecture. The Ren'Py shell script will automatically determine the platform it is running on when it is launched.

The Linux version is now linked agains the libraries from the 2009-era Ubuntu 10.04 Lucid. (Previously, Ren'Py had been linked against 2006's Dapper.) Older versions of

Lucid. (Previously, Ren'Py had been linked against 2006's Dapper.) Older versions of Linux are no longer supported.

Many libraries that Ren'Py depends on have been updated. Some of the changes that have occured are:

Python has been updated to version 2.7.3.

Pygame has been updated to version 1.9.1.

GLEW has been updated to version 1.7.0. This may fix OpenGL problems on some Linux systems.

LibAV has been updated to version 0.7.6, and has been compiled with CPU detection enabled.

Other Changes

The renpy.call() function allows - with major and important caveats - a call to a Ren'Py label to begin from inside python code. Such a call immediately terminates the current statement.

When an action is expected, nested lists of actions can be given. The lists are flattened and the action executed.

Added the OpenURL() action, which opens a URL in a web browser.

Added the config.gl_resize variable, which determines if the user can resize OpenGL windows.

Ren'Py's handling of command line argments has been rewritten. Most notably, lint is now invoked with the

renpy.sh <gamename> lint

command. (Which also works with renpy.exe.)

Ren'Py can now dump information about the game to a json file when starting up. The information dumped can assist other tools in providing launcher-like code navigation.

The little-used remote control feature has been removed from Ren'Py.

The config.gl_resize variable now controls resizing of a game running in GL mode.

Documentation fixes (by SleepKirby and others).

The NVL-Mode tutorial has been ported to Sphinx (by Apricotorange).

Ren'Py now defaults to reporting errors with sound and music files when config.developer is True.

Ren'Py 6.13.9

The new RAPT tool makes it far easier to package a Ren'Py game for Android. It can semi-automatically set up an Android build environment on your system, build a package, and install that package on your Android device.

To fix some editor-related problems, backported the 6.14 editor system. This changes how editors are configured. Please see Text Editor Integration for a description of the new system.

The new config.save_dump variable causes Ren'Py to write out save_dump.txt each time it saves. This file describes the contents of the save, making it possible to figure out what's causing an overly large save file.

Worked around a bug in Mesa that can cause crashes on certain Linux systems.

Fixed the following bugs in Ren'Py.

The (default) texwrap layout represents character widths as floating-point numbers. This fixes a bug where non-integer kerning would lead to text overflowing its bounding box.

Menu choices are logged correctly.

All file access is now done in unicode, rather than the system's native encoding. This prevents crashes that occured when Ren'Py was placed in a directory that had non-ASCII characters in it.

Fixed focus_mask on the ANGLE renderer.

Displayables can now have fractional-pixel sizes. This allows a zooming image to remain precisely centered on the screen.

Fixed a problem where Ren'Py would save unnecessary trees of displayables each time it saved a screen. This would lead to overly large save files and slow save performance.

Ren'Py would not attempt an alternate rendering method if the texture test failed, leading a "Textures are not rendering properly." exception.

A crash in Render.fill.

Ren'Py 6.13.8

Side images can now be limited to showing a single character, or only showing characters that are not on the screen. See config.side_image_tag and config.side_image_only_not_showing. Added config.python_callbacks, a list of python functions that are called at the end of each python block.

Ren'Py now tests the video card it is running on for functionality. If it can't draw textured rectangles to the screen, it will proceed to a different renderer.

Old-style string interpolation is now enabled by default, alongside new-style string interpolation.

Ren'Py is now compatible with libpng 1.5. Thanks to James Broadhead for the patch.

Fixed the following bugs:

A crash when dealing with certain invalid fonts.

Pausing too long when typing out text.

Cutting one pixel off a block of text when fractional kerning was used.

Crashing when the time was set in the far future or past.

Immediately exiting when rolling forward at the quit prompt.

Crashing when a non-existing directory is added to the search path. (This prevented Katawa Shoujo from starting in the latest version.)

Save-file size was overly large due to screens being included in save files.

Ren'Py 6.13

Text Rewrite

Text display has been rewritten from scratch. In addition to supporting many new features, the new implementation of Text is much faster at text layout and display, and contains much cleaner code.

Some of the new features that are now supported by the text display system are:

Interpolation of variables enclosed in square brackets. It's now possible to write code like:

"You scored [score] out of a possible [max_score] points."

The new string interpolation takes place on all text that is displayed, rather than just say and menu statements. When used as part of a screen, interpolation has access to

screen-local variables.

PEP 3101-style string formatting is supported, which means that this syntax can be used to display fields and items, as well as variables.

Kerning support was added, both as the kerning style property and the k text tag.

Support for ruby text (also known as furigana), via the rt and rb text tags, and the ruby_style style property.

The new space and vspace text tags make it easy to whitespace into the text.

The new cps text tag controls the speed of text display.

By default, Ren'Py uses the unicode linebreaking algorithm to find points at which a line can be broken. This algorithm should correctly break lines that contain a mix of western and eastern languages. Since that algorithm is incorrect on some Korean texts, Ren'Py also implements a korean-with-spaces variant, that only breaks runs of Korean text at whitespace. These algorithms can be selected by the language style property.

Ren'Py now uses the Knuth-Plass linebreaking algorithm to choose the points at which it actually splits lines. This algorithm attempts to minimize the unevenness of all lines except the last. Ren'Py also supports a nobreak mode, which allows one to create a Text larger than the screen without it being automatically wrapped. These can be selected using the layout style property.

The new newline_indent style property determines if Ren'Py adds indentation after a newline in text.

The new line_leading style property inserts space above a line of text. (Ruby text can be placed into this space.)

Text can be automatically translated before it is displayed. (This support will be improved in a future major release.)

DirectX Support

On Windows systems that have the February 2010 DirectX update installed, Ren'Py will use DirectX via the ANGLE adaptation layer, if OpenGL 2.0 or later is not found. The ANGLE layer is used by popular web browsers such as Firefox and Google Chrome. This allows hardware rendering to be used on netbooks, where drivers often support DirectX far better than OpenGL.

At startup, Ren'Py will test the graphics capabilities of the computer it is running on. If the software render is being used, or the game renders at an unacceptably slow speed, Ren'Py will display a warning message to the user. The warning message includes a link to a page on renpy.org that explains how to update the graphics drivers.

This version of Ren'Py will only use the software renderer if both DirectX and OpenGL are incapable of rendering Ren'Py games. Screen-scaling in the software renderer has been replaced by a simpler but slower version.

Other Changes

Ren'Py now includes a style preference system. This system allows styles to be changed after the init phase has finished. These changes are saved with the persistent data.

Among other things, style preferences allow a game to offer the user the option to change the font, size, and color of dialogue text.

Support has been added for screen-based image galleries and music rooms. This support consists of a classes that provides actions that make it easy to present the user with graphics and music. The creator is responsible for creating screens that use the supplied actions.

The default screens.rpy file, used when a new game is created, contains support for a

"quick menu". This menu adds buttons to screens that allow the user to quick save, quick load, save, toggle skipping, toggle auto-forward mode, and access the preferences

load, save, toggle skipping, toggle auto-forward mode, and access the preferences menu.

Ren'Py includes 5 new themes, and a number of new color schemes.

Several new actions have been added. The SelectedIf() action allows the creator to control if a button is displayed in the selected state. The SetMixer() action allows a mixer to be set to a specific value. The Rollback() and RollForward() actions allow the creator to bind rollback to buttons.

The behavior of the xfill and yfill style properties was accidentally changed in the 6.12 series. It has been returned to the historical behavior.

The Dissolve() and ImageDissolve() transitions now take a time_warp parameter.

The Frame() displayable now allows the user to specify the left, top, right, and bottom borders independently.

The caret style property allows the user to customize the caret of an input widget.

The renpy.displayable() function has been exposed to the user.

Timers can now take a list of actions, rather than just a single callable.

Three transforms were added to the default library: top, topleft, and topright.

Ren'Py can now load files (including images, music, and fonts) from an Android package.

User-defined statements can now take a block, which the statement is responsible for parsing.

Wrote documentation for:

Menus Transforms

Creator-Defined Displayables

Several indexes were added to the documentation, and the style was updated.

Ren'Py now uses the libjpeg-turbo library, for faster jpeg loading. Ren'Py now uses libav 0.7.1, for improved compatibility with movie formats.

Removed support for the iLiad platform.

PowerPC support has been removed from the main Ren'Py distribution. It's available as a download from the Ren'Py web site.

Thanks to Aleema for contributing the new themes and color schemes.

Ren'Py 6.12.2

This release contains the following changes:

ATL Transforms with parameters compile correctly.

MultipleTransition works in conjunction with pauses.

The mouse is shown when a quit action is run while a movie is playing.

A fix for a lockup that occured when the user entered the game menu while a transition was running.

RENPY_SCALE_FAST works again.

Ren'Py compiles with newer versions of ffmpeg.

Skipping ends when the game restarts.

Fixed a problem with texture upload that made games noticeably slower.

Choose a better default size for windows on small monitors, like netbooks.

xfill and yfill now work for vbox and hbox, respectively.

Click-to-continue fixes.

Side image fixes.

Documentation fixes.

Thanks to David Gowers and zhangning for contributing patches to this release.

Ren'Py 6.12.1

Image Attributes

The process of showing images is now attribute-based. Image names now consist of a tag, and zero or more attributes. When showing an image, the order of attributes is no longer important - it's now possible to define an image using one set of attributes, and show it using those

attributes in a different order.

Attributes are also "sticky". This means that we attempt to preserve as many attributes as possible when showing a new image.

For example, say we had the following images:

image eileen beach happy = "eileen_beach_happy.png"

image eileen beach woozy = "eileen_beach_woozy.png"

We can now show the first image using the command:

show eileen happy beach

Since the order of attributes no longer matters, this will show the "eileen beach happy" image.

If we follow this with the show statement:

show eileen woozy

the image "eileen beach woozy" will be shown. (Assuming no other images exist. If the image

"eileen happy woozy" existed, an ambiguity error would occur.)

When an image tag is shown without any attributes, then the current attributes are retained.

When an image tag is shown without any attributes, then the current attributes are retained.

In document Ren%27Py Documentation (Page 192-200)