ステートメントに相当するもの 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

menu statement に相当する Python 関数があります。

renpy.display_menu(items, *, interact=True, screen='choice', **kwargs) link

これはユーザーに選択肢を表示します。 items は 2 つの要素のタプルのリストです。各タプルの最初の要素はメニューに表示される文字通りのラベルで、 2 つ目の要素はその要素が選択された時に返される値です。値が None ならその最初の要素はキャプションに使用されます。

この関数は多くの引数を受け取りますが、一部のみドキュメントに記載されています。 items を除いてすべての引数はキーワード引数で指定されるべきです。

interact

False なら選択肢は表示されますが、インタラクションは実行されません。

screen

選択肢を表示するために使用されるスクリーンの名前です。

type

「menu」または「nvl」を指定できます。「nvl」の場合、選択肢はNVLモードで表示されます。そうでなければ、 ADVモードで表示されます。

_layer

選択肢を表示するレイヤーです。指定しない場合、通常の選択肢は config.choice_layer で、NVL 選択肢の場合は config.nvl_choice_layer になります。

ほとんどの Ren'Py ゲームはメニューのキャプションを使用せず、代わりにナレーションを使用します。ナレーションを使用してメニューを表示するには次のように記述します。

$ narrator("Which direction would you like to go?", interact=False)
$ result = renpy.display_menu([ ("East", "east"), ("West", "west") ])

画像の表示 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=[], **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 プロパティーに相当します。

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 layer at 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 ならそのレイヤーが表示されます。そうでなければ何も表示されません。

これは ifelif, 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 引数がコンストラクターに渡されたかのように指定のレイヤーが加えられます。