非互換の変更 link
これは、スクリプトの書式や開発環境に影響すると思われる変更のリストです。私たちはこれら以外のすべての変更は既存のスクリプトに影響を及ぼさないようにしています。
config.script_version
を設定すれば、これらの変更の多くを以前の状態に戻せますが、逆に新しい機能は利用できなくなります。
GUIに対する非互換の変更はそのGUIが再生成された時のみ影響するので 非互換の GUI の変更 に記述されています。
廃止待ち link
Ren'Py 7.8 は Python 2 をサポートする最後のリリースです。
Ren'Py 8.4 は、オリジナルの OpenGL レンダラー (gl1) と Windows 7、8、8.1 のサポートを終了します。
8.3.0 / 7.8.0 link
Box_reverse と Box_align box_reverse
プロパティーはボックスの配置を調整しなくなりました。ボックスの配置を調整するには、 box_align
プロパティーを 1.0 に設定するか、
define config.box_reverse_align = true
以下を使用して動作を 8.2 に戻します。
保持された吹き出し が他の say や menu, call screen ステートメントの実行により自動的に消去されるようになりました。これは bubble.clear_retain_statements
変数により制御されます。
これを無効化するにはゲームに次を追加してください。
define bubble.clear_retain_statements = [ ]
ATL がパラメーターから子を設定する方法 いつどのようにして ATL transform が子を設定するかは受け取ったパラメーターと引数に基づいていましたが、これが若干変更されました。ドキュメント記載の機能のみ使用していた場合は既存のゲームに影響を与える可能性は低いです。
位置引数から値を取る old_widget パラメーターは、子を設定しなくなりました。これはドキュメントに記載されていない ATL トランジション の誤用でした。
transform t(old_widget): ... t("eileen") # will no longer have a child set to the "eileen" image
child パラメーターを持つ transform に渡される child キーワード引数は、 child パラメーターを持たない transform の場合や、 child パラメーターの値をを位置引数から取得した場合と同様に、子を設定するようになりました。これについては、ドキュメントが曖昧でした。
transform t1(child): ... transform t2(delay=1.0): ... t1(child="eileen happy") # will now have a child set to the "eileen happy" image, but previously didn't. t2(child="eileen happy") # the child is set, as before. t1("eileen happy") # the child is set, as before.
Character コールバック が キャラクターコールバック で記載されているように多数の追加引数を受け取るようになりました。 character コールバックは未知のキーワード引数を無視するよう書かれているはずなので、これは変更を必要しないはずです。しかしもしそうでないならば、その character コールバックは更新が必要です。
window ステートメント window show
ステートメントと window hide
ステートメントは、 window auto
フラグを無効にしなくなりました。これを行う場合は、新しい window auto False
ステートメントを使用するか、ゲームを次のように変更します。
define config.window_functions_set_auto = True
window hide
の後に window show
があると、 Ren'Py は次の say ステートメントを待ち受けて、表示するウィンドウの種類を決定します。以前は、最後の say ステートメントを振り返っていました。この変更を元に戻すには、以下を記述します
define config.window_next = False
String Munging Munging of names beginning with __ but not containing a second instance of __ will now occur inside a string just like it does in the rest of a script. What this means is that:
$ __foo = 1 "Add one and __foo and you get [1 + __foo]."
上記は次のように書き換えられます。 :
$ _m1_script__foo = 1 "Add one and _m1_script__foo and you get [1 + _m1_script__foo]."
これを無効にするには、ゲームディレクトリーに 01nomunge.rpy というファイルで次のように記述します。
define config.munge_in_strings = False
Displayable の境界外でのトリミング displayable よりも大きいボックスでその displayable をトリミングする動作が変更されました。このリリースではは、 Crop()
, crop
,:tpref:corner1, corner2
に渡される値は、displayable の元の境界に拘束されなくなりました。
8.2.x と 7.7.x の Ren'Py リリースでは、Displayable の右/下をクロップし、左/上は拘束されていない動作でした。この動作は、次をゲームに追加して復元できます
define config.limit_transform_crop = True
8.2 および 7.7 より前のバージョンでは、値が浮動小数点数の場合、 Displayable の右/下を切り取り、左/上を拘束しないままにするという動作でした。この動作は、次をゲームに追加して復元できます
define config.limit_transform_crop = "only_float"
8.2.2 / 7.7.2 link
FillとFrame 8.2.1 以前では、特定のケースで xfill
と yfill
スタイルプロパティーによって、フレーム、ウィンドウ、およびボタンのサイズが縮小することがありました。現在は、サイズの拡張のみが許可されています。これを元に戻すには、以下を追加します。
define config.fill_shrinks_frame = True
8.2.1 / 7.7.1 link
縦書きテキスト harfbuzzシェイパーの縦書きテキストが改善され、テキストが正しい場所にレンダリングされるようになりました。これにより位置が変更される可能性がありますが、以前のバージョンは大幅に間違っていたため、互換性の定義は提供されません。
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で angle
と anchorangle
をアニメーションする場合、方向を指定しないと、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: ...
これは他の問題(例えば、まったく間違ったキーを使っているなど)によって引き起こされる可能性もありますが、次で修正出来る可能性があります :
プロジェクトのベースディレクトリーで、
bundle.keystore
をbundle.keystore.bak
にリネームしてください。プロジェクトのベースディレクトリーで、
android.keystore
をbundle.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.properties
と bundle.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_volume
や config.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 のみになります。
レイヤー画像 がその子をどう配置して、可変サイズの子がどうサイズを合わせられるかが変更されました。レイヤー画像が表示されるコンテキストで利用可能な領域を考慮する代わりに、 xsize
や ysize
, 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
xminimum
と xmaximum
が両方とも浮動小数でなら 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 パラメーターにも僅かな変化があり permanent
と temporary
属性の両方に対するトランジションがあるとき 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 に記載されたとおり、 style
と translate
ステートメントの実行順が変更されました。この変更を戻すには次のこれを無効化するためには次のコードを追加します
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 screen
と call screen
ステートメントで、スクリーン予測処理の一部としてそれらの引数を評価するようになりました。スクリーン引数の評価が副作用を起す場合は、 show screen
や call screen
ステートメントには予測を禁止する新しい nopredict
節を与えてください。
スクリーンがスクリーンの以前の状態から新しい状態へのトランジションに参加するようになりました。これを無効化するためには、 config.transition_screens
を False に設定してください。
スクリーンが同じタグのスクリーンを置き換えるとき、 Ren'Py はもう構造の等価性を使用して状態を移行 ( 例えば transform の状態 ) しません。代りに use statement が id
プロパティーをサポートするようになり、これを使って明示的に状態を移行出来るようになりました。
6.16 link
MusicRoom()
の loop パラメーターの意味が変わりました。以前と同じ挙動にするには、 loop と single_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 setsxpos
andxanchor
to 0.5, andypos
andyanchor
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
, oryanchor
, 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.