Ren'Py ゲームのライフサイクル link
Ren'Py のゲームを起動するとき、それが実行ファイルからであれランチャーからであれ、閉じるまで一連のステップをたどります。このページでは、このライフサイクルのさまざまなフェーズと、それに関連するさまざまなステートメントを公開します。
ブートタイム link
ゲームウィンドウが表示されるまでに、さまざまなことが起こっています。これがブートタイムです。この時点で見える可能性があるのは、 presplash だけです。
スクリプト解析フェーズ link
ゲームのコードを読むために、 Ren'Py はゲームの .rpy
(と _ren.py
) ファイルを一つずつ、ファイルパスのユニコード順に読み込みます。これが "解析"フェーズ、または "初期 "フェーズです。
最初に実行されるクリエイターが書いたコードは、 python early
ブロックに書かれたものです。これらのブロックは、そのファイルが読み込まれてパースされた後、次のファイルが読み込まれる前に実行されます。このため、 ユーザー定義ステートメント や ユーザー定義スクリーン言語ステートメント 、新しいカスタムの ワーパー など、解析の方法を変更するようなステートメントは python early
ブロックで記述しなければならないのです。
init python early
という構文に出会うことがありますが、これは冗長で、 python early
に対してコードがどのように実行されるかは何も変わりません。
初期化フェーズ link
解析/初期フェーズの後、"初期化" フェーズが開始されます。このとき、 init python ステートメント や define ステートメント , transform ステートメント , image ステートメント, screen ステートメント, style ステートメントなどのいくつかのステートメントが実行されます。初期化フェーズは -999 から 999 までの連続したエポック、つまり初期化の優先順位に分割されます。この用語が意味するところとは逆に、低い優先順位のエポックが高い優先順位のエポックより先に実行されます。
デフォルトでは、これらのステートメントは init offset 0 で実行されます。 しかし、 init offset ステートメント や他の方法でオフセットできます。 image ステートメント はこれらのルールの例外で、デフォルトでは init 優先度 500 で実行され、 init offset ステートメントはこの 500 を置き換えるのではなく、追加したり減算したりします。
画像 ディレクトリー からの自動画像定義は優先度0で行われます。
default ステートメントは初期化時には実行されませんが、ステートメントの優先順位は、それらが実行される順序に影響を与えることに注意してください。
init offset ステートメント link
init offset
ステートメントは、初期化時に実行されるすべてのステートメントに優先順位のオフセットを設定します。これはファイルの先頭に置かれるべきもので、現在のブロックと子ブロックにある、次の init priority ステートメントに続くすべてのステートメントに適用されます。
init offset = 42
このコードでは優先度のオフセットを 42 に設定しています。
init offset = 2
define foo = 2
init offset = 1
define foo = 1
init offset = 0
最初の deffine ステートメントは優先度 2 で実行されるので 二つ目の define ステートメントの後に実行されます。 foo
は 2 の値になります。
スクリプトの実行 link
これは、ゲームウィンドウが表示されるようになると起こることです。通常は Ren'Py のステートメントが実行されるときであり、 ラベルと制御フロー で説明されているルールが適用されます。 define statements からの変数が初期化時に設定されるのとは対照的に、 default ステートメント からの変数が最初に設定されるときでもあります。
通常のゲーム実行開始後は、設定変数を変更しないでください。
スプラッシュスクリーン link
あれば splashscreen ラベルが処理が返るまで実行されます。
スプラッシュスクリーンは Ren'Py が実行されるたびに一度だけ表示され、スクリプトの実行が再開されたときにはスキップされます。
ゲームフェーズ link
ゲームを実際にプレイするフェーズであり、一般的にプレイヤーが最も多くの時間を費やすモードです。これはゲームが終了するか、ゲームが再開し、メインメニューに戻るまで続きます。
ゲームフェーズの間、 ShowMenu
アクションを使用して、新しいコンテキストでスクリーンを表示できます。
ゲームフェーズは、プレイヤーがゲームを終了するか、ゲームを再開してメインメニューに戻るまで継続します。ゲームは ラベルと制御フロー で説明したように、スタック上にコールがないときに処理を返して再開できます。また、 MainMenu
アクションや renpy.full_restart()
関数によってもゲームを再開できることがあります。
ゲームが再開すると、すべての非永続的データはリセットされ、スクリプトの実行フェーズの終わりの状態に戻り、スクリプトの実行フェーズがスプラッシュスクリーンをスキップして再び始まります。