3917 lines
296 KiB
HTML
3917 lines
296 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
<title>Changelog (Ren'Py 6.11 - 6.99) — Ren'Py Documentation</title>
|
||
<link rel="stylesheet" href="_static/renpydoc.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-3.3.6/css/bootstrap.min.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-3.3.6/css/bootstrap-theme.min.css" />
|
||
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
|
||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||
<script type="text/javascript" src="_static/js/jquery-1.11.0.min.js"></script>
|
||
<script type="text/javascript" src="_static/js/jquery-fix.js"></script>
|
||
<script type="text/javascript" src="_static/bootstrap-3.3.6/js/bootstrap.min.js"></script>
|
||
<script type="text/javascript" src="_static/bootstrap-sphinx.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Incompatible Changes" href="incompatible.html" />
|
||
<link rel="prev" title="Changelog (Ren'Py 7.x-)" href="changelog.html" />
|
||
<meta charset='utf-8'>
|
||
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
|
||
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
|
||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||
|
||
</head><body>
|
||
|
||
<div id="navbar" class="navbar navbar-default navbar-fixed-top">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
|
||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="index.html">
|
||
Ren'Py Documentation</a>
|
||
<span class="navbar-text navbar-version pull-left"><b>7.5.3</b></span>
|
||
</div>
|
||
|
||
<div class="collapse navbar-collapse nav-collapse">
|
||
<ul class="nav navbar-nav">
|
||
|
||
<li><a href="https://www.renpy.org">Home Page</a></li>
|
||
<li><a href="https://www.renpy.org/doc/html/">Online Documentation</a></li>
|
||
|
||
|
||
<li class="dropdown globaltoc-container">
|
||
<a role="button"
|
||
id="dLabelGlobalToc"
|
||
data-toggle="dropdown"
|
||
data-target="#"
|
||
href="index.html">Site <b class="caret"></b></a>
|
||
<ul class="dropdown-menu globaltoc"
|
||
role="menu"
|
||
aria-labelledby="dLabelGlobalToc"><ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="gui.html">GUI Customization Guide</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="language_basics.html">Language Basics</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="label.html">Labels & Control Flow</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dialogue.html">Dialogue and Narration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="displaying_images.html">Displaying Images</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="menus.html">In-Game Menus</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="python.html">Python Statements</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="conditional.html">Conditional Statements</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="audio.html">Audio</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="movie.html">Movie</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="voice.html">Voice</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="text.html">Text</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="translation.html">Translation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="displayables.html">Displayables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="transforms.html">Transforms</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="transitions.html">Transitions</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="atl.html">Animation and Transformation Language</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="matrixcolor.html">Matrixcolor</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="layeredimage.html">Layered Images</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="3dstage.html">3D Stage</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="live2d.html">Live2D Cubism</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="style.html">Styles</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="style_properties.html">Style Properties</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="screens.html">Screens and Screen Language</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="screen_actions.html">Screen Actions, Values, and Functions</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="screen_special.html">Special Screen Names</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="screen_optimization.html">Screen Language Optimization</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration Variables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="preferences.html">Preference Variables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="store_variables.html">Store Variables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="mouse.html">Custom Mouse Cursors</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="launcher.html">Launcher</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="developer_tools.html">Developer Tools</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="director.html">Interactive Director</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="nvl_mode.html">NVL-Mode Tutorial</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="input.html">Text Input</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="side_image.html">Side Images</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="rooms.html">Image Gallery, Music Room, and Replay Actions</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="drag_drop.html">Drag and Drop</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="sprites.html">Sprites</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="keymap.html">Customizing the Keymap</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="achievement.html">Achievements</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="history.html">Dialogue History</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="multiple.html">Multiple Character Dialogue</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="splashscreen_presplash.html">Splashscreen and Presplash</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="statement_equivalents.html">Statement Equivalents</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="save_load_rollback.html">Saving, Loading, and Rollback</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="persistent.html">Persistent Data</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="trans_trans_python.html">Transforms and Transitions in Python</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="gui_advanced.html">Advanced GUI</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="screen_python.html">Screens and Python</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="modes.html">Modes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="cdd.html">Creator-Defined Displayables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="cds.html">Creator-Defined Statements</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="custom_text_tags.html">Custom Text Tags</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="character_callbacks.html">Character Callbacks</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="file_python.html">File Access</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="color_class.html">Color Class</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="matrix.html">Matrix</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="model.html">Model-Based Rendering</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="other.html">Other Functions and Variables</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="build.html">Building Distributions</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="updater.html">Web Updater</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="android.html">Android</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="chromeos.html">Chrome OS/Chromebook</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ios.html">iOS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="iap.html">In-App Purchasing</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="gesture.html">Gestures</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="raspi.html">Raspberry Pi</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="problems.html">Dealing with Problems</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="environment_variables.html">Environment Variables</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="self_voicing.html">Self-Voicing</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="editor.html">Text Editor Integration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="skins.html">Skins</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="translating_renpy.html">Translating Ren'Py</a></li>
|
||
</ul>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog (Ren'Py 7.x-)</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Changelog (Ren'Py 6.11 - 6.99)</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="incompatible.html">Incompatible Changes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="distributor.html">Distributor Notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="sponsors.html">Ren'Py Development Sponsors</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="thequestion.html">Script of The Question</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="thequestion_nvl.html">NVL-mode script for The Question</a></li>
|
||
</ul>
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
<form class="navbar-form navbar-right" action="search.html" method="get">
|
||
<div class="form-group">
|
||
<input type="text" name="q" class="form-control" placeholder="Search" />
|
||
</div>
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-3">
|
||
<div id="sidebar" class="bs-sidenav" role="complementary"><ul>
|
||
<li><a class="reference internal" href="#">Changelog (Ren'Py 6.11 - 6.99)</a><ul>
|
||
<li><a class="reference internal" href="#renpy-6-99-14-3">6.99.14.3</a><ul>
|
||
<li><a class="reference internal" href="#changes">Changes</a></li>
|
||
<li><a class="reference internal" href="#fixes">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#renpy-6-99-14-2">6.99.14.2</a><ul>
|
||
<li><a class="reference internal" href="#features-and-changes">Features and Changes</a></li>
|
||
<li><a class="reference internal" href="#self-voicing">Self-Voicing</a></li>
|
||
<li><a class="reference internal" href="#id3">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#renpy-6-99-14-1">6.99.14.1</a><ul>
|
||
<li><a class="reference internal" href="#image-prediction-and-caching">Image Prediction and Caching</a></li>
|
||
<li><a class="reference internal" href="#other-improvements">Other Improvements</a></li>
|
||
<li><a class="reference internal" href="#other-fixes">Other Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-14">Ren'Py 6.99.14</a><ul>
|
||
<li><a class="reference internal" href="#performance">Performance</a></li>
|
||
<li><a class="reference internal" href="#multiple-character-dialogue">Multiple Character Dialogue</a></li>
|
||
<li><a class="reference internal" href="#gui-preferences">GUI Preferences</a></li>
|
||
<li><a class="reference internal" href="#tooltips">Tooltips</a></li>
|
||
<li><a class="reference internal" href="#id5">Changes</a></li>
|
||
<li><a class="reference internal" href="#id6">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-13">Ren'Py 6.99.13</a><ul>
|
||
<li><a class="reference internal" href="#tutorial-and-the-question">Tutorial and The Question</a></li>
|
||
<li><a class="reference internal" href="#interactive-director">Interactive Director</a></li>
|
||
<li><a class="reference internal" href="#new-gui">New GUI</a></li>
|
||
<li><a class="reference internal" href="#raspberry-pi">Raspberry Pi</a></li>
|
||
<li><a class="reference internal" href="#hyperlinks">Hyperlinks</a></li>
|
||
<li><a class="reference internal" href="#say-with-arguments">Say with Arguments</a></li>
|
||
<li><a class="reference internal" href="#translations">Translations</a></li>
|
||
<li><a class="reference internal" href="#other">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-12-4">Ren'Py 6.99.12.4</a><ul>
|
||
<li><a class="reference internal" href="#console">Console</a></li>
|
||
<li><a class="reference internal" href="#id7">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-12-3">Ren'Py 6.99.12.3</a><ul>
|
||
<li><a class="reference internal" href="#gui">GUI</a></li>
|
||
<li><a class="reference internal" href="#id8">Translations</a></li>
|
||
<li><a class="reference internal" href="#id9">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-12">Ren'Py 6.99.12</a><ul>
|
||
<li><a class="reference internal" href="#macintosh-support">Macintosh Support</a></li>
|
||
<li><a class="reference internal" href="#translation-changes">Translation Changes</a></li>
|
||
<li><a class="reference internal" href="#python-changes">Python Changes</a></li>
|
||
<li><a class="reference internal" href="#other-changes-and-fixes">Other Changes and Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-11">Ren'Py 6.99.11</a><ul>
|
||
<li><a class="reference internal" href="#new-in-game-gui">New In-Game GUI</a></li>
|
||
<li><a class="reference internal" href="#improved-platform-support">Improved Platform Support</a></li>
|
||
<li><a class="reference internal" href="#style-prefix-support">Style Prefix Support</a></li>
|
||
<li><a class="reference internal" href="#style-properties">Style Properties</a></li>
|
||
<li><a class="reference internal" href="#translate-and-style-statement-order-changes">Translate and Style Statement Order Changes</a></li>
|
||
<li><a class="reference internal" href="#local-labels">Local Labels</a></li>
|
||
<li><a class="reference internal" href="#transforms">Transforms</a></li>
|
||
<li><a class="reference internal" href="#id10">Translations</a></li>
|
||
<li><a class="reference internal" href="#id11">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-10">Ren'Py 6.99.10</a><ul>
|
||
<li><a class="reference internal" href="#id12">Fixes</a></li>
|
||
<li><a class="reference internal" href="#translation">Translation</a></li>
|
||
<li><a class="reference internal" href="#other-changes">Other Changes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-9">Ren'Py 6.99.9</a><ul>
|
||
<li><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
|
||
<li><a class="reference internal" href="#id13">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-8">Ren'Py 6.99.8</a><ul>
|
||
<li><a class="reference internal" href="#tags-layers-and-transforms">Tags, Layers, and Transforms</a></li>
|
||
<li><a class="reference internal" href="#easing-functions">Easing Functions</a></li>
|
||
<li><a class="reference internal" href="#side-images">Side Images</a></li>
|
||
<li><a class="reference internal" href="#pushmove-transitions">PushMove Transitions</a></li>
|
||
<li><a class="reference internal" href="#id14">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-7">Ren'Py 6.99.7</a><ul>
|
||
<li><a class="reference internal" href="#dynamic-images">Dynamic Images</a></li>
|
||
<li><a class="reference internal" href="#define-improvements">Define Improvements</a></li>
|
||
<li><a class="reference internal" href="#android-ios">Android/iOS</a></li>
|
||
<li><a class="reference internal" href="#id15">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-6">Ren'Py 6.99.6</a><ul>
|
||
<li><a class="reference internal" href="#highdpi-retina">HighDPI/Retina</a></li>
|
||
<li><a class="reference internal" href="#gamepad">Gamepad</a></li>
|
||
<li><a class="reference internal" href="#backups">Backups</a></li>
|
||
<li><a class="reference internal" href="#id16">Other Improvements</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-5">Ren'Py 6.99.5</a><ul>
|
||
<li><a class="reference internal" href="#startup">Startup</a></li>
|
||
<li><a class="reference internal" href="#ios">iOS</a></li>
|
||
<li><a class="reference internal" href="#id17">Other Improvements</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-4">Ren'Py 6.99.4</a><ul>
|
||
<li><a class="reference internal" href="#id18">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-3">Ren'Py 6.99.3</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-2">Ren'Py 6.99.2</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-99-1">Ren'Py 6.99.1</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-99">Ren'Py 6.99</a><ul>
|
||
<li><a class="reference internal" href="#sdl2">SDL2</a></li>
|
||
<li><a class="reference internal" href="#ios-support">iOS Support</a></li>
|
||
<li><a class="reference internal" href="#android-support">Android Support</a></li>
|
||
<li><a class="reference internal" href="#steam">Steam</a></li>
|
||
<li><a class="reference internal" href="#distribution-improvements">Distribution Improvements</a></li>
|
||
<li><a class="reference internal" href="#languages-and-translations">Languages and Translations</a></li>
|
||
<li><a class="reference internal" href="#clipboard-voicing">Clipboard Voicing</a></li>
|
||
<li><a class="reference internal" href="#custom-text-tags">Custom Text Tags</a></li>
|
||
<li><a class="reference internal" href="#id19">Other Improvements</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-18-3">Ren'Py 6.18.3</a><ul>
|
||
<li><a class="reference internal" href="#id20">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-18-2">Ren'Py 6.18.2</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-18-1">Ren'Py 6.18.1</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-18">Ren'Py 6.18</a><ul>
|
||
<li><a class="reference internal" href="#screen-language-improvements">Screen Language Improvements</a></li>
|
||
<li><a class="reference internal" href="#image-prediction">Image Prediction</a></li>
|
||
<li><a class="reference internal" href="#accessibility">Accessibility</a></li>
|
||
<li><a class="reference internal" href="#android-in-app-purchasing">Android In-App Purchasing</a></li>
|
||
<li><a class="reference internal" href="#pixel-art">Pixel Art</a></li>
|
||
<li><a class="reference internal" href="#voice-improvements">Voice Improvements</a></li>
|
||
<li><a class="reference internal" href="#os-x-bug-workaround">OS X Bug Workaround</a></li>
|
||
<li><a class="reference internal" href="#id21">Other</a></li>
|
||
<li><a class="reference internal" href="#id22">Translations</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-17-7">Ren'Py 6.17.7</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-17-6">Ren'Py 6.17.6</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-17-5">Ren'Py 6.17.5</a><ul>
|
||
<li><a class="reference internal" href="#id23">Translations</a></li>
|
||
<li><a class="reference internal" href="#id24">Changes</a></li>
|
||
<li><a class="reference internal" href="#id25">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-17-4">Ren'Py 6.17.4</a><ul>
|
||
<li><a class="reference internal" href="#reloading">Reloading</a></li>
|
||
<li><a class="reference internal" href="#android">Android</a></li>
|
||
<li><a class="reference internal" href="#id26">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-17">Ren'Py 6.17</a><ul>
|
||
<li><a class="reference internal" href="#styles">Styles</a></li>
|
||
<li><a class="reference internal" href="#syntax-changes">Syntax Changes</a></li>
|
||
<li><a class="reference internal" href="#id27">Translations</a></li>
|
||
<li><a class="reference internal" href="#id28">Android</a></li>
|
||
<li><a class="reference internal" href="#new-and-changed-preferences">New and Changed Preferences</a></li>
|
||
<li><a class="reference internal" href="#id29">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-16-2">Ren'Py 6.16.2</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-16">Ren'Py 6.16</a><ul>
|
||
<li><a class="reference internal" href="#id30">Android</a></li>
|
||
<li><a class="reference internal" href="#save-load-and-persistent-improvements">Save, Load, and Persistent Improvements</a></li>
|
||
<li><a class="reference internal" href="#voice">Voice</a></li>
|
||
<li><a class="reference internal" href="#image-gallery-and-music-room">Image Gallery and Music Room</a></li>
|
||
<li><a class="reference internal" href="#text-rendering">Text Rendering</a></li>
|
||
<li><a class="reference internal" href="#japanese-language">Japanese Language</a></li>
|
||
<li><a class="reference internal" href="#documentation">Documentation</a></li>
|
||
<li><a class="reference internal" href="#id31">Other</a></li>
|
||
<li><a class="reference internal" href="#bugfixes">Bugfixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-15-6">Ren'Py 6.15.6</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-15-5">Ren'Py 6.15.5</a><ul>
|
||
<li><a class="reference internal" href="#ren-py-6-15-4">Ren'Py 6.15.4</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-15">Ren'Py 6.15</a><ul>
|
||
<li><a class="reference internal" href="#translation-framework">Translation Framework</a></li>
|
||
<li><a class="reference internal" href="#improved-japanese-support">Improved Japanese Support</a></li>
|
||
<li><a class="reference internal" href="#id32">Console</a></li>
|
||
<li><a class="reference internal" href="#screen-parameters">Screen Parameters</a></li>
|
||
<li><a class="reference internal" href="#replay-gallery">Replay Gallery</a></li>
|
||
<li><a class="reference internal" href="#id33">Voice Improvements</a></li>
|
||
<li><a class="reference internal" href="#launcher-improvements">Launcher Improvements</a></li>
|
||
<li><a class="reference internal" href="#macintosh-changes">Macintosh Changes</a></li>
|
||
<li><a class="reference internal" href="#packaging-improvements">Packaging Improvements</a></li>
|
||
<li><a class="reference internal" href="#id34">Other Changes</a></li>
|
||
<li><a class="reference internal" href="#id35">Bugfixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-14">Ren'Py 6.14</a><ul>
|
||
<li><a class="reference internal" href="#ren-py-launcher-rewrite">Ren'Py Launcher Rewrite</a></li>
|
||
<li><a class="reference internal" href="#editra-text-editing">Editra & Text Editing</a></li>
|
||
<li><a class="reference internal" href="#ren-py-web-updater">Ren'Py Web Updater</a></li>
|
||
<li><a class="reference internal" href="#transform-changes">Transform Changes</a></li>
|
||
<li><a class="reference internal" href="#screen-language-displayable-and-transition-enhancements">Screen Language, Displayable, and Transition Enhancements</a></li>
|
||
<li><a class="reference internal" href="#rollback-improvements">Rollback Improvements</a></li>
|
||
<li><a class="reference internal" href="#video-improvements">Video Improvements</a></li>
|
||
<li><a class="reference internal" href="#image-load-log">Image Load Log</a></li>
|
||
<li><a class="reference internal" href="#file-actions-and-functions">File Actions and Functions</a></li>
|
||
<li><a class="reference internal" href="#multiple-store-support">Multiple Store Support</a></li>
|
||
<li><a class="reference internal" href="#platform-support-and-library-updates">Platform Support and Library Updates</a></li>
|
||
<li><a class="reference internal" href="#id36">Other Changes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-13-9">Ren'Py 6.13.9</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-13-8">Ren'Py 6.13.8</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-13">Ren'Py 6.13</a><ul>
|
||
<li><a class="reference internal" href="#text-rewrite">Text Rewrite</a></li>
|
||
<li><a class="reference internal" href="#directx-support">DirectX Support</a></li>
|
||
<li><a class="reference internal" href="#id37">Other Changes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-12-2">Ren'Py 6.12.2</a></li>
|
||
<li><a class="reference internal" href="#ren-py-6-12-1">Ren'Py 6.12.1</a><ul>
|
||
<li><a class="reference internal" href="#image-attributes">Image Attributes</a></li>
|
||
<li><a class="reference internal" href="#error-handling">Error Handling</a></li>
|
||
<li><a class="reference internal" href="#id38">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-12-0">Ren'Py 6.12.0</a><ul>
|
||
<li><a class="reference internal" href="#id39">Android Support</a></li>
|
||
<li><a class="reference internal" href="#new-widgets-and-displayables">New Widgets and Displayables</a></li>
|
||
<li><a class="reference internal" href="#id40">Image Prediction</a></li>
|
||
<li><a class="reference internal" href="#screens">Screens</a></li>
|
||
<li><a class="reference internal" href="#id41">Other Improvements</a></li>
|
||
<li><a class="reference internal" href="#id42">Bug Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-11-2">Ren'Py 6.11.2</a><ul>
|
||
<li><a class="reference internal" href="#new-features">New Features</a></li>
|
||
<li><a class="reference internal" href="#software-update">Software Update</a></li>
|
||
<li><a class="reference internal" href="#behavior-changes">Behavior Changes</a></li>
|
||
<li><a class="reference internal" href="#id43">Bug fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-11-1">Ren'Py 6.11.1</a><ul>
|
||
<li><a class="reference internal" href="#id44">New Features</a></li>
|
||
<li><a class="reference internal" href="#id45">Fixes</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#ren-py-6-11-0">Ren'Py 6.11.0</a><ul>
|
||
<li><a class="reference internal" href="#opengl-support">OpenGL Support</a></li>
|
||
<li><a class="reference internal" href="#screens-and-screen-language">Screens and Screen Language</a></li>
|
||
<li><a class="reference internal" href="#id46">Transform Changes</a></li>
|
||
<li><a class="reference internal" href="#id47">Other Changes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="col-md-9 content">
|
||
|
||
<div class="section" id="changelog-ren-py-6-11-6-99">
|
||
<span id="changelog-6"></span><h1>Changelog (Ren'Py 6.11 - 6.99)<a class="headerlink" href="#changelog-ren-py-6-11-6-99" title="Permalink to this headline"> link</a></h1>
|
||
<div class="section" id="renpy-6-99-14-3">
|
||
<span id="id1"></span><h2>6.99.14.3<a class="headerlink" href="#renpy-6-99-14-3" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="changes">
|
||
<h3>Changes<a class="headerlink" href="#changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The <a class="reference internal" href="displayables.html#AlphaMask" title="AlphaMask"><code class="xref py py-func docutils literal notranslate"><span class="pre">AlphaMask()</span></code></a> displayable now places its mask inside the child
|
||
displayable, in the same way that AlphaDissolve always has. This allows
|
||
the mask to be created using ATL or other transforms.</p>
|
||
<p>Several obsolete image manipulators have been deprecated, and removed from
|
||
the documentation. These are image manipulators that have been completely
|
||
replaced by <a class="reference internal" href="trans_trans_python.html#Transform" title="Transform"><code class="xref py py-func docutils literal notranslate"><span class="pre">Transform()</span></code></a>.</p>
|
||
<p>Several functions have been renamed, to remove a pointless Live prefix.</p>
|
||
<ul class="simple">
|
||
<li>LiveComposite is now <a class="reference internal" href="displayables.html#Composite" title="Composite"><code class="xref py py-func docutils literal notranslate"><span class="pre">Composite()</span></code></a></li>
|
||
<li>LiveCrop is now <a class="reference internal" href="displayables.html#Crop" title="Crop"><code class="xref py py-func docutils literal notranslate"><span class="pre">Crop()</span></code></a></li>
|
||
<li>LiveTile is now <a class="reference internal" href="displayables.html#Tile" title="Tile"><code class="xref py py-func docutils literal notranslate"><span class="pre">Tile()</span></code></a></li>
|
||
</ul>
|
||
<p>The old names have been retained as compatibility alias.</p>
|
||
</div>
|
||
<div class="section" id="fixes">
|
||
<h3>Fixes<a class="headerlink" href="#fixes" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release fixes an issue where children of for statements in screens would
|
||
not get their data propagated through screen update cycles. This manifested
|
||
in complicated ways, such as transitions repeating and slow text refusing
|
||
to work.</p>
|
||
<p>This release displays the newest save slot in the selected color, as
|
||
intended. This applies to newly created games, older projects can update
|
||
by adding to the bottom of gui.rpy:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">gui</span><span class="o">.</span><span class="n">slot_button_text_selected_idle_color</span> <span class="o">=</span> <span class="n">gui</span><span class="o">.</span><span class="na">selected_color</span>
|
||
<span class="k">define</span> <span class="n">gui</span><span class="o">.</span><span class="n">slot_button_text_selected_hover_color</span> <span class="o">=</span> <span class="n">gui</span><span class="o">.</span><span class="na">hover_color</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>A problem introduced in 6.99.14.2 with the the default statement
|
||
not working after a rollback has been fixed. This should only ever
|
||
have affected games that were updated after a save was first
|
||
created.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="renpy-6-99-14-2">
|
||
<span id="id2"></span><h2>6.99.14.2<a class="headerlink" href="#renpy-6-99-14-2" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="features-and-changes">
|
||
<h3>Features and Changes<a class="headerlink" href="#features-and-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Atom text editor is now supported in Ren'Py. When it is selected, Ren'Py
|
||
will download Atom, and will create a new profile with the language-renpy,
|
||
renpy-dark-syntax, and renpy-light-syntax Atom plugins installed, along with
|
||
a few default setting to make Ren'Py programming easier.</p>
|
||
<p>It is now possible to supply a baseline to image-based fonts.</p>
|
||
<p>When a screen in the default gui scrolls, the pageup and pagedown keys will
|
||
now work to scroll it. (This only works with newly-created projects.)</p>
|
||
<p>The <a class="reference internal" href="movie.html#Movie" title="Movie"><code class="xref py py-func docutils literal notranslate"><span class="pre">Movie()</span></code></a> displayable now takes a play_callback argument, which
|
||
specifies a function that is called to play a movie. This function can
|
||
do things like queue up a transition movie before queuing the usual loop,
|
||
making for smooth transitions.</p>
|
||
<p>The new <a class="reference internal" href="displaying_images.html#renpy.get_say_image_tag" title="renpy.get_say_image_tag"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_say_image_tag()</span></code></a> function makes it possible to
|
||
retrieve the name of the speaking character.</p>
|
||
<p>ATL interpolation can now interpolate from a transform with multiple
|
||
lines in it, provided none of the lines takes time to complete.</p>
|
||
<p>Adding the from statement to a call no longer changes the translation
|
||
identifier. (Which is also used by the automatic voice code.) Since this
|
||
would be a breaking change, Ren'Py also computes the old-style translation
|
||
identifier and uses that if it exists.</p>
|
||
<p>The _choose_attributes method is called when only a single displayable can
|
||
be located. This supports the AttributeImage beta (<a class="reference external" href="https://github.com/renpy/ai">https://github.com/renpy/ai</a>).</p>
|
||
<p>The new <a class="reference internal" href="gui.html#var-gui.button_image_extension"><code class="xref std std-var docutils literal notranslate"><span class="pre">gui.button_image_extension</span></code></a> variable allows button images to be
|
||
.webps without changing Ren'Py itself.</p>
|
||
</div>
|
||
<div class="section" id="self-voicing">
|
||
<h3>Self-Voicing<a class="headerlink" href="#self-voicing" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py's self-voicing mode, which provides accessibility for blind
|
||
users, has been improved:</p>
|
||
<ul class="simple">
|
||
<li>Selected buttons say the word "selected" after them.</li>
|
||
<li>Bars say the world "bar" after them.</li>
|
||
<li>Some actions have had their self-voicing information changed to better
|
||
reflect how the action is used in the new GUI.</li>
|
||
<li>Alt text built into Ren'Py can be translated.</li>
|
||
</ul>
|
||
<p>While this can change some of the self-voicing output, the changes
|
||
should not affect any translations that already exist.</p>
|
||
</div>
|
||
<div class="section" id="id3">
|
||
<h3>Fixes<a class="headerlink" href="#id3" title="Permalink to this headline"> link</a></h3>
|
||
<p>An issue where a save or auto-save could rarely cause data corruption
|
||
in the non-saved game has been fixed.</p>
|
||
<p>Python hide statements are now run in a Python function context, which
|
||
makes certain constructs (like generator expressions) compile and run
|
||
correctly.</p>
|
||
<p>Global labels now behave as described in the documentation, even when
|
||
indented.</p>
|
||
<p>A regression with custom mouse cursors that could cause the mouse to
|
||
jump around wildly has been fixed.</p>
|
||
<p>An issue with side images persisting after a menu was shown has been fixed.</p>
|
||
<p>Ren'Py no longer stores the state of displayables that are not being shown
|
||
in a screen that has been replaced. (This was an issue when the first screen
|
||
is re-show, and the displayables took their old state.)</p>
|
||
<p>The show and replace events are now always delivered to a transform in a
|
||
screen. While this behavior was always intended and could occur whenever
|
||
a screen was shown, previously caching could prevent some show events
|
||
from being delivered.</p>
|
||
<p>Characters that require the alt key can be typed. (The alt key is necessary
|
||
to type particular characters in European languages.)</p>
|
||
<p>When the Android build system fails to rename a file or directory, it will
|
||
retry for 60 seconds before giving up. This is an attempt to work around
|
||
antivirus software breaking Windows semantics.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="renpy-6-99-14-1">
|
||
<span id="id4"></span><h2>6.99.14.1<a class="headerlink" href="#renpy-6-99-14-1" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="image-prediction-and-caching">
|
||
<h3>Image Prediction and Caching<a class="headerlink" href="#image-prediction-and-caching" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now searches for the bounding box of non-transparent pixels when
|
||
converting an image into a texture. When the <a class="reference internal" href="config.html#var-config.optimize_texture_bounds"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.optimize_texture_bounds</span></code></a>
|
||
variable is true (as it is by default), only the non-transparent pixels
|
||
are stored in the image cache. This can massively reduce the in-memory
|
||
size of certain images, such as images that correspond to mostly-transparent
|
||
layers.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.cache_surfaces"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.cache_surfaces</span></code></a> variable is now False by default. This
|
||
halves the amount of memory required for the image cache, but may slow
|
||
down multiple image manipulators applied to the same image.</p>
|
||
<p>The size of the image cache is now controlled by the
|
||
<a class="reference internal" href="config.html#var-config.image_cache_size_mb"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.image_cache_size_mb</span></code></a> variable, which defaults to 300 megabytes.
|
||
With the new default settings, each pixel inside the images non-transparent
|
||
bounding box takes up 4 bytes of memory.</p>
|
||
<p>The result of these three changes is that images take up less memory
|
||
in cache, meaning Ren'Py can store far more predicted images.</p>
|
||
<p>Ren'Py now refuses to call functions that read from disk (such as
|
||
<a class="reference internal" href="file_python.html#renpy.image_size" title="renpy.image_size"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.image_size()</span></code></a>) when predicting images and screens, rather
|
||
than risking these slow calls leading to drops in framerate.</p>
|
||
<p>The <a class="reference internal" href="displayables.html#ConditionSwitch" title="ConditionSwitch"><code class="xref py py-func docutils literal notranslate"><span class="pre">ConditionSwitch()</span></code></a> and <a class="reference internal" href="displayables.html#ShowingSwitch" title="ShowingSwitch"><code class="xref py py-func docutils literal notranslate"><span class="pre">ShowingSwitch()</span></code></a> displayables have
|
||
a new predict_all parameter. When True, this causes all displayables to
|
||
be predicted, not just the currently selected one. This could be used
|
||
to have Ren'Py preload all emotions of a sprite.</p>
|
||
<p>The <a class="reference internal" href="displaying_images.html#renpy.start_predict" title="renpy.start_predict"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.start_predict()</span></code></a> and <a class="reference internal" href="displaying_images.html#renpy.stop_predict" title="renpy.stop_predict"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.stop_predict()</span></code></a> functions
|
||
now take wildcard patterns. For example:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">$</span> <span class="n">renpy</span><span class="o">.</span><span class="n">start_predict</span><span class="p">(</span><span class="s2">"eileen *"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Starts predicting all images beginning with the tag eileen, while:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">$</span> <span class="n">renpy</span><span class="o">.</span><span class="n">start_predict</span><span class="p">(</span><span class="s2">"* beach*"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>matches all images that include a beach attribute.</p>
|
||
<p>The F4 key now displays the image load log.</p>
|
||
</div>
|
||
<div class="section" id="other-improvements">
|
||
<h3>Other Improvements<a class="headerlink" href="#other-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>Transforms now have a new <a class="reference internal" href="atl.html#transform-property-maxsize"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">maxsize</span></code></a> property, which scales images
|
||
down until they fit into a bounding box.</p>
|
||
<p>The Python expression cache is kept when Ren'Py is reloaded, providing a
|
||
slight increase in performance compared to unmarshalling it on each reload.</p>
|
||
<p>The traceback.txt and errors.txt files now include a date at the bottom,
|
||
making it easier to determine if a file is stale.</p>
|
||
<p>The new <a class="reference internal" href="displaying_images.html#renpy.list_images" title="renpy.list_images"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.list_images()</span></code></a> function returns a list of all the images
|
||
that have been defined.</p>
|
||
<p>Drag displayables now take the <cite>mouse_drop</cite> property. When true, this causes
|
||
the location of the mouse pointer to be used to select a drag to drop on,
|
||
rather than the drag with the maximum overlap.</p>
|
||
<p>The Spanish translation has been updated.</p>
|
||
</div>
|
||
<div class="section" id="other-fixes">
|
||
<h3>Other Fixes<a class="headerlink" href="#other-fixes" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixes a bug where the ATL "on hide" clause didn't work.</p>
|
||
<p>Release the GIL when waiting for a screen flip, making tasks that run in
|
||
background threads (music playback, image preloading, autosave, etc.) run
|
||
much faster.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-14">
|
||
<span id="renpy-6-99-14"></span><h2>Ren'Py 6.99.14<a class="headerlink" href="#ren-py-6-99-14" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="performance">
|
||
<h3>Performance<a class="headerlink" href="#performance" title="Permalink to this headline"> link</a></h3>
|
||
<p>Quite a bit of work has been done to improve performance, both absolute
|
||
performance and apparent framerate stability.</p>
|
||
<p>When connected to a device with AC power, Ren'Py will attempt to draw
|
||
the screen at a constant framerate. When the device is on battery, several
|
||
frame will be drawn before reverting to the 5fps framerate, to ensure updates
|
||
to the screen are pushed through display buffering.</p>
|
||
<p>Ren'Py has a number of options that control display performance, accessed
|
||
through the Shift+G menu. In addition to the GL performance change described
|
||
above, this allows the player to lock the framerate and accept tearing when
|
||
a frame is late. A player on a slow machine might choose to prefer 30fps
|
||
to an unstable framerate. If the developer expects many players will be on
|
||
slow devices, a default can be chosen with:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">default</span> <span class="n">preferences</span><span class="o">.</span><span class="n">gl_framerate</span> <span class="o">=</span> <span class="mi">30</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>When a frame takes too long to render (say, because an unpredicted image
|
||
has to be loaded from disk), Ren'Py will attempt to use the time the frame
|
||
was 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 first
|
||
frame in a sequence, rather than between the first and second frame.</p>
|
||
<p>Ren'Py itself triggers garbage collection immediately after a frame is
|
||
drawn, if enough objects have been created. Outside of this collection, the
|
||
number of objects required to trigger the garbage collector has been raised.
|
||
The thresholds are high enough that collection should not be required if
|
||
the game does not create circular object references. (That is, objects that
|
||
refer to each other in a loop.) Ren'Py has been changed to eliminate common
|
||
sources of circular object references.</p>
|
||
<p>For most games, Ren'Py managed garbage collection should reduce or even
|
||
eliminate frame drops caused by the garbage collector. However, it is
|
||
possible to revert to the previous tuning by setting <a class="reference internal" href="config.html#var-config.manage_gc"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.manage_gc</span></code></a>
|
||
to False.</p>
|
||
<p>By default, Ren'Py will remove transient screens (like say and choice)
|
||
and displayables without triggering on "hide" event handlers. The process of
|
||
checking for such handlers was relatively expensive, while the use of
|
||
those handlers is rare. This change can be reverted by setting
|
||
<code class="xref std std-var docutils literal notranslate"><span class="pre">config.zap_transients</span></code> to False.</p>
|
||
<p>Ren'Py will now cache compiled Python expressions the first time it
|
||
encounters them, rather than compiling an expression each time it is
|
||
encountered. This speeds up the overused ConditionSwitch displayable,
|
||
along with other parts of Ren'Py. Because of this change, a game will
|
||
open slowly the first time it's run under Ren'Py 6.99.14, as all of the
|
||
expressions need to be compiled.</p>
|
||
<p>This release both increases the speed of maintaining the information required
|
||
by rollback, and does so less often. This may be visible to players by
|
||
Ren'Py now allowing them to roll back farther than before.</p>
|
||
<p>There have also been many other performance improvements that will only be
|
||
visible by the increased speed. This release just includes the first round
|
||
of performance improvements, while a new performance profiling framework
|
||
included will allow Ren'Py developers to further improve things.</p>
|
||
</div>
|
||
<div class="section" id="multiple-character-dialogue">
|
||
<h3>Multiple Character Dialogue<a class="headerlink" href="#multiple-character-dialogue" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now includes a system that allows multiple characters to speak dialogue
|
||
at the same time. It's accessed by giving the multiple argument to consecutive
|
||
say statements. For example:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="s2">"Ren'Py now supports multiple character dialogue."</span> <span class="p">(</span><span class="n">multiple</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="n">l</span> <span class="s2">"About time! I've been wanting this for years!"</span> <span class="p">(</span><span class="n">multiple</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>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 include
|
||
support for this out of the box yet. Please see the <a class="reference internal" href="multiple.html"><span class="doc">Multiple Character Dialogue</span></a>
|
||
section of the documentation for the styles you'll need to define.</p>
|
||
</div>
|
||
<div class="section" id="gui-preferences">
|
||
<h3>GUI Preferences<a class="headerlink" href="#gui-preferences" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py supports a new GUI preference system that replaces the old style preference
|
||
system, as it allows preferences to apply to variables in the new GUI that can
|
||
be referenced from multiple styles.</p>
|
||
<p>This makes it possible to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">gui</span><span class="o">.</span><span class="na">text_font</span> <span class="o">=</span> <span class="n">gui</span><span class="o">.</span><span class="n">preference</span><span class="p">(</span><span class="s2">"font"</span><span class="p">,</span> <span class="s2">"DejaVuSans.ttf"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>To access the preference, and:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">vbox</span><span class="p">:</span>
|
||
<span class="na">style_prefix</span> <span class="s2">"radio"</span>
|
||
<span class="k">label</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Font"</span><span class="p">)</span>
|
||
<span class="k">textbutton</span> <span class="n">_</span><span class="p">(</span><span class="s2">"DejaVu"</span><span class="p">)</span> <span class="na">action</span> <span class="n">gui</span><span class="o">.</span><span class="n">SetPreference</span><span class="p">(</span><span class="s2">"font"</span><span class="p">,</span> <span class="s2">"DejaVuSans.ttf"</span><span class="p">)</span>
|
||
<span class="k">textbutton</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Dyslexic"</span><span class="p">)</span> <span class="na">action</span> <span class="n">gui</span><span class="o">.</span><span class="n">SetPreference</span><span class="p">(</span><span class="s2">"font"</span><span class="p">,</span> <span class="s2">"OpenDyslexic-Regular.otf"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>to set it. See the section on <a class="reference internal" href="gui_advanced.html#gui-preferences"><span class="std std-ref">GUI Preferences</span></a> for more details.</p>
|
||
</div>
|
||
<div class="section" id="tooltips">
|
||
<h3>Tooltips<a class="headerlink" href="#tooltips" title="Permalink to this headline"> link</a></h3>
|
||
<p>A new tooltip system has been added to Ren'Py, to replaced the one that
|
||
already existed. While in the previous system, one had to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">default</span> <span class="n">tt</span> <span class="o">=</span> <span class="n">Tooltip</span><span class="p">(</span><span class="s2">"No button selected."</span><span class="p">)</span>
|
||
|
||
<span class="k">textbutton</span> <span class="s2">"One."</span><span class="p">:</span>
|
||
<span class="na">action</span> <span class="n">Return</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="na">hovered</span> <span class="n">tt</span><span class="o">.</span><span class="n">Action</span><span class="p">(</span><span class="s2">"The loneliest number."</span><span class="p">)</span>
|
||
|
||
<span class="k">text</span> <span class="n">tt</span><span class="o">.</span><span class="na">value</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>It's now possible to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">textbutton</span> <span class="s2">"One."</span><span class="p">:</span>
|
||
<span class="na">action</span> <span class="n">Return</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="na">tooltip</span> <span class="s2">"The loneliest number."</span>
|
||
|
||
<span class="k">text</span> <span class="n">GetTooltip</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This is intended to save boilerplate and make screens more readable. For
|
||
more information, see the <a class="reference internal" href="screen_actions.html#tooltips"><span class="std std-ref">Tooltips</span></a> section.</p>
|
||
</div>
|
||
<div class="section" id="id5">
|
||
<h3>Changes<a class="headerlink" href="#id5" title="Permalink to this headline"> link</a></h3>
|
||
<p>SSL and TLS support has been added to all platforms. This allows Ren'Py
|
||
games to make requests to secure web servers, perhaps in conjunction
|
||
with a Python library such as requests. This support is only included
|
||
in built distributions if imported at init time.</p>
|
||
<p>The new <a class="reference internal" href="im.html#im.Data" title="im.Data"><code class="xref py py-func docutils literal notranslate"><span class="pre">im.Data()</span></code></a> image manipulator creates an image from compressed
|
||
binary data, as might be downloaded from a web server.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.loadable_callback"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.loadable_callback</span></code></a> lets scripts inform Ren'Py about
|
||
additional loadable files.</p>
|
||
<p>Ren'Py will attempt to diagnose problems with pickling objects during
|
||
a save, and report an object that caused a pickling problem. (This is
|
||
best-effort, but tends to catch common problems.)</p>
|
||
<p>When a viewport is given scrollbars, Ren'Py will now offer its child
|
||
a large amount of space in the given direction. This prevents problems
|
||
with displayables drawn at or below the visible area of a viewport.</p>
|
||
<p>Ren'Py now resolves the ambiguity between the <a class="reference internal" href="style_properties.html#style-property-xpos"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xpos</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-xalign"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xalign</span></code></a>
|
||
style properties in favor of xpos, and similarly for other cases where both
|
||
more and less specific style properties are given to the same style.</p>
|
||
<p>Custom statements now take a label function that can return a custom label
|
||
for the statement. This allows the custom statements to be jumped to or
|
||
called.</p>
|
||
<p>The new config.gl_clear_color variable allows a creator to set the color
|
||
of the letterboxes and pillarboxes used when the screen is not filled.</p>
|
||
<p>Drag displayables (part of the drag and drop system) now support a bottom
|
||
method, that can be used to lower the drag to the bottom of its drg
|
||
group.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.cache_surfaces"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.cache_surfaces</span></code></a> variable, added in the last release, has
|
||
been documented. Setting this variable to False can reduce Ren'Py's
|
||
memory consumption, at the cost of of slowing down images used by multiple
|
||
image manipulators. (Which should be a rare case in modern Ren'Py.)</p>
|
||
<p>Variable and field munging (which change the name of a variable that begins with
|
||
__ to a file-specific value) now work inside string substitutions.</p>
|
||
<p>Viewports and vpgrids now support the pagekeys property, which allows one
|
||
to use the pageup and pagedown keys to scroll the viewport. The arrowkeys
|
||
property is now documented.</p>
|
||
<p>RAPT now compiles Java code using a source and target version of 1.6, which
|
||
allows it to be built on modern JDKs.</p>
|
||
</div>
|
||
<div class="section" id="id6">
|
||
<h3>Fixes<a class="headerlink" href="#id6" title="Permalink to this headline"> link</a></h3>
|
||
<p>An issue where screens could display incorrectly when compiled at different
|
||
times has been fixed. This could only show up under certain circumstances.</p>
|
||
<ul class="simple">
|
||
<li>The project has screens in multiple files.</li>
|
||
<li>The files were compiled at different times. (This can never be the case for
|
||
a released game, since all files are recompiled at the same time when
|
||
building distributions.)</li>
|
||
</ul>
|
||
<p>After upgrading to this release, the problem can be fixed by pressing "Force
|
||
Recompile" in the launcher. This can be done for any game in development, but
|
||
isn't necessary for released games.</p>
|
||
<p>There have been several improvements to the interactive director, allowing
|
||
it to work in more circumstances.</p>
|
||
<p>A race condition that could cause Ren'Py to lock up (causing a blank
|
||
screen to be displayed) on Android and iOS has been fixed. This was
|
||
introduced in 6.99.13.</p>
|
||
<p>In 6.99.13, a race condition caused Ren'Py to infrequently skip movie
|
||
playback entirely.</p>
|
||
<p>Ren'Py now supports the AltGr key.</p>
|
||
<p>Ren'Py now limits the amount of console output it logs, to prevent print
|
||
statements from consuming memory if the console is never displayed.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-13">
|
||
<span id="renpy-6-99-13"></span><h2>Ren'Py 6.99.13<a class="headerlink" href="#ren-py-6-99-13" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="tutorial-and-the-question">
|
||
<h3>Tutorial and The Question<a class="headerlink" href="#tutorial-and-the-question" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release includes updated versions of the Tutorial game and
|
||
"The Question", the example game that's bundled with Ren'Py.</p>
|
||
<p>The Tutorial game has been largely rewritten, and is now structured as a pair
|
||
lectures, the first covering the creation of a basic visual novel in Ren'Py,
|
||
and the second covering in-depth topics needed to create more advanced games.
|
||
The Tutorial has also lost content that is less relevant to modern Ren'Py,
|
||
focusing in on the features that are the best practice to use in new games.</p>
|
||
<p>The Tutorial now has over 250 examples, that can now be copied out of the
|
||
tutorial and into your own projects.</p>
|
||
<p>"The Question" has been rewritten with a new script by Lore, one that is more
|
||
appropriate for educational use than the original. It's also been updated
|
||
with new background, and to demonstrate best practices when writing Ren'Py
|
||
scripts.</p>
|
||
<p>Both games have been modernized with high-definition widescreen graphics
|
||
and use of the new default Ren'Py GUI.</p>
|
||
<p>Right now, the old tutorial is still distributed with Ren'Py, and is used
|
||
if when a translation is present for the old tutorial but not the new
|
||
tutorial.</p>
|
||
</div>
|
||
<div class="section" id="interactive-director">
|
||
<h3>Interactive Director<a class="headerlink" href="#interactive-director" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now ships with an built in interactive director tool. This tool
|
||
makes it possible to add the scene, show, hide, with, play, queue, stop,
|
||
and voice statements to Ren'Py from inside an under-development visual
|
||
novel, without having to change to a text editor and reload the project.
|
||
The interactive director can be accessed by pressing the D key (without
|
||
Shift) inside an unreleased game.</p>
|
||
<p>The interactive director had been distributed outside of Ren'Py, with
|
||
a license that made it free for noncommercial use. It's now part of Ren'Py,
|
||
and has the same license as the rest of Ren'Py, which allows for both
|
||
commercial and noncommercial use.</p>
|
||
</div>
|
||
<div class="section" id="new-gui">
|
||
<h3>New GUI<a class="headerlink" href="#new-gui" title="Permalink to this headline"> link</a></h3>
|
||
<p>A few changes have been made to the new GUI. Buttons have been brightened and
|
||
their text shrunk. Bars have been reduced in height somewhat. The intent is
|
||
to provide more room in menus, especially for game-specific preferences
|
||
on the preferences screen.</p>
|
||
<p>For newly-generated games, it is now possible to customize the location and
|
||
look of the namebox (the frame containing a character's name) on a character
|
||
by character basis. This is done by giving properties prefixed with namebox
|
||
to the Character. For example, the namebox_background property changes the
|
||
background of a namebox.</p>
|
||
</div>
|
||
<div class="section" id="raspberry-pi">
|
||
<h3>Raspberry Pi<a class="headerlink" href="#raspberry-pi" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now comes with experimental support for the Raspberry Pi platform.</p>
|
||
<p>The Raspberry Pi port is similar to the Android and iOS ports, both in its
|
||
limitations and how it's meant to run games rather than develop them. As with
|
||
all platforms, creators developing for the Raspberry Pi need to account for
|
||
the resources available to them and design their games accordingly.</p>
|
||
<p>That being said, The Question and the new Tutorial both run on a Raspberry Pi 3
|
||
computer costing $35.</p>
|
||
</div>
|
||
<div class="section" id="hyperlinks">
|
||
<h3>Hyperlinks<a class="headerlink" href="#hyperlinks" title="Permalink to this headline"> link</a></h3>
|
||
<p>Hyperlinks created with the <code class="docutils literal notranslate"><span class="pre">{a}</span></code> text tag now support jumping and calling
|
||
labels. A tag of the form <code class="docutils literal notranslate"><span class="pre">{a=jump:label}</span></code> jumps to the label, while one of
|
||
the form <code class="docutils literal notranslate"><span class="pre">{a=call:label}</span></code> ends the current statement and calls a label. There
|
||
are also <code class="docutils literal notranslate"><span class="pre">{a=show:screen}</span></code> and <code class="docutils literal notranslate"><span class="pre">{a=showmenu:screen}</span></code>, which show screens
|
||
in-game and in a menu context, respectively.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.hyperlink_protocol"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.hyperlink_protocol</span></code></a> variable determines the default
|
||
protocol for a hyperlink that has none. For example, if it's "jump", then
|
||
<code class="docutils literal notranslate"><span class="pre">{a=mylabel}</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">{a=jump:mylabel}</span></code>.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.hyperlink_handlers"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.hyperlink_handlers</span></code></a> variable is a dictionary mapping
|
||
protocols to functions, which can be used to add creator-defined protocol
|
||
handlers.</p>
|
||
<p>The size of a hyperlink is now inherited from the size of the enclosing text.
|
||
This makes hyperlinks work within text of a non-default size.</p>
|
||
</div>
|
||
<div class="section" id="say-with-arguments">
|
||
<h3>Say with Arguments<a class="headerlink" href="#say-with-arguments" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Ren'Py say statement now supports being passed arguments, which are
|
||
placed in parenthesis after the text to be spoken. For example:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="s2">"Hey!"</span> <span class="p">(</span><span class="n">what_size</span><span class="o">=</span><span class="mi">36</span><span class="p">,</span> <span class="n">what_color</span><span class="o">=</span><span class="s2">"#ffeeee"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>These arguments are first passed to config.say_argument_callback, and then
|
||
are passed to the character. The default implemention (in <a class="reference internal" href="dialogue.html#Character" title="Character"><code class="xref py py-func docutils literal notranslate"><span class="pre">Character()</span></code></a>)
|
||
creates a new character with the passed arguments, and uses that to display
|
||
the text.</p>
|
||
<p>One place this is handy is with jump hyperlinks and the new advance
|
||
argument to Character, which prevents text from being advanced directly.
|
||
It's now possible to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="s2">"Would you like to go {a=jump:living_room}west{/a} or {a=jump:kitchen}north{/a}?"</span> <span class="p">(</span><span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Which pauses execution until the player clicks on a hyperlink.</p>
|
||
</div>
|
||
<div class="section" id="translations">
|
||
<h3>Translations<a class="headerlink" href="#translations" title="Permalink to this headline"> link</a></h3>
|
||
<p>The launcher and default project have been translated into French, courtesy of
|
||
Alexandre Tranchant.</p>
|
||
<p>The launcher and default project have been translated into Brazilian Portugese,
|
||
courtesy of MrStalker.</p>
|
||
<p>The Indonesian and Simplified Chinese translations have been updated.</p>
|
||
</div>
|
||
<div class="section" id="other">
|
||
<h3>Other<a class="headerlink" href="#other" title="Permalink to this headline"> link</a></h3>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.preload_fonts"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.preload_fonts</span></code></a> variable can take a list of TrueType or
|
||
opentype font files to preload at Ren'Py stop. This prevents Ren'Py from
|
||
pausing animations when opening a new font.</p>
|
||
<p>Ren'Py now opens audio files in a second thread of execution. This prevents
|
||
animations from pausing when an audio file is played or loops from slow or
|
||
busy disks.</p>
|
||
<p>The new <a class="reference internal" href="displaying_images.html#renpy.get_attributes" title="renpy.get_attributes"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_attributes()</span></code></a> function can be called to retrieve the
|
||
attributes associated with an image tag on a layer.</p>
|
||
<p>When a file named projects.txt is present in the projects directory, it
|
||
is expected to contain a list of full paths to directories, one per line.
|
||
Those paths are treated as projects and displayed in the launcher.</p>
|
||
<p>There is a new <a class="reference internal" href="screen_actions.html#Call" title="Call"><code class="xref py py-func docutils literal notranslate"><span class="pre">Call()</span></code></a> action, that terminates the current statement
|
||
and calls a label. The Call action and the <a class="reference internal" href="statement_equivalents.html#renpy.call" title="renpy.call"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.call()</span></code></a> function take
|
||
a new <cite>from_current</cite> parameter, which causes them to return to the start
|
||
of the current statement, which could be used (very carefully) to call
|
||
an aside before returning to the main story.</p>
|
||
<p>The preference variables have been given their own page in the
|
||
documentation, one that clarifies it's better to use the default
|
||
statement to directly set the default value of a preference
|
||
variable.</p>
|
||
<p>The "steam" package has been renamed to "market", reflecting that it will
|
||
work just as well with other markets.</p>
|
||
<p>In ATL, interpolation statement with a warper now last one frame. This means
|
||
that the <code class="docutils literal notranslate"><span class="pre">pause</span> <span class="pre">0</span></code> statement now completes after one frame, rather than
|
||
instantaneously, allowing for single-frame animations. Please do not use this
|
||
to include subliminal messages in your game.</p>
|
||
<p>The show later at statement now persists transform state, much like other
|
||
statements that involve a transform. This shouldn't change much, but opens
|
||
the possibility of layer transforms that involve randomness.</p>
|
||
<p>The {nw} text tag now waits for voice and self-voicing to complete before
|
||
allowing text to advance.</p>
|
||
<p>The grid and vpgrid displayables now support the <a class="reference internal" href="style_properties.html#style-property-xspacing"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xspacing</span></code></a> and
|
||
<a class="reference internal" href="style_properties.html#style-property-yspacing"><code class="xref std std-propref docutils literal notranslate"><span class="pre">yspacing</span></code></a> style properties, which set the spacing in the horizontal
|
||
and vertical directions independently.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.character_id_prefixes"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.character_id_prefixes</span></code></a> variables contains a list of prefixes
|
||
that are used by a Character to style displayables. Similar to what, who, and
|
||
window, if "logo" is in this variable, properties like logo_xpos and logo_background
|
||
will cause the logo and background properties to be set on the displayable with
|
||
id "logo".</p>
|
||
<p>Ren'Py now supports the Python print function. Output printed with the print
|
||
function will go to the log.txt file and the Ren'Py console, which can be
|
||
accessed by typing Shift+O.</p>
|
||
<p>It is now possible to customize what happens when the Ignore button is
|
||
clicked on the exception reporting screen. This is done using the <a class="reference internal" href="store_variables.html#var-_ignore_action"><code class="xref std std-var docutils literal notranslate"><span class="pre">_ignore_action</span></code></a>
|
||
variable, which can be set to a Jump action that might clean up after the player
|
||
and start a turn again.</p>
|
||
<p>The Ren'Py set type now inherits from the Python set type, rather than the
|
||
obsolete sets.Set type. Set literals are now properly wrapped so that the
|
||
set participates in rollback.</p>
|
||
<p>The list of NVL-mode text blocks is cleared when the language is changed. This
|
||
prevents Ren'Py from showing a mix of text languages, so of which may be
|
||
nonsense in the current font.</p>
|
||
<p>The "text speed" and "auto-forward time" <a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal notranslate"><span class="pre">Preference()</span></code></a> values now take
|
||
a range argument, allowing the creator to specify a range.</p>
|
||
<p>The new <a class="reference internal" href="text.html#renpy.filter_text_tags" title="renpy.filter_text_tags"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.filter_text_tags()</span></code></a> function can be used to filter text
|
||
tags in a string. It's used to remove text tags in the history screen of the
|
||
default GUI.</p>
|
||
<p>In screen language, a block given to a use statement can now contain a
|
||
has statement.</p>
|
||
<p>When set to "auto", the <a class="reference internal" href="config.html#var-config.developer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.developer</span></code></a> variable is set to True or
|
||
False during the init phase. Previously, it was always true during the init
|
||
phase, and would only change once init is over.</p>
|
||
<p>When a position property is supplied to a viewport or vpgrid with vertical, horizontal,
|
||
or both kinds of scrollbars, the position property is passed to the side
|
||
container that holds the viewport and scrollbars. This makes it possible to
|
||
position viewports and vpgrids using the same syntax as other displayables.</p>
|
||
<p>Itch.io support has been improved. A problem that prevented uploading to
|
||
itch.io from Windows has been fixed. The table of channels to upload to
|
||
has been updated, and now takes advantage of butlers's new support for
|
||
uploading Linux bz2 and Android apk files.</p>
|
||
<p>Creator-defined statements can run a function at init time, in addition
|
||
to the function run when the statement executes normally. Creator-defined
|
||
statements can take a block of Ren'Py script that is parsed and can be
|
||
jumped to.</p>
|
||
<p>The time it takes to parse Ren'Py scripts has been dramatically reduced.</p>
|
||
<p>A missing _menu variable could cause Ren'Py's init phase error handling to
|
||
not report a relevant error. This has been fixed.</p>
|
||
<p>The PlayCharacterVoice action can now mark a button as selected while the
|
||
character voice is playing.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.add_python_directory" title="renpy.add_python_directory"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.add_python_directory()</span></code></a> function provides a way to add
|
||
subdirectories of the game directory to the Python path.</p>
|
||
<p>The Ren'Py documentation has been edited to remove the use of the word "code",
|
||
and replace it with less cryptic terminology.</p>
|
||
<p>It is now possible to support Ren'Py via Patreon. A link to a page with
|
||
sponsor information is in the launcher by default. It can be hidden in the
|
||
launcher preferences.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-12-4">
|
||
<span id="renpy-6-99-12-4"></span><h2>Ren'Py 6.99.12.4<a class="headerlink" href="#ren-py-6-99-12-4" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="console">
|
||
<h3>Console<a class="headerlink" href="#console" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Ren'Py console has been updated to match the neutral Ren'Py style, and
|
||
to add a number of new features:</p>
|
||
<ul class="simple">
|
||
<li>The console is now available during exception handling. (As always, it
|
||
accesses the global scope.)</li>
|
||
<li>The console history is kept as part of persistent data.</li>
|
||
<li>Watched variables are stored as part of save files, which means that the
|
||
watch is restored when the game is (automatically or manually) reloaded.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id7">
|
||
<h3>Other<a class="headerlink" href="#id7" title="Permalink to this headline"> link</a></h3>
|
||
<p>A regression (bug) introduced in version 6.99.4 that prevented the default
|
||
input screen (and hence renpy.input) from working has been fixed.</p>
|
||
<p>A memory alignment issue that could result in a SIGBUS crash on ARM-based
|
||
Android devices when playing video has been fixed.</p>
|
||
<p>Hide and replace animations are removed from Ren'Py when a rollback or
|
||
load occurs. This prevents hide animations from playing when a displayable
|
||
has not been showing.</p>
|
||
<p>Auto-forward mode is disabled when self-voicing is enabled, to prevent the
|
||
game from automatically advancing and making self-voicing information
|
||
obsolete.</p>
|
||
<p>When running with Steam support enabled, Ren'Py will query the Steam overlay
|
||
and redraw the screen when Steam asks for an update. (This should increase
|
||
the FPS of the Steam overlay.)</p>
|
||
<p>Fadeouts now span looping audio by default. Previously, a fadeout would come
|
||
to a stop at the end of an audio track.</p>
|
||
<p>Right-to-left (Arabic and Hebrew) language support has been enabled on the iOS
|
||
platform.</p>
|
||
<p>A bug in render clipping has been fixed. This generally manifested as 1-pixel
|
||
overlaps or open spaces when drawing frames and bars.</p>
|
||
<p>The Arabic, Indonesian, and Russian language translations have been updated.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-12-3">
|
||
<span id="renpy-6-99-12-3"></span><h2>Ren'Py 6.99.12.3<a class="headerlink" href="#ren-py-6-99-12-3" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="gui">
|
||
<h3>GUI<a class="headerlink" href="#gui" title="Permalink to this headline"> link</a></h3>
|
||
<p>It is now possible to systematically customize the look of different
|
||
kinds of text in Ren'Py. For example, one can now choose different sizes
|
||
for name, dialogue, interface, label and prompt text.</p>
|
||
<p>All text properties are now available through the gui system. For example,
|
||
gui.text_outlines can be used to make text outlined by default, while
|
||
gui.name_text_bold can be used to make character names bold.</p>
|
||
<p>To allow for the above two changes, some of the gui variable names have been renamed in
|
||
a more systematic manner. For example, gui.default_font has been renamed
|
||
gui.text_font, while gui.name_font has become gui.name_text_font.</p>
|
||
<p>It is now possible to outline gui text using variables like gui.text_outlines
|
||
and gui.interface_text_outlines.</p>
|
||
<p>Due to the design of the new GUI, the changes described in this section will
|
||
only take effect when a new game is created, or a game's GUI is updated.</p>
|
||
</div>
|
||
<div class="section" id="id8">
|
||
<h3>Translations<a class="headerlink" href="#id8" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Russian translation has been updated and modernized, thanks to Ria-kon
|
||
and Project Gardares.</p>
|
||
<p>The Italian translation has been updated and modernized, thanks to Gas.</p>
|
||
</div>
|
||
<div class="section" id="id9">
|
||
<h3>Other<a class="headerlink" href="#id9" title="Permalink to this headline"> link</a></h3>
|
||
<p>A crash on video playback on Android and iOS has been fixed.</p>
|
||
<p>The default encoding for non-Unicode strings in Ren'Py has been changed to
|
||
the filesystem encoding. This should address a series of encoding issues
|
||
that have occured on non-ascii systems since 6.99.12.</p>
|
||
<p>Ren'Py will no longer search for system-installed fonts when in developer
|
||
mode.</p>
|
||
<p>In some cases, Ren'Py duplicates displayables to ensure that displayable
|
||
state is not aliased. (For example, a transform is duplicated when it is
|
||
show, so that when it is shown a second time it will not retain its
|
||
state.) This copying has been optimized so it only occurs when necessary.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.replace_text"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.replace_text</span></code></a> callback now runs even if no custom
|
||
text tags have been defined.</p>
|
||
<p>An issue where text could be clipped when it was not necessary has been
|
||
fixed.</p>
|
||
<p>Viewports are now draggable when other focusable things are on the screen.</p>
|
||
<p>This release adds more functions to support the Interactive Director,
|
||
and basic support for attribute images.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-12">
|
||
<span id="renpy-6-99-12"></span><h2>Ren'Py 6.99.12<a class="headerlink" href="#ren-py-6-99-12" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="macintosh-support">
|
||
<h3>Macintosh Support<a class="headerlink" href="#macintosh-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release includes a number of changes to support macOS Sierra. These
|
||
include:</p>
|
||
<ul class="simple">
|
||
<li>The Macintosh application produced by Ren'Py is now read-only by default.
|
||
Save files will be placed in a system-global directory, while screenshots
|
||
will be written to the Desktop.</li>
|
||
<li>The organization of the Mac application has been changed to allow the
|
||
application to be code-signed.</li>
|
||
<li>When run on a Macintosh with Xcode installed and the <code class="xref std std-var docutils literal notranslate"><span class="pre">build.mac_identity</span></code>
|
||
variable set properly, Ren'Py will use the codesign tool to sign the package
|
||
before archiving it.</li>
|
||
<li>When run on a Macintosh, Ren'Py will create a .dmg file containing the
|
||
application. When Xcode is installed and <code class="xref std std-var docutils literal notranslate"><span class="pre">build.mac_identity</span></code> is set,
|
||
the package will be signed.</li>
|
||
</ul>
|
||
<p>The result of this is that, when a creator has a Macintosh computer and a
|
||
(free) Developer ID Application certificate, it is possible to create
|
||
distribute downloadable Ren'Py games that satisfy Gatekeeper and Gatekeeper
|
||
Path Randomization.</p>
|
||
<p>Since it is no longer possible to make a single distribution that runs on all
|
||
desktop platforms, the all (Windows, Mac, and Linux) package type has been
|
||
removed. It's been replace with a pc package type that supports Windows and
|
||
Linux, and the existing mac type that supports macOS. (There is a new steam
|
||
package type to help with app store bundles, but that's not recommended for
|
||
distribution to end users, since it won't work with macOS Sierra.)</p>
|
||
<p>The launcher has been modified so it can launch games created using older
|
||
versions of Ren'Py, even under Sierra. This can be done by placing the game
|
||
inside the Ren'Py directory, starting Ren'Py, choosing the game in the
|
||
launcher, and choosing "Launch Project".</p>
|
||
</div>
|
||
<div class="section" id="translation-changes">
|
||
<h3>Translation Changes<a class="headerlink" href="#translation-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>Support generating projects in non-English languages has been
|
||
improved. When a new project is created, it includes translations of the
|
||
interface strings into the project's language, allowing the translation
|
||
of text presented to the player by Ren'Py.</p>
|
||
<p>There is now a single place for translating Ren'Py – translating
|
||
the launcher also now translates the comments of a generated game. The process
|
||
of translating Ren'Py (the launcher and the GUI) is now documented
|
||
on the <a class="reference internal" href="translating_renpy.html"><span class="doc">Translating Ren'py</span></a> page. This page also
|
||
suggests a logical order in which strings should be translated.</p>
|
||
<p>Functions have been added for selecting an alternate font, changing defines
|
||
(such a text size), and copying files into a generated project, based on the
|
||
translation.</p>
|
||
<p>Translate python blocks are now executed before regular style statements
|
||
(translate style statements are executed after both). This change was
|
||
intended for and documented 6.99.11, but the implementation was flawed,
|
||
so a corrected implementation is used now.</p>
|
||
</div>
|
||
<div class="section" id="python-changes">
|
||
<h3>Python Changes<a class="headerlink" href="#python-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py will now compile Python code as if:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_imports</span><span class="p">,</span> <span class="n">print_function</span><span class="p">,</span> <span class="n">unicode_literals</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>was true. If compilation fails, it will then re-compile the code without these
|
||
settings. This is intended to allow new code to be written that will be
|
||
compatible with a future Python 3-based Ren'Py.</p>
|
||
<p>This should have minimal impact to existing code. The one case where it could
|
||
be a problem is if a character string is used to encode binary data, in
|
||
which case a binary string (b"string") should be explictly used.</p>
|
||
</div>
|
||
<div class="section" id="other-changes-and-fixes">
|
||
<h3>Other Changes and Fixes<a class="headerlink" href="#other-changes-and-fixes" title="Permalink to this headline"> link</a></h3>
|
||
<p>Dynamic images are now copied before a transition occurs. This makes it
|
||
possible to use dynamic variables and the with statement together, to
|
||
transition from one value of the variable to another.</p>
|
||
<p>Ren'Py now supports the WEBP image format.</p>
|
||
<p>This version of Ren'Py includes fixes to support the interactive director
|
||
tool.</p>
|
||
<p>The iOS app store is queried for the price of available in-app purchases
|
||
when the game starts. This allows the price of such purchases to be
|
||
presented without the game blocking.</p>
|
||
<p>The dialog window that is presented when accessing the iOS app store can
|
||
now be translated.</p>
|
||
<p>It is now possible to pass positional arguments to a game menu screen via
|
||
ShowMenu.</p>
|
||
<p>An issue introduced in 6.99.11 that could cause ATL Transforms to repeat has
|
||
been fixed.</p>
|
||
<p>A regression with first_fit that caused it to not work has been rectified.</p>
|
||
<p>An issue that cause ongoing sound playback to skip while a new sound sample
|
||
was loaded has been eliminated.</p>
|
||
<p>Support for the itch.io butler tool on Windows has been fixed.</p>
|
||
<p>Hiding the interface no longer stops voice playback.</p>
|
||
<p>The new <a class="reference internal" href="screen_actions.html#DisableAllInputValues" title="DisableAllInputValues"><code class="xref py py-func docutils literal notranslate"><span class="pre">DisableAllInputValues()</span></code></a> action can disable input values all at
|
||
once.</p>
|
||
<p>The mousewheel property of viewports and vpgrids supports a new value,
|
||
"change". When this value is given, the viewport only consumes mouse events
|
||
when the event would change the viewport. The motivating use of this is a
|
||
history window that dismisses when it reaches the bottom.</p>
|
||
<p>Namespaces may now contain dots in their names.</p>
|
||
<p>The new <a class="reference internal" href="screen_actions.html#QueueEvent" title="QueueEvent"><code class="xref py py-func docutils literal notranslate"><span class="pre">QueueEvent()</span></code></a> action queues a key binding event when activated.
|
||
This can be used to activate many bindings, including the new
|
||
'dismiss_unfocused' binding, which dismisses the current dialogue even
|
||
if it is not focused.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-11">
|
||
<span id="renpy-6-99-11"></span><h2>Ren'Py 6.99.11<a class="headerlink" href="#ren-py-6-99-11" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="new-in-game-gui">
|
||
<h3>New In-Game GUI<a class="headerlink" href="#new-in-game-gui" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py ships with a new default GUI. This system, used in-game to customize
|
||
the main menu, game menu, and in-game screens, replaces the old themes
|
||
and screens.rpy system with a new system that's intended to be an improvement
|
||
for every creator:</p>
|
||
<ul class="simple">
|
||
<li>For new creators, the new GUI is intended to look attractive (if generic)
|
||
out of the box. It is adaptable to a choice of sizes, and supports games
|
||
with light and dark backgrounds.</li>
|
||
<li>Intermediate creators will be able to more easily customize the new GUI,
|
||
without having to to work with screens and styles directly. It's now
|
||
possible to completely re-theme the GUI by changing variables in the <code class="docutils literal notranslate"><span class="pre">gui</span></code>
|
||
namespace, and editing template images.</li>
|
||
<li>Advanced creators will be able to replace the new gui entirely, either
|
||
piece by piece or wholesale. The new gui infrastructure resets all styles
|
||
to sensible defaults, making it easier to apply customization.</li>
|
||
</ul>
|
||
<p>There is also a <a class="reference internal" href="gui.html#gui"><span class="std std-ref">gui customization guide</span></a>, consisting of over 5,000
|
||
words of documentation and code, and 40 images, that explains how to
|
||
change the look of the GUI.</p>
|
||
<p>In addition, the new GUI adds support for a number of new features. These
|
||
features are generally implemented in a way that custom GUIs can take
|
||
advantage of. Highlights include:</p>
|
||
<ul class="simple">
|
||
<li>The GUI defaults to supporting 16:9 widescreen resolutions.</li>
|
||
<li>The new GUI is intended to support PCs and mobile devices in landscape
|
||
mode. Where appropriate, it conforms to iOS and Android interface
|
||
guidelines.</li>
|
||
<li>The new GUI includes native support for a history or readback
|
||
screen.</li>
|
||
<li>The new GUI includes support for assigning names to file pages,
|
||
allowing a certain amount of organization to be applied to
|
||
files.</li>
|
||
<li>The NVL and choice screens are now given lists of objects as parameters,
|
||
instead of tuples. (The objects also function as tuples, for compatibility
|
||
with old code.)</li>
|
||
<li>The yesno_prompt screen has been renamed to confirm.</li>
|
||
<li>Ren'Py supports the use of a ctc screen to display the click-to-continue
|
||
indicator.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="improved-platform-support">
|
||
<h3>Improved Platform Support<a class="headerlink" href="#improved-platform-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>There have been a number of fixes to Ren'Py's support for various
|
||
platforms.</p>
|
||
<p><strong>Windows</strong> HighDPI mode is detected properly when displaying the
|
||
presplash.</p>
|
||
<p><strong>Android</strong> The Android build system has undergone a rewrite, adding support
|
||
for x86, while retaining and modernizing support for ARM devices. RAPT now
|
||
included many dependencies, fixing Android build problems.</p>
|
||
<p>Ren'Py now supports immersive mode on Android's 4.4+. Immersive mode hides
|
||
the system UI, including the navigation bar, allowing Ren'Py to take up the
|
||
entire screen.</p>
|
||
<p><strong>Chrome OS</strong> Ren'Py now support ChromeOS by running the Android APKs via
|
||
the Android Runtime for Chrome tool.</p>
|
||
</div>
|
||
<div class="section" id="style-prefix-support">
|
||
<h3>Style Prefix Support<a class="headerlink" href="#style-prefix-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now supports the use of a prefix_ substitution with style properties.
|
||
Where previously, one was required to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">style</span> <span class="k">button</span><span class="p">:</span>
|
||
<span class="na">insensitive_background</span> <span class="s2">"insensitive_button.png"</span>
|
||
<span class="na">idle_background</span> <span class="s2">"idle_button.png"</span>
|
||
<span class="na">hover_background</span> <span class="s2">"hover_button.png"</span>
|
||
<span class="na">selected_idle_background</span> <span class="s2">"selected_idle_button.png"</span>
|
||
<span class="na">selected_hover_background</span> <span class="s2">"selected_hover_button.png"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>one can now write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">style</span> <span class="k">button</span><span class="p">:</span>
|
||
<span class="na">background</span> <span class="s2">"[prefix_]button.png"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This searches through prefixes in a manner similar to the way styles do.
|
||
When looking for a selected_idle_background, Ren'Py will search for
|
||
selected_idle_background.png, idle_background.png, and background.png</p>
|
||
</div>
|
||
<div class="section" id="style-properties">
|
||
<h3>Style Properties<a class="headerlink" href="#style-properties" title="Permalink to this headline"> link</a></h3>
|
||
<p>Windows and buttons can take the <a class="reference internal" href="style_properties.html#style-property-padding"><code class="xref std std-propref docutils literal notranslate"><span class="pre">padding</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-margin"><code class="xref std std-propref docutils literal notranslate"><span class="pre">margin</span></code></a>
|
||
style properties. These properties can take a tuple that gives the
|
||
margin and padding on all four sides.</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-base_bar"><code class="xref std std-propref docutils literal notranslate"><span class="pre">base_bar</span></code></a> style property sets the left and right (or
|
||
top and bottom) bars to the same value. It can be to set the background
|
||
of a slider or scrollbar the uses a thumb image.</p>
|
||
<p>The <a class="reference internal" href="style_properties.html#style-property-xfit"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xfit</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-yfit"><code class="xref std std-propref docutils literal notranslate"><span class="pre">yfit</span></code></a> style properties can be given to
|
||
the <a class="reference internal" href="screens.html#sl-fixed"><span class="std std-ref">fixed</span></a> screen language statement and <a class="reference internal" href="displayables.html#Fixed" title="Fixed"><code class="xref py py-func docutils literal notranslate"><span class="pre">Fixed()</span></code></a>
|
||
displayable. When a fit property is true, the fixed shrinks in the given
|
||
axis to fit all child displayables.</p>
|
||
<p>Buttons and Windows now fully respect the <a class="reference internal" href="style_properties.html#style-property-xmaximum"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xmaximum</span></code></a> and
|
||
<a class="reference internal" href="style_properties.html#style-property-ymaximum"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ymaximum</span></code></a> style properties.</p>
|
||
<p>There is now a <a class="reference internal" href="style_properties.html#style-property-offset"><code class="xref std std-propref docutils literal notranslate"><span class="pre">offset</span></code></a> style property, which sets the
|
||
<a class="reference internal" href="style_properties.html#style-property-xoffset"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xoffset</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-yoffset"><code class="xref std std-propref docutils literal notranslate"><span class="pre">yoffset</span></code></a> properties to the first and
|
||
second components of a tuple.</p>
|
||
</div>
|
||
<div class="section" id="translate-and-style-statement-order-changes">
|
||
<h3>Translate and Style Statement Order Changes<a class="headerlink" href="#translate-and-style-statement-order-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The <a class="reference internal" href="config.html#var-config.defer_styles"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.defer_styles</span></code></a> variable has been added to determine if
|
||
style execution should be deferred, as described below. If
|
||
config.defer_styles is true when style evaluation would have
|
||
occurred, that style is put on a deferred list. The <a class="reference internal" href="gui_advanced.html#gui.init" title="gui.init"><code class="xref py py-func docutils literal notranslate"><span class="pre">gui.init()</span></code></a>
|
||
function called by the new GUI sets this variable to true.</p>
|
||
<p>To facilitate translations customizing the fonts of the new GUI, the order of
|
||
execution of <code class="docutils literal notranslate"><span class="pre">translate</span> <span class="pre">python</span></code>, <code class="docutils literal notranslate"><span class="pre">style</span></code> and <code class="docutils literal notranslate"><span class="pre">translate</span> <span class="pre">style</span></code>
|
||
statements has been changed. When the game starts (after all statements
|
||
have run), or when the language changes, the following steps occur.</p>
|
||
<ol class="arabic simple">
|
||
<li>The <code class="docutils literal notranslate"><span class="pre">gui</span></code> named store is cleaned to its state at the end if init.
|
||
(This is the store that all variables defined with gui.`name` live in.)</li>
|
||
<li>All <code class="docutils literal notranslate"><span class="pre">translate</span></code> <cite>language</cite> <code class="docutils literal notranslate"><span class="pre">python</span></code> statements are run, where <cite>language</cite>
|
||
is the current language.</li>
|
||
<li>All deferred <code class="docutils literal notranslate"><span class="pre">style</span></code> statements are run.</li>
|
||
<li>All <code class="docutils literal notranslate"><span class="pre">translate</span></code> <cite>language</cite> <code class="docutils literal notranslate"><span class="pre">style</span></code> statement are run, where <cite>language</cite>
|
||
is the current language. (If not None.)</li>
|
||
<li>The callbacks in <code class="xref std std-var docutils literal notranslate"><span class="pre">config.change_language_callbacks</span></code> are called.</li>
|
||
</ol>
|
||
<p>Ren'Py can be made to return to the old behavior (in which only <code class="docutils literal notranslate"><span class="pre">translate</span></code>
|
||
<cite>language</cite> <code class="docutils literal notranslate"><span class="pre">style</span></code>, <code class="docutils literal notranslate"><span class="pre">translate</span></code> <cite>language</cite> <code class="docutils literal notranslate"><span class="pre">python</span></code>, and callbacks
|
||
are executed) by setting <a class="reference internal" href="config.html#var-config.new_translate_order"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.new_translate_order</span></code></a> to False.</p>
|
||
</div>
|
||
<div class="section" id="local-labels">
|
||
<h3>Local Labels<a class="headerlink" href="#local-labels" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now supports labels scoped to inside another label. It's possible to
|
||
write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">label</span> <span class="n">day1</span><span class="p">:</span>
|
||
|
||
<span class="k">menu</span><span class="p">:</span>
|
||
<span class="s2">"Should I sleep in?"</span>
|
||
|
||
<span class="s2">"Yes"</span><span class="p">:</span>
|
||
<span class="k">jump</span> <span class="o">.</span><span class="n">afternoon</span>
|
||
|
||
<span class="s2">"No"</span><span class="p">:</span>
|
||
<span class="k">jump</span> <span class="o">.</span><span class="n">morning</span>
|
||
|
||
<span class="k">label</span> <span class="o">.</span><span class="n">morning</span><span class="p">:</span>
|
||
|
||
<span class="s2">"It's the morning."</span>
|
||
|
||
<span class="k">label</span> <span class="o">.</span><span class="n">afternoon</span><span class="p">:</span>
|
||
|
||
<span class="s2">"It's the afternoon."</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>In this code, the .morning and .afternoon labels can be jumped to directly
|
||
from code that is immediately after the day1 label, or by jumping to
|
||
day1.morning or day1.afternoon from other code.</p>
|
||
</div>
|
||
<div class="section" id="transforms">
|
||
<h3>Transforms<a class="headerlink" href="#transforms" title="Permalink to this headline"> link</a></h3>
|
||
<p>Transforms now support <a class="reference internal" href="atl.html#transform-property-xtile"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">xtile</span></code></a> and <a class="reference internal" href="atl.html#transform-property-ytile"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">ytile</span></code></a> transform
|
||
properties. These properties allow the underlying displayable to
|
||
be tiled multiple times.</p>
|
||
<p>Transforms now support <a class="reference internal" href="atl.html#transform-property-xpan"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">xpan</span></code></a> and <a class="reference internal" href="atl.html#transform-property-ypan"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">ypan</span></code></a> transform
|
||
properties. These properties take an angle (between 0 and 360 degrees,
|
||
but angles outside that are clamped to that range). The angle is used to
|
||
pan the image horizontally or vertically by that amount. This makes it
|
||
possible to simulate a 360 degree panoramic image.</p>
|
||
</div>
|
||
<div class="section" id="id10">
|
||
<h3>Translations<a class="headerlink" href="#id10" title="Permalink to this headline"> link</a></h3>
|
||
<p>When generating a new project, all of the strings in the new game are
|
||
translated using translations taken from the launcher project.</p>
|
||
<p>A Vietnamese translation of the launcher and tutorial have been added
|
||
to Ren'Py. Thanks to Thuong Nguyen Huu for contributing it.</p>
|
||
<p>A Indonesian translation of the launcher and default project has been
|
||
added to Ren'Py. Thanks to Pratomo Asta Nugraha for contributing it.</p>
|
||
<p>Ren'Py can now automatically generate a piglatin translation for test
|
||
purposes.</p>
|
||
</div>
|
||
<div class="section" id="id11">
|
||
<h3>Other<a class="headerlink" href="#id11" title="Permalink to this headline"> link</a></h3>
|
||
<p>The new nvl_narrator character can be used to as the narrator
|
||
while in NVL-mode.</p>
|
||
<p>The define statement can be used to define variables that are also
|
||
Ren'Py keywords. For example, "define menu = nvl_menu" now works.</p>
|
||
<p>A <a class="reference internal" href="displayables.html#Frame" title="Frame"><code class="xref py py-func docutils literal notranslate"><span class="pre">Frame()</span></code></a> can now be given a <a class="reference internal" href="displayables.html#Borders" title="Borders"><code class="xref py py-func docutils literal notranslate"><span class="pre">Borders()</span></code></a> object, that
|
||
encapsulates the borders of a Frame into a single object. Borders
|
||
objects also have a padding field that can be passed into the new
|
||
<a class="reference internal" href="style_properties.html#style-property-padding"><code class="xref std std-propref docutils literal notranslate"><span class="pre">padding</span></code></a> style property.</p>
|
||
<p>Buttons, textbuttons, imagebuttons, and hotspots now take
|
||
<cite>selected</cite> and <cite>sensitive</cite> properties that directly control if the
|
||
button is selected or sensitive.</p>
|
||
<p>Buttons, textbuttons, imagebuttons, and hotspots take <cite>keysym</cite> and
|
||
<cite>alternate_keysym</cite> bindings, that make it possible to assign keys to the
|
||
buttons. When the given key is pressed, the action or alternate
|
||
action is run.</p>
|
||
<p>Ren'Py now supports extracting string translations from one project and
|
||
applying them to another project. The translations can also be applied in
|
||
reverse order, turning an English -> Russian interface translation into
|
||
a Russian -> English translation.</p>
|
||
<p>Viewports and vpgrids now support an arrowkeys property, that makes the
|
||
viewport scrollable using arrow keys and a controller d-pad.</p>
|
||
<p>Viewports and vpgrids now support horizontal scrolling via the mouse
|
||
wheel, by setting their <cite>mousewheel</cite> parameter to "horizontal".</p>
|
||
<p>InputValues now take a returnable property, that causes their value to be
|
||
returned when enter is pressed.</p>
|
||
<p>Ren'Py support a <a class="reference internal" href="other.html#renpy.get_refresh_rate" title="renpy.get_refresh_rate"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_refresh_rate()</span></code></a> function, which returns the
|
||
referesh rate of the primary screen. This allows games using nearest neighbor
|
||
mode to move at a whole-pixel rate – just like a Commodore 64 did.</p>
|
||
<p>Ren'Py can now automatically upload your game to itch.io, if
|
||
<a class="reference internal" href="build.html#var-build.itch_project"><code class="xref std std-var docutils literal notranslate"><span class="pre">build.itch_project</span></code></a> is set.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.after_load_callbacks"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.after_load_callbacks</span></code></a> can be given callback functions
|
||
to run once a load has been completed.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.tts_voice"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.tts_voice</span></code></a> variable has been added, to allow for a
|
||
platform-specific choice of text-to-speech voice to use.</p>
|
||
<p><a class="reference internal" href="config.html#var-config.quit_action"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.quit_action</span></code></a> now defaults to <code class="docutils literal notranslate"><span class="pre">Quit()</span></code>, which will display
|
||
the quit prompt over the in-game interface.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.afm_voice_delay"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.afm_voice_delay</span></code></a> has been added, and allows a pause to
|
||
occur after the voice finishes in auto-forward mode, before advancing the
|
||
text.</p>
|
||
<p>The new "video sprites" <a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal notranslate"><span class="pre">Preference()</span></code></a> makes it possible to disable
|
||
video sprites (and use fallback images) on hardware too slow to support
|
||
them.</p>
|
||
<p>The progress indicator now can be accessed using the F2 key, in addition to
|
||
the Shift+Alt+P binding. The latter binding has been fixed to work reliably
|
||
on PC platforms.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-10">
|
||
<h2>Ren'Py 6.99.10<a class="headerlink" href="#ren-py-6-99-10" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="id12">
|
||
<h3>Fixes<a class="headerlink" href="#id12" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release contains multiple fixes to regressions that affected some, but not
|
||
all, players and creators. Upgrading from Ren'Py 6.99.9 is strongly recommended.</p>
|
||
<ul class="simple">
|
||
<li>Problems opening a DirectInput gamepad or joystick in exclusive mode could
|
||
prevent Ren'Py from starting.</li>
|
||
<li>A failure to preload a library prevented Ren'Py from starting on some
|
||
Android devices.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="translation">
|
||
<h3>Translation<a class="headerlink" href="#translation" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release features a new Greek translation of the launcher, contributed by
|
||
George Economidis.</p>
|
||
</div>
|
||
<div class="section" id="other-changes">
|
||
<h3>Other Changes<a class="headerlink" href="#other-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The <a class="reference internal" href="screens.html#sl-input"><span class="std std-ref">input</span></a> widget now accepts
|
||
<a class="reference internal" href="screen_actions.html#input-values"><span class="std std-ref">input values</span></a> Input values allow an input to
|
||
directly update a variable, field, or dict, and also make it possible
|
||
to have multiple inputs displayed at the same time.</p>
|
||
<p>The new <code class="xref std std-propref docutils literal notranslate"><span class="pre">key_event</span></code> style property controls when events are
|
||
passed to the children of a button. This may need to be set to true
|
||
when a button controls the focus of an input value.</p>
|
||
<p>The new <a class="reference internal" href="screens.html#sl-vpgrid"><span class="std std-ref">vpgrid</span></a> widget combines aspects of a viewport
|
||
and a grid with more efficient rendering. Given the requirement that all
|
||
elements of the grid are the same size, only elements that are visible to
|
||
the player will be rendered.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">yesno_prompt</span></code> screen has been renamed to <code class="docutils literal notranslate"><span class="pre">confirm</span></code>, with the old
|
||
name being retained as an alias when a <a class="reference internal" href="screen_special.html#confirm-screen"><span class="std std-ref">confirm screen</span></a>
|
||
is not present.</p>
|
||
<p>A screen named <code class="docutils literal notranslate"><span class="pre">help</span></code> will now be used by the <a class="reference internal" href="screen_actions.html#Help" title="Help"><code class="xref py py-func docutils literal notranslate"><span class="pre">Help()</span></code></a> action if
|
||
it exists.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">audio</span></code> channel has been changed to play only one sound at a time
|
||
while skipping through the game, to prevent a cacophony of sound while
|
||
the player skips.</p>
|
||
<p>The new <a class="reference internal" href="python.html#init-offset-statement"><span class="std std-ref">init offset</span></a> statement makes it
|
||
possible to apply a priority offset to statements that run at init
|
||
time, including <code class="docutils literal notranslate"><span class="pre">init</span></code>, <code class="docutils literal notranslate"><span class="pre">init</span> <span class="pre">python</span></code>, <code class="docutils literal notranslate"><span class="pre">define</span></code>, <code class="docutils literal notranslate"><span class="pre">default</span></code>,
|
||
<code class="docutils literal notranslate"><span class="pre">style</span></code>, and <code class="docutils literal notranslate"><span class="pre">transform</span></code>.</p>
|
||
<p>The default init priority of <code class="docutils literal notranslate"><span class="pre">image</span></code> statements has been changed from 990
|
||
to 500, so that larger offsets can be used with <a class="reference internal" href="python.html#init-offset-statement"><span class="std std-ref">init offset</span></a>
|
||
without sending their init priority out of the range -999 to 999.</p>
|
||
<p>The <cite>style_group</cite> ui property has been renamed to <cite>style_prefix</cite>, to make
|
||
its function more apparent. (The old name still works, for compatibility with
|
||
older code.) A new <cite>style_suffix</cite> ui property has been added, allowing
|
||
the same screen code to be reused with multiple style prefixes.</p>
|
||
<p>The <cite>style_prefix</cite> ui property may now be applied to transcluded blocks.</p>
|
||
<p>The new <a class="reference internal" href="screen_actions.html#GamepadExists" title="GamepadExists"><code class="xref py py-func docutils literal notranslate"><span class="pre">GamepadExists()</span></code></a> function and <a class="reference internal" href="screen_actions.html#GamepadCalibrate" title="GamepadCalibrate"><code class="xref py py-func docutils literal notranslate"><span class="pre">GamepadCalibrate()</span></code></a>
|
||
action expose gamepad detection and calibration to screen language.</p>
|
||
<p>The time required to take a screenshot has been reduced by decreasing the
|
||
compression level used.</p>
|
||
<p>The Android SDK downloaded by Ren'Py has been updated to r24.4.1.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-9">
|
||
<h2>Ren'Py 6.99.9<a class="headerlink" href="#ren-py-6-99-9" title="Permalink to this headline"> link</a></h2>
|
||
<p>Ren'Py's audio and movie playback support has been completely rewritten,
|
||
allowing for the addition of many features that would not have been possible
|
||
without this rewrite. These include:</p>
|
||
<ul class="simple">
|
||
<li><a class="reference internal" href="audio.html#partial-playback"><span class="std std-ref">Partial playback</span></a> of audio files, using a concise
|
||
notation. This allows the creator to specify start and end points, and
|
||
a loop point at which playback continues on the second and later
|
||
iterations. A similar notation can be used to queue silence.</li>
|
||
<li>A new default channel named <code class="docutils literal notranslate"><span class="pre">audio</span></code> has been added. Unlike the <code class="docutils literal notranslate"><span class="pre">sound</span></code>
|
||
channel, the audio channel supports playing back multiple audio files
|
||
simultaneously (limited by system performance).</li>
|
||
<li>The new <a class="reference internal" href="screen_actions.html#PauseAudio" title="PauseAudio"><code class="xref py py-func docutils literal notranslate"><span class="pre">PauseAudio()</span></code></a> action can pause and unpause audio playback
|
||
as required.</li>
|
||
<li>The new <a class="reference internal" href="audio.html#renpy.music.get_pos" title="renpy.music.get_pos"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.music.get_pos()</span></code></a> and <a class="reference internal" href="audio.html#renpy.music.get_duration" title="renpy.music.get_duration"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.music.get_duration()</span></code></a>
|
||
functions return the curent playback position and total duration of
|
||
an audio channel, respectively. <a class="reference internal" href="screen_actions.html#AudioPositionValue" title="AudioPositionValue"><code class="xref py py-func docutils literal notranslate"><span class="pre">AudioPositionValue()</span></code></a> can be
|
||
used to display these as the value of an animated bar.</li>
|
||
<li><a class="reference internal" href="movie.html#movie"><span class="std std-ref">Movie</span></a> playback now supports playing multiple movies at the
|
||
same time, provided all movies share the same framreate, and limited
|
||
by system performance.</li>
|
||
<li>Movies now loop seamlessly at the end of playback.</li>
|
||
<li>Ren'Py now supports movie sprites, which are sprites backed by two movies,
|
||
one containing color information and the other containing the alpha channel.
|
||
Movie sprites are a superior alternative to animated gifs, as modern movie
|
||
formats provided greater color depth and far superior compression. Movie
|
||
sprites are supported on all platforms, including mobile platforms,
|
||
subject to system performance.</li>
|
||
<li>Movies are no longer required to contain an audio track for synchonization.</li>
|
||
<li>It is now possible to play back a movie file on an audio channel, in which
|
||
case only the audio track is played.</li>
|
||
</ul>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">play</span></code> and <code class="docutils literal notranslate"><span class="pre">queue</span></code> statements now evaluate filename expressions
|
||
in the <a class="reference internal" href="audio.html#audio-namespace"><span class="std std-ref">audio namespace</span></a>, which makes it possible
|
||
to alias a short name to an audio file.</p>
|
||
<p>The default audio sample rate has been increased to 48 kilohertz,
|
||
which should produce a slight increase in audio quality.</p>
|
||
<p>Audio and movie playback support now uses ffmpeg 3.0, and support
|
||
for the VP9 video and Opus audio codecs has been added to the default
|
||
distributions. The Opus codec can automatically adjust to speech and music,
|
||
and should be considered by all creators.</p>
|
||
<div class="section" id="bug-fixes">
|
||
<h3>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline"> link</a></h3>
|
||
<p>A bug has been fixed that caused fullscreen windows to be displayed at
|
||
the wrong side on the Microsoft Windows platform when system-wide DPI
|
||
scaling is enabled.</p>
|
||
<p>The Drag.snap animation has been fixed.</p>
|
||
</div>
|
||
<div class="section" id="id13">
|
||
<h3>Other<a class="headerlink" href="#id13" title="Permalink to this headline"> link</a></h3>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.speaking_attribute"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.speaking_attribute</span></code></a> variable can be used to
|
||
automatically apply an attribute to an image when a character
|
||
starts speaking, and to remove that attribute when the</p>
|
||
<p>Say statements with image attributes now respect <a class="reference internal" href="config.html#var-config.tag_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.tag_layer</span></code></a>.</p>
|
||
<p>This release includes experimental support for having an Android
|
||
package be converted into a Chrome application using the ARC welder
|
||
tool.</p>
|
||
<p>Unarchived directories are now a documented format that can be used
|
||
when building <a class="reference internal" href="build.html#packages"><span class="std std-ref">packages</span></a>.</p>
|
||
<p>Edgescrolling stops when the mouse leaves a viewport.</p>
|
||
<p>It is now possible to translate the prompts that occur when self-voicing
|
||
is enabled. A self-voicing debug mode can be accessed by typing
|
||
Shift+Alt+D.</p>
|
||
<p>The <a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal notranslate"><span class="pre">Preference()</span></code></a> action can now adjust the volume of non-standard
|
||
mixers.</p>
|
||
<p>There is now a new {alpha} text tag, which can control the alpha channel
|
||
of text on a character-by-character basis.</p>
|
||
<p>Images that are included using the {image} text tag are now aligned
|
||
using the usual placement rules. (That is, ypos, yoffset, and yanchor
|
||
now work if given when defining the image.)</p>
|
||
<p>The <a class="reference internal" href="rooms.html#EndReplay" title="EndReplay"><code class="xref py py-func docutils literal notranslate"><span class="pre">EndReplay()</span></code></a> action now takes a <cite>confirm</cite> argument, which asks
|
||
the player if they want to end the replay.</p>
|
||
<p>The new <a class="reference internal" href="screen_python.html#renpy.run" title="renpy.run"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.run()</span></code></a> function provides a documented way to run an
|
||
action or list of actions.</p>
|
||
<p>The sharpness of vertically-oriented text has been improved.</p>
|
||
<p>The <a class="reference internal" href="style_properties.html#style-property-adjust_spacing"><code class="xref std std-propref docutils literal notranslate"><span class="pre">adjust_spacing</span></code></a> style property is now avialable through
|
||
screen language.</p>
|
||
<p>The <cite>confirm</cite> argument of the <a class="reference internal" href="screen_actions.html#Quit" title="Quit"><code class="xref py py-func docutils literal notranslate"><span class="pre">Quit()</span></code></a> action now defaults to None,
|
||
which prompts the player to confirm a quit if and only if the player is
|
||
not at the main menu.</p>
|
||
<p>A new "rollback side" <a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal notranslate"><span class="pre">Preference()</span></code></a> allows Ren'Py to roll back when
|
||
the user touches a side of the screen. By default, this is the left side
|
||
on mobile platforms, and disabled on the dektop.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.developer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.developer</span></code></a> now defaults to "auto". When set to auto,
|
||
config.developer will be true during development, and false once the game
|
||
is being distributed.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-8">
|
||
<h2>Ren'Py 6.99.8<a class="headerlink" href="#ren-py-6-99-8" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="tags-layers-and-transforms">
|
||
<h3>Tags, Layers, and Transforms<a class="headerlink" href="#tags-layers-and-transforms" title="Permalink to this headline"> link</a></h3>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.tag_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.tag_layer</span></code></a> variable makes it possible to specify the
|
||
default layer used by an image on a per image tag basis. This makes it
|
||
possible to place an image on its own layer without having to use onlayer.
|
||
The new <a class="reference internal" href="config.html#var-config.default_tag_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.default_tag_layer</span></code></a> variable specifies the default layer
|
||
for unknown tags.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.add_layer" title="renpy.add_layer"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.add_layer()</span></code></a> function provides as way to add a new
|
||
layer above or below the existing layers, if and only if the layer
|
||
does not already exist.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.tag_transform"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.tag_transform</span></code></a> variable makes it possible to specify a
|
||
default transform (or list of transforms) to use when a transform is not
|
||
provided as part of a show or scene statement.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.tag_zorder"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.tag_zorder</span></code></a> makes it possible to specify a default
|
||
zorder that's used for a tag when no other zorder is used.</p>
|
||
</div>
|
||
<div class="section" id="easing-functions">
|
||
<h3>Easing Functions<a class="headerlink" href="#easing-functions" title="Permalink to this headline"> link</a></h3>
|
||
<p>Thanks to Nyaatrap, Ren'Py now supports Robert Penner's easing functions
|
||
in ATL. These functions speed up and slow down interpolations (and in some
|
||
cases, can cause interpolations to overshoot their targets), in order to
|
||
provide more pleasing and natural motion.</p>
|
||
<p>The new easing functions are documented in the <a class="reference internal" href="atl.html#warpers"><span class="std std-ref">Warpers</span></a> section.</p>
|
||
</div>
|
||
<div class="section" id="side-images">
|
||
<h3>Side Images<a class="headerlink" href="#side-images" title="Permalink to this headline"> link</a></h3>
|
||
<p>New-style side image functionality (using images with the side tag) has been
|
||
overhauled. It's now possible to apply an ATL transform, and hence a transition,
|
||
whenever the side image changes. Different transforms can be used
|
||
in the case where the character changes and the case where it stays the same.</p>
|
||
<p>See the <a class="reference internal" href="side_image.html"><span class="doc">Side Images</span></a> section for complete documentation.</p>
|
||
</div>
|
||
<div class="section" id="pushmove-transitions">
|
||
<h3>PushMove Transitions<a class="headerlink" href="#pushmove-transitions" title="Permalink to this headline"> link</a></h3>
|
||
<p>A new type of transition - <a class="reference internal" href="transitions.html#PushMove" title="PushMove"><code class="xref py py-func docutils literal notranslate"><span class="pre">PushMove()</span></code></a> - has been added to Ren'Py, along
|
||
with the <a class="reference internal" href="transitions.html#var-pushright"><code class="xref std std-var docutils literal notranslate"><span class="pre">pushright</span></code></a> (or pushleft, pushtop, pushbottom)</p>
|
||
</div>
|
||
<div class="section" id="id14">
|
||
<h3>Other<a class="headerlink" href="#id14" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixed a major bug where Ren'Py would put an extra space at the end of each
|
||
text block. This could change the layout of text (and hence other portions of
|
||
the interface.) The fix reverts the change that added the space, causing it
|
||
to be smaller than in 6.99.7 (but the same size as 6.99.6 and before.)</p>
|
||
<p>Ren'Py now supports HighDPI ("retina") displays on the Windows platform,
|
||
displaying text at the native screen resolution.</p>
|
||
<p>Ren'Py properly maximizes on most desktop platforms. (Everything Windows 7
|
||
and below, which have a start orb that can overlap the Ren'Py window.)</p>
|
||
<p>Added the <a class="reference internal" href="other.html#renpy.is_start_interact" title="renpy.is_start_interact"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.is_start_interact()</span></code></a>, which can be called in a
|
||
per_interact method to determine if this is the first pass through an
|
||
interaction (as opposed to a restarted interaction).</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.maximum_framerate" title="renpy.maximum_framerate"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.maximum_framerate()</span></code></a> function increases the framerate
|
||
Ren'Py draws at for a given period of time. Ren'Py's Steam support
|
||
uses this to ensure the Steam overlay animates smoothly.</p>
|
||
<p>It's now possible to use the <a class="reference internal" href="preferences.html#var-config.default_music_volume"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.default_music_volume</span></code></a>,
|
||
<a class="reference internal" href="preferences.html#var-config.default_sfx_volume"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.default_sfx_volume</span></code></a>, and <a class="reference internal" href="preferences.html#var-config.default_voice_volume"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.default_voice_volume</span></code></a>
|
||
variables to set the default values of the various mixers.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.overlay_screens"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.overlay_screens</span></code></a> variable takes a list of screens
|
||
that are displayed whenever a pre-screens overlay would be displayed,
|
||
and hidden otherwise. This makes it easy to have a screen as a permanent
|
||
part of the in-game interface, even if the game can be entered from
|
||
multiple places (like a Replay).</p>
|
||
<p>Ren'Py now clears focus (causing unhover events to trigger) when the mouse
|
||
leaves the game window.</p>
|
||
<p>The hbox and vbox displayables now support the <a class="reference internal" href="style_properties.html#style-property-xminimum"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xminimum</span></code></a> and
|
||
<a class="reference internal" href="style_properties.html#style-property-yminimum"><code class="xref std std-propref docutils literal notranslate"><span class="pre">yminimum</span></code></a> style properties (and hence, <a class="reference internal" href="style_properties.html#style-property-xsize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xsize</span></code></a>,
|
||
<a class="reference internal" href="style_properties.html#style-property-ysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ysize</span></code></a>, <a class="reference internal" href="style_properties.html#style-property-xysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xysize</span></code></a>, and <a class="reference internal" href="style_properties.html#style-property-area"><code class="xref std std-propref docutils literal notranslate"><span class="pre">area</span></code></a> properties.)</p>
|
||
<p>The new <a class="reference internal" href="voice.html#PlayCharacterVoice" title="PlayCharacterVoice"><code class="xref py py-func docutils literal notranslate"><span class="pre">PlayCharacterVoice()</span></code></a> action makes it possible to play
|
||
a sample of a character's voice at that character's voice volume level.</p>
|
||
<p>The Extract Dialogue screen now includes a number of additional options.</p>
|
||
<p>The Traditional Chinese translation has been updated.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-7">
|
||
<h2>Ren'Py 6.99.7<a class="headerlink" href="#ren-py-6-99-7" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="dynamic-images">
|
||
<h3>Dynamic Images<a class="headerlink" href="#dynamic-images" title="Permalink to this headline"> link</a></h3>
|
||
<p>Dynamic images have been added to Ren'Py. It's now possible to write
|
||
code like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">image</span> <span class="n">eileen</span> <span class="n">happy</span> <span class="o">=</span> <span class="s2">"eileen [outfit] happy"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This code creates a displayable that interpolates the value of the
|
||
<code class="docutils literal notranslate"><span class="pre">output</span></code> variable at least once per interaction. The interpolated
|
||
string is then used to find another displayable to use.</p>
|
||
<p>Dynamic images can be used anywhere a displayable is expected, and the
|
||
string can be an string that resolves to a displayable. One possible use
|
||
might be to replace boring and repetitive condition switches in dress-up
|
||
games with code like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">image</span> <span class="n">eileen</span> <span class="n">dressup</span> <span class="o">=</span> <span class="n">LiveComposite</span><span class="p">(</span>
|
||
<span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">600</span><span class="p">),</span>
|
||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s2">"eileen_base.png"</span><span class="p">,</span>
|
||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s2">"eileen_top_[top].png"</span><span class="p">,</span>
|
||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s2">"eileen_bottom_[bottom].png"</span><span class="p">,</span>
|
||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s2">"eileen_accessory_[accessory].png"</span><span class="p">,</span>
|
||
<span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Dynamic image can be used in a screen language add statement:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">item</span> <span class="k">in</span> <span class="n">inventory</span><span class="p">:</span>
|
||
<span class="k">add</span> <span class="s2">"store_[item].png"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>When so used, the variables are looked up in both the screen and global
|
||
scopes.</p>
|
||
</div>
|
||
<div class="section" id="define-improvements">
|
||
<h3>Define Improvements<a class="headerlink" href="#define-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>The define statement can now be used to define config and persistent
|
||
variables. The code:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">config</span><span class="o">.</span><span class="n">screen_width</span> <span class="o">=</span> <span class="mi">1280</span>
|
||
<span class="k">define</span> <span class="n">config</span><span class="o">.</span><span class="n">screen_height</span> <span class="o">=</span> <span class="mi">720</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Now works as expected. Persistent variables work in an idiosyncratic way,
|
||
as the code:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">persistent</span><span class="o">.</span><span class="n">unlocked_endings</span> <span class="o">=</span> <span class="p">[</span> <span class="p">]</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Will only set the unlocked_endings variable if it has not already been
|
||
set.</p>
|
||
</div>
|
||
<div class="section" id="android-ios">
|
||
<h3>Android/iOS<a class="headerlink" href="#android-ios" title="Permalink to this headline"> link</a></h3>
|
||
<p>The android SELECT key – present on remote controls – is now supported
|
||
for advancing text and selecting buttons, bars, etc. This means most
|
||
TV-based android consoles should be supported.</p>
|
||
<p>Direct support for the OUYA console has been dropped. The console should
|
||
still be supported as a general TV-based android console.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.save_on_mobile_background"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.save_on_mobile_background</span></code></a> and <a class="reference internal" href="config.html#var-config.quit_on_mobile_background"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.quit_on_mobile_background</span></code></a>
|
||
make it possible to adopt various strategies to deal with an Android or
|
||
iOS app losing focus.</p>
|
||
<p>To help apps comply with an Apple policy on the purchase of money cheats,
|
||
consumable in-app purchases have been added for iOS only.</p>
|
||
</div>
|
||
<div class="section" id="id15">
|
||
<h3>Other<a class="headerlink" href="#id15" title="Permalink to this headline"> link</a></h3>
|
||
<p>Unknown gamepads can be calibrated from the Shift+G menu.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.replace_text"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.replace_text</span></code></a> callback makes it possible to replace
|
||
text with other text. For example, one can replace multiple dashes with
|
||
en-dash or em-dash characters.</p>
|
||
<p>If a screen named <code class="docutils literal notranslate"><span class="pre">skip_indicator</span></code> is present, it will be displayed
|
||
instead of the default skip indicator.</p>
|
||
<p>In the launcher, pressing F5 will launch the current project.</p>
|
||
<p>Skipping is now disabled when leaving a Replay.</p>
|
||
<p>Creator-defined statements can now return statements to be predicted.</p>
|
||
<p>The Finnish and Traditional Chinese translations have been updated.</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-adjust_spacing"><code class="xref std std-propref docutils literal notranslate"><span class="pre">adjust_spacing</span></code></a> style property has been added. It
|
||
controls if the spacing of drawable-resolution text is adjusted to match
|
||
the spacing of viewable-resolution text. Setting this to False can prevent
|
||
kerning from changing after extend, but requires the GUI be designed
|
||
to adjust to the changing text size. To prevent obvious artifacts, this
|
||
is set to False for input text.</p>
|
||
<p>The following bugs have been fixed:</p>
|
||
<ul class="simple">
|
||
<li>A problem with script backups when the user has a non-ASCII username.</li>
|
||
<li>If a screen was predicted with multiple arguments, that screen would only
|
||
be predicted once for the purpose of image prediction.</li>
|
||
<li>On Mac OS X, if the Ren'Py window was covered or offscreen, VSYNC would
|
||
fail and CPU usage would rise to 100%. (Ren'Py now detects failed VSYNC
|
||
and limits its own framerate.)</li>
|
||
<li>Subsurfacing a clipped surface would not work, manifesting in incorrect
|
||
rendering of scrollbars in several of the default themes.</li>
|
||
<li>It was hard to pick a theme in the launcher.</li>
|
||
<li>When a window was scaled, hyperlinks would react to the mouse in incorrect
|
||
positions.</li>
|
||
<li>Window show now used narrator to render the empty window. It also had problems
|
||
with characters defined in the character namespace.</li>
|
||
<li>Newlines surrounding certain text tags would not be rendered.</li>
|
||
<li>Underlines could have small spaces in them when the window was scaled.</li>
|
||
<li>Problems with the software renderer on various hardware.</li>
|
||
<li>A problem where lint would not recognize an image name with reordered
|
||
attributes in the scene statement.</li>
|
||
<li>A crash when merging achievements from multiple instances of a game.</li>
|
||
<li>Having multiple text blocks, all with at least one hyperlink,
|
||
could cause hyperlinks to be higlighted incorrectly.</li>
|
||
<li>Various documentation problems.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-6">
|
||
<h2>Ren'Py 6.99.6<a class="headerlink" href="#ren-py-6-99-6" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="highdpi-retina">
|
||
<h3>HighDPI/Retina<a class="headerlink" href="#highdpi-retina" title="Permalink to this headline"> link</a></h3>
|
||
<p>Support for HighDPI/Retina displays has been added to Ren'Py. This support
|
||
is automatically used when running on iOS or Mac OS X systems that have a
|
||
retina display.</p>
|
||
<p>On all platforms, Ren'Py now renders text at the display resolution, rather
|
||
than the resolution the game was set to. The result is that text remains
|
||
sharp even when upscaled significantly. Creators should be aware that due
|
||
to variability in character size and kerning, this can cause changes in
|
||
text layout and word wrap as the window is scaled.</p>
|
||
<p>To get the greatest benefit from these changes, the included copy of
|
||
DejaVuSans has been updated to version 2.35, and the DejaVuSans-Bold
|
||
font has been added. The bold font will automatically be used when
|
||
a bold version of DejaVuSans.ttf is requested.</p>
|
||
</div>
|
||
<div class="section" id="gamepad">
|
||
<h3>Gamepad<a class="headerlink" href="#gamepad" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now uses the SDL2 controller API to support gamepads. This API
|
||
provides a standardized mapping of controller buttons to something
|
||
similar to an Xbox controller.</p>
|
||
</div>
|
||
<div class="section" id="backups">
|
||
<h3>Backups<a class="headerlink" href="#backups" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py will now automatically back up .rpy files that are part of
|
||
changed games. These backups will be placed in the same system-specific
|
||
location that save files are placed.</p>
|
||
</div>
|
||
<div class="section" id="id16">
|
||
<h3>Other Improvements<a class="headerlink" href="#id16" title="Permalink to this headline"> link</a></h3>
|
||
<p>A new <a class="reference internal" href="achievement.html#achievement.sync" title="achievement.sync"><code class="xref py py-func docutils literal notranslate"><span class="pre">achievement.sync()</span></code></a> function and <a class="reference internal" href="achievement.html#achievement.Sync" title="achievement.Sync"><code class="xref py py-class docutils literal notranslate"><span class="pre">achievement.Sync</span></code></a> action
|
||
have been added to Ren'Py. These synchronize achivements between local
|
||
storage and other backends, such as Steam.</p>
|
||
<p>A major bug in scanning archive files has been fixed. This bug often
|
||
manifested as an archived images/ directory not being scanned some,
|
||
but potentially not all, of the time. We strongly recommend upgrading from
|
||
6.99.5 if your game uses and archives the images/ directory.</p>
|
||
<p>If a file is not found in the game directory, Ren'Py will search the
|
||
images/ directory for that file. This behavior is controlled by
|
||
the <code class="xref std std-var docutils literal notranslate"><span class="pre">config.search_path</span></code> variable.</p>
|
||
<p>Screens now take the <cite>style_group</cite> property, which was previously only
|
||
allowed on displayable statements.</p>
|
||
<p>Screen language statements now take <cite>arguments</cite> and <cite>properties</cite> properties,
|
||
which allows statement to be passed a list of additional positional arguments and
|
||
a dict of additional properties, respectively.</p>
|
||
<p>The new <a class="reference internal" href="color_class.html#Color" title="Color"><code class="xref py py-class docutils literal notranslate"><span class="pre">Color</span></code></a> class allows conversion between color spaces and other
|
||
color-theory operations.</p>
|
||
<p>Ren'Py now supports a game/python-packages directory, which can be used
|
||
with pure-python packages installed via pip. See the new <a class="reference internal" href="python.html#python-modules"><span class="std std-ref">First and Third-Party Python Modules and Packages</span></a>
|
||
documentation for more details.</p>
|
||
<p>Renios now supports compiling for 32-bit simulators (for the iPhone 4 and 5).</p>
|
||
<p>The Korean and Russian translations have been improved.</p>
|
||
<p>A pause will now automatically end when auto-forward mode is enabled.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-5">
|
||
<h2>Ren'Py 6.99.5<a class="headerlink" href="#ren-py-6-99-5" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="startup">
|
||
<h3>Startup<a class="headerlink" href="#startup" title="Permalink to this headline"> link</a></h3>
|
||
<p>Much work has been done to reduce Ren'Py's startup time, especially on mobile
|
||
platforms such as Android and iOS. This was largely accomplished by caching the
|
||
results of transforms, analyses, and code compilation so less work is done
|
||
when the game is unchanged. To take full advantage of this, perform a
|
||
'Full Recompile' of your project from the front screen of the Ren'Py
|
||
launcher.</p>
|
||
<p>The desktop presplash code has been rewritten to use pygame_sdl2, and is now
|
||
also faster.</p>
|
||
<p>A new <a class="reference internal" href="config.html#var-config.minimum_presplash_time"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.minimum_presplash_time</span></code></a> has been added. This ensures that
|
||
the desktop presplash, android presplash, and iOS launchscreen are displayed
|
||
for at least a certain amount of time, making them more useful for branding
|
||
purposes.</p>
|
||
<p>As part of this work, script_version.rpy and script_version.rpyc will no
|
||
longer be added to packages. Instead, script_version.txt will be added.
|
||
(This ensures that the script does not change as part of packaging.)
|
||
In addition, bytecode.rpyb has been moved to the game/cache directory,
|
||
where addditional cache files now join it.</p>
|
||
</div>
|
||
<div class="section" id="ios">
|
||
<h3>iOS<a class="headerlink" href="#ios" title="Permalink to this headline"> link</a></h3>
|
||
<p>There have been a number of improvements to renios, some necessary to get
|
||
Ren'Py games accepted on the Apple App Store. Nightly builds of 6.99.5 have
|
||
been used to get multiple games accepted.</p>
|
||
<p>Renios has been upgraded to use SDL 2.0.4 rc1. This improves compatibility
|
||
with iOS 8, and makes it possible to keep the launchscreen displayed until
|
||
Ren'Py fully starts. As a result, support for the ios-presplash image is no
|
||
longer necessary, and has been dropped.</p>
|
||
</div>
|
||
<div class="section" id="id17">
|
||
<h3>Other Improvements<a class="headerlink" href="#id17" title="Permalink to this headline"> link</a></h3>
|
||
<p>A Simplified Chinese translation of the template game has been added, and
|
||
the Korean and Arabic translations have been updated.</p>
|
||
<p>ATL has had an update event added. This event is called in rare (but possible)
|
||
cases when a screen is re-created from scratch, such as after a load or when
|
||
styles or translations are changed.</p>
|
||
<p><a class="reference internal" href="screen_actions.html#SetMute" title="SetMute"><code class="xref py py-func docutils literal notranslate"><span class="pre">SetMute()</span></code></a> and <a class="reference internal" href="screen_actions.html#ToggleMute" title="ToggleMute"><code class="xref py py-func docutils literal notranslate"><span class="pre">ToggleMute()</span></code></a> actions have been added, along with
|
||
a new "all mute" <code class="xref py py-func docutils literal notranslate"><span class="pre">Preferences()</span></code> that mutes all mixers.</p>
|
||
<p>Font hinting is now controllable using the <a class="reference internal" href="style_properties.html#style-property-hinting"><code class="xref std std-propref docutils literal notranslate"><span class="pre">hinting</span></code></a> style property.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.nearest_neighbor"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.nearest_neighbor</span></code></a> variable configures Ren'Py to draw all
|
||
images using nearest-neighbor interpolation by default, helping ensure that
|
||
pixel art stays sharp when scaled up.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.predicting" title="renpy.predicting"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.predicting()</span></code></a> function returns true if Ren'Py is running
|
||
a screen for prediction purposes.</p>
|
||
<p>The new <a class="reference internal" href="statement_equivalents.html#renpy.return_statement" title="renpy.return_statement"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.return_statement()</span></code></a> function is a Python equivalent to
|
||
the Ren'Py return statement.</p>
|
||
<p>The new <a class="reference internal" href="store_variables.html#var-_dismiss_pause"><code class="xref std std-var docutils literal notranslate"><span class="pre">_dismiss_pause</span></code></a> and <a class="reference internal" href="store_variables.html#var-_skipping"><code class="xref std std-var docutils literal notranslate"><span class="pre">_skipping</span></code></a> variables make it possible to
|
||
control pauses and skipping on a line-by-line basis.</p>
|
||
<p>Canvas objects (returned by the Render.canvas() method) now have a
|
||
get_surface() method that returns a pygame_sdl2 Surface that is in a format
|
||
that can be used by Ren'Py. This surface can be manipulated by Pygame
|
||
drawing operations.</p>
|
||
<p>The new <a class="reference internal" href="voice.html#_get_voice_info" title="_get_voice_info"><code class="xref py py-func docutils literal notranslate"><span class="pre">_get_voice_info()</span></code></a> function returns an object that contains information
|
||
about the voicing associated with the currently-running say statement.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-4">
|
||
<h2>Ren'Py 6.99.4<a class="headerlink" href="#ren-py-6-99-4" title="Permalink to this headline"> link</a></h2>
|
||
<p>The Ren'Py script language now includes a new <a class="reference internal" href="python.html#default-statement"><span class="std std-ref">default statement</span></a>.
|
||
This statement sets a variable to a value a default value at game start or load,
|
||
if a default statement has not set the value of the variable in the current
|
||
game. This makes it possible to initialize saved variables near the relevant
|
||
code, rather than all at once at label start.</p>
|
||
<p>Lint will now warn if a <code class="docutils literal notranslate"><span class="pre">define</span></code> or <code class="docutils literal notranslate"><span class="pre">default</span></code> statement redefines a
|
||
Ren'Py or Python built-in name.</p>
|
||
<p>The screen language <a class="reference internal" href="screens.html#sl-use"><span class="std std-ref">use statement</span></a> now takes a block, which
|
||
can be transcluded into a screen using the <code class="docutils literal notranslate"><span class="pre">transclude</span></code> statement. This makes
|
||
it possible to use statements to "wrap" a block of screen language code.</p>
|
||
<p>The screen language also supports <a class="reference internal" href="screen_python.html#creator-defined-sl"><span class="std std-ref">creator-defined statements</span></a>,
|
||
which are transformed into use statements. These make it possible to extend the
|
||
screen language syntax.</p>
|
||
<p>The new Render.place() is available for use in <a class="reference internal" href="cdd.html#cdd"><span class="std std-ref">creator-defined displayables</span></a>.
|
||
This method renders a displayable, then applies Ren'Py's layout algorthing to place
|
||
that displayable within a containing rectangle.</p>
|
||
<p>Ren'Py now logs errors importing the steam module to log.txt.</p>
|
||
<p>Ren'Py now logs the duration of various parts of the init process to log.txt.</p>
|
||
<p>On mobile, Ren'Py will wait until the start of the first interaction
|
||
before creating the main window. This prevents a black screen from being
|
||
displayed for some time as Ren'Py starts.</p>
|
||
<p>There are a number of improvements to iOS support, to support passing Apple's
|
||
package verification process.</p>
|
||
<p>The launcher now includes a button to retrieve logcat information from an
|
||
Android device.</p>
|
||
<p>The launcher now checks that the version of rapt and renios match the version
|
||
of Ren'Py proper.</p>
|
||
<div class="section" id="id18">
|
||
<h3>Fixes<a class="headerlink" href="#id18" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixed a performance problem caused by failing to release the Global Interpreter
|
||
Lock while waiting for event input. This could cause problems running various
|
||
background threads, like the image preloader and autosave.</p>
|
||
<p>Ensured that screens are only analyzed once as the game starts. Previously,
|
||
screens could be analyzed multiple times as the styles and languages were
|
||
set, leading to excessive startup times, especially on mobile platforms.</p>
|
||
<p>The volume curve has been changed to be more correct and perceptually
|
||
accurate. The previous curve had serveral problems, most notably that
|
||
is sharply jumped from 0 to 10%. This may require players to adjust their
|
||
volume settings.</p>
|
||
<p>The gallery slideshow timer now repeats through multiple images.</p>
|
||
<p>Text blits are now expanded to include an outline on a descender on the
|
||
bottom row of text.</p>
|
||
<p>Drags outside of a draggroup can now be snapped into place.</p>
|
||
<p>The Gallery now properly advances through locked and unlocked images.
|
||
Previously, this advancing was reversed, so next_unlocked would advance
|
||
through locked and unlocked images.</p>
|
||
<p>Text accounts for the size of outlines when allocating textures, preventing
|
||
the bottom line of outlines from being cut off.</p>
|
||
<p>Position information (xpos, ypos, etc.) are now passed from an inner transform
|
||
to an outer transform during as single frame. Previously, this information
|
||
would lag by a single frame, which could lead to nested transforms lagging
|
||
or failing to complete.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-3">
|
||
<h2>Ren'Py 6.99.3<a class="headerlink" href="#ren-py-6-99-3" title="Permalink to this headline"> link</a></h2>
|
||
<p>Removed debugging code that could cause problems by writing an unnecessary
|
||
zipfile.txt file.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-2">
|
||
<h2>Ren'Py 6.99.2<a class="headerlink" href="#ren-py-6-99-2" title="Permalink to this headline"> link</a></h2>
|
||
<p>Ren'Py now supports an images directory underneath the game directory.
|
||
Images found inside this directory – or in subdirectories of this directory – will
|
||
be automatically defined as images in Ren'Py. This will likely render the use of
|
||
the image statement obsolete in simple games.</p>
|
||
<p>The new <a class="reference internal" href="displayables.html#AlphaMask" title="AlphaMask"><code class="xref py py-func docutils literal notranslate"><span class="pre">AlphaMask()</span></code></a> displayable allows one displayable to be masked by the alpha
|
||
channel of another.</p>
|
||
<p>The android and iOS emulators now emulate the onscreen keyboard.</p>
|
||
<p>The achievement API has been changed somewhat, but only with respect for
|
||
progress functions. (Which were broken in the previous releases.)</p>
|
||
<p>Actions that care about the current screen (like SetScreenVariable) now work
|
||
when used with the hovered and unhovered properties.</p>
|
||
<p>The updater has improved. If an incremental download fails, Ren'Py will try
|
||
downloading the complete file before giving up.</p>
|
||
<p>When building for Android, Ren'Py will copy the apk files in to the dists
|
||
directory used by the desktop platforms.</p>
|
||
<p>Added the <a class="reference internal" href="screen_actions.html#RestartStatement" title="RestartStatement"><code class="xref py py-func docutils literal notranslate"><span class="pre">RestartStatement()</span></code></a> action.</p>
|
||
<p>Added the <a class="reference internal" href="other.html#renpy.reset_physical_size" title="renpy.reset_physical_size"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.reset_physical_size()</span></code></a> and <code class="xref py py-func docutils literal notranslate"><span class="pre">ui.screen_id()</span></code> functions.</p>
|
||
<p>Allowed the screen language key statement to take the activate_sound style
|
||
property. This makes it easier to play a sound when a key is pressed.</p>
|
||
<p>Documented <a class="reference internal" href="screen_python.html#ui.interact" title="ui.interact"><code class="xref py py-func docutils literal notranslate"><span class="pre">ui.interact()</span></code></a>.</p>
|
||
<p>Updated the Simplified Chinese and Korean translations, and the Italian template.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99-1">
|
||
<h2>Ren'Py 6.99.1<a class="headerlink" href="#ren-py-6-99-1" title="Permalink to this headline"> link</a></h2>
|
||
<p>Added the <a class="reference internal" href="cdd.html#renpy.load_image" title="renpy.load_image"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.load_image()</span></code></a>, <a class="reference internal" href="cdd.html#renpy.load_surface" title="renpy.load_surface"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.load_surface()</span></code></a>, and
|
||
<a class="reference internal" href="displaying_images.html#renpy.get_showing_tags" title="renpy.get_showing_tags"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_showing_tags()</span></code></a> functions.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-99">
|
||
<h2>Ren'Py 6.99<a class="headerlink" href="#ren-py-6-99" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="sdl2">
|
||
<h3>SDL2<a class="headerlink" href="#sdl2" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py is now based on Pygame_SDL2, a reimplementation of the Pygame API
|
||
based on the SDL2 library. One of the largest changes in Ren'Py's history,
|
||
switching to SDL2 lays the groundwork for many improvements, in this
|
||
and future releases.</p>
|
||
</div>
|
||
<div class="section" id="ios-support">
|
||
<h3>iOS Support<a class="headerlink" href="#ios-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now supports the iOS platform. To develop for iOS, you will need a
|
||
Macintosh computer, Xcode, and a paid membership in the iOS developer
|
||
program. (An iPad or iPhone to test with is highly recommended.)</p>
|
||
<p>Ren'Py's iOS support includes the ability to create Xcode projects, and
|
||
to update those projects with the latest version of a Ren'Py game. Xcode
|
||
can be used to change project settings, and to create debug and release
|
||
builds.</p>
|
||
<p>The iOS port supports iOS 7 and higher. Almost all of Ren'Py is supported,
|
||
with the exception being that video playback is limited to fullscreen video
|
||
in formats the iOS device supports.</p>
|
||
<p>For now, the default set of Ren'Py screens are not particularly compatible
|
||
with iOS. You will need to customize your game to make it touch friendly and
|
||
compliant with Apple's guidelines before submitting it to the iOS app store.</p>
|
||
<p>Please see the iOS documentation for more information and a copyright
|
||
notice you must include as part of your app description on iOS.</p>
|
||
</div>
|
||
<div class="section" id="android-support">
|
||
<h3>Android Support<a class="headerlink" href="#android-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>Android support has been rewritten, and is now based in SDL2. This release
|
||
brings Android support to parity with desktop platforms. Improvements
|
||
include:</p>
|
||
<ul class="simple">
|
||
<li>Support for rotating the screen to match the user's preferred orientation.</li>
|
||
<li>Improved in-app purchase support, with the ability to retrieve prices and
|
||
create a single .apk that supports the Google and Amazon stores.</li>
|
||
<li>Android audio playback is now based on the same code that's used on
|
||
the desktop and iOS platforms. This enables support for features like
|
||
panning and fading volume. It also means the same sound files can be
|
||
used on Android, iOS, and desktop platforms.</li>
|
||
<li>Keyboard input is now supported on Android.</li>
|
||
<li>Languages requiring bidirectional text (like Arabic and Hebrew) are supported
|
||
on Android.</li>
|
||
</ul>
|
||
<p>A number of issues with Android support have been fixed, including one that
|
||
prevented Ren'Py from unzipping the android SDK automatically when the path
|
||
to the Ren'Py install was too long.</p>
|
||
<p>Please see the Android documentation for more information and a copyright
|
||
notice that should be included as part of your app description.</p>
|
||
</div>
|
||
<div class="section" id="steam">
|
||
<h3>Steam<a class="headerlink" href="#steam" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now ships with Python bindings for the steam API. These bindings
|
||
are built as part of the Ren'Py build process, which means they will be
|
||
maintained alongside Ren'Py going forwards.</p>
|
||
<p>For an explanation of how to use the Steam API, please contact the Ren'Py
|
||
developers directly. The bindings make available:</p>
|
||
<ul class="simple">
|
||
<li>Initialization.</li>
|
||
<li>User statistics and achievements.</li>
|
||
<li>Retrieving other apps by the same developer that have been installed.</li>
|
||
<li>DLC support.</li>
|
||
<li>The in-game overlay, including the ability to launch a purchase flow.</li>
|
||
<li>Session tickets.</li>
|
||
</ul>
|
||
<p>The steam bindings will be integrated with Ren'Py as appropriate. For now,
|
||
this integration consists of binding the steam achievement system to the new
|
||
Ren'Py achievement API.</p>
|
||
</div>
|
||
<div class="section" id="distribution-improvements">
|
||
<h3>Distribution Improvements<a class="headerlink" href="#distribution-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>The launcher now has the ability to add from clauses to call statements,
|
||
automatically turning:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">call</span> <span class="n">dayplanner</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>into:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">call</span> <span class="n">dayplanner</span> <span class="kn">from</span> <span class="nn">__call_dayplanner</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>From clauses, which are really labels, help Ren'Py to find the return
|
||
site to use when a game is changed. This should help fix problem with games
|
||
that may change greatly between releases.</p>
|
||
<p>When asked to package a game that is more than about 2GB in size, Ren'Py
|
||
will produce a ZIP64-format archive. These archives may be less compatible
|
||
that smaller zip files.</p>
|
||
</div>
|
||
<div class="section" id="languages-and-translations">
|
||
<h3>Languages and Translations<a class="headerlink" href="#languages-and-translations" title="Permalink to this headline"> link</a></h3>
|
||
<p>There is now a Russian translation of the tutorial game, and a Finnish
|
||
translation of the launcher.</p>
|
||
<p>Ren'Py supports input methods (IMEs) on platforms where SDL2 makes that
|
||
support available. (All platforms except for Linux.) Input methods make
|
||
it possible to input complex non-ASCII text, such as Chinese, Japanese,
|
||
and Korean.</p>
|
||
</div>
|
||
<div class="section" id="clipboard-voicing">
|
||
<h3>Clipboard Voicing<a class="headerlink" href="#clipboard-voicing" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now supports clipboard voicing, which is accessed by Shift+C.</p>
|
||
<p>Clipboard voicing is a form of self-voicing that works by copying the
|
||
text to the clipboard, where a screenreader program is likely to read
|
||
it using settings preferred by the player.</p>
|
||
</div>
|
||
<div class="section" id="custom-text-tags">
|
||
<h3>Custom Text Tags<a class="headerlink" href="#custom-text-tags" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py snow supports a new form of <a class="reference internal" href="custom_text_tags.html"><span class="doc">custom text tags</span></a>.</p>
|
||
<p>Custom text tags are applied after the text has been tokenized into tags and
|
||
text. This makes it easier to write a custom text tag that manipulates text
|
||
or applies multiple existing text tags to text.</p>
|
||
<p>The previously-existing form of custom text tag has been renamed to
|
||
style text tag, and is still supported.</p>
|
||
</div>
|
||
<div class="section" id="id19">
|
||
<h3>Other Improvements<a class="headerlink" href="#id19" title="Permalink to this headline"> link</a></h3>
|
||
<p>A high-level achievement API has been added to Ren'Py.</p>
|
||
<p>Ren'Py now includes support for recognizing touch gestures on Android and
|
||
iOS.</p>
|
||
<p>It is possible to hide the editing buttons in the launcher, so they can't
|
||
be used to open an absurd number of editor windows.</p>
|
||
<p>The developer can choose if strings should be empty when generating
|
||
translations.</p>
|
||
<p>Three new set manipulation actions <a class="reference internal" href="screen_actions.html#AddToSet" title="AddToSet"><code class="xref py py-func docutils literal notranslate"><span class="pre">AddToSet()</span></code></a>, <a class="reference internal" href="screen_actions.html#RemoveFromSet" title="RemoveFromSet"><code class="xref py py-func docutils literal notranslate"><span class="pre">RemoveFromSet()</span></code></a>,
|
||
and <a class="reference internal" href="screen_actions.html#ToggleSetMembership" title="ToggleSetMembership"><code class="xref py py-func docutils literal notranslate"><span class="pre">ToggleSetMembership()</span></code></a> manipulate sets and lists-as-sets. (Such
|
||
as inventory lists.)</p>
|
||
<p>Drags (as in, drag-and-drop) now supports the <a class="reference internal" href="style_properties.html#style-property-focus_mask"><code class="xref std std-propref docutils literal notranslate"><span class="pre">focus_mask</span></code></a> style property.</p>
|
||
<p>The complexity of the style system has been reduced, decreasing memory
|
||
usage and startup time.</p>
|
||
<p>The new <a class="reference internal" href="save_load_rollback.html#renpy.suspend_rollback" title="renpy.suspend_rollback"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.suspend_rollback()</span></code></a> suspends the recording of rollback
|
||
checkpoints, while still allowing rollback to occur.</p>
|
||
<p>The RENPY_GL_CHECK_ERRORS controlls the logging of OpenGL/ANGLE function
|
||
calls and errors.</p>
|
||
<p>A completion progress indicator can be toggled by typing Shift+Alt+P or
|
||
swiping up-down-left-right-left-right.</p>
|
||
<p>As of this release, dictionary and set comprehensions are wrapped to
|
||
support rollback.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-18-3">
|
||
<h2>Ren'Py 6.18.3<a class="headerlink" href="#ren-py-6-18-3" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release adds the <a class="reference internal" href="screens.html#sl-showif"><span class="std std-ref">showif statement</span></a> to screen language.
|
||
The showif statement shows and hides its children based on a condition. When
|
||
its children are ATL transforms, showif delivers ATL events to manage the
|
||
show and hide process.</p>
|
||
<p>Ren'Py's image prediction mechanism now models the return stack, and can
|
||
predict images through a call and return pair. Previously, a call followed
|
||
by a return would block image prediction.</p>
|
||
<p>Ren'Py now predicts that the start label will be called from the main menu.
|
||
This will help to avoid unpredicted image loads at the very start of a game.</p>
|
||
<p>The ATL on statement now can take a comma-separated list of event names.</p>
|
||
<p>The new <a class="reference internal" href="updater.html#updater.UpdateVersion" title="updater.UpdateVersion"><code class="xref py py-func docutils literal notranslate"><span class="pre">updater.UpdateVersion()</span></code></a> function contacts an update server and
|
||
determines if an update is available.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.invoke_in_thread" title="renpy.invoke_in_thread"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.invoke_in_thread()</span></code></a> function runs a function in a background
|
||
thread, and restarts the interaction when that thread finishes.</p>
|
||
<p>While in self-voicing mode, the {w} and {p} tags are ignored.</p>
|
||
<p>The Traditional Chinese and Russian translations have been updated.</p>
|
||
<div class="section" id="id20">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id20" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixed a regression that could cause hiding transforms to skip time.</p>
|
||
<p>Fixed a bug that would cause the screen language if statement to show
|
||
children from blocks with a false condition, if those child blocks were
|
||
run during prediction.</p>
|
||
<p>Fixed an issue where SetScreenVariable and ToggleScreenVariable were
|
||
declared as pure functions, but weren't. They now have been reimplemented
|
||
as pure functions.</p>
|
||
<p>Fixed an issue where a grab could fail to transfer between interactions,
|
||
leaving Ren'Py unresponsive.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-18-2">
|
||
<h2>Ren'Py 6.18.2<a class="headerlink" href="#ren-py-6-18-2" title="Permalink to this headline"> link</a></h2>
|
||
<p>The define statement can now take a store name, and the say statement
|
||
will search the <code class="docutils literal notranslate"><span class="pre">character</span></code> store before searching the default store.
|
||
This means that if one uses:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">character</span><span class="o">.</span><span class="n">e</span> <span class="o">=</span> <span class="n">Character</span><span class="p">(</span><span class="s2">"Eileen"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Say statements like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="s2">"Hello, world."</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>will continue to work, even though <code class="docutils literal notranslate"><span class="pre">e</span></code> has been freed up for other
|
||
purposes.</p>
|
||
<p>The default image cache size (set in <a class="reference internal" href="config.html#var-config.image_cache_size"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.image_cache_size</span></code></a>) has
|
||
been increased from 8 to 16 screens worth of images.</p>
|
||
<p>When set to True, the new <a class="reference internal" href="atl.html#transform-property-crop_relative"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">crop_relative</span></code></a> transform property tells
|
||
a Transform to interpret float components of its <a class="reference internal" href="atl.html#transform-property-crop"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">crop</span></code></a> property
|
||
relative to the width or height of its transformed child, as appropriate.
|
||
For example, (0.5, 0.0, 0.5, 1.0) will cropout the lower-right quadrant
|
||
of the child.</p>
|
||
<p>When set to false, the new <a class="reference internal" href="style_properties.html#style-property-keyboard_focus"><code class="xref std std-propref docutils literal notranslate"><span class="pre">keyboard_focus</span></code></a> style property hides
|
||
buttons, bars, and imagemap hotspots from the keyboard focus mechanism.</p>
|
||
<p>The <a class="reference internal" href="screens.html#mousearea"><span class="std std-ref">Mousearea</span></a> screen language statement now respects the
|
||
<a class="reference internal" href="style_properties.html#style-property-focus_mask"><code class="xref std std-propref docutils literal notranslate"><span class="pre">focus_mask</span></code></a> style property, making it possible to have
|
||
non-rectangular mouseareas.</p>
|
||
<p>Ren'Py now includes functions that can be used to profile
|
||
the memory consumption of a game, including the memory consumption of
|
||
Ren'Py itself. These functions are <a class="reference internal" href="other.html#renpy.profile_memory" title="renpy.profile_memory"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.profile_memory()</span></code></a> and
|
||
<a class="reference internal" href="other.html#renpy.diff_memory" title="renpy.diff_memory"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.diff_memory()</span></code></a>. The new <a class="reference internal" href="other.html#renpy.profile_rollback" title="renpy.profile_rollback"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.profile_rollback()</span></code></a>
|
||
lets one more specifically see the memory consumption of the internal
|
||
rollback log.</p>
|
||
<p>When self-voicing mode is enabled, Ren'Py displays a notification that
|
||
explains how to disable self-voicing mode.</p>
|
||
<p>This release fixes a subtle bug caused by incorrect analysis of for
|
||
loops in screen language screens, when the iteration variable is a
|
||
constant. (For example, when the iteration variable is <code class="docutils literal notranslate"><span class="pre">define</span></code>ed
|
||
somewhere else in the game.)</p>
|
||
<p>This release adds Traditional Chinese translations of the launcher and
|
||
template game, contributed by Civalin.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-18-1">
|
||
<h2>Ren'Py 6.18.1<a class="headerlink" href="#ren-py-6-18-1" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release includes a new <a class="reference internal" href="displayables.html#Placeholder" title="Placeholder"><code class="xref py py-func docutils literal notranslate"><span class="pre">Placeholder()</span></code></a> displayable, which can be
|
||
used to display placeholder characters. Placeholders are now used when
|
||
displaying images that are not defined.</p>
|
||
<p>The new <code class="xref std std-var docutils literal notranslate"><span class="pre">sv</span></code> Character-like object can be used when self-voicing is
|
||
enabled to display (and hence speak) descriptive text.</p>
|
||
<p>ATL transforms in screens now begin executing when first shown. Previously, ATL transforms
|
||
began executing when the screen containing the ATL transform was first shown,
|
||
which meant that if the transform changed over the course of screen display,
|
||
a portion of the new transform would be skipped.</p>
|
||
<p>This release includes a German template contributed by NoJoker.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-18">
|
||
<h2>Ren'Py 6.18<a class="headerlink" href="#ren-py-6-18" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="screen-language-improvements">
|
||
<h3>Screen Language Improvements<a class="headerlink" href="#screen-language-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release includes a new implementation of screen language that has the
|
||
potential to be much faster than the original implementation of screen language.
|
||
Where the original screen language evaluated screens from scratch at the start
|
||
of each interaction, this new implementation can incrementally reuse large
|
||
portions of a screen between interactions. Please see the new
|
||
<a class="reference internal" href="screen_optimization.html"><span class="doc">Screen Language Optimization</span></a> documentation for
|
||
information on how to maximize screen language performance.</p>
|
||
<p>Of special note is that screens now perform better when defined with a parameter
|
||
list. Screens that do not expect parameters should be defined with an empty
|
||
parameter list.</p>
|
||
<p>To support improved optimization, when the screen language use statement
|
||
calls a screen with a parameter list, only variables in that parameter list
|
||
are updated. (This is a change in previously-undocumented behavior.)</p>
|
||
<p>Screens now support passing properties to a displayable from within an if
|
||
statement, provided the if statement is the first thing inside the
|
||
displayable. For example:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">text</span> <span class="s2">"Eileen"</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="n">eileen_mad</span><span class="p">:</span>
|
||
<span class="na">color</span> <span class="s2">"#fcc"</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="na">color</span> <span class="s2">"#cfc"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>now works.</p>
|
||
<p>As there is now a larger benefit from predicting screens, screen prediction
|
||
has been improved in several ways:</p>
|
||
<ul class="simple">
|
||
<li>By default, Ren'Py will now use the arguments supplied to a screen in
|
||
the <code class="docutils literal notranslate"><span class="pre">show</span> <span class="pre">screen</span></code> and <code class="docutils literal notranslate"><span class="pre">call</span> <span class="pre">screen</span></code> statements to predict the
|
||
screen. This is potentially dangers, as it means that if either statement
|
||
has side effects, those side effects will occur as part of screen prediction.
|
||
To mitigate this problem, both statements now take a <code class="docutils literal notranslate"><span class="pre">nopredict</span></code> clause
|
||
that prevents screen prediction.</li>
|
||
<li>Ren'Py will now attempt to predict images inside if clauses that would
|
||
not be taken, and will ignore errors that occur during statement prediction.</li>
|
||
<li>A pair of functions, <a class="reference internal" href="screen_python.html#renpy.start_predict_screen" title="renpy.start_predict_screen"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.start_predict_screen()</span></code></a> and
|
||
<a class="reference internal" href="screen_python.html#renpy.stop_predict_screen" title="renpy.stop_predict_screen"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.stop_predict_screen()</span></code></a> allows for manual prediction of time
|
||
images that will be used by screens, including parameterized screens.</li>
|
||
</ul>
|
||
<p>Ren'Py now supports profiling of screens, via the <a class="reference internal" href="screen_optimization.html#renpy.profile_screen" title="renpy.profile_screen"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.profile_screen()</span></code></a>
|
||
function.</p>
|
||
<p>Ren'Py has been changed to make a copy of the screens being displayed before
|
||
a transition occurs. This makes it possible to use a transition to show
|
||
screen updates. For example, one could increase the value displayed
|
||
by a bar, and then use the dissolve transition to dissolve in the new
|
||
segment of bar.</p>
|
||
</div>
|
||
<div class="section" id="image-prediction">
|
||
<h3>Image Prediction<a class="headerlink" href="#image-prediction" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now has a supported mechanism for manually predicting images in
|
||
cases where automatic image prediction fails. This mechanism consists
|
||
of two functions: <a class="reference internal" href="displaying_images.html#renpy.start_predict" title="renpy.start_predict"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.start_predict()</span></code></a> starts prediction of images,
|
||
while <a class="reference internal" href="displaying_images.html#renpy.stop_predict" title="renpy.stop_predict"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.stop_predict()</span></code></a> stops prediction.</p>
|
||
</div>
|
||
<div class="section" id="accessibility">
|
||
<h3>Accessibility<a class="headerlink" href="#accessibility" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now includes support for self-voicing, a mode in which Ren'Py will
|
||
read on-screen text to vision impaired players. To activate self-voicing,
|
||
press the <code class="docutils literal notranslate"><span class="pre">v</span></code> key. For more information, please read the <a class="reference internal" href="self_voicing.html"><span class="doc">self-voicing</span></a>
|
||
documentation.</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-alt"><code class="xref std std-propref docutils literal notranslate"><span class="pre">alt</span></code></a> style property allows one to supply alternative
|
||
text that allows Ren'Py to voice imagemap components and buttons with
|
||
incomplete names.</p>
|
||
<p>The Ren'Py launcher now includes a large-text mode that can be accessed from
|
||
the preferences page. This mode increases text size and contrast.</p>
|
||
</div>
|
||
<div class="section" id="android-in-app-purchasing">
|
||
<h3>Android In-App Purchasing<a class="headerlink" href="#android-in-app-purchasing" title="Permalink to this headline"> link</a></h3>
|
||
<p>This version of Ren'Py includes a high-level interface that supports
|
||
in-app purchasing on the Android platform. This interface currently
|
||
support Google Play and the Amazon App Store.</p>
|
||
</div>
|
||
<div class="section" id="pixel-art">
|
||
<h3>Pixel Art<a class="headerlink" href="#pixel-art" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py supports nearest-neighbor filtering of images. This ensures that
|
||
screen pixels correspond to a single texture pixel, which is the scaling
|
||
mode preferred for use with pixel art. Nearest-neighbor mode is enabled
|
||
with the new <a class="reference internal" href="atl.html#transform-property-nearest"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">nearest</span></code></a> transform property.</p>
|
||
<p>The new <code class="xref py py-func docutils literal notranslate"><span class="pre">config.adjust_view_size()</span></code> callback makes it possible to
|
||
set the size of the Ren'Py viewport to something other than the size of
|
||
the window (or screen, in fullscreen mode). For example, a game can use
|
||
this callback to limit its viewport size to integer multiples of its
|
||
native size.</p>
|
||
</div>
|
||
<div class="section" id="voice-improvements">
|
||
<h3>Voice Improvements<a class="headerlink" href="#voice-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>Voice volume is now adjustable on a per-character basis, using the
|
||
voice_tag argument to <a class="reference internal" href="dialogue.html#Character" title="Character"><code class="xref py py-func docutils literal notranslate"><span class="pre">Character()</span></code></a> and the new <code class="xref py py-func docutils literal notranslate"><span class="pre">VoiceVolume()</span></code>
|
||
value.</p>
|
||
<p>Using the new <a class="reference internal" href="config.html#var-config.emphasize_audio_channels"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.emphasize_audio_channels</span></code></a> variable, Ren'Py
|
||
can emphasize audio on some channels. This is doen by lowering the
|
||
volume of non-emphasized channels when a emphasized channel is playing,
|
||
and returning the volumes to normal when no emphasized chanels are
|
||
playing. By setting this variable to <code class="docutils literal notranslate"><span class="pre">[</span> <span class="pre">'voice'</span> <span class="pre">]</span></code>, the voice
|
||
channel can be emphasized over music and other sounds,</p>
|
||
</div>
|
||
<div class="section" id="os-x-bug-workaround">
|
||
<h3>OS X Bug Workaround<a class="headerlink" href="#os-x-bug-workaround" title="Permalink to this headline"> link</a></h3>
|
||
<p>To workaround a bug in Mac OS X 10.9, Ren'Py will now always open on the
|
||
the primary monitor of a Macintosh.</p>
|
||
</div>
|
||
<div class="section" id="id21">
|
||
<h3>Other<a class="headerlink" href="#id21" title="Permalink to this headline"> link</a></h3>
|
||
<p>With some limitations, non-ASCII characters can now be used as character
|
||
names. Since Python code does not allow non-ASCII identifiers, such character
|
||
names must be defined by the define statement, and used outside Python code.</p>
|
||
<p>The <cite>auto</cite> property of imagebuttons and imagemaps now can take image names
|
||
as well as image filenames.</p>
|
||
<p>The new <code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.image_exists()</span></code> function returns true if an image has
|
||
been defined.</p>
|
||
<p>Gallery navigation can now be customized by customizing the <code class="docutils literal notranslate"><span class="pre">gallery_nav</span></code>
|
||
screen.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.count_dialogue_blocks" title="renpy.count_dialogue_blocks"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.count_dialogue_blocks()</span></code></a> and <a class="reference internal" href="other.html#renpy.count_seen_dialogue_blocks" title="renpy.count_seen_dialogue_blocks"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.count_seen_dialogue_blocks()</span></code></a>
|
||
return the total number of dialogue blocks and the number of dialogue blocks that have
|
||
been seen by the current user in any game. With some caveats, these can provide an
|
||
indication of how much of the game the user has seen.</p>
|
||
<p>The <a class="reference internal" href="config.html#var-config.autosave_on_choice"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.autosave_on_choice</span></code></a> variable determines if Ren'Py will
|
||
autosave on choice, while the <a class="reference internal" href="config.html#var-config.autosave_on_quit"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.autosave_on_quit</span></code></a> variable
|
||
determines if Ren'Py will autosave when the game is about to end (by quit,
|
||
return, or loading a save slot).</p>
|
||
<p>The new <a class="reference internal" href="atl.html#transform-property-events"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">events</span></code></a> transform property determines if events are
|
||
passed to a transform's children. This is useful for ATL transforms,
|
||
when some children should not receive events.</p>
|
||
<p>Save dumps (enabled by <a class="reference internal" href="config.html#var-config.save_dump"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.save_dump</span></code></a>) are performed before the
|
||
save occurs, making them far more useful for debugging pickling problems.</p>
|
||
<p>When show_ arguments are past to an <code class="xref py py-func docutils literal notranslate"><span class="pre">NVLCharacter()</span></code>, the show_ prefix
|
||
is stripped and those arguments are passed to the <code class="docutils literal notranslate"><span class="pre">nvl</span></code> screen.</p>
|
||
</div>
|
||
<div class="section" id="id22">
|
||
<h3>Translations<a class="headerlink" href="#id22" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release add an Italian translation of the launcher and template game,
|
||
contributed by Oshi-Shinobu.</p>
|
||
<p>This release adds a Portuguese translation of the template game, contributed
|
||
by Mrstalker.</p>
|
||
<p>This release adds a Simplified Chinese translation of the launcher, contributed by
|
||
Huanxuantian.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-17-7">
|
||
<h2>Ren'Py 6.17.7<a class="headerlink" href="#ren-py-6-17-7" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release includes a number of Android changes:</p>
|
||
<ul class="simple">
|
||
<li>RAPT has been updated to use the latest version of the SDK. Please install
|
||
the SDK again if you have build problems.</li>
|
||
<li>RAPT no longer includes a copy of Ren'Py. Instead, Ren'Py includes a copy of
|
||
itself into the built game that RAPT uses. This makes it possible to include
|
||
fixes to Ren'Py in an Android package.</li>
|
||
<li>A low-level In-App Purchase implementation, contributed
|
||
by Emmanuel Marty and Winter Wolves. The low-level IAP code supports Google
|
||
Play and the Amazon App Store. This code is not currently documented, as it
|
||
will be wrapped in a higher-level implementation.</li>
|
||
</ul>
|
||
<p>This release includes a fix to an audio-video sync issue that affected the
|
||
Windows, Mac OS X, and Linux platforms.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-17-6">
|
||
<h2>Ren'Py 6.17.6<a class="headerlink" href="#ren-py-6-17-6" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release adds a German translation of the launcher, contributed by
|
||
Marcel.</p>
|
||
<p>This release adds a Korean translation of the launcher and template game,
|
||
contributed by Baekansi.</p>
|
||
<p>This release includes a workaround for an issue that could prevent the
|
||
launcher from starting on certain Mac OS X computers.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-17-5">
|
||
<h2>Ren'Py 6.17.5<a class="headerlink" href="#ren-py-6-17-5" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="id23">
|
||
<h3>Translations<a class="headerlink" href="#id23" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release features an Arabic translation of the launcher and template
|
||
game, contributed by Renoa.</p>
|
||
<p>The Japanese and Spanish translations have been updated.</p>
|
||
</div>
|
||
<div class="section" id="id24">
|
||
<h3>Changes<a class="headerlink" href="#id24" title="Permalink to this headline"> link</a></h3>
|
||
<p>The traceback system has been changed to generally report script statements,
|
||
rather than the functions Ren'Py uses to implement those statements.</p>
|
||
<p>The <a class="reference internal" href="statement_equivalents.html#renpy.pause" title="renpy.pause"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.pause()</span></code></a> function now only sets a checkpoint (allowing rollback)
|
||
if the delay time is 0. This prevents rollback from being blocked by short
|
||
pauses.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.queue_event" title="renpy.queue_event"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.queue_event()</span></code></a> function provides a way to queue Ren'Py
|
||
events from user-written interface code. (For example, it could be used to
|
||
listen to commands on a serial port that's connected to a custom
|
||
controller.)</p>
|
||
<p>If set, RENPY_SKIP_MAIN_MENU and RENPY_SKIP_SPLASHSCREEN environment
|
||
variables cause Ren'Py to skip the main menu and splashscreen, respectively.</p>
|
||
<p>The RENPY_TIMEWARP environment variable makes it possible to speedup and
|
||
slow down time.</p>
|
||
<p>An experimental new autoreload system can be accessed by setting
|
||
<a class="reference internal" href="config.html#var-config.autoreload"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.autoreload</span></code></a> to True, then pressing Shift+R to toggle
|
||
automatic reloading.</p>
|
||
</div>
|
||
<div class="section" id="id25">
|
||
<h3>Fixes<a class="headerlink" href="#id25" title="Permalink to this headline"> link</a></h3>
|
||
<p>A regression in 6.17.4 caused a major memory leak on Shift+R. This has
|
||
been fixed. Several other problems with Shift+R have also been fixed.</p>
|
||
<p>An issue preventing transitions from working properly inside a restarted
|
||
ATL transform has been fixed.</p>
|
||
<p>The --warp was documented incorrectly, and had stopped working. It's been
|
||
repaired, and its documentation has been improved.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-17-4">
|
||
<h2>Ren'Py 6.17.4<a class="headerlink" href="#ren-py-6-17-4" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="reloading">
|
||
<h3>Reloading<a class="headerlink" href="#reloading" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release contains a complete rewrite of Shift+R reloading.</p>
|
||
<p>The rewrite was necessary to eliminate several major memory leaks that
|
||
were triggered by reloading.</p>
|
||
</div>
|
||
<div class="section" id="android">
|
||
<h3>Android<a class="headerlink" href="#android" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py has been updated to use the newest (at the time of release) versions
|
||
of the Android SDK and Ant. This should fix build problems caused by the
|
||
use of older versions.</p>
|
||
<p>Ren'Py now recognizes and supports the Amazon Fire TV device. When a Fire TV
|
||
is detected, the "firetv" screen variant is selected. To support pushing games
|
||
to this device, Ren'Py now supports connecting to Android devices via the
|
||
Remote ADB protocol.</p>
|
||
</div>
|
||
<div class="section" id="id26">
|
||
<h3>Other<a class="headerlink" href="#id26" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixed a problem that occurred when an interaction containing a MoveTransition
|
||
was restarted.</p>
|
||
<p>Added support for imagemaps that are larger than the screen. This allows an
|
||
imagemap to be placed inside a viewport.</p>
|
||
<p>It is now possible to select the layer used by the say, choice, and nvl
|
||
choice screen. Please see <a class="reference internal" href="config.html#var-config.say_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.say_layer</span></code></a>, <a class="reference internal" href="config.html#var-config.choice_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.choice_layer</span></code></a>,
|
||
and <a class="reference internal" href="nvl_mode.html#var-config.nvl_layer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.nvl_layer</span></code></a> statements.</p>
|
||
<p>The prediction of window and bar images has been improved.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-17">
|
||
<h2>Ren'Py 6.17<a class="headerlink" href="#ren-py-6-17" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="styles">
|
||
<h3>Styles<a class="headerlink" href="#styles" title="Permalink to this headline"> link</a></h3>
|
||
<p>The style system, which makes it possible to configure the look of
|
||
displayables, has been rewritten from scratch. The new code reduces
|
||
the amount of time it takes to create a new style to a small fraction
|
||
of the previous time. Since every displayable creates an associated
|
||
style, this has the potential to lead to a substantial performance
|
||
improvement.</p>
|
||
<p>This release also introduced a new style statement that can be used
|
||
to define styles, in place of Python code. (Of course, the older form
|
||
remains fully supported.) Lengthy and redundant code like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">init</span> <span class="k">python</span><span class="p">:</span>
|
||
<span class="k">style</span><span class="o">.</span><span class="n">quick_button_text</span><span class="o">.</span><span class="n">set_parent</span><span class="p">(</span><span class="s1">'default'</span><span class="p">)</span>
|
||
<span class="k">style</span><span class="o">.</span><span class="n">quick_button_text</span><span class="o">.</span><span class="na">size</span> <span class="o">=</span> <span class="mi">12</span>
|
||
<span class="k">style</span><span class="o">.</span><span class="n">quick_button_text</span><span class="o">.</span><span class="na">idle_color</span> <span class="o">=</span> <span class="s2">"#8888"</span>
|
||
<span class="k">style</span><span class="o">.</span><span class="n">quick_button_text</span><span class="o">.</span><span class="na">hover_color</span> <span class="o">=</span> <span class="s2">"#ccc"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>can be replaced with:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">style</span> <span class="n">quick_button_text</span> <span class="k">is</span> <span class="k">default</span><span class="p">:</span>
|
||
<span class="na">size</span> <span class="mi">12</span>
|
||
<span class="na">idle_color</span> <span class="s2">"#8888"</span>
|
||
<span class="na">hover_color</span> <span class="s2">"#ccc"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Finally, the style inspector (accessed through Shift+I) has been
|
||
rewritten.</p>
|
||
</div>
|
||
<div class="section" id="syntax-changes">
|
||
<h3>Syntax Changes<a class="headerlink" href="#syntax-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>In addition to the new style statement, there are four other syntax
|
||
changes:</p>
|
||
<ul>
|
||
<li><p class="first">The definition of a simple expression has been expanded. Simple expressions
|
||
(which are used in ATL and the screen language, among other places) now
|
||
encompass all Python expressions that do not include lambda or the
|
||
ternary (... if ... else ...) operator.</p>
|
||
<p>This means that code like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="n">logo</span><span class="p">:</span>
|
||
<span class="na">xpos</span> <span class="mi">800</span> <span class="o">/</span> <span class="mi">2</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>is now legal. Previously, the expression had to be parenthesized.</p>
|
||
</li>
|
||
<li><p class="first">The new <code class="docutils literal notranslate"><span class="pre">show</span> <span class="pre">layer</span></code> statement allows one to apply a transform
|
||
or ATL transform to an entire layer, using syntax like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="na">layer</span> <span class="n">master</span> <span class="k">at</span> <span class="n">flip</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>or:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="na">layer</span> <span class="n">master</span><span class="p">:</span>
|
||
<span class="na">xalign</span> <span class="mf">0.5</span> <span class="na">yalign</span> <span class="mf">0.5</span> <span class="na">rotate</span> <span class="mi">180</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
<li><p class="first">The new <code class="docutils literal notranslate"><span class="pre">window</span> <span class="pre">auto</span></code> statement makes it possible for Ren'Py to
|
||
automatically show and hide the dialogue window. By default, it is
|
||
shown before <code class="docutils literal notranslate"><span class="pre">say</span></code> statements, and hidden before <code class="docutils literal notranslate"><span class="pre">scene</span></code> statements,
|
||
but this can be customized.</p>
|
||
</li>
|
||
<li><p class="first">The init statement has been extended so it can be combined with
|
||
other statements. It's now possible to write "init 1 image = ...",
|
||
"init -2 define name = ..." and so on.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id27">
|
||
<h3>Translations<a class="headerlink" href="#id27" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release adds French and Russian template games and translations
|
||
of the launcher.</p>
|
||
</div>
|
||
<div class="section" id="id28">
|
||
<h3>Android<a class="headerlink" href="#id28" title="Permalink to this headline"> link</a></h3>
|
||
<p>It is no longer necessary to download RAPT (the Ren'Py Android Packaging Tool)
|
||
separately from Ren'Py. As of this release, RAPT will be downloaded by the
|
||
Ren'Py launcher when an Android build is requested, and will be updated
|
||
by the Ren'Py updater.</p>
|
||
<p>Buttons may now have an alternate action that is triggered by longpress
|
||
on Android and right-click on desktop computers.</p>
|
||
<p>This release fixes a bug in which Ren'Py would not save persistent data
|
||
(including preferences) before being terminated by the Android system, and
|
||
a regression that broke compatibility with some Android 2.3 systems.</p>
|
||
</div>
|
||
<div class="section" id="new-and-changed-preferences">
|
||
<h3>New and Changed Preferences<a class="headerlink" href="#new-and-changed-preferences" title="Permalink to this headline"> link</a></h3>
|
||
<p>There are two new preferences accessible through the <code class="xref py py-func docutils literal notranslate"><span class="pre">Preferences()</span></code>
|
||
function:</p>
|
||
<ul class="simple">
|
||
<li>"auto-forward after click" controls if auto-forward mode is stopped
|
||
by a click.</li>
|
||
<li>"show empty window" determines is if the "window show" and "window auto"
|
||
statements will cause an empty window to be shown.</li>
|
||
</ul>
|
||
<p>Neither of these is exposed as part of the default preferences screen, but
|
||
both can be added by interested developers.</p>
|
||
<p>There is one changed preference:</p>
|
||
<ul class="simple">
|
||
<li>"display" now has an "any window" option, which restores a fullscreen
|
||
Ren'Py to its prior windowed size.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id29">
|
||
<h3>Other<a class="headerlink" href="#id29" title="Permalink to this headline"> link</a></h3>
|
||
<p><a class="reference internal" href="screen_actions.html#ShowMenu" title="ShowMenu"><code class="xref py py-func docutils literal notranslate"><span class="pre">ShowMenu()</span></code></a> can now pass arguments to the screen it displays.</p>
|
||
<p>The input displayable now takes a pixel_width property, that limits
|
||
the size of the input field it a certain number of pixels.</p>
|
||
<p>The <a class="reference internal" href="screen_actions.html#FileCurrentScreenshot" title="FileCurrentScreenshot"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileCurrentScreenshot()</span></code></a> function</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-xsize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xsize</span></code></a>, <a class="reference internal" href="style_properties.html#style-property-ysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ysize</span></code></a>, and <a class="reference internal" href="style_properties.html#style-property-xysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xysize</span></code></a> style
|
||
properties make it possible to directly set the size of a displayable.</p>
|
||
<p>The <a class="reference internal" href="style_properties.html#style-property-focus_mask"><code class="xref std std-propref docutils literal notranslate"><span class="pre">focus_mask</span></code></a> style property can now take as an argument a callable
|
||
that returns true when a displayable should be focused. If such a callable
|
||
can be written, it may be much faster than the current method of determining
|
||
pixel opacity.</p>
|
||
<p>Viewport now respects the xfill and yfill properties. The default viewport
|
||
style sets these to true. Setting them to False will cause the viewport to
|
||
shrink to fit its contents when those contents do not fill the entire
|
||
viewport.</p>
|
||
<p>The new <a class="reference internal" href="displaying_images.html#renpy.get_image_bounds" title="renpy.get_image_bounds"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_image_bounds()</span></code></a> function retrieves the bounding box
|
||
of an image that is being displayed, after all Transforms have been applied
|
||
to it.</p>
|
||
<p>The new <a class="reference internal" href="save_load_rollback.html#renpy.retain_after_load" title="renpy.retain_after_load"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.retain_after_load()</span></code></a> can be used to retain data updated
|
||
by a screen after the game is loaded.</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-xsize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xsize</span></code></a>, <a class="reference internal" href="style_properties.html#style-property-ysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ysize</span></code></a>, and <a class="reference internal" href="style_properties.html#style-property-xysize"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xysize</span></code></a> style
|
||
properties make it possible to directly set the size of resizable
|
||
displayables.</p>
|
||
<p>Prediction of images with partial attributes and side images used in
|
||
dialogue has been improved. Prediction of creator-defined statements
|
||
now works as documented.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-16-2">
|
||
<h2>Ren'Py 6.16.2<a class="headerlink" href="#ren-py-6-16-2" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release adds a Spanish translation of the launcher and the template game.</p>
|
||
<p>This release adds the new <a class="reference internal" href="other.html#renpy.get_mouse_pos" title="renpy.get_mouse_pos"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.get_mouse_pos()</span></code></a> function, which
|
||
retrieves the mouse position if a mouse is supported.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-16">
|
||
<h2>Ren'Py 6.16<a class="headerlink" href="#ren-py-6-16" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="id30">
|
||
<h3>Android<a class="headerlink" href="#id30" title="Permalink to this headline"> link</a></h3>
|
||
<p>Android support has now been integrated into the Ren'Py launcher. While
|
||
for size reasons RAPT is still a separate download, once RAPT has been
|
||
placed inside the Ren'Py directory, the launcher will allow you to:</p>
|
||
<ul class="simple">
|
||
<li>Install the Android SDK.</li>
|
||
<li>Configure a project as an Android application.</li>
|
||
<li>Build and Install the Android application.</li>
|
||
</ul>
|
||
<p>The launcher can now launch Ren'Py in modes that simulate Android phones,
|
||
tablets, and television-based consoles.</p>
|
||
<p>Ren'Py includes support for television-based Android consoles, such as the
|
||
OUYA. It includes support for detecting the OUYA specifically, and choosing
|
||
a variant as appropriate.</p>
|
||
<p>This release adds some video playback support to the Android port. While
|
||
limited to full-screen video and codecs that the Android platform supports
|
||
(which unfortunately have little overlap with desktop Ren'Py), this may
|
||
be enough to enable cutscene movies.</p>
|
||
<p>Ren'Py now includes a new set of screen variants, with "large", "medium", and
|
||
"small" reflecting the visual size of devices (televisions are considered to
|
||
be small because they're far away), while "touch", "tv", and "pc" reflect
|
||
the input devices involved.</p>
|
||
<p>Android now supports displaying vertical text.</p>
|
||
</div>
|
||
<div class="section" id="save-load-and-persistent-improvements">
|
||
<h3>Save, Load, and Persistent Improvements<a class="headerlink" href="#save-load-and-persistent-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>The low-level load/save API has been overhauled. It's now possible to
|
||
access save slot information directly, instead of having to scan all save
|
||
slots to find the one you want. New functions include <a class="reference internal" href="save_load_rollback.html#renpy.list_slots" title="renpy.list_slots"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.list_slots()</span></code></a>,
|
||
<a class="reference internal" href="save_load_rollback.html#renpy.newest_slot" title="renpy.newest_slot"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.newest_slot()</span></code></a>, <a class="reference internal" href="save_load_rollback.html#renpy.slot_mtime" title="renpy.slot_mtime"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.slot_mtime()</span></code></a>,
|
||
<a class="reference internal" href="save_load_rollback.html#renpy.slot_json" title="renpy.slot_json"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.slot_json()</span></code></a>, and <a class="reference internal" href="save_load_rollback.html#renpy.slot_screenshot" title="renpy.slot_screenshot"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.slot_screenshot()</span></code></a>.</p>
|
||
<p>At a higher level, there is a new <a class="reference internal" href="screen_actions.html#FileNewest" title="FileNewest"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileNewest()</span></code></a> function that's
|
||
true for the newest save slot. <a class="reference internal" href="screen_actions.html#FilePageNext" title="FilePageNext"><code class="xref py py-func docutils literal notranslate"><span class="pre">FilePageNext()</span></code></a> and
|
||
<a class="reference internal" href="screen_actions.html#FilePagePrevious" title="FilePagePrevious"><code class="xref py py-func docutils literal notranslate"><span class="pre">FilePagePrevious()</span></code></a> now support a wrap argument that causes them
|
||
to wrap around a defined number of screens.</p>
|
||
<p>There is now support for adding arbitrary JSON information to save
|
||
files. This allows per-save information (like the path you're on
|
||
in a VN, date and amount of money in a sim, or party composition
|
||
in an RPG) to be accessed from the save and load screens.</p>
|
||
<p>JSON information is created by <a class="reference internal" href="config.html#var-config.save_json_callbacks"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.save_json_callbacks</span></code></a>,
|
||
and can be accessed through the low-level <a class="reference internal" href="save_load_rollback.html#renpy.slot_json" title="renpy.slot_json"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.slot_json()</span></code></a> or
|
||
high-level <a class="reference internal" href="screen_actions.html#FileJson" title="FileJson"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileJson()</span></code></a> functions.</p>
|
||
<p>When possible, Ren'Py now stores save files with the game, as well as in
|
||
a user-global save directory. This means that if a Ren'Py game is placed
|
||
on a USB drive or shared on a network, the saves will be available on
|
||
multiple computers. (When save files are available in both places, the
|
||
newest file wins.)</p>
|
||
<p>When a save file on a network share is updated, Ren'Py will automatically
|
||
rescan the contents of that file, and restart the current interaction. (This
|
||
will update the save and load screens, making the file available to be
|
||
loaded.)</p>
|
||
<p>Ren'Py will no longer auto-save while at the main menu.</p>
|
||
<p>Persistent data is also stored in both locations. When the persistent
|
||
data is not identical, it will be merged. By default, the most recently
|
||
updated value for each field will be used. In some cases (for example, a set
|
||
of endings the player has reached), this is not the correct behavior. The
|
||
new <a class="reference internal" href="persistent.html#renpy.register_persistent" title="renpy.register_persistent"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.register_persistent()</span></code></a> can be used to register different
|
||
merge behavior.</p>
|
||
</div>
|
||
<div class="section" id="voice">
|
||
<h3>Voice<a class="headerlink" href="#voice" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release adds support for playing voice without having to fill
|
||
the script with voice statements. This support consists of two
|
||
new pieces of functionality:</p>
|
||
<ul class="simple">
|
||
<li>The launcher contains a new "Extract Dialogue" function. This extracts
|
||
the dialogue into a tab-delimited file. Each record includes the character,
|
||
the dialogue text, the filename and line number, and a unique identifier
|
||
for that line.</li>
|
||
<li>The <a class="reference internal" href="config.html#var-config.auto_voice"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.auto_voice</span></code></a> variable is used to give a filename pattern
|
||
that is formatted with the unique identifier. If a file with that filename
|
||
exists, and no other voice file is being played, that file is used as the
|
||
voice.</li>
|
||
</ul>
|
||
<p>There are also several new voice-related preferences. The "voice sustain"
|
||
preference determines if voice is sustained through multiple interactions.
|
||
The "wait for voice" preference determines if auto-forward mode waits for
|
||
the voice to finish before advancing.</p>
|
||
</div>
|
||
<div class="section" id="image-gallery-and-music-room">
|
||
<h3>Image Gallery and Music Room<a class="headerlink" href="#image-gallery-and-music-room" title="Permalink to this headline"> link</a></h3>
|
||
<p>The image gallery now can display a navigation overlay with next, previous,
|
||
slide show, and return buttons. The creator can choose if these buttons
|
||
display the images associated with a single button, or advance between
|
||
multiple buttons.</p>
|
||
<p>The Music Room includes the ability to play a random track, and to determine
|
||
if the tracks are shuffled, looped, or if play is confined to a single
|
||
selected track.</p>
|
||
</div>
|
||
<div class="section" id="text-rendering">
|
||
<h3>Text Rendering<a class="headerlink" href="#text-rendering" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now renders portions of font characters that leave the character
|
||
bounding box. This prevents text (especially hinted and anti-aliased text)
|
||
from being cut off, but may lead to apparent placement problems for fonts
|
||
with very inaccurate bounding boxes.</p>
|
||
</div>
|
||
<div class="section" id="japanese-language">
|
||
<h3>Japanese Language<a class="headerlink" href="#japanese-language" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Ren'Py launcher has been translated into Japanese. The language
|
||
used by the launcher can be switched from the preferences screen.</p>
|
||
<p>There is now a Japanese language template game, which defaults to
|
||
a Japanese font and has a translated interface.</p>
|
||
<p>Much of the documentation has been translated
|
||
to Japanese. The Japanese translation can be found at:</p>
|
||
<blockquote>
|
||
<div><a class="reference external" href="http://ja.renpy.org/doc/html/">http://ja.renpy.org/doc/html/</a></div></blockquote>
|
||
</div>
|
||
<div class="section" id="documentation">
|
||
<h3>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Ren'Py documentation has been improved. The following pages have been
|
||
added or migrated from the old wiki-based documentation.</p>
|
||
<ul class="simple">
|
||
<li><a class="reference internal" href="label.html"><span class="doc">Labels & Control Flow</span></a></li>
|
||
<li><a class="reference internal" href="python.html"><span class="doc">Python Statements</span></a></li>
|
||
<li><a class="reference internal" href="conditional.html"><span class="doc">Conditional Statements</span></a></li>
|
||
<li><a class="reference internal" href="audio.html"><span class="doc">Audio</span></a></li>
|
||
<li><a class="reference internal" href="movie.html"><span class="doc">Movie</span></a></li>
|
||
<li><a class="reference internal" href="persistent.html"><span class="doc">Persistent Data</span></a></li>
|
||
<li><a class="reference internal" href="cds.html"><span class="doc">Creator-Defined Statements</span></a></li>
|
||
<li><a class="reference internal" href="character_callbacks.html"><span class="doc">Character Callbacks</span></a></li>
|
||
<li><a class="reference internal" href="file_python.html"><span class="doc">File Access</span></a></li>
|
||
<li><a class="reference internal" href="environment_variables.html"><span class="doc">Environment Variables</span></a></li>
|
||
<li><a class="reference internal" href="reserved.html"><span class="doc">Reserved Names</span></a></li>
|
||
</ul>
|
||
<p>Many other documentation pages have been improved and edited.</p>
|
||
</div>
|
||
<div class="section" id="id31">
|
||
<h3>Other<a class="headerlink" href="#id31" title="Permalink to this headline"> link</a></h3>
|
||
<p>The default quick menu now includes rollback and fast skip
|
||
functionality. (This functionality is contained in the template screens.rpy,
|
||
and may need to be copied into your game.)</p>
|
||
<p>The default yes_no screen now answers no when the user right-clicks. (This
|
||
functionality is contained in the template screens.rpy, and may need to be
|
||
copied into your game.)</p>
|
||
<p>The fast skipping function now stops when it visits seen text.</p>
|
||
<p>The <a class="reference internal" href="build.html#var-build.destination"><code class="xref std std-var docutils literal notranslate"><span class="pre">build.destination</span></code></a> variable can be used to select the directory
|
||
in which Ren'Py places files when building a distribution.</p>
|
||
<p>There is a new NullAction that can be used when one wants a button
|
||
to be sensitive to hover and unhover, but not performing a useful
|
||
action on click.</p>
|
||
<p>ConditionSwitch is now much faster.</p>
|
||
<p>Ren'Py will deal with files with insane timestamps by giving them the
|
||
current time.</p>
|
||
</div>
|
||
<div class="section" id="bugfixes">
|
||
<h3>Bugfixes<a class="headerlink" href="#bugfixes" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release includes many bugfixes. Some of the more important are:</p>
|
||
<ul class="simple">
|
||
<li>A fix to a problem that would cause Ren'Py to restart the display when
|
||
starting up on Windows. This could cause Ren'Py to spuriously detect a
|
||
slow video card, and present the user with the appropriate error message.</li>
|
||
<li>A fix to a problem where Ren'Py would fail to display the proper error
|
||
message when Python code containing non-ASCII characters fails to compile.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-15-6">
|
||
<h2>Ren'Py 6.15.6<a class="headerlink" href="#ren-py-6-15-6" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release includes improvements for the Android platform:</p>
|
||
<ul class="simple">
|
||
<li>Assets are now read exclusively from the APK and expansion file.</li>
|
||
<li>Logs and tracebacks are placed on external storage.</li>
|
||
<li>Saves are placed on external storage, except when saves from
|
||
older versions of Ren'Py exist.</li>
|
||
</ul>
|
||
<p>The GL2 shaders Ren'Py uses have been simplified in the (usual) case
|
||
where no clipping is occurring. This leads to a noticeable speed
|
||
improvement on Android, and potentially other platforms as well.</p>
|
||
<p>An issue with Drag-and-drop has been fixed. Thanks go to Kinsman
|
||
for contributing this fixe.</p>
|
||
<p>The <a class="reference internal" href="screen_actions.html#Skip" title="Skip"><code class="xref py py-func docutils literal notranslate"><span class="pre">Skip()</span></code></a> action now triggers the skip indicator. It also
|
||
supports a new fast parameter, which causes skipping to the
|
||
next menu.</p>
|
||
<p>This release includes various minor changes to improve compatibility
|
||
with very old Ren'Py games. (It now runs the Ren'Py 5 demo.)</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-15-5">
|
||
<h2>Ren'Py 6.15.5<a class="headerlink" href="#ren-py-6-15-5" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release adds two new features:</p>
|
||
<ul class="simple">
|
||
<li>The GL renderer now supports additive blending. This is enabled using the
|
||
<a class="reference internal" href="atl.html#transform-property-additive"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">additive</span></code></a> transform property in an ATL transform or use of the
|
||
<a class="reference internal" href="trans_trans_python.html#Transform" title="Transform"><code class="xref py py-func docutils literal notranslate"><span class="pre">Transform()</span></code></a> class. Additive blending will not work if the software
|
||
renderer is in use, and it's up to creators to deal with that issue.</li>
|
||
<li>The new <a class="reference internal" href="displayables.html#Flatten" title="Flatten"><code class="xref py py-func docutils literal notranslate"><span class="pre">Flatten()</span></code></a> displayable combines multiple textures into
|
||
a single texture. This can be used to prevent incorrect behavior
|
||
when a displayable containing multiple overlapping textures (like a
|
||
<code class="xref py py-func docutils literal notranslate"><span class="pre">LiveComposite()</span></code> is shown with an <a class="reference internal" href="atl.html#transform-property-alpha"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">alpha</span></code></a> between 0 and 1.</li>
|
||
</ul>
|
||
<p>It also fixes the following issues:</p>
|
||
<ul class="simple">
|
||
<li>Whitespace is now skipped before default arguments, which previously
|
||
caused parse errors in some cases.</li>
|
||
<li>Ren'Py now sets the unix mode of files and directories in zip and tar
|
||
files to 644 and 755 as appropriate. Prior versions of Ren'Py used
|
||
666 and 777 as the permissions, which lead to a security problem
|
||
when the file was unpacked by a tool that didn't respect the user's
|
||
umask. (Info-zip had this problem.)</li>
|
||
<li>Auto-hinting for fonts is now enabled by default. This restores font
|
||
rendering compatibility with prior releases.</li>
|
||
<li>Ren'Py now builds with and requires the current version of libav. It
|
||
should also work with current versions of ffmpeg when libav is
|
||
available.</li>
|
||
<li>The version of SDL distributed with Ren'Py has been patched to
|
||
prevent multiple windows from showing up in the Window menu
|
||
when entering and leaving fullscreen mode.</li>
|
||
</ul>
|
||
<div class="section" id="ren-py-6-15-4">
|
||
<h3>Ren'Py 6.15.4<a class="headerlink" href="#ren-py-6-15-4" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release fixes a compile problem that prevented Ren'Py 6.14.x and Ren'Py
|
||
6.15.0-3 from running on most 64-bit Linux systems.</p>
|
||
<p>Image prediction has become more fine-grained, and can take place while the
|
||
screen is animating.</p>
|
||
<p>The new <a class="reference internal" href="build.html#var-build.exclude_empty_directories"><code class="xref std std-var docutils literal notranslate"><span class="pre">build.exclude_empty_directories</span></code></a> determines if empty directories
|
||
are include or excluded from the distribution. It defaults to true,
|
||
previously the default was platform-dependant.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-15">
|
||
<h2>Ren'Py 6.15<a class="headerlink" href="#ren-py-6-15" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="translation-framework">
|
||
<h3>Translation Framework<a class="headerlink" href="#translation-framework" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now includes a comprehensive
|
||
<a class="reference internal" href="translation.html#translation"><span class="std std-ref">translation framework</span></a>. This framework includes support
|
||
for using a single language selection to change dialogue, menus and other
|
||
interface text, images and files, styles and styles.</p>
|
||
<p>The dialogue translation support allows lines of dialogue to be split and
|
||
combined at the translator's discretion. As most Ren'Py statements are
|
||
allowed inside the new translation blocks, it's possible to use logic (like
|
||
conditions) to tailor the translations to your language.</p>
|
||
<p>The launcher includes a new "Generate Translations" button, which – as part of
|
||
a sanctioned translation where the full script is present – will generate
|
||
empty translation files for a new language.</p>
|
||
</div>
|
||
<div class="section" id="improved-japanese-support">
|
||
<h3>Improved Japanese Support<a class="headerlink" href="#improved-japanese-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py 6.15 includes multiple changes to better support the Japanese language.</p>
|
||
<ul>
|
||
<li><p class="first">The tutorial game has been translated to Japanese, with the language being
|
||
selectable from the preferences menu.</p>
|
||
<p>The tutorial was translated by Koichi Akabe.</p>
|
||
</li>
|
||
<li><p class="first">Support for vertical writing has been added to Ren'Py. Consisting of the
|
||
<a class="reference internal" href="style_properties.html#style-property-vertical"><code class="xref std std-propref docutils literal notranslate"><span class="pre">vertical</span></code></a> style property for text, and the new
|
||
<a class="reference internal" href="style_properties.html#style-property-box_reverse"><code class="xref std std-propref docutils literal notranslate"><span class="pre">box_reverse</span></code></a> property on hboxes, this support makes it possible
|
||
to display dialogue, menus, and other text in a vertical orientation.</p>
|
||
<p>Vertical text support was written by Koichi Akabe.</p>
|
||
</li>
|
||
<li><p class="first">The line-breaking algorithm has been updated to match Unicode 6.2. In
|
||
addition, three new "languages" have been added. The new "japanese-strict",
|
||
"japanese-normal", and "japanese-loose" languages (based on the line-break
|
||
options in the CSS3 Text module) allow greater control of how Ren'Py breaks
|
||
lines with small kana and other special characters.</p>
|
||
<p>Linebreaking can be further tailored using the new
|
||
<a class="reference internal" href="other.html#renpy.language_tailor" title="renpy.language_tailor"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.language_tailor()</span></code></a> function, which can change the linebreaking
|
||
class of a character.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id32">
|
||
<h3>Console<a class="headerlink" href="#id32" title="Permalink to this headline"> link</a></h3>
|
||
<p>The new debug console makes it possible to interactively run Ren'Py script and
|
||
Python statements, and immediately see the results. The console is available
|
||
in developer mode or when <code class="xref std std-var docutils literal notranslate"><span class="pre">config.console</span></code> is True, and can be accessed
|
||
by pressing Shift+O.</p>
|
||
<p>The console can be used to:</p>
|
||
<ul class="simple">
|
||
<li>Jump to a label.</li>
|
||
<li>Interactively try out Ren'Py script statements.</li>
|
||
<li>Evaluate a Python expression or statement to see the result.</li>
|
||
<li>Trace Python expressions as the game progresses.</li>
|
||
</ul>
|
||
<p>The console was originally written by Shiz, C, and delta.</p>
|
||
</div>
|
||
<div class="section" id="screen-parameters">
|
||
<h3>Screen Parameters<a class="headerlink" href="#screen-parameters" title="Permalink to this headline"> link</a></h3>
|
||
<p>Screens now take named parameters, similar to the way that labels and
|
||
transforms take named parameters. It's now possible to write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">screen</span> <span class="n">top_text</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="na">size</span><span class="o">=</span><span class="mi">36</span><span class="p">):</span>
|
||
<span class="k">text</span> <span class="n">s</span> <span class="na">xalign</span> <span class="mf">0.5</span> <span class="na">size</span> <span class="na">size</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>and:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="k">screen</span> <span class="n">top_text</span><span class="p">(</span><span class="s2">"It works!"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="replay-gallery">
|
||
<h3>Replay Gallery<a class="headerlink" href="#replay-gallery" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now includes support for <a class="reference internal" href="rooms.html#replay"><span class="std std-ref">replaying</span></a> scenes. A scene
|
||
replay can be invoked from anywhere in Ren'Py (for example, from a main menu
|
||
or game menus screen, even when the game has started). When the replay ends,
|
||
Ren'Py will return to the location the replay was invoked from, even if that
|
||
location is in a screen or in Python code. Rollback works inside a replay,
|
||
but saving and loading is disabled.</p>
|
||
<p>The <a class="reference internal" href="rooms.html#Replay" title="Replay"><code class="xref py py-func docutils literal notranslate"><span class="pre">Replay()</span></code></a> action begins a replay. The <a class="reference internal" href="rooms.html#renpy.end_replay" title="renpy.end_replay"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.end_replay()</span></code></a> ends a
|
||
replay if one is in progress, and is ignored otherwise.</p>
|
||
</div>
|
||
<div class="section" id="id33">
|
||
<h3>Voice Improvements<a class="headerlink" href="#id33" title="Permalink to this headline"> link</a></h3>
|
||
<p>There have been several improvements to the voice playback system. The new
|
||
<a class="reference internal" href="config.html#var-config.voice_filename_format"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.voice_filename_format</span></code></a> variable makes it possible to use only
|
||
part of the filename in a voice statement. The new voice_tag parameter to
|
||
<a class="reference internal" href="dialogue.html#Character" title="Character"><code class="xref py py-func docutils literal notranslate"><span class="pre">Character()</span></code></a>, in conjunction with the <a class="reference internal" href="voice.html#SetVoiceMute" title="SetVoiceMute"><code class="xref py py-func docutils literal notranslate"><span class="pre">SetVoiceMute()</span></code></a> and
|
||
<a class="reference internal" href="voice.html#ToggleVoiceMute" title="ToggleVoiceMute"><code class="xref py py-func docutils literal notranslate"><span class="pre">ToggleVoiceMute()</span></code></a> actions, makes it possible to selectively mute
|
||
particular characters' voices. The new <a class="reference internal" href="voice.html#VoiceReplay" title="VoiceReplay"><code class="xref py py-func docutils literal notranslate"><span class="pre">VoiceReplay()</span></code></a> action makes it
|
||
possible to replay the current voice.</p>
|
||
</div>
|
||
<div class="section" id="launcher-improvements">
|
||
<h3>Launcher Improvements<a class="headerlink" href="#launcher-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>There were a few launcher improvements in this release.</p>
|
||
<ul class="simple">
|
||
<li>The files pane of the navigation page has a new button that allows the
|
||
user to create a new script file.</li>
|
||
<li>The launcher can generate translation templates, and can be translated
|
||
using the translation framework.</li>
|
||
<li>The Ren'Py launcher now has a small amount of support for skins. While the
|
||
basic layout of the launcher remains fixed, skins allow the background
|
||
images and colors to be changed. See the <a class="reference internal" href="skins.html"><span class="doc">skin documentation</span></a>
|
||
for more details.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="macintosh-changes">
|
||
<h3>Macintosh Changes<a class="headerlink" href="#macintosh-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Macintosh version of Ren'Py now requires a 64-bit capable processor, and
|
||
Mac OS X 10.6 or newer.</p>
|
||
</div>
|
||
<div class="section" id="packaging-improvements">
|
||
<h3>Packaging Improvements<a class="headerlink" href="#packaging-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>The file layout of Ren'Py games has been somewhat altered. With the exception
|
||
of small launcher programs, all platform-dependent binaries are under the
|
||
lib/ directory. Ren'Py itself has now been placed in the renpy/ directory.
|
||
The common/ directory has been moved to renpy/common/, as it's considered an
|
||
integral part of Ren'Py.</p>
|
||
<p>Ren'Py now uses renamed but otherwise unmodified Python binaries on all
|
||
desktop platforms. (Previously, it used platform-specific binaries.) Portions
|
||
of the library are shared between the desktop builds.</p>
|
||
<p>A running Ren'Py process on Linux will now be named after the game, rather
|
||
than having python as a name.</p>
|
||
</div>
|
||
<div class="section" id="id34">
|
||
<h3>Other Changes<a class="headerlink" href="#id34" title="Permalink to this headline"> link</a></h3>
|
||
<ul class="simple">
|
||
<li><a class="reference internal" href="screens.html#sl-viewport"><span class="std std-ref">Viewports</span></a> now support edge scrolling, which scrolls
|
||
the viewport when the mouse is within a a configurable distance of the
|
||
viewport edge.</li>
|
||
<li>Most keyboard keys now automatically repeat. The repeat rate is controlled
|
||
by <code class="xref std std-var docutils literal notranslate"><span class="pre">config.key_repeat</span></code>.</li>
|
||
<li>Side images can now be used with menus.</li>
|
||
<li>The <a class="reference internal" href="config.html#var-config.enter_yesno_transition"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.enter_yesno_transition</span></code></a> and
|
||
<a class="reference internal" href="config.html#var-config.exit_yesno_transition"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.exit_yesno_transition</span></code></a> variables make it possible to define a
|
||
transition that is run when yes/no prompts appear and disappear,
|
||
respectively.</li>
|
||
<li>The <a class="reference internal" href="screens.html#sl-viewport"><span class="std std-ref">viewport statement</span></a> now supports edge scrolling -
|
||
automatic scrolling when the mouse approaches the sides of the viewport.</li>
|
||
<li>The new <a class="reference internal" href="atl.html#transform-property-transform_anchor"><code class="xref std std-tpref docutils literal notranslate"><span class="pre">transform_anchor</span></code></a> transform property makes the anchor the
|
||
point around which a transform is scaled and rotated. (For example, it's
|
||
now possible to rotate around the bottom-right corner of an image, rather
|
||
than just its center.)</li>
|
||
<li>The common directory has been moved to renpy/common, as it's part of
|
||
Ren'Py. The giant 00screens.rpy file has been broken up into a large number
|
||
of smaller files.</li>
|
||
<li>The new <a class="reference internal" href="style_properties.html#style-property-box_reverse"><code class="xref std std-propref docutils literal notranslate"><span class="pre">box_reverse</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-order_reverse"><code class="xref std std-propref docutils literal notranslate"><span class="pre">order_reverse</span></code></a> style
|
||
properties allow the user to control the order in which children of vbox
|
||
and hboxes are placed and drawn, respectively.</li>
|
||
<li>The xoffset and yoffset transform properties now take floating point
|
||
numbers, allowing more precise positioning if subpixel is true.</li>
|
||
<li>The <a class="reference internal" href="style_properties.html#style-property-child"><code class="xref std std-propref docutils literal notranslate"><span class="pre">child</span></code></a> style property of buttons is now exposed to the
|
||
screen language.</li>
|
||
<li>The new <a class="reference internal" href="config.html#var-config.enter_yesno_transition"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.enter_yesno_transition</span></code></a> and
|
||
<a class="reference internal" href="config.html#var-config.exit_yesno_transition"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.exit_yesno_transition</span></code></a> variables allow a creator to supply
|
||
transitions that are used upon entering and exiting yes/no prompts.</li>
|
||
<li>The Python decimal module is now included in the default builds of Ren'Py.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id35">
|
||
<h3>Bugfixes<a class="headerlink" href="#id35" title="Permalink to this headline"> link</a></h3>
|
||
<p>Among others, the following bugs were fixed:</p>
|
||
<ul class="simple">
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/37">github bug37</a>: A crash with LiveTile when sizes were not integers.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/41">github bug41</a>: <a class="reference internal" href="file_python.html#renpy.loadable" title="renpy.loadable"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.loadable()</span></code></a> failed to search for files inside
|
||
android packages.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/42">github bug42</a>: The launcher can now run a game that's in a read-only
|
||
directory.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/45">github bug45</a>: Ren'Py would fail when the hiding of a screen caused a screen
|
||
beneath it to be hidden.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/46">github bug46</a>: A bug that prevented Ren'Py from evicting images from an
|
||
over-full image cache, that manifested as a runaway memory leak.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/50">github bug50</a>: Vertical bars would scroll with the left and right arrow
|
||
keys; and bars would remain grabbed even if they were grabbed while leaving
|
||
the screen, preventing further input.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/51">github bug51</a>: The slow_done callback was not called after a rollback.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/56">github bug56</a>, <a class="reference external" href="https://github.com/renpy/renpy/issues/57">github bug57</a>: <a class="reference internal" href="file_python.html#renpy.loadable" title="renpy.loadable"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.loadable()</span></code></a> now works with Android
|
||
assets.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/60">github bug60</a>: Fixed a bug that prevented {p} and {w} from working properly
|
||
when followed immediately by a text tag.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/61">github bug61</a>: Ren'Py no longer crashes when an end_game_transition is set
|
||
and a screen uses a variable that is no longer defined when the game
|
||
restarts.</li>
|
||
<li><a class="reference external" href="https://github.com/renpy/renpy/issues/65">github bug65</a>: Multiplying a rollback list by a number now always produces a
|
||
rollback list.</li>
|
||
<li>Editra should work better on Windows.</li>
|
||
<li>It's now possible to <a class="reference internal" href="statement_equivalents.html#renpy.call" title="renpy.call"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.call()</span></code></a> a label that doesn't take
|
||
parameters.</li>
|
||
<li>Fixed an error handling failure when a style used by error handling was
|
||
not buildable.</li>
|
||
<li>Fixed an error handling failure when a python early block contained a
|
||
syntax error.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-14">
|
||
<h2>Ren'Py 6.14<a class="headerlink" href="#ren-py-6-14" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="ren-py-launcher-rewrite">
|
||
<h3>Ren'Py Launcher Rewrite<a class="headerlink" href="#ren-py-launcher-rewrite" title="Permalink to this headline"> link</a></h3>
|
||
<p>The Ren'Py launcher has been rewritten. Some of the improvements are:</p>
|
||
<ul>
|
||
<li><p class="first">A new visual design by Doomfest of the Dischan visual novel team.</p>
|
||
</li>
|
||
<li><p class="first">The launcher now includes direct access to open the script and game
|
||
directories, and common script files.</p>
|
||
</li>
|
||
<li><p class="first">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.</p>
|
||
<p>Script navigation also provides access to individual script files.</p>
|
||
</li>
|
||
<li><p class="first">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:</p>
|
||
<ul class="simple">
|
||
<li>Read the build process configuration from the game script.</li>
|
||
<li>Build the archives needed.</li>
|
||
<li>Generate the archive and update files.</li>
|
||
</ul>
|
||
</li>
|
||
<li><p class="first">The launcher can now use the Ren'Py updater to update Ren'Py, and to
|
||
download editors.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="editra-text-editing">
|
||
<h3>Editra & Text Editing<a class="headerlink" href="#editra-text-editing" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>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.</p>
|
||
<p>If Editra is selected by the user, and it is not installed, Ren'Py will
|
||
automatically download it.</p>
|
||
<p>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.</p>
|
||
<p>Ren'Py also supports editing files through system-specific file associations.
|
||
(This support will not send the cursor to the correct line, however.)</p>
|
||
</div>
|
||
<div class="section" id="ren-py-web-updater">
|
||
<h3>Ren'Py Web Updater<a class="headerlink" href="#ren-py-web-updater" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>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.</p>
|
||
<p>Ren'Py includes a default updater interface that can be further configured by
|
||
interested users.</p>
|
||
</div>
|
||
<div class="section" id="transform-changes">
|
||
<h3>Transform Changes<a class="headerlink" href="#transform-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release changes the behavior of transforms to make them more correct and
|
||
easier to use.</p>
|
||
<p>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.</p>
|
||
<p>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.</p>
|
||
<p>Thanks to Edwin for contributing these changes.</p>
|
||
</div>
|
||
<div class="section" id="screen-language-displayable-and-transition-enhancements">
|
||
<h3>Screen Language, Displayable, and Transition Enhancements<a class="headerlink" href="#screen-language-displayable-and-transition-enhancements" title="Permalink to this headline"> link</a></h3>
|
||
<ul class="simple">
|
||
<li>The <a class="reference internal" href="screens.html#sl-textbutton"><span class="std std-ref">Textbutton</span></a> and <a class="reference internal" href="screens.html#sl-label"><span class="std std-ref">Label</span></a> screen language statements
|
||
now take properties prefixed with <code class="docutils literal notranslate"><span class="pre">text\_</span></code>. These properties have the
|
||
text_ prefix stripped, and are then passed to the internal text displayable.</li>
|
||
<li>The <a class="reference internal" href="screens.html#sl-viewport"><span class="std std-ref">Viewport</span></a> screen language statement now takes a <cite>scrollbars</cite>
|
||
parameter. If given, scrollbars that manipulate the viewport are created.</li>
|
||
<li>The <a class="reference internal" href="screens.html#sl-viewport"><span class="std std-ref">Viewport</span></a> screen language statement now takes <cite>xinitial</cite> and
|
||
<cite>yinitial</cite> parameters. If given, these control the initial positioning of
|
||
the viewport.</li>
|
||
<li>A screen language block may now contain multiple has statements. Screen
|
||
language widgets that take single children can now take a has statement.</li>
|
||
<li>The input displayable now supports the use of the left and right arrow
|
||
keys within the text. (Thanks to Edwin for this feature.)</li>
|
||
<li><a class="reference internal" href="transitions.html#MoveTransition" title="MoveTransition"><code class="xref py py-func docutils literal notranslate"><span class="pre">MoveTransition()</span></code></a> 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.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="rollback-improvements">
|
||
<h3>Rollback Improvements<a class="headerlink" href="#rollback-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<ul>
|
||
<li><p class="first">The new <a class="reference internal" href="save_load_rollback.html#renpy.fix_rollback" title="renpy.fix_rollback"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.fix_rollback()</span></code></a> 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.</p>
|
||
<p>Thanks to Edwin for contributing fix_rollback.</p>
|
||
</li>
|
||
<li><p class="first">Rolling forward now works through a jump out of a <code class="docutils literal notranslate"><span class="pre">call</span> <span class="pre">screen</span></code>
|
||
statement.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="video-improvements">
|
||
<h3>Video Improvements<a class="headerlink" href="#video-improvements" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>Ren'Py now supports the WebM video format.</p>
|
||
</div>
|
||
<div class="section" id="image-load-log">
|
||
<h3>Image Load Log<a class="headerlink" href="#image-load-log" title="Permalink to this headline"> link</a></h3>
|
||
<p>When <a class="reference internal" href="config.html#var-config.developer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.developer</span></code></a> is true, Ren'Py keeps an internal log of image
|
||
loads.</p>
|
||
<p>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.</p>
|
||
</div>
|
||
<div class="section" id="file-actions-and-functions">
|
||
<h3>File Actions and Functions<a class="headerlink" href="#file-actions-and-functions" title="Permalink to this headline"> link</a></h3>
|
||
<p>Two screen functions have been added, and two screen actions have been changed:</p>
|
||
<ul class="simple">
|
||
<li>The new <a class="reference internal" href="screen_actions.html#FileUsedSlots" title="FileUsedSlots"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileUsedSlots()</span></code></a> function returns a list of used file slots
|
||
on the current page.</li>
|
||
<li>The new <a class="reference internal" href="screen_actions.html#FileCurrentPage" title="FileCurrentPage"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileCurrentPage()</span></code></a> function returns the name of the current
|
||
page.</li>
|
||
<li>The <a class="reference internal" href="screen_actions.html#FileSave" title="FileSave"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileSave()</span></code></a> and <a class="reference internal" href="screen_actions.html#FileAction" title="FileAction"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileAction()</span></code></a> actions have been modified so
|
||
that if the slot name is None, an unused slot based on the current time is
|
||
used.</li>
|
||
</ul>
|
||
<p>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.</p>
|
||
</div>
|
||
<div class="section" id="multiple-store-support">
|
||
<h3>Multiple Store Support<a class="headerlink" href="#multiple-store-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>Stores are accessed by supplying an in-clause to a python block. For example:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">init</span> <span class="k">python</span> <span class="k">in</span> <span class="n">stats</span><span class="p">:</span>
|
||
|
||
<span class="k">def</span> <span class="nf">reset</span><span class="p">():</span>
|
||
<span class="sd">"""</span>
|
||
<span class="sd"> Code to reset the statistics.</span>
|
||
<span class="sd"> """</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>User-created stores are placed into the "store" package, with the default
|
||
store being the package itself. Names can be imported between packages.:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">init</span> <span class="k">python</span><span class="p">:</span>
|
||
<span class="kn">from</span> <span class="nn">store.stats</span> <span class="kn">import</span> <span class="n">reset</span>
|
||
|
||
<span class="k">init</span> <span class="k">python</span> <span class="k">in</span> <span class="n">stats</span><span class="p">:</span>
|
||
<span class="kn">from</span> <span class="nn">store</span> <span class="kn">import</span> <span class="n">ToggleField</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>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.</p>
|
||
</div>
|
||
<div class="section" id="platform-support-and-library-updates">
|
||
<h3>Platform Support and Library Updates<a class="headerlink" href="#platform-support-and-library-updates" title="Permalink to this headline"> link</a></h3>
|
||
<p>Linux support has been changed.</p>
|
||
<ul class="simple">
|
||
<li>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.</li>
|
||
<li>The Linux version is now linked against the libraries from the 2009-era
|
||
Ubuntu 10.04 Lucid. (Previously, Ren'Py had been linked against 2006's
|
||
Dapper.) Older versions of Linux are no longer supported.</li>
|
||
</ul>
|
||
<p>Many libraries that Ren'Py depends on have been updated. Some of the changes
|
||
that have occurred are:</p>
|
||
<ul class="simple">
|
||
<li>Python has been updated to version 2.7.3.</li>
|
||
<li>Pygame has been updated to version 1.9.1.</li>
|
||
<li>GLEW has been updated to version 1.7.0. This may fix OpenGL problems on
|
||
some Linux systems.</li>
|
||
<li>LibAV has been updated to version 0.7.6, and has been compiled with CPU
|
||
detection enabled.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id36">
|
||
<h3>Other Changes<a class="headerlink" href="#id36" title="Permalink to this headline"> link</a></h3>
|
||
<ul>
|
||
<li><p class="first">The <a class="reference internal" href="statement_equivalents.html#renpy.call" title="renpy.call"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.call()</span></code></a> 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.</p>
|
||
</li>
|
||
<li><p class="first">When an action is expected, nested lists of actions can be given. The
|
||
lists are flattened and the action executed.</p>
|
||
</li>
|
||
<li><p class="first">Added the <a class="reference internal" href="screen_actions.html#OpenURL" title="OpenURL"><code class="xref py py-func docutils literal notranslate"><span class="pre">OpenURL()</span></code></a> action, which opens a URL in a web browser.</p>
|
||
</li>
|
||
<li><p class="first">Added the <a class="reference internal" href="config.html#var-config.gl_resize"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.gl_resize</span></code></a> variable, which determines if the user
|
||
can resize OpenGL windows.</p>
|
||
</li>
|
||
<li><p class="first">Ren'Py's handling of command line arguments has been rewritten. Most
|
||
notably, lint is now invoked with the:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">renpy</span><span class="o">.</span><span class="n">sh</span> <span class="o"><</span><span class="n">gamename</span><span class="o">></span> <span class="n">lint</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>command. (Which also works with renpy.exe.)</p>
|
||
</li>
|
||
<li><p class="first">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.</p>
|
||
</li>
|
||
<li><p class="first">The little-used remote control feature has been removed from Ren'Py.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="config.html#var-config.gl_resize"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.gl_resize</span></code></a> variable now controls resizing of a game
|
||
running in GL mode.</p>
|
||
</li>
|
||
<li><p class="first">Documentation fixes (by SleepKirby and others).</p>
|
||
</li>
|
||
<li><p class="first">The NVL-Mode tutorial has been ported to Sphinx (by Apricotorange).</p>
|
||
</li>
|
||
<li><p class="first">Ren'Py now defaults to reporting errors with sound and music files when
|
||
config.developer is True.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-13-9">
|
||
<h2>Ren'Py 6.13.9<a class="headerlink" href="#ren-py-6-13-9" title="Permalink to this headline"> link</a></h2>
|
||
<p>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.</p>
|
||
<p>To fix some editor-related problems, backported the 6.14 editor system. This
|
||
changes how editors are configured. Please see <a class="reference internal" href="editor.html"><span class="doc">Text Editor Integration</span></a>
|
||
for a description of the new system.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.save_dump"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.save_dump</span></code></a> 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.</p>
|
||
<p>Worked around a bug in Mesa that can cause crashes on certain Linux systems.</p>
|
||
<p>Fixed the following bugs in Ren'Py.</p>
|
||
<ul class="simple">
|
||
<li>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.</li>
|
||
<li>Menu choices are logged correctly.</li>
|
||
<li>All file access is now done in Unicode, rather than the system's native
|
||
encoding. This prevents crashes that occurred when Ren'Py was placed in a
|
||
directory that had non-ASCII characters in it.</li>
|
||
<li>Fixed focus_mask on the ANGLE renderer.</li>
|
||
<li>Displayables can now have fractional-pixel sizes. This allows a zooming
|
||
image to remain precisely centered on the screen.</li>
|
||
<li>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.</li>
|
||
<li>Ren'Py would not attempt an alternate rendering method if the texture test
|
||
failed, leading a "Textures are not rendering properly." exception.</li>
|
||
<li>A crash in Render.fill.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="ren-py-6-13-8">
|
||
<h2>Ren'Py 6.13.8<a class="headerlink" href="#ren-py-6-13-8" title="Permalink to this headline"> link</a></h2>
|
||
<p>Side images can now be limited to showing a single character, or only showing
|
||
characters that are not on the screen. See <a class="reference internal" href="side_image.html#var-config.side_image_tag"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.side_image_tag</span></code></a> and
|
||
<a class="reference internal" href="side_image.html#var-config.side_image_only_not_showing"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.side_image_only_not_showing</span></code></a>.</p>
|
||
<p>Added <a class="reference internal" href="config.html#var-config.python_callbacks"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.python_callbacks</span></code></a>, a list of Python functions that are
|
||
called at the end of each python block.</p>
|
||
<p>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.</p>
|
||
<p>Old-style string interpolation is now enabled by default, alongside new-style
|
||
string interpolation.</p>
|
||
<p>Ren'Py is now compatible with libpng 1.5. Thanks to James Broadhead for the
|
||
patch.</p>
|
||
<p>Fixed the following bugs:</p>
|
||
<ul class="simple">
|
||
<li>A crash when dealing with certain invalid fonts.</li>
|
||
<li>Pausing too long when typing out text.</li>
|
||
<li>Cutting one pixel off a block of text when fractional kerning was used.</li>
|
||
<li>Crashing when the time was set in the far future or past.</li>
|
||
<li>Immediately exiting when rolling forward at the quit prompt.</li>
|
||
<li>Crashing when a non-existing directory is added to the search path. (This
|
||
prevented Katawa Shoujo from starting in the latest version.)</li>
|
||
<li>Save-file size was overly large due to screens being included in save
|
||
files.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="ren-py-6-13">
|
||
<h2>Ren'Py 6.13<a class="headerlink" href="#ren-py-6-13" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="text-rewrite">
|
||
<h3>Text Rewrite<a class="headerlink" href="#text-rewrite" title="Permalink to this headline"> link</a></h3>
|
||
<p><a class="reference internal" href="text.html"><span class="doc">Text display</span></a> 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.</p>
|
||
<p>Some of the new features that are now supported by the text display system are:</p>
|
||
<ul>
|
||
<li><p class="first">Interpolation of variables enclosed in square brackets. It's now possible
|
||
to write code like:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="s2">"You scored [score] out of a possible [max_score] points."</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>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.</p>
|
||
<p>PEP 3101-style string formatting is supported, which means that this
|
||
syntax can be used to display fields and items, as well as variables.</p>
|
||
</li>
|
||
<li><p class="first">Kerning support was added, both as the <a class="reference internal" href="style_properties.html#style-property-kerning"><code class="xref std std-propref docutils literal notranslate"><span class="pre">kerning</span></code></a> style property
|
||
and the <a class="reference internal" href="text.html#text-tag-k"><code class="xref std std-tt docutils literal notranslate"><span class="pre">k</span></code></a> text tag.</p>
|
||
</li>
|
||
<li><p class="first">Support for ruby text (also known as furigana), via the <a class="reference internal" href="text.html#text-tag-rt"><code class="xref std std-tt docutils literal notranslate"><span class="pre">rt</span></code></a> and
|
||
<a class="reference internal" href="text.html#text-tag-rb"><code class="xref std std-tt docutils literal notranslate"><span class="pre">rb</span></code></a> text tags, and the <a class="reference internal" href="style_properties.html#style-property-ruby_style"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ruby_style</span></code></a> style property.</p>
|
||
</li>
|
||
<li><p class="first">The new <a class="reference internal" href="text.html#text-tag-space"><code class="xref std std-tt docutils literal notranslate"><span class="pre">space</span></code></a> and <a class="reference internal" href="text.html#text-tag-vspace"><code class="xref std std-tt docutils literal notranslate"><span class="pre">vspace</span></code></a> text tags make it easy to whitespace
|
||
into the text.</p>
|
||
</li>
|
||
<li><p class="first">The new <a class="reference internal" href="text.html#text-tag-cps"><code class="xref std std-tt docutils literal notranslate"><span class="pre">cps</span></code></a> text tag controls the speed of text display.</p>
|
||
</li>
|
||
<li><p class="first">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 <a class="reference internal" href="style_properties.html#style-property-language"><code class="xref std std-propref docutils literal notranslate"><span class="pre">language</span></code></a>
|
||
style property.</p>
|
||
</li>
|
||
<li><p class="first">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
|
||
<a class="reference internal" href="style_properties.html#style-property-layout"><code class="xref std std-propref docutils literal notranslate"><span class="pre">layout</span></code></a> style property.</p>
|
||
</li>
|
||
<li><p class="first">The new <a class="reference internal" href="style_properties.html#style-property-newline_indent"><code class="xref std std-propref docutils literal notranslate"><span class="pre">newline_indent</span></code></a> style property determines if Ren'Py adds
|
||
indentation after a newline in text.</p>
|
||
</li>
|
||
<li><p class="first">The new <a class="reference internal" href="style_properties.html#style-property-line_leading"><code class="xref std std-propref docutils literal notranslate"><span class="pre">line_leading</span></code></a> style property inserts space above a line
|
||
of text. (Ruby text can be placed into this space.)</p>
|
||
</li>
|
||
<li><p class="first">Text can be automatically translated before it is displayed. (This support
|
||
will be improved in a future major release.)</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="directx-support">
|
||
<h3>DirectX Support<a class="headerlink" href="#directx-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>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.</p>
|
||
<p>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.</p>
|
||
</div>
|
||
<div class="section" id="id37">
|
||
<h3>Other Changes<a class="headerlink" href="#id37" title="Permalink to this headline"> link</a></h3>
|
||
<ul>
|
||
<li><p class="first">Ren'Py now includes a <a class="reference internal" href="style.html#style-preferences"><span class="std std-ref">style preference</span></a> 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.</p>
|
||
</li>
|
||
<li><p class="first">Support has been added for screen-based
|
||
<a class="reference internal" href="rooms.html#image-gallery"><span class="std std-ref">image galleries</span></a> and <a class="reference internal" href="rooms.html#music-room"><span class="std std-ref">music rooms</span></a>.
|
||
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.</p>
|
||
</li>
|
||
<li><p class="first">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 menu.</p>
|
||
</li>
|
||
<li><p class="first">Ren'Py includes 5 new themes, and a number of new color schemes.</p>
|
||
</li>
|
||
<li><p class="first">Several new actions have been added. The <a class="reference internal" href="screen_actions.html#SelectedIf" title="SelectedIf"><code class="xref py py-func docutils literal notranslate"><span class="pre">SelectedIf()</span></code></a> action allows
|
||
the creator to control if a button is displayed in the selected state. The
|
||
<a class="reference internal" href="screen_actions.html#SetMixer" title="SetMixer"><code class="xref py py-func docutils literal notranslate"><span class="pre">SetMixer()</span></code></a> action allows a mixer to be set to a specific value. The
|
||
<a class="reference internal" href="screen_actions.html#Rollback" title="Rollback"><code class="xref py py-func docutils literal notranslate"><span class="pre">Rollback()</span></code></a> and <a class="reference internal" href="screen_actions.html#RollForward" title="RollForward"><code class="xref py py-func docutils literal notranslate"><span class="pre">RollForward()</span></code></a> actions allow the creator to bind
|
||
rollback to buttons.</p>
|
||
</li>
|
||
<li><p class="first">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.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="transitions.html#Dissolve" title="Dissolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">Dissolve()</span></code></a> and <a class="reference internal" href="transitions.html#ImageDissolve" title="ImageDissolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">ImageDissolve()</span></code></a> transitions now take a
|
||
time_warp parameter.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="displayables.html#Frame" title="Frame"><code class="xref py py-func docutils literal notranslate"><span class="pre">Frame()</span></code></a> displayable now allows the user to specify the left,
|
||
top, right, and bottom borders independently.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="style_properties.html#style-property-caret"><code class="xref std std-propref docutils literal notranslate"><span class="pre">caret</span></code></a> style property allows the user to customize the caret
|
||
of an input widget.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="cdd.html#renpy.displayable" title="renpy.displayable"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.displayable()</span></code></a> function has been exposed to the user.</p>
|
||
</li>
|
||
<li><p class="first">Timers can now take a list of actions, rather than just a single callable.</p>
|
||
</li>
|
||
<li><p class="first">Three transforms were added to the default library: <a class="reference internal" href="transforms.html#var-top"><code class="xref std std-var docutils literal notranslate"><span class="pre">top</span></code></a>,
|
||
<a class="reference internal" href="transforms.html#var-topleft"><code class="xref std std-var docutils literal notranslate"><span class="pre">topleft</span></code></a>, and <a class="reference internal" href="transforms.html#var-topright"><code class="xref std std-var docutils literal notranslate"><span class="pre">topright</span></code></a>.</p>
|
||
</li>
|
||
<li><p class="first">Ren'Py can now load files (including images, music, and fonts) from an
|
||
Android package.</p>
|
||
</li>
|
||
<li><p class="first">User-defined statements can now take a block, which the statement is
|
||
responsible for parsing.</p>
|
||
</li>
|
||
<li><p class="first">Wrote documentation for:</p>
|
||
<ul class="simple">
|
||
<li><a class="reference internal" href="menus.html#menus"><span class="std std-ref">Menus</span></a></li>
|
||
<li><a class="reference internal" href="transforms.html#transforms"><span class="std std-ref">Transforms</span></a></li>
|
||
<li><a class="reference internal" href="cdd.html#cdd"><span class="std std-ref">Creator-Defined Displayables</span></a></li>
|
||
</ul>
|
||
<p>Several indexes were added to the documentation, and the style was updated.</p>
|
||
</li>
|
||
<li><p class="first">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.</p>
|
||
</li>
|
||
<li><p class="first">Removed support for the iLiad platform.</p>
|
||
</li>
|
||
<li><p class="first">PowerPC support has been removed from the main Ren'Py distribution. It's
|
||
available as a download from the Ren'Py web site.</p>
|
||
</li>
|
||
</ul>
|
||
<p>Thanks to Aleema for contributing the new themes and color schemes.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-12-2">
|
||
<h2>Ren'Py 6.12.2<a class="headerlink" href="#ren-py-6-12-2" title="Permalink to this headline"> link</a></h2>
|
||
<p>This release contains the following changes:</p>
|
||
<ul class="simple">
|
||
<li>ATL Transforms with parameters compile correctly.</li>
|
||
<li>MultipleTransition works in conjunction with pauses.</li>
|
||
<li>The mouse is shown when a quit action is run while a movie is playing.</li>
|
||
<li>A fix for a lockup that occurred when the user entered the game menu while
|
||
a transition was running.</li>
|
||
<li>RENPY_SCALE_FAST works again.</li>
|
||
<li>Ren'Py compiles with newer versions of ffmpeg.</li>
|
||
<li>Skipping ends when the game restarts.</li>
|
||
<li>Fixed a problem with texture upload that made games noticeably slower.</li>
|
||
<li>Choose a better default size for windows on small monitors, like netbooks.</li>
|
||
<li>xfill and yfill now work for vbox and hbox, respectively.</li>
|
||
<li>Click-to-continue fixes.</li>
|
||
<li>Side image fixes.</li>
|
||
<li>Documentation fixes.</li>
|
||
</ul>
|
||
<p>Thanks to David Gowers and zhangning for contributing patches to this release.</p>
|
||
</div>
|
||
<div class="section" id="ren-py-6-12-1">
|
||
<h2>Ren'Py 6.12.1<a class="headerlink" href="#ren-py-6-12-1" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="image-attributes">
|
||
<h3>Image Attributes<a class="headerlink" href="#image-attributes" title="Permalink to this headline"> link</a></h3>
|
||
<p>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.</p>
|
||
<p>Attributes are also "sticky". This means that we attempt to preserve as many
|
||
attributes as possible when showing a new image.</p>
|
||
<p>For example, say we had the following images:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">image</span> <span class="n">eileen</span> <span class="n">beach</span> <span class="n">happy</span> <span class="o">=</span> <span class="s2">"eileen_beach_happy.png"</span>
|
||
<span class="k">image</span> <span class="n">eileen</span> <span class="n">beach</span> <span class="n">woozy</span> <span class="o">=</span> <span class="s2">"eileen_beach_woozy.png"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>We can now show the first image using the command:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="n">eileen</span> <span class="n">happy</span> <span class="n">beach</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Since the order of attributes no longer matters, this will show the "eileen
|
||
beach happy" image. If we follow this with the show statement:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="n">eileen</span> <span class="n">woozy</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>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.)</p>
|
||
<p>When an image tag is shown without any attributes, then the current attributes
|
||
are retained. Now, one can write:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="n">eileen</span> <span class="k">at</span> <span class="n">right</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>to display Eileen on the right side of the screen, without changing the
|
||
attributes supplied to an image.</p>
|
||
<p><strong>Say Attributes.</strong> Image attributes can be updated as part of a say
|
||
statement. A character can be given an <cite>image</cite> argument, giving the name of
|
||
an image that character is linked to. As part of the say statement, image
|
||
attributes can be given before the dialogue string. These attributes are
|
||
given to the linked image.</p>
|
||
<p>For example, if we define a character using the code:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">define</span> <span class="n">e</span> <span class="o">=</span> <span class="n">Character</span><span class="p">(</span><span class="s1">'Eileen'</span><span class="p">,</span> <span class="k">image</span><span class="o">=</span><span class="s2">"eileen"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>the code:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="n">woozy</span> <span class="s2">"I think I'm getting too much sun."</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>is equivalent to:</p>
|
||
<div class="highlight-renpy notranslate"><div class="highlight"><pre><span></span><span class="k">show</span> <span class="n">eileen</span> <span class="n">woozy</span>
|
||
<span class="n">e</span> <span class="s2">"I think I'm getting too much sun."</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>whenever an image with the tag eileen is being shown.</p>
|
||
<p><strong>Side Image.</strong> This release features a new implementation of
|
||
<a class="reference internal" href="side_image.html"><span class="doc">Side Images</span></a>, which allows side images to be defined like other images,
|
||
and allows side images to be integrated with screens easily.</p>
|
||
<p><strong>Sticky Transforms.</strong> Finally, showing an image without providing a transform
|
||
or ATL block will now continue the previous transform that an image with that
|
||
tag was using. Previously, it caused those transforms to stop.</p>
|
||
</div>
|
||
<div class="section" id="error-handling">
|
||
<h3>Error Handling<a class="headerlink" href="#error-handling" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now has a new exception handing framework. Instead of always crashing
|
||
when an error occurs, Ren'Py will now display the error message on the
|
||
screen, and give the user the following choices, as appropriate to the
|
||
situation:</p>
|
||
<ul class="simple">
|
||
<li>Rollback</li>
|
||
<li>Reload</li>
|
||
<li>Ignore</li>
|
||
<li>Open Traceback</li>
|
||
<li>Quit</li>
|
||
</ul>
|
||
<p>When an editor is defined, Ren'Py will allow the user to click on a filename
|
||
and line number to open that line in the editor.</p>
|
||
<p>The framework is used to handle exceptions and parse errors.</p>
|
||
</div>
|
||
<div class="section" id="id38">
|
||
<h3>Other<a class="headerlink" href="#id38" title="Permalink to this headline"> link</a></h3>
|
||
<p>When in OpenGL mode, Ren'Py now remembers the window size between sessions.
|
||
(This can be disabled using <a class="reference internal" href="config.html#var-config.save_physical_size"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.save_physical_size</span></code></a>, and it may
|
||
make sense to do so if your game is using the pre-screen preferences system.)
|
||
Choosing the "Window" display preference now resizes the window to 100% of
|
||
normal size.</p>
|
||
<p>Added the <a class="reference internal" href="style_properties.html#style-property-xcenter"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xcenter</span></code></a> and <a class="reference internal" href="style_properties.html#style-property-ycenter"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ycenter</span></code></a> position and transform
|
||
properties. These set the position of the center of a displayable.</p>
|
||
<p>The <a class="reference internal" href="other.html#renpy.vibrate" title="renpy.vibrate"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.vibrate()</span></code></a> function allows Ren'Py to ask Android devices to
|
||
vibrate.</p>
|
||
<p>The hyperlink style, callback, and focus functions have now been moved to the
|
||
<a class="reference internal" href="style_properties.html#style-property-hyperlink_functions"><code class="xref std std-propref docutils literal notranslate"><span class="pre">hyperlink_functions</span></code></a> style property. This allows the functions to
|
||
be changed on a per-style basis.</p>
|
||
<p>Indentation errors are now reported on the indented line, and not the line
|
||
preceding the erroneous indentation.</p>
|
||
<p>Added the <a class="reference internal" href="screen_actions.html#SetScreenVariable" title="SetScreenVariable"><code class="xref py py-func docutils literal notranslate"><span class="pre">SetScreenVariable()</span></code></a> and <a class="reference internal" href="screen_actions.html#ToggleScreenVariable" title="ToggleScreenVariable"><code class="xref py py-func docutils literal notranslate"><span class="pre">ToggleScreenVariable()</span></code></a> actions.
|
||
These allow screen-local variables to be changed.</p>
|
||
<p>Ren'Py now attempts to elide personal information from filenames. Where
|
||
possible, filenames are reported relative to the base or Ren'Py base
|
||
directories, rather than the root of the filesystem.</p>
|
||
<p>The new <a class="reference internal" href="style_properties.html#style-property-box_wrap"><code class="xref std std-propref docutils literal notranslate"><span class="pre">box_wrap</span></code></a> style property allows hboxes and vboxes to
|
||
automatically wrap when they reach the edge of their enclosing area.</p>
|
||
<p>Actions now can have an <a class="reference internal" href="screen_python.html#Action.unhovered" title="Action.unhovered"><code class="xref py py-func docutils literal notranslate"><span class="pre">Action.unhovered()</span></code></a> method. This method is called
|
||
when an action supplied as a <cite>hovered</cite> parameter loses focus.</p>
|
||
<p>Added the <a class="reference internal" href="screen_actions.html#Tooltip" title="Tooltip"><code class="xref py py-class docutils literal notranslate"><span class="pre">Tooltip</span></code></a> class, which makes it easier to define tooltips as
|
||
part of a screen.</p>
|
||
<p>Added <a class="reference internal" href="config.html#var-config.debug_text_overflow"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.debug_text_overflow</span></code></a>, which controls the logging of cases
|
||
where text exceeds its allocated area.</p>
|
||
<p>Ren'Py no longer attempts to adjust the system level mixer controls, which
|
||
means that it's no longer possible to raise the volume from within Ren'Py.
|
||
Controlling the system volume exhibited bugs on all three platforms,
|
||
including hard-to-predict volume changes that affect other applications.</p>
|
||
<p>Along with the new features, transitions have been documented in the new
|
||
manual.</p>
|
||
<p>Archives are now automatically detected in asciibetical order. See the
|
||
documentation for <a class="reference internal" href="config.html#var-config.archives"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.archives</span></code></a> for more details.</p>
|
||
<p>Bug fixes:</p>
|
||
<ul class="simple">
|
||
<li><a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/734137">launchpad bug 734137</a> - Timers do not participate in rollback.</li>
|
||
<li><a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/735187">launchpad bug 735187</a> - Ren'Py get stuck when using {nw}. (Thanks to Franck_v
|
||
for tracking this down.)</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-12-0">
|
||
<h2>Ren'Py 6.12.0<a class="headerlink" href="#ren-py-6-12-0" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="id39">
|
||
<h3>Android Support<a class="headerlink" href="#id39" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now supports the Android platform. This includes support for a large
|
||
fraction of Ren'Py's functionality, although we were unable to add support
|
||
for imagedissolves and movie playback. It should be possible to package a
|
||
Ren'Py game and distribute it through the Android market.</p>
|
||
<p>Android support required several changes in Ren'Py:</p>
|
||
<ul class="simple">
|
||
<li>The OpenGL renderer has been extended to support OpenGL ES.</li>
|
||
<li>For performance reasons, much of the display system has been rewritten in
|
||
the Cython language. This also should improve performance on other
|
||
platforms.</li>
|
||
<li>Support was added for the Android lifecycle. Ren'Py automatically saves
|
||
when the android device suspends, and reloads (if necessary) upon resume.</li>
|
||
<li>We added the concept of <a class="reference internal" href="screens.html#screen-variants"><span class="std std-ref">Screen Variants</span></a>. This allows a single game
|
||
to have multiple interfaces – such a mouse interface for computer
|
||
platforms, and a touch interface for Android-based smartphones and tablets.</li>
|
||
<li>We built a system that allows one to package a game separately from
|
||
Ren'Py. This allows one to build packages without having to set up the
|
||
Android NDK (you'll still need the Android SDK, Java, Python, Ant, and a
|
||
lot of patience).</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="new-widgets-and-displayables">
|
||
<h3>New Widgets and Displayables<a class="headerlink" href="#new-widgets-and-displayables" title="Permalink to this headline"> link</a></h3>
|
||
<p>Added the <a class="reference internal" href="sprites.html#sprites"><span class="std std-ref">SpriteManager</span></a> displayable. This provides a
|
||
high-performance way of drawing many similar sprites to the screen. This can
|
||
scale to hundreds of particles, provided those particles are mostly similar
|
||
to each other.</p>
|
||
<p>Added the <a class="reference internal" href="screens.html#mousearea"><span class="std std-ref">Mousearea</span></a> widget. A mousearea allows hovered and unhovered
|
||
callbacks to occur when the mouse enters and leaves an area of the screen.
|
||
Since it doesn't participate in the focus system, a mousearea can include
|
||
buttons and bars.</p>
|
||
<p>Added <a class="reference internal" href="drag_drop.html"><span class="doc">Drag and Drop</span></a> widgets and displayables. The drag and drop system
|
||
can support:</p>
|
||
<ul class="simple">
|
||
<li>Windows being repositioned by the user.</li>
|
||
<li>Card games.</li>
|
||
<li>Inventory systems.</li>
|
||
<li>Drag-to-reorder systems.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id40">
|
||
<h3>Image Prediction<a class="headerlink" href="#id40" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py is now better at predicting image usage. Along with predicting images
|
||
used by normal gameplay, it now attempts to predict images that are used by
|
||
screens one click away from the user. For example, during normal gameplay, it
|
||
will predict images on the first screen of the game menu. While at the game
|
||
menu, it will predict the other screens of the game menu, and also the images
|
||
the user will see when returning to the main menu. This prediction is
|
||
automatic, but only occurs when using screens.</p>
|
||
<p>Screens may be invoked at any time, in order to allow for image prediction,
|
||
unless they have a predict property of False. This means that displaying a
|
||
screen should not have side effects. (Most screens only have side effects
|
||
when a button is clicked or a bar changed – that's still fine.)</p>
|
||
<p>Ren'Py now supports hotspot caching for screen language imagemaps. When
|
||
<a class="reference internal" href="config.html#var-config.developer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.developer</span></code></a> is true, Ren'Py will write a PNG file in the
|
||
game/cache/ directory containing image data for each of the hotspots in the
|
||
imagemap. If the cache file exists (regardless of the config.developer
|
||
setting) it will be loaded instead of loading the hotspot images. As the
|
||
cache file is often much smaller than the size of the hotspot images, it will
|
||
load faster and reduce image cache pressure, improving game performance. This
|
||
behavior only applies to screen language imagemaps, and can be disabled with
|
||
<code class="xref std std-var docutils literal notranslate"><span class="pre">config.imagemap_cache</span></code>.</p>
|
||
<p>This should remove most of the need for <code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.cache_pin()</span></code>. While not an
|
||
error, the use of cache pinning can cause unnecessary memory usage when the
|
||
wrong image is loaded.</p>
|
||
</div>
|
||
<div class="section" id="screens">
|
||
<h3>Screens<a class="headerlink" href="#screens" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py now ships with a default set of screens, which are used by the demo and
|
||
installed by default when a new game is created. You can find them in
|
||
template/game/screens.rpy, and they can be used by copying that file into
|
||
your project. These screens are not 100% compatible with the previous layout
|
||
system – for example, some styles have changed. That's why games must opt-in
|
||
to them.</p>
|
||
<p>The definition of the <cite>items</cite> parameter of the <a class="reference internal" href="screen_special.html#choice-screen"><span class="std std-ref">Choice</span></a> and
|
||
<a class="reference internal" href="screen_special.html#nvl-screen"><span class="std std-ref">NVL</span></a> screens has changed, and games will need to be updated to
|
||
work with the new version.</p>
|
||
<p>Character arguments beginning with <code class="docutils literal notranslate"><span class="pre">show_</span></code> are passed to the
|
||
<a class="reference internal" href="screen_special.html#say-screen"><span class="std std-ref">Say</span></a> screen. This allows things like show_side_image and
|
||
show_two_window to work with screens. The screens we ship support these
|
||
options.</p>
|
||
<p>The new <a class="reference internal" href="config.html#var-config.imagemap_auto_function"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.imagemap_auto_function</span></code></a> variable allows the game-maker to
|
||
control the interpretation of the <code class="docutils literal notranslate"><span class="pre">auto</span></code> property of imagemaps and
|
||
imagebuttons.</p>
|
||
<p>The imagemap caching behavior described above applies only to screens.</p>
|
||
<p>The <a class="reference internal" href="screen_actions.html#FilePageName" title="FilePageName"><code class="xref py py-func docutils literal notranslate"><span class="pre">FilePageName()</span></code></a> and <a class="reference internal" href="screen_actions.html#FileSlotName" title="FileSlotName"><code class="xref py py-func docutils literal notranslate"><span class="pre">FileSlotName()</span></code></a> functions make it easier to
|
||
name slots</p>
|
||
</div>
|
||
<div class="section" id="id41">
|
||
<h3>Other Improvements<a class="headerlink" href="#id41" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py 6.12 includes a number of other improvements:</p>
|
||
<ul class="simple">
|
||
<li>We've continued writing the new manual. Notably, we have rewritten the
|
||
documentation for displayables.</li>
|
||
<li>When taking a screenshot, <a class="reference internal" href="config.html#var-config.screenshot_callback"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.screenshot_callback</span></code></a> is called. The
|
||
default implementation of this function notifies the user of the location
|
||
of the screenshot.</li>
|
||
<li>The <a class="reference internal" href="displayables.html#Solid" title="Solid"><code class="xref py py-func docutils literal notranslate"><span class="pre">Solid()</span></code></a> and <a class="reference internal" href="displayables.html#Frame" title="Frame"><code class="xref py py-func docutils literal notranslate"><span class="pre">Frame()</span></code></a> displayables are now tiny and no
|
||
longer take up (much) space in the image cache.</li>
|
||
<li>We now create a log.txt file, which replaces the old opengl.txt, and can
|
||
log other subsystems.</li>
|
||
<li>Several missing properties have been added to the screen language.</li>
|
||
<li>Ren'Py now treats filenames as if they were case-insensitive. This means
|
||
that filename mismatches on Linux should no longer be a problem.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id42">
|
||
<h3>Bug Fixes<a class="headerlink" href="#id42" title="Permalink to this headline"> link</a></h3>
|
||
<ul class="simple">
|
||
<li><a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/680266">launchpad bug 680266</a> - Ensures that dynamic displayables update before
|
||
Transforms that use them.</li>
|
||
<li><a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/683412">launchpad bug 683412</a> - Do not crash if a shader fails to compile.</li>
|
||
<li>Fixed a bug that caused Ren'Py to crash when the system volume was lowered
|
||
to 0, but not muted.</li>
|
||
<li>Fixed a bug that prevented <code class="xref py py-func docutils literal notranslate"><span class="pre">Render.canvas()</span></code> from working with the
|
||
OpenGL renderer.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-11-2">
|
||
<h2>Ren'Py 6.11.2<a class="headerlink" href="#ren-py-6-11-2" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="new-features">
|
||
<h3>New Features<a class="headerlink" href="#new-features" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release includes four new themes, generously contributed by Aleema. You
|
||
can see and change to these new themes by clicking the "Choose Theme" button
|
||
in the launcher.</p>
|
||
</div>
|
||
<div class="section" id="software-update">
|
||
<h3>Software Update<a class="headerlink" href="#software-update" title="Permalink to this headline"> link</a></h3>
|
||
<p>The jEdit text editor included with Ren'Py has been updated to version 4.3.2,
|
||
a supported version that should be able to run most plugins.</p>
|
||
</div>
|
||
<div class="section" id="behavior-changes">
|
||
<h3>Behavior Changes<a class="headerlink" href="#behavior-changes" title="Permalink to this headline"> link</a></h3>
|
||
<p>The maximum default physical size of the Ren'Py window is now 102 pixels
|
||
smaller than the height of the screen. This should prevent Ren'Py from
|
||
creating windows that can't be resized since they are much bigger than the
|
||
screen.</p>
|
||
<p>Buttons now only pass key events to their children when they are focused. This
|
||
allows a screen language key statement to be used as the child of a button,
|
||
and only activate when the button is focused.</p>
|
||
<p>MoveTransition was rewritten to correctly deal with cases in which images
|
||
changed their order. This may lead to differences in behavior from the old
|
||
version, where the ordering was undefined.</p>
|
||
</div>
|
||
<div class="section" id="id43">
|
||
<h3>Bug fixes<a class="headerlink" href="#id43" title="Permalink to this headline"> link</a></h3>
|
||
<p>Fixed <a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/647686">launchpad bug 647686</a>, a regression that prevented sounds from looping
|
||
properly.</p>
|
||
<p>Fixed <a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/661983">launchpad bug 661983</a>, which caused insensitive hotspots to default to the
|
||
idle, rather than ground, image when no insensitive image was supplied.</p>
|
||
<p>Fixed <a class="reference external" href="https://bugs.launchpad.net/renpy/+bug/647324">launchpad bug 647324</a>, where ImageDissolves are rendered as if specified with
|
||
alpha=True whether or not alpha=True was set.</p>
|
||
<p>Fixed a problem that caused the game to start when picking "No" after clicking
|
||
the (window-level) quit button.</p>
|
||
<p>Fixed a problem that prevented AnimatedValue from functioning properly when
|
||
delay was not 1.0. Thanks to Scout for the fix.</p>
|
||
<p>Fixed a problem that caused movies to display incorrectly when the screen was
|
||
scaled using OpenGL scaling.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-11-1">
|
||
<h2>Ren'Py 6.11.1<a class="headerlink" href="#ren-py-6-11-1" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="id44">
|
||
<h3>New Features<a class="headerlink" href="#id44" title="Permalink to this headline"> link</a></h3>
|
||
<p>Add the <a class="reference internal" href="displayables.html#AlphaBlend" title="AlphaBlend"><code class="xref py py-func docutils literal notranslate"><span class="pre">AlphaBlend()</span></code></a> displayable and the <a class="reference internal" href="transitions.html#AlphaDissolve" title="AlphaDissolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">AlphaDissolve()</span></code></a>
|
||
transition. These take two displayables, and use the alpha channel of a third
|
||
displayable to blend them together. (The third displayable is often an
|
||
animation, allowing the effect to change over time.)</p>
|
||
<p>The new <a class="reference internal" href="modes.html"><span class="doc">Modes</span></a> system allows one to invoke callbacks when switching from
|
||
one type of interaction to another. This can be used, for example, to
|
||
automatically hide the window before transitions.</p>
|
||
<p>Imagemaps created using the screen language now only have a size equal to that
|
||
of their ground image. (Previously, they took up the entire screen.) This
|
||
change makes it easier to position an imagemap at a different location on
|
||
screen, such as the bottom.</p>
|
||
<p>Imagemaps now take an alpha argument. If true (the default), hotspots are only
|
||
focused if the mouse is over a non-transparent part of the idle or hover
|
||
image. If set to false, the hotspot is focused whenever the mouse is within
|
||
its boundaries.</p>
|
||
<p>Added the <a class="reference internal" href="other.html#renpy.focus_coordinates" title="renpy.focus_coordinates"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.focus_coordinates()</span></code></a> function, which returns the
|
||
coordinates of the currently focused displayable, when possible.</p>
|
||
<p>The new <a class="reference internal" href="other.html#renpy.notify" title="renpy.notify"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.notify()</span></code></a> function and <a class="reference internal" href="screen_actions.html#Notify" title="Notify"><code class="xref py py-func docutils literal notranslate"><span class="pre">Notify()</span></code></a> action make it simple
|
||
to flash small status messages on the screen, such as might be used to notify
|
||
the user of a completed quicksave or screenshot.</p>
|
||
<p>The new <a class="reference internal" href="screen_actions.html#HideInterface" title="HideInterface"><code class="xref py py-func docutils literal notranslate"><span class="pre">HideInterface()</span></code></a> action allows the interface to temporarily be
|
||
hidden, as a screen language action.</p>
|
||
<p>The developer menu now includes a command that will list all the files in the
|
||
game directory.</p>
|
||
<p>The urllib and urllib2 modules from the Python standard library are now
|
||
distributed as part of Ren'Py. These modules allow data to be retrieved from
|
||
web servers.</p>
|
||
<p>The launcher now includes an experimental updater, that makes it easier to
|
||
update to the latest pre-release. Hitting Shift+U at the launcher's main
|
||
screen will cause Ren'Py to be updated.</p>
|
||
</div>
|
||
<div class="section" id="id45">
|
||
<h3>Fixes<a class="headerlink" href="#id45" title="Permalink to this headline"> link</a></h3>
|
||
<p><a class="reference internal" href="transitions.html#MoveTransition" title="MoveTransition"><code class="xref py py-func docutils literal notranslate"><span class="pre">MoveTransition()</span></code></a> now respects the xoffset and yoffset parameters.</p>
|
||
<p>Fixed several bugs with screen-language imagemaps.</p>
|
||
<p>Fixed a bug (#626303) that was caused by an incorrect texture unit check.
|
||
Thanks to tmrwiz for the fix.</p>
|
||
<p>Transforms no longer cause a divide by zero exception when the zoom, xzoom, or
|
||
yzoom properties are 0.</p>
|
||
<p>Clockwise and counterclockwise revolution in transforms now works.</p>
|
||
<p>Fixed a bug with scaling, that occurred when switching between the scaled
|
||
software and GL renderers.</p>
|
||
<p>Hidden screens are no longer considered when assigning default focus.</p>
|
||
<p>FieldValues with max_is_zero set to True now work properly. Thanks to
|
||
SleepKirby for the fix.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="ren-py-6-11-0">
|
||
<h2>Ren'Py 6.11.0<a class="headerlink" href="#ren-py-6-11-0" title="Permalink to this headline"> link</a></h2>
|
||
<div class="section" id="opengl-support">
|
||
<h3>OpenGL Support<a class="headerlink" href="#opengl-support" title="Permalink to this headline"> link</a></h3>
|
||
<p>Ren'Py will now take advantage of a computer's OpenGL hardware acceleration,
|
||
if supported. This OpenGL support has several user-visible changes:</p>
|
||
<ul class="simple">
|
||
<li>The window containing a Ren'Py game can be resized or maximized, using
|
||
standard window controls. When the window's aspect ratio does not match the
|
||
game's aspect ratio, black bars will be added.</li>
|
||
<li>Displaying in full-screen mode should not change the monitor's resolution.
|
||
This will prevent the game from being distorted when displayed on a monitor
|
||
with a different aspect ratio.</li>
|
||
<li>Unless disabled in the video driver configuration, Ren'Py will use
|
||
vertical blank synchronization, eliminating image tearing.</li>
|
||
<li>GPU rendering is used, which should make drawing the screen faster in most
|
||
circumstances.</li>
|
||
</ul>
|
||
<p>Software rendering is still supported, and Ren'Py will automatically fall back
|
||
to software rendering if it detects an improperly configured video card.</p>
|
||
<p>You can test that Ren'Py is in OpenGL mode by attempting to resize the window.
|
||
If it's resizable, it's OpenGL, otherwise, software rendering is being used.</p>
|
||
</div>
|
||
<div class="section" id="screens-and-screen-language">
|
||
<h3>Screens and Screen Language<a class="headerlink" href="#screens-and-screen-language" title="Permalink to this headline"> link</a></h3>
|
||
<p>This release introduces a new screen system, which allows one to use the new
|
||
screen language to declaratively specify portions of the user interface. The
|
||
screen language supersedes layouts, overlay functions, imagemaps, and most
|
||
other means of customizing the out-of-game menus and the in-game screens.</p>
|
||
<p>The previous way of customizing the behavior of the game menu, the layout
|
||
system, had problems, especially when using imagemap layouts. Screens were
|
||
single-purpose, and it would be difficult to (for example) load a quick-save
|
||
game from the main menu, without extensive Python code.</p>
|
||
<p>The screen system addresses this by providing a pool of functionality, in the
|
||
form of Actions and BarValues. This makes it possible to pick and choose
|
||
functionality, and add it to screens as is deemed necessary.</p>
|
||
</div>
|
||
<div class="section" id="id46">
|
||
<h3>Transform Changes<a class="headerlink" href="#id46" title="Permalink to this headline"> link</a></h3>
|
||
<ul>
|
||
<li><p class="first">If a transform does not define one of the position properties
|
||
<a class="reference internal" href="style_properties.html#style-property-xpos"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xpos</span></code></a>, <a class="reference internal" href="style_properties.html#style-property-ypos"><code class="xref std std-propref docutils literal notranslate"><span class="pre">ypos</span></code></a>, <a class="reference internal" href="style_properties.html#style-property-xanchor"><code class="xref std std-propref docutils literal notranslate"><span class="pre">xanchor</span></code></a>, or
|
||
<a class="reference internal" href="style_properties.html#style-property-yanchor"><code class="xref std std-propref docutils literal notranslate"><span class="pre">yanchor</span></code></a>, that property will be taken from the transform's child,
|
||
if the defines that property.</p>
|
||
<p>This makes it possible to have one transform control a displayable's
|
||
vertical motion, and the other control the horizontal. But this is
|
||
incompatible with previous behavior, and so can be disabled with the
|
||
<a class="reference internal" href="config.html#var-config.transform_uses_child_position"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.transform_uses_child_position</span></code></a> variable.</p>
|
||
</li>
|
||
<li><p class="first">The new config.default_transform variable allows a transform to specify
|
||
the initial transform properties of an image that does not have a more
|
||
specific transform applied to it. Its default value is center, a transform
|
||
that shows the image at the center-bottom of the screen.</p>
|
||
<p>This can lead to a behavior change. When an image is shown, and then shown
|
||
transforms, the transform will be initialized to the bottom center of the
|
||
screen, not the top-left. The reset transform can be used to reset the
|
||
position to the top-left.</p>
|
||
</li>
|
||
<li><p class="first">Transform (and ui.transform) have been changed so that their arguments can
|
||
now be prefixed with a style prefix. One can write
|
||
ui.transform(idle_rotate=30, hover_rotate=90) and have it work.</p>
|
||
</li>
|
||
<li><p class="first">Added the rotate_pad transform property, which controls how Transform pads
|
||
rotated displayables. When set to False, _not_ the default, it's now
|
||
possible to rotate a (100, 50) displayable by 90 degrees, and have the
|
||
result be (50, 100) in size.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="id47">
|
||
<h3>Other Changes<a class="headerlink" href="#id47" title="Permalink to this headline"> link</a></h3>
|
||
<ul>
|
||
<li><p class="first">The Ren'Py documentation is in the process of being rewritten. This
|
||
changelog is now being maintained as part of the Ren'Py documentation.</p>
|
||
</li>
|
||
<li><p class="first">Added support for composite style properties, that allow several style
|
||
properties to be set using a single parameter. The new composite style
|
||
properties are:</p>
|
||
<ul class="simple">
|
||
<li>pos - takes a pair, and uses it to set xpos and ypos.</li>
|
||
<li>anchor - takes a pair, and uses it to set xanchor and yanchor.</li>
|
||
<li>align - takes a pair, and uses it to set xalign and yalign. (And hence
|
||
xpos, ypos, xanchor, and yanchor.)</li>
|
||
<li>area - take (x, y, height, width) pair, and tries to set properties
|
||
such that the displayable will be placed inside the rectangle. This sets
|
||
the xpos, ypos, xanchor, yanchor, xfill, yfill, xminimum, yminimum,
|
||
xmaximum, and ymaximum properties.</li>
|
||
</ul>
|
||
</li>
|
||
<li><p class="first">ui.add can now take transform properties as keyword arguments. If at least
|
||
one transform property is present, ui.add will create a transform that
|
||
wraps the displayable it's adding to the screen.</p>
|
||
</li>
|
||
<li><p class="first">The new <code class="xref py py-func docutils literal notranslate"><span class="pre">LiveTile()</span></code> displayable tiles its child, without consuming a
|
||
large amount of memory to do so.</p>
|
||
</li>
|
||
<li><p class="first"><a class="reference internal" href="config.html#var-config.quit_action"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.quit_action</span></code></a> allows one to specify an action that is run when
|
||
the quit button (in the corner of the window) is pressed.
|
||
config.game_menu_action allows one to specify an action that is run when
|
||
entering the game menu.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="config.html#var-config.screenshot_crop"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.screenshot_crop</span></code></a> configuration variable controls the area
|
||
of the screen that it stored when the user presses the screenshot key.</p>
|
||
</li>
|
||
<li><p class="first">The <a class="reference internal" href="audio.html#renpy.music.register_channel" title="renpy.music.register_channel"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.music.register_channel()</span></code></a> method now has two additional
|
||
parameters, file_prefix and file_suffix. These are prepended and appended
|
||
to filenames provided to the registered channel, respectively.</p>
|
||
</li>
|
||
<li><p class="first">The new <a class="reference internal" href="file_python.html#renpy.list_files" title="renpy.list_files"><code class="xref py py-func docutils literal notranslate"><span class="pre">renpy.list_files()</span></code></a> method returns a list of files in the
|
||
game directory and archives. This can be used to write your own automatic
|
||
image loading method, among other things.</p>
|
||
</li>
|
||
<li><p class="first">The interaction between Character and Text has been rewritten to ensure
|
||
that text is only tokenized once. This required changing a few of the
|
||
methods on ADVCharacter and NVLCharacter, so code that inherits from those
|
||
classes should be checked.</p>
|
||
</li>
|
||
<li><p class="first">The distribution code has been moved into launcher/distribute.py. This
|
||
file can be run from the command line to build distributions in shell
|
||
scripts and other automated processes.</p>
|
||
</li>
|
||
<li><p class="first">When there are transparent areas on the screen, and
|
||
<a class="reference internal" href="config.html#var-config.developer"><code class="xref std std-var docutils literal notranslate"><span class="pre">config.developer</span></code></a> is true, the transparent areas are filled with a
|
||
checkerboard pattern.</p>
|
||
</li>
|
||
<li><p class="first">The new <code class="docutils literal notranslate"><span class="pre">input</span></code>, <code class="docutils literal notranslate"><span class="pre">side</span></code>, <code class="docutils literal notranslate"><span class="pre">grid</span></code>, and <code class="docutils literal notranslate"><span class="pre">fixed</span></code> styles were created,
|
||
and the corresponding displayables use them by default.</p>
|
||
</li>
|
||
<li><p class="first">When a style is accessed at init time, and doesn't exist, we divide it
|
||
into two parts at the first underscore. If the second part corresponds to
|
||
an existing style, we create a new style instead of causing an error.</p>
|
||
</li>
|
||
<li><p class="first">The Python compiler has been rewritten to use the Python ast module. This
|
||
should both improve performance, and improve error handling for Python
|
||
syntax.</p>
|
||
<p>Because of this change, Ren'Py now ships with and requires Python 2.6.</p>
|
||
</li>
|
||
<li><p class="first">The following numbered bugs were fixed:</p>
|
||
<ul class="simple">
|
||
<li>520276 - ctc does not appear when cps interrupted</li>
|
||
<li>526297 - im.Rotozoom()s crash when Ren'Py is scaled down. (Thanks to
|
||
Spiky Caterpillar for the bug report and fix.)</li>
|
||
<li>543785 - Launcher bug on select Projects Directory</li>
|
||
<li>583112 - rollback while a movie displayable is shown leaves a video
|
||
frame onscreen</li>
|
||
<li>595532 - Wrong text in tutorial game. (Thanks to Viliam Búr.)</li>
|
||
</ul>
|
||
</li>
|
||
<li><p class="first">The following other bugs were fixed:</p>
|
||
<ul class="simple">
|
||
<li>Renamed the internal show and hide methods of Displayable, so those
|
||
names can once again be used by user-defined displayables.</li>
|
||
<li>Rewrote MultipleTransition (which is used by Fade) to fix some
|
||
problems it was exhibiting.</li>
|
||
<li>Take the condition parameter to Character into account when
|
||
determining if an nvl clear occurs before the next interaction.</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<footer class="footer">
|
||
<div class="container">
|
||
<p class="pull-right">
|
||
<a href="#">Back to top</a>
|
||
|
||
</p>
|
||
<p>
|
||
© Copyright 2012-2022, Tom Rothamel.<br/>
|
||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.6.<br/>
|
||
</p>
|
||
</div>
|
||
</footer>
|
||
</body>
|
||
</html> |