|
楼主 |
发表于 2018-1-16 17:13:48
|
显示全部楼层
本帖最后由 BuErShen 于 2018-1-16 17:14 编辑
Ren'Py 6.99.14 完整更新日志
Performance
Quite a bit of work has been done to improve performance, both absoluteperformance and apparent framerate stability.
When connected to a device with AC power, Ren'Py will attempt to drawthe screen at a constant framerate. When the device is on battery, severalframe will be drawn before reverting to the 5fps framerate, to ensure updatesto the screen are pushed through display buffering.
Ren'Py has a number of options that control display performance, accessedthrough the shift+G menu. In addition to the GL performance change describedabove, this allows the player to lock the framerate and accept tearing whena frame is late. A player on a slow machine might choose to prefer 30fpsto an unstable framerate. If the developer expects many players will be onslow devices, a default can be chosen with:
[RenPy] 纯文本查看 复制代码 default preferences.gl_framerate = 30
When a frame takes too long to render (say, because an unpredicted imagehas to be loaded from disk), Ren'Py will attempt to use the time the framewas presented as the base time for transitions and displayables. Effectively,this means that if Ren'Py has to skip frames, it'll skip them before the firstframe in a sequence, rather than between the first and second frame.
Ren'Py itself triggers garbage collection immediately after a frame isdrawn, if enough objects have been created. Outside of this collection, thenumber of objects required to trigger the garbage collector has been raised.The thresholds are high enough that collection should not be required ifthe game does not create circular object references. (That is, objects thatrefer to each other in a loop.) Ren'Py has been changed to eliminate commonsources of circular object references.
For most games, Ren'Py managed garbage collection should reduce or eveneliminate frame drops caused by the garbage collector. However, it ispossible to revert to the previous tuning by setting config.manage_gc to False.
By default, Ren'Py will remove transient screens (like say and choice)and displayables without triggering on "hide" event handlers. The process ofchecking for such handlers was relatively expensive, while the use ofthose handlers is rare. This change can be reverted by setting config.zap_transients to False.
Ren'Py will now cache compiled Python expressions the first time itencounters them, rather than compiling an expression each time it isencountered. This speeds up the overused ConditionSwitch displayable,along with other parts of Ren'Py. Because of this change, a game willopen slowly the first time it's run under Ren'Py 6.99.14, as all of theexpressions need to be compiled.
This release both increases the speed of maintaining the information requiredby rollback, and does so less often. This may be visible to players byRen'Py now allowing them to roll back farther than before.
There have also been many other performance improvements that will only bevisible by the increased speed. This release just includes the first roundof performance improvements, while a new performance profiling frameworkincluded will allow Ren'Py developers to further improve things.
Multiple Character Dialogue
Ren'Py now includes a system that allows multiple characters to speak dialogueat the same time. It's accessed by giving the multiple argument to consecutivesay statements. For example:
[RenPy] 纯文本查看 复制代码 e "Ren'Py now supports multiple character dialogue." (multiple=2)
l "About time! I've been wanting this for years!" (multiple=2)
As there is more than one way to show dialogue from multiple characters(side-by-side? top-and-bottom? one or two textboxes?), Ren'Py doesn't includesupport for this out of the box yet. Please see the multiple-character-dialoguesection of the documentation for the styles you'll need to define.
GUI Preferences
Ren'Py supports a new GUI preference system that replaces the old style preferencesystem, as it allows preferences to apply to variables in the new GUI that canbe referenced from multiple styles.
This makes it possible to write:
[RenPy] 纯文本查看 复制代码 define gui.text_font = gui.preference("font", "DejaVuSans.ttf")
To access the preference, and:
[RenPy] 纯文本查看 复制代码 vbox:
style_prefix "radio"
label _("Font")
textbutton _("DejaVu") action gui.SetPreference("font", "DejaVuSans.ttf")
textbutton _("Dyslexic") action gui.SetPreference("font", "OpenDyslexic-Regular.otf")
to set it. See the section on GUI Preferences for more details.
Tooltips
A new tooltip system has been added to Ren'Py, to replaced the one thatalready existed. While in the previous system, one had to write:
[RenPy] 纯文本查看 复制代码 default tt = Tooltip("No button selected.")
textbutton "One.":
action Return(1)
hovered tt.Action("The loneliest number.")
text tt.value
It's now possible to write:
[RenPy] 纯文本查看 复制代码 textbutton "One.":
action Return(1)
tooltip "The loneliest number."
text GetTooltip()
This is intended to save boilerplate and make screens more readable. Formore information, see the Tooltips section.
Changes
SSL and TLS support has been added to all platforms. This allows Ren'Pygames to make requests to secure web servers, perhaps in conjunctionwith a Python library such as requests. This support is only includedin built distributions if imported at init time.
The new im.Data() image manipulator creates an image from compressedbinary data, as might be downloaded from a web server.
The config.loadable callback lets scripts inform Ren'Py aboutadditional loadable files.
Ren'Py will attempt to diagnose problems with pickling objects duringa save, and report an object that caused a pickling problem. (This isbest-effort, but tends to catch common problems.)
When a viewport is given scrollbars, Ren'Py will now offer its childa large amount of space in the given direction. This prevents problemswith displayables drawn at or below the visible area of a viewport.
Ren'Py now resolves the ambiguity between the xpos and xalignstyle properties in favor of xpos, and similarly for other cases where bothmore and less specific style properties are given to the same style.
Custom statements now take a label function that can return a custom labelfor the statement. This allows the custom statements to be jumped to orcalled.
The new config.gl_clear_color variable allows a creator to set the colorof the letterboxes and pillarboxes used when the screen is not filled.
Drag displayables (part of the drag and drop system) now support a bottommethod, that can be used to lower the drag to the bottom of its drggroup.
The config.cache_surfaces variable, added in the last release, hasbeen documented. Setting this variable to False can reduce Ren'Py'smemory consumption, at the cost of of slowing down images used by multipleimage manipulators. (Which should be a rare case in modern Ren'Py.)
Variable and field munging (which change the name of a variable that begins with__ to a file-specific value) now work inside string substitutions.
Viewports and vpgrids now support the pagekeys property, which allows oneto use the pageup and pagedown keys to scroll the viewport. The arrowkeysproperty is now documented.
RAPT now compiles Java code using a source and targer version of 1.6, whichallows it to be built on modern JDKs.
Fixes
An issue where screens could display incorrectly when compiled at differenttimes has been fixed. This could only show up under certain circumstances.
- The project has screens in multiple files.
- The files were compiled at different times. (This can never be the case fora released game, since all files are recompiled at the same time whenbuilding distributions.)
After upgrading to this release, the problem can be fixed by pressing "ForceRecompile" in the launcher. This can be done for any game in development, butisn't necessary for released games.
There have been several improvements to the interactive director, allowingit to work in more circumstances.
A race condition that could cause Ren'Py to lock up (causing a blankscreen to be displayed) on Android and iOS has been fixed. This wasintroduced in 6.99.13.
In 6.99.13, a race condition caused Ren'Py to infrequently skip movieplayback entirely.
Ren'Py now supports the AltGr key.
Ren'Py now limits the amount of console output it logs, to prevent printstatements from consuming memory if the console is never displayed.
|
|