その他の関数と変数 link

このページでは、他の場所に合わない様々な雑多な関数や変数をリストアップし、記載しています。

Ren'Py Version link

renpy.version(tuple=False) link

tuple が False なら「 Ren'Py 」とそれに続く Ren'Py のバージョンの文字列を返します。

tuple が True なら整数でバージョンの各要素を与えるタプルを返します。

renpy.version_string link

Ren'Py のバージョンの数で、 "Ren'Py 1.2.3.456" 形式の文字列です。

renpy.version_only link

Ren'Py のバージョンの数で、Ren'Py が接頭辞につかない "1.2.3.456" 形式の文字列です。

renpy.version_tuple link

Ren'Py のバージョンの数で、 (1, 2, 3, 456) 形式のタプルです。

4つのフィールド major, minor, patch, commit を持つ namedtuple です。

renpy.version_name link

"Example Version." 形式の人間が読めるバージョン名です。

renpy.license link

ゲームのアバウト画面に表示されるべきライセンステキストの文字列です。

プラットフォーム検知 link

Ren'Py にはどのプラットフォームで実行されているかに基づいて設定される変数があります。

renpy.windows link

Windows で実行中なら True です。

renpy.macintosh link

macOS で実行中なら True です。

renpy.linux link

Linux やその他の POSIX ライクなオペレーティングシステムで実行中なら True です。

renpy.android link

Android で実行中なら True です。

renpy.ios link

iOS で実行中なら True です。

renpy.emscripten link

ブラウザで実行中なら True です。

renpy.mobile link

Android や iOS, ブラウザで実行中なら True です。

これらはエミュレーターではなく、実際のデバイスで実行時にのみ設定されます。これらはプラットフォーム指定の Python の使用を意図します。レイアウトの表示には、 スクリーン variant を使用します。

メモリープロファイリング link

renpy.diff_memory(update=True, skip_constants=False) link

Ren'Py とそのゲームにより使用されたオブジェクトや surface, texture メモリーをプロファイリングします。 update を True にして最後にこの関数を呼び出したときからの、メモリー使用の変化を (memory.txt と stdout に) 書き出します。

store と Ren'Py の実装に含まれ、メモリーまでアクセス出来る名前が占有する量です。複数の名前からアクセスできるオブジェクトがあれば、最も最短でアクセス出来る名前に代入されます。

skip_constants

True なら、プロファイルは起動後に変更しない Ren'Py の大きなコンテナのスキャンをスキップします。

Ren'Py に使用されるすべてのメモリーをスキャンするため、この関数は完了に時間がかかります。

renpy.profile_memory(fraction=1.0, minimum=0, skip_constants=False) link

Ren'Py とそのゲームにより使用されたオブジェクトや surface, texture メモリーをプロファイリングします。メモリー使用の報告を memory.txt と stdout に書き出します。

store と Ren'Py の実装に含まれ、メモリーまでアクセス出来る名前が占有する量です。複数の名前からアクセスできるオブジェクトがあれば、最も最短でアクセス出来る名前に代入されます。

fraction

全体のメモリー使用のうち表示する割合です。 1.0 ならすべてのメモリー使用を表示し、.9 なら上位90%を表示します。

minimum

ある名前のメモリーが minimum バイトより小さければ、報告しません。

skip_constants

True なら、プロファイルは起動後に変更しない Ren'Py の大きなコンテナのスキャンをスキップします。

Ren'Py に使用されるすべてのメモリーをスキャンするため、この関数は完了に時間がかかります。

renpy.profile_rollback() link

ロールバックに使用されているメモリーをプロファイリングします。ロールバックシステムによって使用されたメモリー (memory.txt と stdout) へ書き出します。これはロールバックシステムの内部要素とともに、様々な store 変数によって使用されたロールバックメモリーの報告を試みます。

renpy.random link

このオブジェクトは the Python random number generation interface で実装された乱数生成機です。乱数はこのオブジェクトが与える種々のメソッドを呼び出して生成可能です。完全なリストは python ドキュメントを参照する必要がありますが、殆どは以下が使用されます。 :

  • renpy.random.random()

0.0 から 1.0 までの範囲でランダムな浮動小数点数を返します。

  • renpy.random.randint(a, b)

a 以上、 b 以下の範囲でランダムな整数を返します。

  • renpy.random.choice(seq)

空でないシーケンス seq からランダムに要素を返します。

  • renpy.random.shuffle(seq)

seq の要素の並びをシャッフルします。これはリストを返さず、与えられた seq を変更します。

標準の Python 乱数整数機と違い、このオブジェクトはロールバックを考慮し、何回ロールバックしても同じ数字を生成します。標準の python random モジュールの代わりに使用するべきです。

# return a random float between 0 and 1
$ randfloat = renpy.random.random()

# return a random integer between 1 and 20
$ d20roll = renpy.random.randint(1, 20)

# return a random element from a list
$ randfruit = renpy.random.choice(['apple', 'orange', 'plum'])
  • renpy.random.Random(seed=None)

メインとは別に新しい乱数生成オブジェクトを返します。これは存在すれば指定した値をシード値にします。

SDL link

SDL2 dll には renpy.get_sdl_dll() を使用してアクセスできます。これにより SDL2 関数の直接使用が可能になります。しかし、それらの使用はしばしば Python ctypes モジュールの知識を必要とします。

Ren'Py に含まれている SDL2 はどの機能を持ち、どの機能を持たないかを含め、バージョンは保証されません。これらの関数は Ren'Py を実行するプラットフォームによっては失敗するので、処理前に None か確認することが重要です。

次の例では、ウィンドウの位置が SDL2 から所得されます。

init python:

    import ctypes

    def get_window_position():
        """Retrieves the position of the window from SDL2.

        Returns the (x, y) of the upper left corner of the window, or
        (0, 0) if it's not known.
        """

        sdl = renpy.get_sdl_dll()

        if sdl is None:
            return (0, 0)

        win = renpy.get_sdl_window_pointer()

        if win is None:
            return (0, 0)

        x = ctypes.c_int()
        y = ctypes.c_int()

        result = sdl.SDL_GetWindowPosition(win, ctypes.byref(x), ctypes.byref(y))

        return result
renpy.get_sdl_dll() link

Ren'Py が使用している SDL2 のインスタンスを含むライブラリを参照する ctypes.cdll オブジェクトを返します。これに失敗すると None が返されます。

renpy.get_sdl_window_pointer() link
戻り値の型:

ctypes.c_void_p | None

メインウィンドウへのポインターを返すか、 メインウィンドウが表示されていなければ(もしくはその他の問題が起きていれば) None を返します。

その他 link

renpy.add_python_directory(path) link

python モジュールやパッケージの検索パスのリストに path を追加します。パスは game ディレクトリからの相対パスです。これは import ステートメント前に呼び出されなければなりません。

renpy.add_to_all_stores(name, value) link

クリエーターが定義したすべての名前空間に namevalue を追加します。その名前空間にすでに名前があれば何もしません。

この関数は init ブロック内からのみ実行されるでしょう。一旦ゲームが開始した後に呼び出されるエラーとなります。

renpy.can_fullscreen() link

現在のプラットフォームがフルスクリーンモードをサポートしていれば True, そうでなければFalse を返します。

renpy.capture_focus(name='default') link

Displayable に現在フォーカスがあれば、その Displayable の矩形のバウンディングボックスを捕捉し、 name に代入します。そうでなければ、 name に代入されたフォーカスを削除します。

捕捉したフォーカスはセーブ時にセーブされません。

name

文字列であるべきです。 "tooltip" は特別で、ツールチップのある Displayable がフォーカスを得ると自動的に捕捉されます。

renpy.choice_for_skipping() link

選択肢がもうすぐ表示されることを Ren'Py に報せます。これには現在 2 つの効果があります。 :

  • Ren'Py がスキップ中で、選択肢後のスキップ設定がスキップ停止に設定されていると、スキップを停止します。

  • オートセーブを実行します。

renpy.clear_capture_focus(name='default') link

name で捕捉したフォーカスをクリアします。

renpy.clear_game_runtime() link

ゲームランタイムカウンターをリセットします。

renpy.clear_retain(layer='screens', prefix='_retain') link

すべての保持されているスクリーンを除去します。

renpy.confirm(message) link

これは与えられたメッセージで Yes/No プロンプトを表示します。ユーザーが Yes か No を押したらスクリーンは消えます。

プレイヤーが yes を押せば True, no を押せば False を押します。す。

message

表示されるメッセージ

アクションで相当する物として Confirm() を参照してください。

renpy.count_dialogue_blocks() link

ゲームの元の言語での台詞ブロックの数を返します。

renpy.count_newly_seen_dialogue_blocks() link

このセッション中にユーザーが初めて読んだ台詞ブロックの数を返します。

renpy.count_seen_dialogue_blocks() link

一度でもユーザーが読んでいる台詞ブロックの数を返します。

renpy.display_notify(message) link

renpy.notify() のデフォルトの実装です。

renpy.focus_coordinates() link

これは、現在フォーカスを持つ displayable の座標を見つけようとします。可能であれば、(x, y, w, h) のタプルとして返し、それ以外の場合は (None, None, None, None) のタプルを返します。

renpy.force_autosave(take_screenshot=False, block=False) link

バックグラウンドでのオートセーブを強制します。

take_screenshot

True なら新しいスクリーンショットが撮られます。 False なら既存のスクリーンショットが使用されます。

block

True なら、自動セーブが完了するまでブロックします。

renpy.free_memory() link

メモリーの開放を試みます。ミニゲームの実行前に便利です。

renpy.full_restart(transition=False, *, save=False) link

Ren'Py をリセットしてメインメニューに戻ります。

transition

指定されるとそのトランジションが実行され、 None の場合はトランジションを実行しません。 False の場合は config.end_game_transition を使用します。

save

True なら、 Ren'Py の再起動時とユーザーがメインメニューに戻ったときにゲームが _quit_slot に保存されます。

renpy.get_game_runtime() link

ゲームランタイムカウンターを返します。

ゲームランタイムカウンターは、トップレベルのコンテキストでユーザーの入力待ちの間の秒数を記録します(メインメニューやゲームメニューでの時間は記録しません)。

renpy.get_image_load_log(age=None) link

画像をロードする際のログを生成します。最後の100個の画像に対し、次のロードログを返します:

  • 画像がロードされた時間(エポックからの秒数)

  • ロードされた画像のファイル名

  • 画像がプリロードされれば true ロード中にゲームが停止すれば false となる真偽値

記録は新しいものから古いものの順に並びます。

age

Noneでない場合、 age 秒前にロードされた画像のみが含まれます。

画像のロードログは、 config.developer = True の場合のみ記録されます。

renpy.get_menu_args() link

現在の menu ステートメントに渡された(タプル形式の)引数と(辞書形式の)キーワード引数を与えるタプルを返します。

renpy.get_mouse_name(interaction=False) link

表示されるべきマウスの名前を返します。

interaction

True なら発生しているインタラクションの種類に基づいたマウス名を所得します。

renpy.get_mouse_pos() link

マウスポインターまたは現在のタッチ位置の座標を与えるタプル (x, y) を返します。デバイスがマウスをサポートしていなかったり現在タッチされていない場合、 x, y は数字ではありますが意味を為しません。

renpy.get_on_battery() link

Ren'Py が内部バッテリーのデバイス上で動作していれば True を返し、そうでなく外部の電源で充電されていれば False を返します。

renpy.get_ongoing_transition(layer=None) link

現在進行中のトランジションを返します。

layer

None の場合、最上位のトランジションが返されます。そうでなければ、レイヤー名を指定する文字列でなければならず、その場合はそのレイヤーのトランジションが返されます。

renpy.get_physical_size() link

ウィンドウの実際のサイズを返します。

renpy.get_refresh_rate(precision=5) link

浮動小数点数として、現在のスクリーンのリフレッシュレートを返します。

precision

Ren'Pyが得る生データは秒ごとの近傍の整数に丸められたフレーム数です。つまり 59.95 フレームで動作するモニターは、59 fps と報告されます。 precision 引数は読み取りの精度を下げ、読み込んだ値をprecisionの倍数のみにします。

すべてのモニターフレームレートは 5 の倍数になる傾向があるので、これで正度を改善できるかもしれません。1に設定するとこれは無効化されます。

renpy.get_renderer_info() link

Ren'Pyが現在使っているレンダリングエンジンの情報を与える辞書を返します。定義されたキーは以下です。 :

"renderer"

使用中のレンダー名の文字列です。

"resizable"

ウィンドウサイズが変更可能な時のみ True となります。

"additive"

レンダリングエンジンが加算合成をサポートする場合のみ True です。

"model"

モデルベースのレンダリングがサポートされればキーが存在し、Trueとなります。

他に、レンダリングエンジン固有のキーが存在するかもしれません。辞書は変更出来ないものとして扱うべきです。また、これは一旦表示が開始されてから ( 初期化コードが終った時 ) のみ呼び出されるべきです。

renpy.get_say_attributes() link

現在の say ステートメントに対応する属性、またはこのステートメントに対応する属性がない場合は None を取得します。

これはsayステートメントを実行または予想しているときのみ有効です。

renpy.get_skipping() link

Ren'Py がスキップ中なら "slow" を返し、高速スキップ中なら "fast" 、そうでないなら None を返します。

renpy.get_transition(layer=None) link

layer のトランジションか、 layer が None ならすべてのレイヤーのトランジションを取得します。これは次のインタラクションで実行されるはずのキューされたトランジションか、そのようなトランジションがないなら None を返します。

renpy.get_ongoing_transition() を使用して、進行中のトランジションを取得します。

renpy.iconify() link

ゲームを最小化します。

renpy.include_module(name) link

renpy.load_module() と同様ですが、モジュールをその場でロードする代わりに現在の AST ノード後のどこかの init キューに挿入します。

モジュールはそのモジュールを含むブロックより低い init ブロックを含みません。例えば init 10 ブロックを含んでいれば、ロードできる最後は init 10 です。

モジュールのロードは init ブロック内でのみ行なわれます。

renpy.invoke_in_main_thread(fn, *args, **kwargs) link

これはメインスレッドで指定引数で指定の関数を実行します。関数はイベントハンドラーに類似するインタラクションコンテキストで実行されます。つまり renpy.invoke_in_thread() により作成された別のスレッドから呼び出せます。

シングルスレッドで複数の関数が実行されると、それらはスケジュールされた順で実行されることが保証されます。

def ran_in_a_thread():
    renpy.invoke_in_main_thread(a)
    renpy.invoke_in_main_thread(b)

この例では、 b が呼び出されるより前に a が返されると保証されています。異なるスレッドからの呼び出し順は未保証です。

これは初期化フェーズの間は呼びだされないはずです。

renpy.invoke_in_thread(fn, *args, **kwargs) link

バックグラウンドスレッドで関数 fn を実行し、与えられた引数とキーワード引数を渡します。スレッドが結果を返すとインタラクションを再開します。

この関数は、 Ren'Py 終了時自動的に停止するデーモンスレッドを作成します。

このスレッドは Ren'Py API で実行できる範囲が非常に制限されています。 store 変数の変更と次の関数の呼び出しは許可されています :

Ren'Py API の他のほとんどはメインスレッドからの呼び出しを想定しています。

これはエラーなくすぐに処理を返すのでなければ web 版では動作しません。

renpy.is_init_phase() link

Ren'Py が現在 init コードの実行中なら True, そうでなければ False を返します。

renpy.is_mouse_visible() link

マウスカーソルが可視状態なら True, そうでなければFalse を返します。

renpy.is_seen(ever=True) link

現在の行が既読なら True を返します。

ever が True であれば、その行がプレイヤーによって一度でも読まれているかどうかを確認します。False の場合は、今回のプレイでは既読行かどうかを確認します。

renpy.is_skipping() link

Ren'Py が現在(ファストまたはスロー)スキップ中なら True を返し、そうでなければ False を返します。

renpy.is_start_interact() link

restart_interaction が現在のインタラクションで呼び出されたことがなければ True を返します。これを使用してそのインタラクションが開始されたか、再開されたかを判定できます。

renpy.language_tailor(chars, cls) link

これを使用してあるユニコード文字の改行分類を上書きできます。例えば、文字の改行分類を文字の前後での改行を許すIDに設定すれば表語文字的な文字として扱えます。

chars

改行する文字を含む文字列です。

cls

文字分類の文字列です。これは UAX #14: Unicode Line Breaking Algorithm の表1で定義されたクラスの1つであるべきです。

renpy.last_say() link

最後の say ステートメントの情報を含むオブジェクトを返します。

これは say ステートメント中に呼び出せますが、 say ステートメントが通常の Character を使用していれば、その情報は前のものではなく、 現在 の say ステートメントに関する物になります

who

話者です。これは通常 Character() オブジェクトですが、そうである必要はありません。

what

話された台詞の文字列です。これは例えばゲーム開始時のように、台詞がまだ表示されていなければ、 None かもしれません。

args

最後の say ステートメントへの引数のタプルです。

kwargs

最後の say ステートメントへのキーワード引数の辞書です。

警告

他の同様の関数と同様に、この関数が返すオブジェクトは、関数が呼び出されてからの短期的な使用を意図しています。このオブジェクトのセーブデータへの保存やロールバックへの参加は推奨されません。

renpy.load_module(name) link

これは name と名付けられた Ren'Py モジュールをロードします。 Ren'Py モジュールは通常の名前空間 ( store ) にロードされ、 name.rpym や name.rpymc と名付けられたファイルに含まれている Ren'Py コードで構成されます。 .rpym ファイルが存在し、対応する .rpymc ファイルより新しければロードされて新しい .rpymc ファイルが作成されます。

init ブロック (とその他の初期化段階のコード) のすべてはこの関数が返る前に実行されます。そのモジュール名が見つからないか、曖昧な場合はエラーが発生します。

モジュールのロードは init ブロック内でのみ行なわれます。

renpy.load_string(s, filename='<string>') link

呼び出し可能な Ren'Py スクリプトとして文字列 s をロードします。

s の最初のステートメント名を返します。

filename は、その文字列内のステートメントがあることになるファイル名です。

renpy.maximum_framerate(t) link

t 秒間 Ren'Py に最大フレームレートでの画面描画を強制します。 t が None なら、最大フレームレートのリクエストはキャンセルされます。

renpy.munge(name, filename=None) link

name を munge します。 name は __ で始まらなければなりません。

filename

munge されるファイル名です。 None なら、その名前はこの関数への呼び出しを含むファイル名に munge されます。

renpy.not_infinite_loop(delay) link

無限ループ検出のタイマーを delay 秒までリセットします。

renpy.notify(message) link

Ren'Pyにnotify スクリーンを使って message を表示します。デフォルトでは、これはメッセージをdissolveで表示し、2秒間表示した後に再びdissolveで消去します。

これはスクリーンショットやクリックセーブのようにフィードバックを生成しないアクションに便利です。

同時に一つの通知のみが表示されます。二つ目の通知が表示されたら、最初の表示は置き換えられます。

この関数は単に config.notify を呼び出しているため、新しい関数をその変数に代入してその実装を置き換えられます。

renpy.predicting() link

Ren'Py が現在予測処理中なら True, そうでなければ False を返します。

renpy.queue_event(name, up=False, **kwargs) link

指定された名前のイベントをキューします。 Nameconfig.keymap にあるイベント名の 1 つか、その名前のリストであるべきです。

up

これはそのイベント開始時 ( 例えばキーボードボタンが押された時 ) には False であり、そのイベント終了時 ( ボタンが開放された時 ) には True であるべきです。

イベントはこの関数が呼び出されるとキューされます。この関数はあるイベントを他のイベントで置き換えるためには動作しません。そうするためにはイベント優先度を変更してください ( 代わりに config.keymap を使用します )。

このメソッドはスレッドセーフです。

renpy.quit(relaunch=False, status=0, save=False) link

Ren'Py を完全に終了します。

relaunch

True なら Ren'Py は終了前に自身のコピーを実行します。

status

Ren'Py がオペレーティングシステムに返すステータスコードです。一般に、0は成功、正の整数は失敗を意味します。

save

True なら、ゲームは Ren'Py 終了時に _quit_slot に保存されます。

renpy.quit_event() link

プレイヤーがウィンドウ端の終了ボタンを押したかのように quit イベントを引き起します。

renpy.reset_physical_size() link

実際のウィンドウのサイズを renpy.config.physical_heightrenpy.config.physical_width, または設定がなければ renpy.config.screen_widthrenpy.config.screen_height で指定したサイズにします。

renpy.restart_interaction() link

現在のインタラクションを再実行します。これはとりわけ場面に追加された画像と再評価されたスクリーンを表示し、キューされたトランジションを開始します。

これはインタラクション内部 ( 例えばアクション中 ) で呼び出された時のみ動作します。インタラクションの外部ではこの関数は効果がありません。

renpy.scry() link

現在のステートメントに対する scry オブジェクトを返します。実行されているステートメントがなければ None を返します。

scry オブジェクトは Ren'Py に次のステートメントについて報せます。現在、 scry オブジェクトは 次のフィールドを持ちます。 :

nvl_clear

次のインタラクションの前に nvl clear ステートメントが処理されるなら True です。

say

次のインタラクションの前に say ステートメントが処理されるなら True です。

menu_with_caption

次のインタラクションの前にキャプションありで menu ステートメントが処理されるなら True です。

who

次のインタラクションの前に say または menu-with-caption ステートメントが処理されるなら、そのキャラクターオブジェクトです。

scry オブジェクトには next() メソッドがあり、これは現在のものの次のステートメントが唯一に絞られればその scry オブジェクトを返します。そうでなければ None を返します。

警告

他の同様の関数と同様に、この関数が返すオブジェクトは、関数が呼び出されてからの短期的な使用を意図しています。このオブジェクトのセーブデータへの保存やロールバックへの参加は推奨されません。

renpy.set_mouse_pos(x, y, duration=0) link

引数 x, y で指定された位置にマウスポインターを移動します。デバイスにマウスポインターがない場合はこれは何もしません。

duration

移動処理にかける秒数です。この時間の間はマウスが反応しません。

renpy.set_physical_size(size) link

実際のウィンドウのサイズを size に設定しようと試みます。これは全画面モードを無効化する副作用を持ちます。

renpy.shown_window() link

これを呼び出してウィンドウを継続的に表示させます。これは「 window show 」ステートメントに対応し、この関数が インタラクションの最中に呼び出されない限り空のウィンドウを表示します。

renpy.split_properties(properties, *prefixes) link

propertiesprefix 毎に辞書に分けます。この機能は各接頭辞に対してプロパティーの各キーを順番にチェックします。接頭辞と一致すればその接頭辞がキーから除かれ、その結果のキーが対応する辞書でその値に対応付けられます。

合う接頭辞がなければ例外が投げられます(空の文字列 "" を最後の接頭辞に使用してすべての辞書を受け取れます)。

例えば、このコードは text で始まるプロパティーとそうでないものを分割します。

text_properties, button_properties = renpy.split_properties(properties, "text_", "")
renpy.transition(trans, layer=None, always=False) link

次のインタラクションの間使用されるトランジションをセットします。

layer

トランジションが適用されるレイヤーです。 None ならトランジションは全てのレイヤーに適用されます。

always

False ならこれはトランジション設定を反映します。 True ならトランジションは常に実行されます。

renpy.vibrate(duration) link

デバイスを duration 秒間バイブさせます。現在これはアンドロイドのみのサポートです。