特別な名前のスクリーン link

Ren'Py には2種類の特別な名前のスクリーンがあります。1つ目は Ren'Py のスクリプト言語のコマンド ( またはプログラム的に等価なもの ) が実行されると自動的に表示されるスクリーンです。もう一つは menu スクリーンで、これらは一般的な機能に対応する一般的な名前を持ちますが、必要に応じて、スクリーンを省略したり変更したり出来ます。

このページではスクリーンの例を示します。いくつかのスクリーンには必要最低限の機能を持たせなければならない一方で、スクリーンシステムは追加の機能をスクリーンに加えることが出来ると理解することが重要です。例えば、基本的な say スクリーンはテキストを表示するだけですが、スクリーンシステムは簡単にスキップや自動進行、ミュートのような機能を追加出来るようにします。

いくつかの特別なスクリーンは引数を取ります。これらの引数はそのスクリーンのスコープで変数としてアクセス可能です。

そのスクリーンのいくつかはそれらに関連づけられた特別な ID も持っています。特別な ID は特定の種類の displayable に代入され、プロパティーをその displayable に代入されるように出来、その displayable を呼び出すコードからアクセス可能にします。

ゲーム内のスクリーン link

これらのスクリーンは特定の Ren'Py ステートメントを実行すると自動的に表示されます。

Say link

ADV モードの台詞を表示するときに say スクリーンは say ステートメントによって以下の引数を伴って呼び出されます。 :

who

話しているキャラクターの名前

what

話し手による台詞

以下の ID を伴って displayable が宣言されることが期待されます。 :

"who"

テキスト displayable で、話し手の名前を表示します。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。

"what"

テキスト displayable で、話し手に話されている台詞を表示します。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。Ren'Py が自動進行の時間やクリック待ちマーク等を計算するために使用するので、 この ID を持つ displayable は定義される必要があります

"window"

ウィンドウまたはフレームです。これは慣例として、 who と what のテキストを含みます。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。

screen say(who, what):

    window id "window":
        has vbox

        if who:
            text who id "who"

        text what id "what"

Choice link

choice スクリーンは menu ステートメントによって作成されるゲーム内選択肢を表示するために使用され、以下の引数を取ります。 :

items

これはメニューに入力するオブジェクトのリストで、選択画面の各選択肢を表します。各オブジェクトは以下のフィールドをもちます。 :

caption link

選択肢の見出しとなる文字列です。

action link

その選択肢が選択されると実行されるアクションです。

chosen link

そのゲームのプレイ中に少なくとも一度選択された選択肢ならば True です。

screen choice(items):

    window:
        style "menu_window"

        vbox:
            style "menu"

            for i in items:

                if i.action:

                    button:
                        action i.action
                        style "menu_choice_button"

                        text i.caption style "menu_choice"

                else:
                    text i.caption style "menu_caption"

Input link

input スクリーンは renpy.input() を表示するために使用され、一つの引数を取ります。 :

prompt

renpy.input に提供されるプロンプトテキストです。

以下の ID を伴って displayable が宣言されることが期待されます。 :

"input"

input displayable で、存在する必要があります。これには renpy.input に提供されるすべての引数が与えられるので存在する必要があります。

screen input(prompt):

    window:
        has vbox

        text prompt
        input id "input"

NVL link

nvl スクリーンは NVL モード で使用され、以下の引数を取ります。 :

dialogue

NVL スクリーンで入力するオブジェクトのリストで、表示される台詞の一行一行にそれぞれ対応します。各入力は以下のフィールドを持ちます :

current link

これが台詞の現在の行なら True です。台詞の現在の行には "what" の id を持つ表示されるテキストがなければなりません。

who link

話しているキャラクターの名前かそのような名前がなければ None です。

what link

話されるテキストです.

who_id, what_id, window_id

入力に対する話者、台詞、ウィンドウに対する優先される id です。

who_args, what_args, window_args

話者、台詞、ウィンドウに関するプロパティーです。その id が上述のように設定されていれば、これらに自動的に適用されますが、独立的にも利用可能です。

items

これは choice screen に渡されるものと同じ item のリストです。これが空なら、選択肢は表示されません。

items が存在しないと、 NVL スクリーンは "what" id のテキストウィジェットを常に渡すでしょう。Ren'Py はそれを使用してオートモードの時間や click-to-continue, その他を計算します。(デフォルトの what_id が使用されていれば、これは十分自動的です。 )

Ren'Py は nvl と同じ引数を取る nvl_choice スクリーンもサポートしており、もし存在するとゲーム内選択肢がユーザーに表示されるときは nvl に優先して使用されます。

screen nvl(dialogue, items=None):

    window:
        style "nvl_window"

        has vbox:
            style "nvl_vbox"

        # Display dialogue.
        for d in dialogue:
            window:
                id d.window_id

                has hbox:
                    spacing 10

                if d.who is not None:
                    text d.who id d.who_id

                text d.what id d.what_id

        # Display a menu, if given.
        if items:

            vbox:
                id "menu"

                for i in items:

                    if action:

                        button:
                            style "nvl_menu_choice_button"
                            action i.action

                            text i.caption style "nvl_menu_choice"

                    else:

                        text i.caption style "nvl_dialogue"

Notify link

notify スクリーンは renpy.notify() によってユーザーに通知する displayable を表示するために使用されます。通常は通知のタスクのすべてを処理するために変換と連携して使用されます。一つの引数を与えられます。

message

表示されるメッセージ

デフォルトの notify スクリーンとその関連づけられた変換 :

screen notify(message):
    zorder 100

    text message at _notify_transform

    # This controls how long it takes between when the screen is
    # first shown, and when it begins hiding.
    timer 3.25 action Hide('notify')

transform _notify_transform:
    # These control the position.
    xalign .02 yalign .015

    # These control the actions on show and hide.
    on show:
        alpha 0
        linear .25 alpha 1.0
    on hide:
        linear .5 alpha 0.0

Skip Indicator link

存在すれば、スキップ処理中に skip_indicator スクリーンが表示され、スキップ停止で非表示されます。引数は取りません。

とても単純なスキップインディケーターです。

screen skip_indicator():

    zorder 100

    text _("Skipping")

CTC (Click-To-Continue) link

存在すれば、台詞の表示が完了すると ctc スクリーンが表示され、プレイヤーにクリックして次のテキストを表示するよう促します。おそらく一つの引数が指定されます。

arg

ctc 引数に Character() オブジェクトが指定されると、最初の位置引数としてこのスクリーンに渡されます。

とても単純な ctc スクリーンです。

screen ctc(arg=None):

    zorder 100

    text _("Click to Continue"):
        size 12
        xalign 0.98
        yalign 0.98

Menu Screen 外 link

これらは menu スクリーンです。 main_menuyesno_prompt は無条件に使用されます。ユーザーが game menu を使用すると、 _game_menu_screen で名付けられたスクリーンが表示されます。 ( デフォルトでは save です。 )

menu スクリーンは、かなり自由に統合・修正できることを覚えておいてください。

Save link

save スクリーンはゲームをセーブするファイルを選択するために使用されます。

screen save():

    # This ensures that any other menu screen is replaced.
    tag menu

    use navigation

    frame:
        has vbox

        # The buttons at the top allow the user to pick a
        # page of files.
        hbox:
            textbutton _("Previous") action FilePagePrevious()
            textbutton _("Auto") action FilePage("auto")

            for i in range(1, 9):
                textbutton str(i) action FilePage(i)

            textbutton _("Next") action FilePageNext()

        # Display a grid of file slots.
        grid 2 5:
            transpose True
            xfill True

            # Display ten file slots, numbered 1 - 10.
            for i in range(1, 11):

                # Each file slot is a button.
                button:
                    action FileAction(i)
                    xfill True
                    style "large_button"

                    has hbox

                    # Add the screenshot and the description to the
                    # button.
                    add FileScreenshot(i)
                    text ( " %2d. " % i
                           + FileTime(i, empty=_("Empty Slot."))
                           + "\n"
                           + FileSaveName(i)) style "large_button_text"

Load link

load スクリーンはゲームをロードするファイルを選択するために使用されます。

screen load():

    # This ensures that any other menu screen is replaced.
    tag menu

    use navigation

    frame:
        has vbox

        # The buttons at the top allow the user to pick a
        # page of files.
        hbox:
            textbutton _("Previous") action FilePagePrevious()
            textbutton _("Auto") action FilePage("auto")

            for i in range(1, 9):
                textbutton str(i) action FilePage(i)

            textbutton _("Next") action FilePageNext()

        # Display a grid of file slots.
        grid 2 5:
            transpose True
            xfill True

            # Display ten file slots, numbered 1 - 10.
            for i in range(1, 11):

                # Each file slot is a button.
                button:
                    action FileAction(i)
                    xfill True
                    style "large_button"

                    has hbox

                    # Add the screenshot and the description to the
                    # button.
                    add FileScreenshot(i)
                    text ( " %2d. " % i
                           + FileTime(i, empty=_("Empty Slot."))
                           + "\n"
                           + FileSaveName(i)) style "large_button_text"

Preferences link

preferences スクリーンはゲームの表示を制御オプションを選択するために使用されます。

一般的に、設定は Preference() から返されるアクションか bar value です。

screen preferences():

    tag menu

    # Include the navigation.
    use navigation

    # Put the navigation columns in a three-wide grid.
    grid 3 1:
        style_prefix "prefs"
        xfill True

        # The left column.
        vbox:
            frame:
                style_prefix "pref"
                has vbox

                label _("Display")
                textbutton _("Window") action Preference("display", "window")
                textbutton _("Fullscreen") action Preference("display", "fullscreen")

            frame:
                style_prefix "pref"
                has vbox

                label _("Transitions")
                textbutton _("All") action Preference("transitions", "all")
                textbutton _("None") action Preference("transitions", "none")

            frame:
                style_prefix "pref"
                has vbox

                label _("Text Speed")
                bar value Preference("text speed")

            frame:
                style_prefix "pref"
                has vbox

                textbutton _("Joystick...") action ShowMenu("joystick_preferences")

        vbox:

            frame:
                style_prefix "pref"
                has vbox

                label _("Skip")
                textbutton _("Seen Messages") action Preference("skip", "seen")
                textbutton _("All Messages") action Preference("skip", "all")

            frame:
                style_prefix "pref"
                has vbox

                textbutton _("Begin Skipping") action Skip()

            frame:
                style_prefix "pref"
                has vbox

                label _("After Choices")
                textbutton _("Stop Skipping") action Preference("after choices", "stop")
                textbutton _("Keep Skipping") action Preference("after choices", "skip")

            frame:
                style_prefix "pref"
                has vbox

                label _("Auto-Forward Time")
                bar value Preference("auto-forward time")

        vbox:

            frame:
                style_prefix "pref"
                has vbox

                label _("Music Volume")
                bar value Preference("music volume")

            frame:
                style_prefix "pref"
                has vbox

                label _("Sound Volume")
                bar value Preference("sound volume")
                textbutton "Test" action Play("sound", "sound_test.ogg") style "soundtest_button"

            frame:
                style_prefix "pref"
                has vbox

                label _("Voice Volume")
                bar value Preference("voice volume")
                textbutton "Test" action Play("voice", "voice_test.ogg") style "soundtest_button"

init python:

    style.pref_frame.xfill = True
    style.pref_frame.xmargin = 5
    style.pref_frame.top_margin = 5

    style.pref_vbox.xfill = True

    style.pref_button.size_group = "pref"
    style.pref_button.xalign = 1.0

    style.pref_slider.xmaximum = 192
    style.pref_slider.xalign = 1.0

    style.soundtest_button.xalign = 1.0

Confirm link

confirm は yes/no の選択肢をユーザーに尋ねるため使用され、以下の引数を取ります。 :

message

ユーザーに表示するメッセージで、以下のいずれかです:

  • gui.ARE_YOU_SURE - "Are you sure?" これはメッセージが未知のときのデフォルトです。

  • gui.DELETE_SAVE - "Are you sure you want to delete this save?"
  • gui.OVERWRITE_SAVE - "Are you sure you want to overwrite your save?"
  • gui.LOADING - "Loading will lose unsaved progress.nAre you sure you want to do this?"
  • gui.QUIT - "Are you sure you want to quit?"
  • gui.MAIN_MENU - "Are you sure you want to return to the mainnmenu? This will lose unsaved progress."
  • gui.END_REPLAY - "Are you sure you want to end the replay?"
  • gui.SLOW_SKIP = "Are you sure you want to begin skipping?"
  • gui.FAST_SKIP_SEEN = "Are you sure you want to skip to the next choice?"
  • gui.FAST_SKIP_UNSEEN = "Are you sure you want to skip to unseen dialogue to the next choice?"

変数の値は文字列で、テキスト displayable を使用して表示出来ます。

yes_action

ユーザーが「 Yes 」を選択すると実行されるアクション

no_action

ユーザーが「 No 」を選択すると実行されるアクション

Ren'Py 6.99.10 までこのスクリーンは yesno_prompt スクリーンと呼ばれていました。 confirm スクリーンがなければ、 yesno_prompt が代わりに使用されます。

screen confirm(message, yes_action, no_action):

    modal True

    window:
        style "gm_root"

    frame:
        style_prefix "confirm"

        xfill True
        xmargin 50
        ypadding 25
        yalign .25

        vbox:
            xfill True
            spacing 25

            text _(message):
                text_align 0.5
                xalign 0.5

            hbox:
                spacing 100
                xalign .5
                textbutton _("Yes") action yes_action
                textbutton _("No") action no_action