非互換の変更 link

これは、スクリプトの書式や開発環境に影響すると思われる変更のリストです。私たちはこれら以外のすべての変更は既存のスクリプトに影響を及ぼさないようにしています。

config.script_version を設定すれば、これらの変更の多くを以前の状態に戻せますが、逆に新しい機能は利用できなくなります。

GUIに対する非互換の変更はそのGUIが再生成された時のみ影響するので 非互換の GUI の変更 に記述されています。

廃止待ち link

これらは Ren'Py の将来のバージョンで影響する変更です。

Python 2 と Ren'Py 7 のサポートは Ren'Py 8.1 がリリースされた 1 年後の 2024年5月に終了します。

オリジナルの OpenGL レンダラーは Ren'Py 8.1 がリリースされてから 1 年後の 2024 年 5 月以降に削除されます。Ren'Py 8.2 と 7.7 では、プレイヤーが別のレンダラーを選択しない限り、GL2 が常に使用されるため、config.gl2 フラグが無効になります。

Windows 7、8、8.1 のサポートは 2024 年 5 月以降に終了し、Windows 10 以降のみをサポートするバージョンの Python を使用できるようになります。

8.2.1 / 7.7.1 link

*Vertical Text Vertical text had been improved in the harfbuzz shaper, with the text now being rendered in the correct place. This may cause position changes, but since the previous version was wildly incorrect, no compatibility define is provided.

8.2.0 / 7.7.0 link

文字列化されたアノテーションとPEP 563の頓挫した機能 Ren'Py 8.0.2以降、Ren'Py 8のPythonコードは常に from __future__ import annotations 指令を使用してコンパイルされていました。

この変更は今後のPythonのバージョンではデフォルトでは実装されない可能性が高いため、この変更をロールバックしました。

文字列化されたアノテーションに annotations 機能を使い続けるには、ファイルの先頭に次の行を追加します ::

rpy python annotations

テキストの変更 Ren'Py で hardbuzz がシェイピングに使用されるよ文字の形とテキストの間隔がが変化するかもしれません。縦書きテキストの位置も hardbuzz によるレンダリングで変更されます。

変更を戻すには、次をゲームに含めてください

style default:
    shaper "freetype"

Ren'Py は必要な時は自動的に絵文字のフォントを使用します。これを無効化するには次を追加します

style default:
    emoji_font None

置換の変更 文字列の置換は Python の式として扱われるようになり、要素に getter が使用されている場合を除き、フィールドを解釈する際とほとんど等しい動作になります。例

# Previously
e "[player[money]]" #=> player['money']
# But now
e "[player[money]]" #=> player[money]

これを防ぐにはゲームに次を追加してください。

define config.interpolate_exprs = False

ゲームを新しい動作に移行する際に他の開発者が作業できるように、最初に新しい動作を試し、新しい動作が失敗した場合は古い動作にフォールバックするフォールバック モードがあります。これを有効にするには、ゲームに以下を追加します。

define config.interpolate_exprs = "fallback"

極座標の変更 Ren'Py は angle および anchorangle プロパティーに指定された角度が 0 度以上 360 度未満の範囲にあることを強制するようになりました。以前は、この範囲外の角度は未定義の動作をしていました。360度の変更はもはや動きを引き起こさず、代わりに0度の変更として扱われます。

ATLで angleanchorangle をアニメーションする場合、方向を指定しないと、0を通る場合でも最短の円弧が使用されます。

これらの変更は、実際のゲームの目に見える動作に影響を与える可能性が低いため、互換性の定義はありません。

空の ATL ブロックの禁止 以前は Ren'Py では空の ATL ブロックが許可されていましたが、ブロックを要求するエラーを出すようになりました。空の ATL ブロックがあるなら変更する必要があります。

show eileen happy:
"..."

次のように変更してください。

show eileen happy
"..."

滅多にないことですが、空の ATL ブロックを持つ場合はこのようにします。

Box Reverse box_reverse スタイルプロパティーの動作は 2 つの点で変更になりました :

  • box_reverse が有効な場合、スペースは displayable の提供順と同じ順で提供されます。以前は逆順でした。これはいくつかの Displayable のサイズを変更するかもしれません。

  • box_wrap が設定された hbox は下から上ではなく、上から下に折り返すようになりました。 box_wrap が設定された vbox は右から左ではなく左から右に折り返すようになりました。

これらの変更の目的は box_reverse の動作を右から左の言語のインターフェースにより適合させることです。これらの変更を戻すには、次をゲームに追加してください。

define config.simple_box_reverse = True

build.itch_channels この変数はいつも辞書として記載されていましたが、誤ってタプルのリストとして実装されていました。現在は本当に辞書になっています。もし辞書として使用しているなら、コードを変更してください。

# formerly
$ build.itch_channels.append(("pattern", "channel"))
$ build.itch_channels.extend([("pattern", "channel")])
define build.itch_channels += [("pattern", "channel")]

# now
$ build.itch_channels["pattern"] = "channel"
$ build.itch_channels.update({"pattern": "channel"})
define build.itch_channels["pattern"] = "channel"
define build.itch_channels |= {"pattern": "channel"}

新しい Position 型 新しい position() 型が position 型のリストに追加されました。その結果、この型は renpy.get_placement() 関数によっていつでも返されるようになり、以前は別の型を返していた場合や、ゲーム内のどこにも新しい型を使用していない場合でも返されるようになりました。

これを防ぐにはゲームに次を追加してください。

define config.mixed_position = False

Drag Group の Add の変更 DragGroup に Displayable を追加すると、グループ内の他の Displayable の下ではなく、上に追加されるようになりました。

これを変更するにはゲームに次を追加してください。

define config.drag_group_add_top = False

Translate ステートメントと config.statement_callbacks Translate ステートメント(Ren'Py が自動的に生成する内部ステートメントを含む)は config.statement_callbacks を呼び出さなくなりました。

子の位置を使用するトランジション トランジションの子が位置情報を提供する場合、その情報はトランジション自体によって使用されます。これは、トランジションが ATL トランジションによって使用され、古い子と新しい子の両方が同じ位置情報を提供する場合にのみ意味があります。

これを無効化するにはゲームに次を追加してください。

define config.transitions_use_child_placement = False

Containers Pass Transform Events Containers (including fixed, hbox, vbox, side, grid, viewport, and vpgrid) now pass some transform events (hover, idle, insensitive, selected_hover, and selected_idle) to their children, meaning that children of a button can have their own transforms to respond to those events.

これを無効化するにはゲームに次を追加してください。

define config.containers_pass_transform_events = set()

Say Screens Are Supplied the Replace Event. Say screens are now supplied the "replace" (rather than "show") transform event for the second and subsequent pauses.

これを無効化するにはゲームに次を追加してください。

define config.say_replace_event = False

Re-showing A Screen No Longer Cancels a Hide Event Previously, if a screen was hidden and re-shown, a hide or replace transform event associated with the same screen would be cancelled, and the hiding or replaced screen would instantly disappear. Now, the event will be allowed to run to completion.

これを無効化するにはゲームに次を追加してください。

define config.screens_never_cancel_hide = False

8.1.1 / 7.6.1 link

Android キーの以降 Google Play にバンドルとしてアップロードされたゲームが、 APK が異なるキーであるとして拒否されたとの報告を受けました。これは Ren'Py の古いリリースでバンドル用の APK キーが使われていたことが原因でした。Play コンソールでは、次のようなエラーメッセージが表示されました

You uploaded an APK that is not signed with the upload certificate. You must use
the same certificate. The upload certificate has fingerprint:

    SHA1: ...

and the certificate used to sign the APK you uploaded has fingerprint:

    SHA1: ...

これは他の問題(例えば、まったく間違ったキーを使っているなど)によって引き起こされる可能性もありますが、次で修正出来る可能性があります :

  1. プロジェクトのベースディレクトリーで、 bundle.keystorebundle.keystore.bak にリネームしてください。

  2. プロジェクトのベースディレクトリーで、 android.keystorebundle.keystore にコピーしてください。

その後、バンドルを再ビルドして再アップロードしてください。

8.1.0 / 7.6.0 link

Conflicting properties The former default input screen, which may have found its way into your game, contains conflicting style properties. The fix for that is as follows:

+define config.check_conflicting_properties = True

 screen input(prompt):
     style_prefix "input"
     window:

         vbox:
-            xalign gui.dialogue_text_xalign
+            xanchor gui.dialogue_text_xalign
             xpos gui.dialogue_xpos
             xsize gui.dialogue_width
             ypos gui.dialogue_ypos
             text prompt style "input_prompt"
             input id "input"

吹き出し 既存のゲームに吹き出しサポートを追加するには、ゲームにファイルとスクリプトを追加する必要があります。 吹き出し ドキュメントには必要な変更が含まれています。

Live2D Ren'Py は Live2D Cubism 4 SDK for Native R6_2 以降を必要とするようになりました。それ以前のバージョンを使用すると、実行が拒否されることがあります。

テクスチャーメモリー Ren'Py はテクスチャーメモリーをより正確に計算するようになりました。一般的に、ゲームでは config.image_cache_size_mb を 33% 上げると同じ量のメモリを使えます。

オーディオのフェードアウト play を使ってオーディオが停止または変更されると、ポップノイズを防ぐためにデフォルトで 0.016 秒のフェードアウトが行われるようになりました。これは config.fadeout_audio 変数によって制御されます。フェードアウトを無効にするには次のようにしてください。

define config.fadeout_audio = 0.0

フェーディングは対数的になり、人の耳にはよりスムーズに聞こえます。以前の線形的なものに戻すには、次のようにします

define config.linear_fades = True

Translate None Ren'Py は、文字列、スタイル、python を翻訳しない明示的な translate None ステートメントに遭遇したときにエラーを生成するようになりました。実際には、このようなことは稀でしょう。推奨される変更は次を

translate None start_abcd1234:
    e "This is a test"

次のように置き換えることです

e "This is a test" id start_abcd1234

この変更は次のようにしても戻せます。

define config.check_translate_none = False

キーマップ キーマップ が大幅に変更されました。つまり、あなたのゲームが(あまりよくありませんが)デフォルトのキーマップを変更していた場合、新しいキーシンボルを反映するように更新する必要があります。

ファイル検索 Ren'Py は、すべてのファイルではなく、 game/images にある画像ファイルのみを検索するようになりました。game/images にあるすべてのファイルを探すには、次を使ってください

define config.search_prefixes += [ "images/" ]

検索されるパスは、ファイルの種類や拡張子ではなく、ファイルの目的を考慮しています。つまり、 renpy.loadable("dlc.jpg") は game/images/dlc.jpg を探しません。そのファイルを探したい場合は、renpy.loadable("images/dlc.jpg") と書いてください。game またはgame/images にあるファイルを探したい場合は、renpy.loadable("dlc.jpg", "images") と記述してください。

Android Android では、 android.keystore ファイルと bundle.keystore ファイルが、 rapt ディレクトリーではなく、プロジェクトのベースディレクトリーにあることが期待されるように変更されました。これにより、プロジェクトを異なるキーでビルドできるようになり、複数の Android バージョンで同じキーを使用できるようになります。

自身のキーを使用したいなら、 android.json を編集して update_keys を False に設定し、 rapt/project 内の local.propertiesbundle.properties を編集して、独自の keystore ファイルを指定します。

android 設定ファイルの名前が .android.json から android.json に変更されました。古いファイルが存在する場合は、Ren'Py が自動的に新しいファイルを作成します。

台詞の履歴 台詞は、その台詞が表示されるステートメントの間、ヒストリーリストにあるようになりました(つまりヒストリースクリーンに表示されます)。以前は、台詞の終了後にのみ表示されていました。ステートメントの間、その台詞は kind が "current" として表示されます。

滅多にないことですが、あなたのゲームが古い動作に依存している場合があります。その場合は次のコマンドで無効にできます

define config.history_current_dialogue = False

Steam appid config.steam_appid が設定されていない場合、Ren'Py は game ディレクトリーに存在する steam_appid.txt ファイルを削除します。これは間違った app ID が使われるのを防ぐためです。

スティッキーレイヤー このリリースでは、スティッキーレイヤーという概念を導入し、デフォルト以外のレイヤーに配置されたタグを自動的に管理できるようにしました。滅多にないことですが、同じタグを複数のレイヤーに同時に表示する必要があるゲームでは、これは望ましくないかもしれません。

スティッキーレイヤーを完全に無効にするには、ゲームに以下を追加してください

define config.sticky_layers = [ ]

他にも特定のレイヤーのみをスティッキーレイヤーから除外するには定義を sticky=False を含めるよう更新してください

init python:
    renpy.add_layer("ptfe", sticky=False)

隅付きかっこルビテキスト Ren'Py のこのリリースでは、隅付きかっこのルビテキストが導入されました。これはルビテキストを記述するより簡単な方法です。ゲームで【をそのまま表示するには二重にして "【【" にしてください (これは厳密には全角の縦線にテキストが続いているときにのみ必要となります)。

隅付きかっこのルビテキストを無効にするには次をゲームに加えてください。

define config.lenticular_bracket_ruby = False

Constant store Ren'Py のこのリリースでは constant stores を導入し、いくつかの組み込み store を constant にしました。 Constant store は初期化時以外では変更されるべきではありません。次の store が constan です :

_errorhandling _gamepad _renpysteam _warper audio achievement build director iap layeredimage updater

初期化時以外にあなたのゲームでこれらの store のどれかを変更していたなら、その store は非 constant に設定されます。 例

define audio._constant = False

ミキサーボリューム ミキサーボリュームは新しい形式で指定されなければいけなくなりました。新しいフォーマットでは 0.0 が -40 dB (power) で 1.0 が 0 dB (power) です。volume ** 2 でとなる以前のものを使用するに次を使用してください。 :

define config.quadratic_volumes = True

あるいは、 config.default_music_volumeconfig.default_sfx_volume, config.default_voice_volume 変数で新しいデフォルトボリュームを決定できます。これらのうち、0.0または1.0のものは、変更せずにそのままにしておけます。

At Transform とグローバル変数 グローバル変数を使用した at transform ブロックは変数が変更されても再評価されません。これはスクリーンにない ATL に対する振る舞いに合います。

推奨する修正方法はグローバル変数をローカル変数ににしてください。次のコードを

screen test():
    test "Test":
        at transform:
            xpos global_xpos

次のように変更してください。

screen test():
    $ local_xpos = global_xpos

    test "Test":
        at transform:
            xpos local_xpos

この変更は次のようにして戻せます。

define config.at_transform_compare_full_context = True

8.0.2 / 7.5.2 link

モーダルスクリーンが pause ステートメントと renpy.pause`() 関数のタイムアウトを停止するようになりました。.これは意図した動作ですが、上手く動作しない場合は次コードでもどせます

define config.modal_blocks_pause = False

デフォルトではもうルビやふりがなのテキストタグが履歴でフィルターされなくなりました。これは screen.ry の gui.history_allow_tags の行を次のように変更する必要があります。

define gui.history_allow_tags = { "alt", "noalt", "rt", "rb", "art" }

この変更はあなたのゲームでルビとふりがなテキストタグを使用する場合のみ必要になります。

8.0.0 / 7.5.0 link

"Windows, Mac, and Linux for Markets" の配布は、作成されたZIPファイルの内容の前に、ディレクトリ名とバージョン番号を付けないように変更されました。もし、以前の動作を保持したい場合は、次をゲームにを追加してください。

init python:
    build.package("market", "zip", "windows linux mac renpy all", "Windows, Mac, Linux for Markets")

noalt テキストタグがヒストリーで動作するには、 screen.rpy を編集して、 gui.history_allow_tags が "noalt" を含める必要があります。この変数のデフォルトは次のようになっています

define gui.history_allow_tags = { "alt", "noalt" }

(この変更は 7.4 までは必要でしたが、今はドキュメントに記載されていません)

Ren'Py の挙動は 7.4 系列のある時点で変更され、ロード中のロールバックが正しく動作し、 after_load ラベルと config.after_load_callbacks によって行われた変更が戻されるようになりました(以前の動作は未定義であり、ある変更は元に戻り、ある変更は元に戻らず、ゲームは一貫性のない状態になりました)。ゲームのロード後にデータを移行する必要がある場合、変更がロールバックされないように renpy.block_rollback() の呼び出しを推奨します。

config.narrator_menu 変数がデフォルトで True になりました。これはデフォルトの screen.rpy でこれまでもときどき True に設定されていました。万が一、あなたのゲームでそれが誤りであった場合は、次の方法で以前の動作を復元してください。

define config.narrator_menu = False

メインメニューの終了で sound とvoice チャンネルが停止されるようになりました。以前の (muvie チャンネルのみ停止する) 動作に戻すには以下をゲームに追加してください。

define config.main_menu_stop_channels = [ "movie" ]

call screen から呼び出されたスクリーンはもうデフォルトではロールフォワードはサポートしません。起こりうる問題については the changelog を参照してください。ロールフォワードは roll_forward プロパティーに基づきスクリーンごとに有効化でき、次のコードでは全てのスクリーンに対して有効化できます。

define config.call_screen_roll_forward = True

Key や timer ステートメントは vbox や hbox にスペースをとらなくなりました。 showif ステートメントも条件式が False でその子が非表示の時にはスペースを取らなくなりました。この変更を戻すには次のようにします。

define config.box_skip = False

focus_mask スタイルプロパティーは drag displayable に対してデフォルトで None になりました。これによりパフォーマンスが改善しますが、 Displayable はピクセルの透明部分でもドラッグ出来るようになりました。元に戻すには focus_mask プロパティーを各drag displayableごとに True にするか次のように全体に対して記述するかです。

style drag:
    focus_mask True

ともにパフォーマンスを低下させます。

outline_scaling スタイルプロパティーのデフォルトが "linear" になりました。これによりウィンドウのスケーリング係数がアウトラインサイズに掛けられてから整数に丸められます。これにより同じような厚みの複数ののアウトラインが消えることがあります。これを戻すには、個別のテキストに対して outline_scaling プロパティーを "step" にするか、次を加えて全体を変更してください。

style default:
    outline_scaling "step"

crop_relative transform プロパティーはデフォルトで True となります。切り取りにピクセルの絶対値を指定するには、整数か absolute` 値で指定するべきです。浮動小数点をピクセル数の absolute に変換する以前のデフォルト動作に戻すには次を使用してください。

define config.crop_relative_default = False

However, be warned that like most things documented only on this page, this will conflict with - and cannot be used at the same time as - some other new features. This setting applies to crop, and also now to corner1 and corner2.

lib/ にあるプラットフォーム指定のディレクトリ名が変更しました。 lib/windows-x86_64 ディレクトリは lib/py2-windows-x86_64 になります。この変更は Ren'Py 8 での Python 3 のサポートのためです。これらのディレクトリはドキュメントには記載されておらず、 Ren'Py のバージョン間で変化する場合がありますが、 sys.executable が設定されることを保証します。

allow_underfull プロパティーが渡されるか config.allow_underfull_grids が True なら vpgrid はもう underfull せず、 overfull のみになります。

レイヤー画像 がその子をどう配置して、可変サイズの子がどうサイズを合わせられるかが変更されました。レイヤー画像が表示されるコンテキストで利用可能な領域を考慮する代わりに、 xsizeysize, xysize で明示的にサイズが指定されなければその画面サイズが利用可能な領域であると推定するようになりました。コンテキストごとに表示が変わりうる以前の動作に戻すには、次を使用します。

define config.layeredimage_offer_screen = False

もしくは offer_screen プロパティーを渡して特定のレイヤー画像に対して動作をトグルできます。

The function statement in ATL will only block catch-up in cases where it executes more than once. To revert to the old behavior, where ATL would block at a function, use:

define config.atl_function_always_blocks = True

7.4.11 link

Ren'Py はスクリーンが表示または非表示されるときのように、フォーカスが変更されるときにもボタンの unhovered プロパティーをデフォルトで実行するようになりました。以前の動作に戻すには次を使用します。

define config.always_unfocus = False

7.4.9 link

Ren'Py は、 transform の xsize または ysize プロパティーに与えられた浮動小数点数を、その transform で利用可能な領域に対するサイズとして解釈するようになりました。この変更を元に戻すには次のようにしてください。

define config.relative_transform_size = False

Ren'Pyのセルフボイシングが画面内のレイヤー、スクリーン、および Displayable を読み上げる順序が変更され、プレイヤーに近いスクリーンと Displayable から先に読み上げられます。以前の順序に戻すには次のようにしてください。

define config.tts_front_to_back = False

7.4.7 link

xminimumxmaximum が両方とも浮動小数でなら minimum は利用可能な領域の割合として解釈されます。つまり xsize に浮動小数を指定すると期待した結果となるようになったということです。これによりいつくかの Displayable はサイズを変えるかもしれません。この変更を戻すにはつぎのようにします。

define config.adjust_minimums = False

スクリーンの ATL Displayable はそのスクリーン自体の表示ではなくその Displayable の最初の表示時に開始するようになりました。これは次のようにして戻します。

define config.atl_start_on_show = False

入力キャレットはデフォルトで点滅するようになり、変更には次のようにします。

define config.input_caret_blink = False

7.4.6 link

7.4.5 のレイヤー at リストに関する変更をもどしました。 show layer はそのまま残り、新しい camera ステートメントが置き換えとなります。

7.4.5 link

このバージョンで制作されたゲームはデフォルトでモデルベースのレンダラーを使用します。モデルベースのレンダラーを無効化するには以下をしようします。

define config.gl2 = False

**7.4.6で廃止 ** scene ステートメントはもうレイヤーの at リストをクリアしません。レイヤーの at リストをクリアするには以下を使用してください

show layer master

ここで、 "master" はレイヤー名です。以前の振る舞いに戻すには以下を使用してください。

define config.scene_clears_layer_at_list = True

7.4.3 link

renpy.transition() や、 say や call screen ステートメントの with 節のようにそれを使用する場所で始まるトランジションがクリックでスキップできるようになりました。 以下を使用して防げます。

define config.dismiss_blocking_transitions = False

7.4.1 link

遅延時間指定の pause は with Pause(...) ではなく renpy.pause() を使用するようになりますた。つまりある行にある複数のポーズをバイバスするには複数回のクリックが必要になります。以前の動作に戻すには次のコードを使用します。:

define config.pause_with_transition = True

7.4 link

モバイルプラットフォームではビデオ再生にソフトウェアよりハードウェアを使用するようになりました。次のようにすれば以前の振舞に戻ります。

define config.hw_video = True

Ren'Pyは画像タグに少なくとも1つ属性が追加されないとサイドイメージを表示しなくなりました。次のようにしてこれを無効化します

define config.side_image_requires_attributes = False

初期化時外での config.mouse のような config 変数の設定は未サポートです。 v7.4 では動作しないため、代わりに default_mouse 変数の使用を考えてください。

7.3.3 link

config.start_callbacks に登録されたコールバックが常に default ステートメント後に実行されるようになりました。(通常のゲーム開始では default ステートメント前に実行され、リプレイでは違う)以前の振舞に戻すには次のようにします。

define config.early_start_store = True

スクロールバーのある viewport や vpgrid に渡されたとき、 minimum, xminimum, yminimum side プロパティーは viewport 単体ではなくスクロールバーと viewport を内蔵する side に適用されるようになりました。

これを回避するには、 viewport_minimum, viewport_xminimum, viewport_yminimum のいずれかを使用するか次のコードを使用してください。

define config.compat_viewport_minimum = True

7.3.0 link

次のようなスクリーンがあるとスクリーン言語で "a non-constant keyword argument ... is not allowed after a python block." というエラーがでるようになりました。

screen test():

    default a = 0

    button:
        $ a = 1
        action Return(a)

        text "Test"

これは action プロパティーが python の代入より前に実行されるため、クリック時に1ではなく0が返るためです。このチェックを無効化するにはゲームディレクトリの01compat.rpy に次のコードを追加します。

define config.keyword_after_python = True

しかしゲームの振舞は以前のままです。

side レイアウトでの子の描画順が制御文字列からとられるようになりました。以前の固定順に戻すには次を使います。

define config.keep_side_render_order = False

config.say_attribute_transition_callback のインターフェースに破壊的変更があり、新旧のタグのセットを取るようになりました。以前のインターフェースに戻すには次のようにします。

define config.say_attribute_transition_callback_attrs = False

mode パラメーターにも僅かな変化があり permanenttemporary 属性の両方に対するトランジションがあるとき both をとるようになりました。

7.2.2 link

config.say_attribute_transition_callback は新しく表示されている画像の引数を受け取るようになりました。

7.1.1 link

Ren'Py の widow auto 機能は menu ステートメントと台詞やキャプションを関連付けるかを決定するようになり、適切に台詞ウィンドウの表示非表示を試みるようになりました。この機能を有効化する情報を含むには "Force Recompile" が必要です。以前のゲームでも動作するはずですが、これは次のようにして無効化できます。

define config.menu_showed_window = True
define config.window_auto_show = [ "say" ]
define config.window_auto_hide = [ "scene", "call screen" ]

技術的には非互換の変更ですが、history スクリーンに対して推奨する変更があります。ゲームの更新方法は the changelog entry を参照してください。

7.1 link

画像が表示されていないときも属性を伴う say は属性を追加するだけでなくサイドイメージを変更します。これを無効化するためには次のコードを追加します。

define config.say_attributes_use_side_image = False

7.0 link

Ren'Py は かなり後ろの初期化段階である優先度 0 で自動画像を定義します。優先度の振舞を戻すには次を追加します。

init -1:
    define config.late_images_scan = True

Dissolve()ImageDissolve(), AlphaDissolve() トランジションは alpha=True を指定したかのように、デフォルトで元の Displayable のアルファチャンネルを使用するようになりました。この変更を戻すには次のコードを追加してください

define config.dissolve_force_alpha = False

既に表示されている動画を表示すると動画を再再生します。以前の動作に戻すには次のようにします。

define config.replay_movie_sprites = False

6.99.13 link

ハイパーリンクのサイズは囲んでいるテキストを引き継ぐようになりました。これを無効化するためには次のコードを追加します

define config.hyperlink_inherit_size = False

{nw} テキストタグはボイスやセルフボイシングの完了を待つようになります。これを無効化するためには次のコードを追加します

define config.nw_voice = False

ATL Transform でポーズや補間がおきれば常に最低 1 フレームは表示されるようになります。ゲームがこの動作を期待しないとき、急激な 1 連の 1 フレームの表示となるかもしれません。これを無効化するためには次のコードを追加します

define config.atl_one_frame = False

ステートメントによるレイヤーの表示は他のどの ATL Transform の状態も保存します。これにより挙動が変更し、例えば複数のステートメントによるレイヤー表示間でオフセットが維持されるようになりました。これを無効化するためには次のコードを追加します

define config.keep_show_layer_state = False

非互換の変更ではないですが、 renpy.list_files() が変更して標準的な方法でソートされるようになりました。以前の挙動はあいまいで、例えば同名の複数のファイルがimageディレクトリーにあると Ren'Py はランダムに1つを選択します(選択されるものはシステムごとに変わります)。現在はどこでも同じファイルが選ばれるようになりました。

6.99.12.3 link

Ren'Py は開発者モードではシステム組み込みのフォントを検索しなくなりました。もしシステム組み込みのフォントを使用しているなら、そのフォントファイルをゲームディレクトリーにコピーするべきです(しかしそのフォントファイルのライセンスに従っているか確認してください)。

6.99.11 link

the changelog に記載されたとおり、 styletranslate ステートメントの実行順が変更されました。この変更を戻すには次のこれを無効化するためには次のコードを追加します

define config.new_translate_order = False

これにより新しいGUIが動作しなくなることに注意してください。

config.quit_action 変数のデフォルト値がゲーム内のコンテキストで終了のプロンプトを表示するものに変わりました。この変更を戻すには次のコードを追加してください。

define config.quit_action = ui.gamemenus("_quit_prompt")

ボタンとウィンドウに対して与えられた最大サイズを使用するようになりました。この振舞を無効にするには次のコードを追加してください。

define config.enforce_window_max_size = False

6.99.9 link

現在 Ren'Pyは同時に複数の再生をサポートする "audio" チャンネルでインターフェースサウンドを再生します。このチャンネルはカスタマイズされた sound チャンネルとは設定が違うかもしれません。audio チャンネルの設定は config.auto_channels, の調整または、以下のコードの追加で sound チャンネルが使用されます。

define config.play_channel = "sound"

6.99.2 link

Ren'Py は画像ディレクトリー ( ゲームディレクトリー下の images ディレクトリー )から画像を探し、そのファイル名から画像を定義するようになりました。これを無効化するには、以下のコードを使用してください。

init python:
    config.image_directory = None

6.18 link

show screencall screen ステートメントで、スクリーン予測処理の一部としてそれらの引数を評価するようになりました。スクリーン引数の評価が副作用を起す場合は、 show screencall screen ステートメントには予測を禁止する新しい nopredict 節を与えてください。

スクリーンがスクリーンの以前の状態から新しい状態へのトランジションに参加するようになりました。これを無効化するためには、 config.transition_screens を False に設定してください。

スクリーンが同じタグのスクリーンを置き換えるとき、 Ren'Py はもう構造の等価性を使用して状態を移行 ( 例えば transform の状態 ) しません。代りに use statementid プロパティーをサポートするようになり、これを使って明示的に状態を移行出来るようになりました。

6.16 link

MusicRoom()loop パラメーターの意味が変わりました。以前と同じ挙動にするには、 loopsingle_track の両方を True にしてください。

6.15.7 link

Ren'Py now expects auto-forward mode to be controlled by the "auto-forward" Preference(). To have it controlled by the auto-forward mode slider, set config.default_afm_enable to None.

6.14 link

Previously, Ren'Py moved archived files into the archived/ directory. It would search this directory automatically when running a game or building archives. One-click builds make this unnecessary, and files in archived/ should be moved back into the game directory.

MoveTransition() has changed its interface. The old version of MoveTransition can be accessed as OldMoveTransition, if you don't want to rewrite your code. (The changes only matter if you use factories with MoveTransition.)

Transform() has changed its behavior with regards to asymmetrically scaled and rotated images. It's unlikely the old behavior was ever used.

6.13.8 link

Old-style string interpolation has been re-enabled by default. If you wrote code (between 6.13 and 6.13.7) that uses % in say or menu statements, you should either write %% instead, or include the code:

init python:
    config.old_substitutions = False

6.13 link

The changes to text behavior can affect games in development in many ways. The biggest change is the introduction of new-style (square-bracket) text substitutions, and the elimination of old-style (percent-based) substitutions. These changes can be reverted with the code:

init python:
    config.old_substitutions = True
    config.new_substitutions = False

New- and old-style substitutions can coexist in the same game, by setting both variables to True.

Ren'Py has also changed the default line-wrapping behavior. While the new behavior should never increase the number of lines in a paragraph, it may change which words fall on each line. To restore the old behavior, add the code:

init python:
    style.default.layout = "greedy"
    style.default.language = "western"

A bug with negative line_spacing was fixed. This fix can cause blocks of text to shrink in height. To revert to the old behavior, use:

init python:
    config.broken_line_spacing = True

Finally, the new text code may lead to artifacts when displaying slow text, especially in conjunction with a negative line spacing. Consider adjusting line_overlap_split to fix this.

6.12.1 link

Image names have changed from being static names to being attribute-based. This can lead to image names that were previously distinct becoming ambiguous. To disable attribute-based image names, set config.image_attributes to False.

Showing an image without providing a transform or ATL block will now continue the previous transform that the image was using. This means that a moving image may continue moving once it has changed. To revert to the old behavior, set config.keep_running_transform to False.

The image argument to Character() has changed meaning. While the old meaning was unsupported in the screens-based environment, it can be restored for compatibility purposes by setting config.new_character_image_argument to False.

6.12.0 link

The definition of the items parameter of the Choice and nvl_choice screens has changed. The nvl_choice screen is deprecated in favor of the NVL screen.

Screens may be invoked at any time, in order to allow for image prediction, unless they have a predict property of False. When the predict property is not False, screens should not cause side effects to occur upon their initial display.

For performance reason, Ren'Py now ignores the position properties of ImageReferences. This means that the position properties of style.image_placement are now ignored. To revert to the old behavior, set config.imagereference_respects_position to True.

6.11.1 link

MoveTransition has been modified to respect the xoffset and yoffset parameters of the displayables it is moving. The factory functions that are used for movement now take xoffset and yoffset parameters. While the built-in movement factories take these parameters without problem, user-defined factories may need to be upgraded to use or ignore these additional parameters.

6.11.0 link

  • The transform specified by the config.default_transform variable is used to initialize the transform properties of images shown using the show and hide statements. The default value of this transform sets xpos and xanchor to 0.5, and ypos and yanchor to 1.0.

    This represents a change in the default value of these style properties, which were previously uninitialized and hence defaulted to 0.

    By including the reset transform in ATL transforms, these properties can be reset back to 0. Alternatively, one can stop using the default transform, and revert to the old behavior, using the code:

    init python:
        style.image_placement.xpos = 0.5
        style.image_placement.ypos = 1.0
        style.image_placement.xanchor = 0.5
        style.image_placement.yanchor = 1.0
    
        config.default_transform = None
    
  • If a transform does not define one of the position properties xpos, ypos, xanchor, or yanchor, that property will be taken from the transform's child, if the defines that property.

    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 config.transform_uses_child_position variable.

    init python:
        config.transform_uses_child_position = False
    

6.10.0 link

  • The default positions (left, right, center, truecenter, offscreenleft, and offscreenright) are now defined as ATL transforms. This means that showing an image at such a position will cause the position to be remembered. If you do not want this behavior, you need to redefine these positions, by adding the code:

    define left = Position(xalign=0.0)
    define center = Position(xalign=0.5)
    define truecenter = Position(xalign=0.5, yalign=0.5)
    define right = Position(xalign=1.0)
    define offscreenleft = Position(xpos=0.0, xanchor=1.0)
    define offscreenright = Position(xpos=1.0, xanchor=0.0)
    

6.9.2 link

  • To migrate your game from Ren'Py 6.9.2 or later, copy the directory containing your game into your projects directory. You can choose a projects directory by clicking "Options", "Projects Directory" in the Launcher. Please see the Ren'Py 6.9.2 release notes for information about migrating from older releases.