ステートメントに相当するもの link
Ren'Py のスクリプトを Python コードで記述できるようにするため、それぞれの Ren'Py のステートメントには Python のコードで相当するものがあります。これは通常 Python の関数で構成されていますが、ステートメントに相当した動作をする複数のコードで構成されることもあります。
元のステートメントの代わりに相当するステートメントを使用すると、通常 Lint によるチェックと予測最適化がなくなるため、ゲームのチェックが容易にできなくなり、動作の軽快さも低下する可能性があるので注意してください。場合によっては機能を無化する可能性もあります。
台詞 link
警告
既読文章のスキップのようないくつかの機能は python 版では利用出来ず、通常の say ステートメントの使用でのみ有効です。
Ren'Py の say ステートメント は(作成された)キャラクターオブジェクトの関数としての呼び出しに相当します。ナレーションの表示も narrator
キャラクターを使用して同様に行われます。
e "Hello, world."
$ e("Hello, world.")
"And then the sun exploded."
$ narrator("And then the sun exploded.")
Proxy 関数 link
キャラクターと関数オブジェクトの等価性はその他の面でも同様に働きます。 python 関数を宣言して、キャラクターオブジェクトの代わりに使用できます。例えば、以下の関数は二人のキャラクターを選択するために変数を使用しています。
define lucy_normal = Character("Lucy")
define lucy_evil = Character("Evil Lucy")
init python:
def l(what, **kwargs):
if lucy_is_evil:
lucy_evil(what, **kwargs)
else:
lucy_normal(what, **kwargs)
label start:
$ lucy_is_evil = False
l "Usually, I feel quite normal."
$ lucy_is_evil = True
l "But sometimes, I get really mad!"
このように使用された関数は未知のキーワード引数を無視するか、 キャラクター関数に渡すべきです。これによりゲームは Ren'Py が将来のバージョンで追加のキーワード引数をキャラクター呼び出しに加えても動作し続けられます。
他の引数とは異なり、 interact=True
は常に関数に渡されることに注意してください - 手動で (interact=False)
を渡さない限り。 引数つきの say では、関数に渡される引数(補足の interact を含む)を参照します。例
e "Hello, world." (what_size=32)
これは次の呼び出しと等しいです。
e("Hello, world.", what_size=32, interact=True)
キャラクターオブジェクトを呼び出して意図したように動作させるときには、 interact=True
を渡す必要はないことに注意してください。次の記述は同様に動作します。 :
$ e("Hello, world.", what_size=32)
e がキャラクターならば、これはさらに次と等しいです。
$ Character(kind=e, what_size=32)("Hello, world.")
しかし、 config.say_arguments_callback
を使用したり、 e
にキャラクターをラップさせて異なる動作をさせられます。
say ステートメントを Python を使用して置き換える方法はもう一つあります。 :
- renpy.say(who, what, *args, **kwargs) link
say ステートメントに相当するものです。
- who
発言するキャラクターかキャラクター名の文字列で、ナレーターなら None,です。文字列の場合、
say
store 関数が呼び出されます。- what
発言する文字列です。 % 置換文字列はこの文字列で使用されます。
- interact
True なら Ren'Py は台詞表示時にプレイヤーの入力を待ちます。 False なら Ren'Py は台詞を表示しますが、インタラクションを実行しません(これはキーワード引数として渡されます)。
次の3行が相当するため、この関数は滅多に必要ありません。 :
e "Hello, world." $ renpy.say(e, "Hello, world.") $ e("Hello, world.") # when e is not a string $ say(e, "Hello, world.") # when e is a string
台詞ウィンドウの管理 link
テキストウィンドウの管理 は _window
と _window_auto
変数の設定と次の2つの関数により処理されます。 :
- _window_hide(trans=False, auto=False) link
window hide
ステートメントに相当する python コードです。- trans
False ならデフォルトのウィンドウ非表示トランジションが使用されます。 None なら、トランジションは使用されません。そうでなければ、指定のトランジションが使用されます。
- auto
True なら、
window auto hide
ステートメントに相当するものとなります。
- _window_show(trans=False, auto=False) link
window show
ステートメントに相当する python コードです。- trans
False ならデフォルトのウィンドウ表示トランジションが使用されます。 None なら、トランジションは使用されません。そうでなければ、指定のトランジションが使用されます。
- auto
True なら、
window auto show
ステートメントに相当するものとなります。
画像の表示 link
image, scene, show, hide ステートメントはそれぞれ相当する python 関数を持ちます (元のステートメントは 画像の表示 を参照してください。)
- renpy.get_at_list(name, layer=None) link
layer 上の name タグの画像に適用されている transform のリストを返します。 transform が適用されていなければ空のリストを返し、画像が表示されていなければ None 返します。
layer が None なら、指定されたタグのデフォルトレイヤーを使用します。
- renpy.hide(name, layer=None) link
レイヤーから画像を非表示します。 hide ステートメントに相当する python コードです。
- name
非表示する画像の名前です。画像タグのみが使用され、そのタグのすべての画像が非表示されます(正確な画像名は必要ありません)。
- layer
この関数が処理するレイヤーです。None ならタグのデフォルトレイヤーを使用します。
- renpy.image(name, d) link
画像を定義する。この関数は image ステートメントに相当する python コードです。
- name
表示する画像の名前で、文字列です。
- d
その画像名に関連付けられる displayable です。
この関数は init ブロック内でのみ実行されます。一旦ゲームが実行されてからこの関数が実行されると、エラーになります。
- renpy.scene(layer='master') link
layer からすべての displayable を除去します。これは表示する画像が与えられない時の scene ステートメントに相当します。
scene ステートメントは renpy.scene とそれに続く
renpy.show()
の呼び出しに相当します。例えばscene bg beach
これは次に相当します
$ renpy.scene() $ renpy.show("bg beach")
- renpy.show(name, at_list=[], layer=None, what=None, zorder=0, tag=None, behind=[], atl=None, **kwargs) link
レイヤーに画像を表示します。これは show ステートメントにプログラム的に相当します。
- name
表示する画像の名前で、文字列です。
- at_list
画像に適用される transform のリストです。
at
プロパティーに相当します。- layer
画像が表示されるレイヤーの名前の文字列です。
onlayer
に相当します。None ならそのタグに関連付けられたデフォルトレイヤーを使用します。- what
None でないならこれは画像を 探す代わりに表示される displayable です ( これは show expression ステートメントに相当します )。 what パラメーターが与えられると、 name はその画像とタグを関連づけるために使用されます。
- zorder
zorder
プロパティーに相当する整数です。 None だと zorder があれば維持され、そうでなければ 0 に設定されます。- tag
表示される画像の画像タグを指定するために使用される文字列です。
as
プロパティーに相当します。- behind
この画像が背後に表示される画像タグの文字列のリストです。
behind
プロパティーに相当します。- atl
None または適用される ATL Transform です。これは ATL 自体のみを取得し、以前の状態は適用されません。
show a $ renpy.show("a") show expression w # anonymous show expression : no equivalent show expression w as a $ renpy.show("a", what=w) $ renpy.show("y", what=w, tag="a") # in this case, name is ignored show a at T, T2 $ renpy.show("a", at_list=(T, T2)) show a onlayer b behind c zorder d as e $ renpy.show("a", layer="b", behind=["c"], zorder="d", tag="e")
- renpy.show_layer_at(at_list, layer='master', reset=True, camera=False) link
show layer
layerat
at_list ステートメントに Python コードで相当するものです。 camera が True なら、camera
ステートメントに相当する物でもあります。- reset
True なら、 transform の状態はその表示時までリセットされ、 False なら持続し、次のt ransform で状態を更新できるようにします。
トランジション link
with ステートメント に相当する renpy.with_statement()
関数です。
- renpy.with_statement(trans, always=False) link
トランジションを実行します。これは with ステートメントに相当する python コードです。
- trans
トランジション
- always
True なら、トランジションはユーザーがトランジションを無効化していても常に実行します。
この関数はユーザーがトランジションの中断を選択するなら True を、そうでないなら False を返します。
Jump link
jump ステートメント ステートメントは renpy.jump()
関数に相当します。
- renpy.jump(label) link
現在のステートメントを終了し、制御を指定されたラベルに移します。
Call link
call ステートメント に相当するものは renpy.call()
関数です。
- renpy.call(label, *args, from_current=False, **kwargs) link
現在の Ren'Py ステートメントを終了し、指定された label にジャンプします。ジャンプから戻ると、現在のステートメントに続くステートメントに制御が移ります。
ラベルは "global_name" または "global_name.local_name" の形式でなければなりません。 ".local_name" の形式は未許可です。
- from_current
True なら、制御は現在のステートメントに続くステートメントではなく現在のステートメントに返ります(これにより現在のステートメントは二回実行されます。これはキーワード引数として渡されるべきです)。
- renpy.return_statement(value=None) link
現在の Ren'Py の呼び出しレベルから Ren'Py を返します。
Pause link
Pause ステートメント は renpy.jump()
関数に相当します
- renpy.pause(delay=None, *, predict=False, modal=True, hard=False) link
Ren'Py をポーズさせます。ユーザーがクリックしてポーズを終わらせると True, ポーズがタイムアウトするかスキップされると False を返します。
- delay
指定されると、その秒数 Ren'Py はボーズするはずです。
以下はキーワード引数として指定するべきです。
- predict
True の場合、Ren'Py は
renpy.start_predict()
とrenpy.start_predict_screen()
でスケジュールした予測も含め、すべての予測が終了したときにポーズを終了します。また、Ren'Py はポーズの間、表示の滑らかさよりも予測を優先させます。そのため、予測中のアニメーション表示は非推奨です。
ポーズは、ユーザーがクリックやスキップしたとき、または(あれば) delay 秒が過ぎたときなど、他の方法でも終了します。
- modal
True なら、ポーズはモーダルスクリーンが表示されているときは(一時停止して)終わりません。 False なら、ポーズはモーダルスクリーンが表示されていても終わります。
- hard
True なら、Ren'Py はクリックでユーザーがポーズを中断できないようにします。プレイヤーがスキップを有効にした場合はハードポーズはスキップされます。他にも、ハードポーズが早く終了したり、Ren'Py が正しく動作しない状況があるかもしれませんが、これらはバグとして扱われません。
一般的に、ハードポーズの使用は失礼にあたります。ユーザーがゲームを進めるためにクリックするなら、それは明示的な要求です - ユーザーはゲームを進めることを望んでいます。その要求を覆すということは、プレイヤーが何を望んでいるかをプレイヤー以上に理解していると思い込むことです。
つまり、 hard = True にして renpy.pause を使用しないでください。
renpy.pause を呼び出すと、画面に表示されているものが少なくとも1フレームはプレーヤーに表示されることが保証されます。
Layeredimage link
Layeredimage ステートメントには Python で相当する物がありますが、グループステートメントはありません。グループ名は Attribute
に渡され、その auto
機能は renpy.list_images()
を使用して実装できます。
- class Attribute(group, attribute, image=None, default=False, group_args={}, **kwargs) link
これを使用して属性に制御される LayerdImage のレイヤーを表します。1つの属性で複数のレイヤーを制御でき、この場合、その属性に対応する全てのレイヤーが表示されます。
- group
属性が加わるグループの文字列です。 None である場合、属性と同じ名前のグループが作成されます。
- attribute
属性の名前の文字列です。
- image
これは None または、この属性が表示される displayable です。
- default
True かつそのグループの他の属性が選択されていなければ、この属性となります。
次のキーワード引数もあります。 :
- at
画像に適用される transform または transform のリストです。
- if_all
属性または属性のリストです。 displayable はこれらの全てがあるときだけ表示されます。
- if_any
属性または属性のリストです。 displayable はこれらのどれかがあるときだけ表示されます。
- if_not
属性または属性のリストです。 displayable はこれらの全てがないときだけ表示されます。
他のキーワード引数は transform プロパティーとして解釈されます。与えられると、画像をラップする transform が作成されます(例えば、 pos=(100, 200) を使用して、画像を 100 ピクセル横に、 200 ピクセル縦にオフセットできます)。
image パラメーターが省略されるか None であり、LayerdImage に image_format パラメーターが与えられると、 image_format を使用して画像ファイル名を生成します。
- class Condition(condition, image, **kwargs) link
条件が True ならそのレイヤーが表示されます。そうでなければ何も表示されません。
これは
if
やelif
,else
レイヤー画像を実装するのに使用されます (else
では condition は "True" であるべきです)。いくつかの Conditions がConditionGroup
に渡され、 if/elif/else ステートメントを再現します。- condition
レイヤーが表示されるかどうかを決定する Python の条件の文字列です。
- image
これは None または条件が True なら表示される displayable です。
- if_all
属性または属性のリストです。これらのすべてがあるときのみ条件は評価されます。
- if_any
属性または属性のリストです。これらのどれかがあるときのみ条件は評価されます。
- if_not
属性または属性のリストです。これらのすべてがないときのみ条件は評価されます。
- at
画像に適用される transform または transform のリストです。
他のキーワード引数は transform プロパティーとして解釈されます。どれかが与えられると、画像をラップする transform が作成されます(例えば pos=(100, 200) を使用して画像を 100 ピクセル水平に、 200 ピクセル垂直にオフセットできます)。
- class ConditionGroup(conditions) link
Condition
のリストを受け取って 1 つのConditionSwitch()
に組み込みます。if/elif/else ステートメントを実装します。
- class LayeredImage(attributes, at=[], name=None, image_format=None, format_function=None, attribute_function=None, offer_screen=None, **kwargs) link
これは画像のようなオブジェクトで、適切な属性の組み合わせで表示されると、それらの属性と関連付けられた displayable を合成して作成した displayable を表示します。
- attributes
これは Attribute や Condition, ConditionGroup, displayable オブジェクトのリストでなければいけません。それぞれは画像の一部として表示される、またはされない Displayable を反映します。このリストの要素は後ろから前の順で、最初の要素は遠く、最後のは近くになります。直接 displayable を渡のは always レイヤー画像ステートメントに相当します。
- at
合成後に displayable に適用される transform または transform のリストです。
- name
レイヤー画像の名前で、画像要素の名前の一部として使用されます。
- image_format
文字列で画像が与えられており、かつこのプロパティーが与えられていると、image_format にその画像名が補完され、画像ファイルになります。例えば、 "sprites/eileen/{image}.png" ならsptritesのサブディレクトリーからその画像を探します ( これは画像ファイルではなく画像を探す自動グループでは使用されません )。
- format_function
layeredimage.format_function の代わりに使用して画像の情報を displayable 形式にする関数です。
- attribute_function
None を指定するか、画像に渡される属性の set で呼び出され、レイヤーの選択に使用される属性の set を返す関数です。
- offer_screen
子の配置と (可変サイズである場合) サイズ合わせで利用可能な領域を考慮するかどうか設定します。 False であれば利用可能な領域を考慮し、True であれば考慮しません。 None の場合、デフォルトは
config.layeredimage_offer_screen
です。
追加のキーワード引数には transofrm プロパティーが含められます。与えられれば Transorm が作成され結果の画像をラップします。残りのキーワード引数はレイヤーを貼り付けるために作成された Fixed に渡されます。明示的な上書きがなければ、 xfit と yfit は Fixed で True に設定され、表示している全てのレイヤー画像にフィットする最小サイズに縮みます。
LayerdImage は displayable ではなく、 displayable が使用可能な全ての場所では使用出来ません。これは (一般的に画像属性を含む) 画像名 の提供が必要なためです。そういうわけで、 LayerdImage は scene や show ステートメントか、 displayable として使用される画像名の文字列から表示されるべきです。
- add(a) link
- a
Attribute や Condition, ConditionGroup, displayable オブジェクト
このメソッドはレイヤー画像のレイヤーのリストに attributes 引数がコンストラクターに渡されたかのように指定のレイヤーが加えられます。