その他の関数と変数 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) 形式のタプルです。

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 の使用を意図します。レイアウトの表示には、 スクリーンバリエーション を使用します。

メモリープロファイリング 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 変数によって使用されたロールバックメモリーの報告を試みます。

コンテキスト link

renpy.context() link

現在のコンテキストに対してユニークなオブジェクトを返します。新しいオブジェクトに入るとそのオブジェクトはコピーされますが、コピーへの変更はオリジナルに影響を与えません。

オブジェクトは保存され、ロールバックに参加します。

renpy.context_nesting_level() link

現在のコンテキストのネストレベルを返します。これは (セーブロード、ロールバックされる) 最も外側のコンテキストに対しては 0 で、メニューや回想のような他のコンテキストでは 0 ではありません。

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

これらの関数は SDL dll 内の関数を呼び出す Python ctypes モジュールを使用出来るようにします。 Ren'Py に含まれている SDL2 がどの機能を含んで、あるいは含まずコンパイルされるかは保証しません。これらの関数は Ren'Py を実行するプラットフォームによっては失敗するので、処理前に None か確認することが重要です。

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)

        SDL_GetWindowPosition = sdl.SDL_GetWindowPosition

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

        SDL_GetWindowPosition(win, ctypes.byref(x), ctypes.byref(y))

その他 link

renpy.add_layer(layer, above=None, below=None, menu_clear=True) link

新しいレイヤーを追加します。レイヤーが既に存在すればこの関数はなにもしません。

below または above が指定されます。

layer

追加するレイヤー名の文字列です。

above

None または新しいレイヤーの下に配置されるレイヤー名の文字列です。

below

None または新しいレイヤーの上に配置されるレイヤー名の文字列です。

menu_clear

True ならこのレイヤーはゲームメニューコンテキストに入るとクリアされ、出るときに復元されます。

renpy.add_python_directory(path) link

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

renpy.add_to_all_stores(name, value) link

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

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

renpy.call_stack_depth() link

現在のコンテキストのコールスタックの深さ、つまり呼び出し先から返らないでいるか、コールスタックからポップされた呼び出しの数を返します。

renpy.choice_for_skipping() link

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

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

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

renpy.clear_game_runtime() link

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

renpy.clear_keymap_cache() link

キーマップのキャッシュをクリアします。これにより Ren'Py を再起動せずに config.keymap の変更を反映します。

renpy.context_dynamic(*vars) link

これは1つ以上の変数名を引数として指定できます。これは現在のコンテキストに対する動的スコープの変数を作成します。呼び出しから戻ると変数は元の値にリセットされます。

呼び出し例

$ renpy.context_dynamic("x", "y", "z")
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.dynamic(*vars, **kwargs) link

これは1つ以上の変数名を引数として指定できます。これは現在の呼び出しに対する動的スコープの変数を作成します。呼び出しから戻ると変数は元の値にリセットされます。

変数がキーワード引数として指定されると、その引数の値がその変数名に代入されます。

呼び出し例

$ renpy.dynamic("x", "y", "z")
$ renpy.dynamic(players=2, score=0)
renpy.flush_cache_file(fn) link

fn ファイルを参照するすべての画像イメージのキャッシュをクリアします。これはディスクの画像ファイルが変わったときにRen'Pyに新バージョンの使用を強制するのに呼び出します。

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.force_full_redraw() link

スクリーンを完全に再描画します。 pygame を使用した後でこれを呼び出して、直接スクリーンを再描画します。

renpy.free_memory() link

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

renpy.full_restart(transition=False, label=u'_invoke_main_menu', target=u'_main_menu', save=False) link

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

transition

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

save

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

renpy.get_adjustment(bar_value) link

指定した bar_value, BarValue から、使っていれば ui.adjustment() を返します。 adjustment には以下の定義された属性があります。:

value link

バーの現在の値です。

range link

バーの範囲です。

renpy.get_autoreload() link

自動リロードのフラグを所得します。

renpy.get_game_runtime() link

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

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

renpy.get_image_load_log(age=None) link

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

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

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

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

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

age

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

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

renpy.get_mouse_name(interaction=False) link

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

interaction

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

renpy.get_mouse_pos() link

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

renpy.get_physical_size() link

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

renpy.get_refresh_rate(precision=5) link

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

precision

Ren'Pyが得る生データは1秒ごとの丸められたフレームレートです。つまり 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.iconify() link

ゲームを最小化します。

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

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

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

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.load_module(name, **kwargs) link

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

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

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

renpy.load_string(s, filename=u'<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.pause(delay=None, hard=False) link

Ren'Py をポーズします。ユーザーがクリックでポーズを終了すると True 、ポーズがタイムアウトするかスキップされると False を返します。

delay

指定されると、 Ren'Py はその秒数ポーズします。

hard

これはキーワード引数として指定されなければなりません。 True なら Ren'Py はユーザーがクリックしてポーズを飛ばすことを防ぎます。プレーヤーがスキップを有効化すると、ハードポーズはスキップされます。バグとして扱われないがハードポーズが早く終わったり Ren'Py が適切に処理するのを妨げる他の現象もあるかもしれません。

一般的に、ハードポーズの使用は無作法です。ユーザーがクリックでゲームを進めるときは、明らかにゲームが進んで欲しいときです。その要求の上書きはプレーヤーよりもプレーヤーの望みを理解していることが前提となります。

renpy.pause の呼び出しはスクリーン上のすべてが少なくとも1フレームは表示され、プレーヤーに見えることを保証します。

つまり - renpy.pause を hard=True で使用してはいけません。

renpy.pop_call() link

コールスタックから現在の呼び出しをポップしますが、呼び出し元には返りません。

これは呼び出されたラベルからその呼び出し元に返らないときに利用出来ます。

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.reload_script() link

Ren'Py にゲームをセーブさせ、スクリプトをリロード、そのセーブをロードさせます。

renpy.reset_physical_size() link

実際のウィンドウのサイズを renpy.config で指定された値 (screen_width, screen_width) に設定しようと試みます。これは全画面モードを無効化する副作用を持ちます。

renpy.restart_interaction() link

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

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

renpy.screenshot(filename) link

filename でスクリーンショットを撮ります。

スクリーンショットが保存されれば True を、何らかの理由で失敗すれば False を返します。

renpy.screenshot_to_bytes(size) link

im.Data() に渡されるバイトオブジェクトとしてスクリーンショットを返します。バイトオブジェクトは以下のように png フォーマットの画像です。

$ data = renpy.screenshot_to_bytes((640, 360))
show expression im.Data(data, "screenshot.png"):
    align (0, 0)

上記は画像を表示します。返されたバイトオブジェクトはセーブファイルと永続データに保存できますが、これらは大きくて大量に含めすぎるには注意が必要です。

size

スクリーンショットがリサイズされるサイズです。 None なら、スクリーンショットはプレイヤーのウィンドウサイズにリサイズされます。

この関数は遅いため、リアルタイムエフェクトではなく、保存用のスクリーンショット用として意図されています。

renpy.scry() link

現在のステートメントに対する scry オブジェクトを返します。

scry オブジェクトは Ren'Py に現在のステートメントの将来に True でなければならないことについて報せます。現在、 scry オブジェクトは 1 つのフィールドを持ちます。 :

nvl_clear

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

renpy.set_autoreload(autoreload) link

自動リロードのフラグを設定し、ゲームがファイル変更後に自動的にリロードするかどうかを決定します。自動リロードはゲームが renpy.utter_restart() でリロードされて始めて完全に有効化されます。

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.substitute(s, scope=None, translate=True) link

翻訳と新スタイルのフォーマットを文字列 s に適用します。

scope

None かフォーマットに使用するスコープで、デフォルト store に追加されます。

translate

翻訳するかを決定します。

翻訳とフォーマットが終了した文字列を返します。

renpy.transition(trans, layer=None, always=False) link

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

layer

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

always

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

renpy.vibrate(duration) link

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

layout.yesno_screen(message, yes=None, no=None) link

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

message

表示されるメッセージ

yes

ユーザーが Yes を選んだときに実行されるアクション

no

ユーザーが No を選んだときに実行されるアクション