その他の関数と変数 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
クリエーターが定義したすべての名前空間に name で value を追加します。その名前空間にすでに名前があれば何もしません。
この関数は 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 の場合のみ記録されます。
現在の 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
指定された名前のイベントをキューします。 Name は
config.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_height
とrenpy.config.physical_width
, または設定がなければrenpy.config.screen_width
とrenpy.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
properties を prefix 毎に辞書に分けます。この機能は各接頭辞に対してプロパティーの各キーを順番にチェックします。接頭辞と一致すればその接頭辞がキーから除かれ、その結果のキーが対応する辞書でその値に対応付けられます。
合う接頭辞がなければ例外が投げられます(空の文字列 "" を最後の接頭辞に使用してすべての辞書を受け取れます)。
例えば、このコードは 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 秒間バイブさせます。現在これはアンドロイドのみのサポートです。