Ren'Py の GUI はデフォルトでも魅力的 (そうであることを望む) ですが、かなりカスタマイズ可能で、必要ならば完全に置き換えられます。 このページでは簡単なものから中級レベルのものまで GUI カスタマイズの方法を説明します。
さらに高度なカスタマイズはドキュメントの スタイル ( スタイルプロパティー のリストを含む) や スクリーン ( アクション と 特別な名前のスクリーン を含む ) を参照してください。
ここでは (gui.rpy ファイルにある) 新しいスタイルの Ren'Py GUI の使用を前提とします (screens.rpy を使用する)。 以前の GUI は、このガイドでは高度な GUI カスタマイズとして扱います。
最も単純なものを除いて、すべてのビジュアルノベルに影響する GUI カスタマイズが少数あります。これらのカスタマイズでは gui.rpy を編集する必要はありません。これらのカスタマイズは GUI を変更しますが、その外観を劇的に変化させはしません。
GUI の最も簡単な変更は GUI の色とサイズを変更することです。 Ren'Py はプロジェウト作成時にユーザーにこれらを決めるよう促しますが、ランチャーの "Change/Update GUI" からも変更出来ます。
ランチャーから GUI を変更するとき、 Ren'Py は単にランチャーを変更したいのか、 gui.rpy を更新するかを尋ねます。どちらの選択肢もほとんどの画像ファイルを上書きし、 gui.rpy の更新はそのファイルの変更を失わせます。
このため、他のどのカスタマイズより先にこれをするべきです。
Ren'Py はプロジェクトのデフォルト解像度と使用するカラースチームを選択するよう求めます。一旦選択すると GUI を選択に合わせて更新します。
options.rpy には GUI に使用されるいくつもの変数があります。
config.name
ゲームのタイトルです。これはウィンドウタイトルや他のゲームタイトルを必要とする GUI で使用されます。
gui.show_name
メインメニューのタイトルとバージョンナンバーを非表示するなら、これを False にしてください(タイトルは メインメニュー画像に焼き込むまれます)。
config.version
ゲームのバージョンを指定します。これは様々な場所でユーザーに表示されます。
gui.about
about スクリーンに表示される追加のテキストです。複数行のクレジットが欲しければ、\n\nを使用して段落を分けられます。
こちらは、これらの定義の例です
define config.name = _('Old School High School')
define gui.show_name = True
define config.version = "1.0"
define gui.about = _("Created by PyTom.\n\nHigh school backgrounds by Mugenjohncel.")
利便性のため、トリプルクウォートを使用して gui.about を定義するとよいです。その場合、行末は尊重されます。
define gui.about = _("""\
Created by PyTom.
High school backgrounds by Mugenjohncel.""")
ウィンドウアイコンはアプリケーション起動で(ウィンドウズのタスクバーやマックのドックのような場所に)表示されるアイコンです。
ウィンドウアイコンは gui/window_icon.png の置き換えで変更可能です。
これはゲーム起動で使用されるアイコンのみを変更することに注意してください。ウォンドウズの .exe や マックの app に使用されるアイコンを変更するには、 build documentation を参照してください。
次に、中級レベルの GUI カスタマイズを示します。中級では、ゲームに使用される色とフォント、画像を変更できます。一般的に中級カスタマイズは同じ場所にボタンやバーがあるほとんど同じスクリーンを保ちますが、新しい機能を追加するスクリーンの修正も可能です。
これらの変更の多くは gui.rpy の変数の編集を含みます。例えば、セリフのフォントサイズを大きくするには次の行を見付け
define gui.text_size = 22
例えば以下のように変更します。
define gui.text_size = 20
デフォルト値がドキュメントと違うはことよくあるので注意してください。デフォルト値は選択したゲームのサイズや色によって変更され、このファイルの値は広大な GUI カスタマイズの1例です。知りたい定義と変数で gui.rpy を検索するのがベストです(例 "define gui.font_size")。
下記の調整のいくつかは、部分的または完全に画像ファイルに影響します。そのためランチャーから "Change GUI" を選択して、画像ファイルを再生成して更新するまで変更は影響しません( これによってすでに変更した画像ファイルが上書きされることに気を付けてください)。
この方法で gui.rpy をカスタマイズする前にゲームを完成させるとよいでしょう。 古い gui.rpy は新しい Ren'Py で動作しますが、新しい gui.rpy には古いバージョンに欠けている機能と修正があるでしょう。最初にカスタマイズをすると、そのような改善の利点を利用するのが難しくなります。
台詞がプレイヤーにどう表示されるかを変更する、比較的簡単なカスタマイズがいくつかあります。一つ目はテキストボックスの変更です。
テキストウィンドウの背景画像で、say スクリーンの一部として表示されます。これはゲームの最大幅であるべきですが、テキストは中央の 60% にのみ表示され、20% は両サイドの境界になります。
さらに、台詞を変更するいくつかの変数があります。
gui.text_color
= "#402000" link台詞の色を変更します。
gui.text_font
= "ArchitectsDaughter.ttf" link台詞、選択肢、入力、その他ゲーム内テキストのフォントを設定します。フォントファイルはゲームディレクトリ内にあるべきです。
gui.text_size
= 33 link台詞のサイズを設定します。これは割り当てられた空間に選択したフォントがフィットするよう調整する必要があります。
gui.name_text_size
= 45 linkキャラクター名のサイズを設定します。
gui.textbox_height
= 278 linkテキストボックスの高さです。これは gui/textbox.png の高さと同じであるべきです。
デフォルトでは、キャラクター名はアクセントカラーを使用します。色はキャラクター定義時に簡単に変更できます。
define e = Character("Eileen", who_color="#104010")
オーバーレイ画像のペアもあります。これらは背景画像を暗く、または明るくして他のユーザーインターフェースを読み易くします。これらの画像は overlay ディレクトリーにあります。
オーバーレイはメインメニュースクリーンで使用されます。
ロード、セーブ、設定、アバウト、ヘルプのようなゲームメニュースクリーンで使用されるオーバーレイです。このオーバーレイは該当のスクリーンで選択され、メインメニューでも使用されます。
confirm スクリーンで、背景を暗くするのに使用されるオーバーレイです。
こちらはオーバーレイ画像の例で、オーバーレイ画像を追加したゲームの外観です。
テキストの色、フォント、サイズを変更する GUI 変数がいくつかあります。
These variables should generally be set to hexadecimal color codes, which are are strings of the form "#rrggbb" (or "#rrggbbaa" to specify an alpha component), similar to color codes used by web browsers. For example, "#663399" is the code for a shade of purple. There are many tools online that let you create HTML color codes, such as this one.
ドキュメントで上述された gui.text_color
や gui.choice_idle_color
, gui.choice_hover_color
に加えて、以下の変数があります。 :
gui.accent_color
= '#000060' linkタイトルやラベルを含む、GUI の多くの場所で使用されるアクセントカラーです。
gui.idle_color
= '#606060' linkフォーカスまたは選択されていないときに、ほとんどのボタンに使用される色です。
gui.idle_small_color
= '#404040' link非フォーカス時の ( セーブスロットのデータや名前、クイックメニューボタンのような) スモールテキストに使用される色です。この色にはより小さなフォントサイズを補強するため、 idle_color より少し明るいか暗い色がよく使用されます。
gui.hover_color
= '#3284d6' linkボタンのテキストやスライダーやスクロールバーのつまみのような GUI 要素がフォーカスされているとき使用される色です。
gui.selected_color
= '#555555' link選択されたボタンのテキストに使用される色です(これは hover や idle の色より優先度が高いです)。
gui.insensitive_color
= '#8888887f' linkユーザーの入力が無効なボタンのテキストに使用される色です(例: ロールバックができないときのロールバックボタン)。
gui.interface_text_color
= '#404040' linkhelp や about スクリーンのようなゲームインターフェースの静的テキストに使用される色です。
gui.muted_color
= '#6080d0' linkgui.hover_muted_color
= '#8080f0' link値や表示位置を表さない無効なバーやスクロールバー、スライダーに使用されるカラーです(これらは画像生成時のみ使用され、ランチャーで画像が再生成するまでは効果がありません)。
gui.text_font
に加えて、以下の変数でテキストに使用するフォントを選択します。これらのフォントは game ディレクトリに配置されるべきです。
gui.interface_text_font
= "ArchitectsDaughter.ttf" linkメインメニューやゲームメニュー、ボタンのようなユーザーインターフェースに使用されるテキストのフォントです。
gui.glyph_font
= "DejaVuSans.ttf" linkスキップインディケーターの矢印のような特定の標識に使用されるフォントです。 DejaVuSans はこれらの標識のデフォルトで、自動的に Ren'Py のゲームに含まれます。
gui.text_size
や gui.name_text_size
に加えて、以下の変数がテキストサイズを制御します。
gui.interface_text_size
= 36 linkユーザーインターフェースの静的なテキストのサイズで、ボタンテキストのデフォルトサイズでもあります。
gui.label_text_size
= 45 linkユーザーインターフェースのセクションラベルのサイズです。
gui.notify_text_size
= 24 link通知テキストのサイズです
gui.title_text_size
= 75 linkゲームタイトルのサイズです。
ボタンやバーのような、 Border オブジェクトを使用して設定される拡大可能な背景を持つ GUI 要素がいくつかあります。どのようにボタンやバーをカスタマイズするかを語る前に、これがどのように働くかを語ります。
Borders は Frame()
displayable に指定されます。 フレームは一つの画像を受け取ってそれを四隅と四つの側面、中央の九つのパーツに分けます。隅は常に同じサイズのままで、左右両サイドは縦に伸ばされ、上下端は横に伸ばされ、中央は両方向に伸ばされます。
Borders オブジェクトは左上右下の順に各境界のサイズを指定します。以下のボーダー画像が :
次の Borders で使用されると
Borders(40, 40, 40, 40)
結果は次の通りです。
Child はサイズを変えるので、背景として使用できます。
Border オブジェクトには child をボーダーに重ねられるネガティブパディングを含むパディングも指定できます。例えば、これらの Borders は
Borders(40, 40, 40, 40, -20, -20, -20, -20)
child に両サイドと重なることを許可します。この重なりにより、Borders 自身のスペースが狭くなり、結果が小さくなるので注意してください。
Borders はスケーリングではなくタイリング ( 拡大縮小ではなくタイルのように敷き詰める ) でも使用できます。これは変数で指定され、次の結果となります。
これらの例の画像は、何が起きるかを示すために少し歪ですが、実際はこのシステムはかなりよい結果になります。これは Frame displayable がフレームウィンドウの背景として使用された場合です。
これらのフレームウィンドウは二つの方法でカスタマイズできます。一つ目は背景画像ファイルの変更です。 :
フレームウィンドウの背景として使用される画像です。
二つ目は設定変数によるものです。
gui.frame_borders
= Borders(15, 15, 15, 15) linkBorders がフレームウィンドウに適用されます。
gui.confirm_frame_borders
= Borders(60, 60, 60, 60) linkBorders が confirm スクリーンのフレームに使用されます。
gui.frame_tile
= True linkTrue、 なら confirm スクリーンのサイドと中央はタイリングされます。False なら、スケーリングされます。
Ren'Py のユーザーインターフェースには多くのボタンがあり、ボタンは様々なサイズと目的で使用されます。以下は様々な種類のボタンです。 :
基本的なボタン ユーザーインターフェースのナビゲーションで使用されます。
選択肢の選択肢ボタンに使用されます。
ゲームメニューに迅速にアクセスできるよう、ゲーム中に表示されるボタンです。
main, game スクリーンで使用されるボタンで、ゲームを開始します。
load, save スクリーンでページを切り替えるためのボタンです
サムネイルとセーブ時間、任意のセーブ名を含んだファイルスロットを表示するボタンです。詳しくは後述します。
preferences スクリーンで複数の選択肢を設定するボタンです。
preferences スクリーンで設定をトグルするボタンです。
preferences スクリーンで音声をテスト再生するボタンです。これは水平スライダーと同じ高さであるべきです。
プレイヤーがヘルプを求めるときのボタンです。
confirm スクリーンで yes または no を選択するボタンです。
NVL モードで選択肢に使用するボタンです。
以下の画像ファイルがあると、ボタンの背景を設定するために使用されます。
フォーカスされてないときのボタン背景の画像です。
フォーカスされているときのボタン背景の画像です。
選択されているがフォーカスされてないときのボタン背景の画像です。これは任意で、存在すれば idle_background.png に優先して使用されます。
選択されていてフォーカスされているときのボタン背景の画像です。これは任意で、存在すれば hover_background.png に優先して使用されます。
より具体的な背景が、接頭辞によって各ボタンに指定できます。例えば、 gui/button/check_idle_background.png はフォーカスされていないチェックボタンに使用されます。
オプションの選択状態を示すため、四つの画像ファイルがラジオボタンやチェクボタンの前掲に使用されます。
これらの画像はチェックまたはラジオボタンが選択されてないとき使用されます。
これらの画像はチェックまたはラジオボタンが選択されているとき使用されます。
以下の変数はボタンのプロパティーを設定するために使用されます。 :
ボタンの幅と高さをピクセルで指定します。 None なら、サイズは自動的にボタン内のテキストのサイズに応じて決定され、 borders は以下が指定されます。
左上右下の順にボタンを囲む borders です。
True ならボタンのサイドと中央はサイズの増減に合わせてタイリングされます。 False ならサイドと中央はスケーリングされます。
ボタンテキストのフォントとサイズです。
様々な状態でのボタンテキストの色です。
ボタンテキストの水平方向のアラインです。0.0 は左揃え、0.5 は中央、1.0 が右揃えです。
ボタン画像のための拡張です。これを .webp に変更して WEBP ボタン画像を png の代わりに使用出来ます。
これらの変数にはボタンの種類ごとに接頭辞を付けて、特定の種類のボタンに対するプロパティーを設定できます。例えば、 gui.choice_button_text_idle_color
はフォーカスされていない選択肢ボタンの色を変更します。
例えば、サンプルゲームではこれらの変数をカスタマイズします。
ナビゲーションボタンの幅を設定します。
ラジオまたはチェックボタンの borders を設定し、チェックマークのために左にスペースを空けています。
こちらはどのようにスクリーンをカスタマイズできるかの例となります。
gui/button/idle_background.png 画像の例
gui/button/hover_background.png の例です。
gui/button/check_foreground.png や gui/button/radio_foreground.png として使用できる画像の例です。
gui/button/check_selected_foreground.png や gui/button/radio_selected_foreground.png として使用できる画像の例です。
load, save スクリーンでは、サムネイルといつセーブされたかの情報を表示するスロットボタンを使います。以下の変数はセーブスロットのサイズをカスタマイズするにはかなり便利です。
セーブスロットボタンの幅と高さ。
各セーブスロットボタンに適用される Borders です。
config.thumbnail_width
= 384 linkconfig.thumbnail_height
= 216 linkセーブサムネイルの幅と高さです。これらは config 名前空間にあり、 gui 名前空間にはないことに注意してください。これらはセーブファイルがセーブ、ロードされないと効果がありません。
gui.file_slot_cols
= 3 linkgui.file_slot_rows
= 2 linkセーブスロットのグリッド行列の数です。
これらはセーブスロットで使用される背景画像です。
フォーカスされていないセーブスロットの背景画像です。
フォーカスされているセーブスロットの背景画像です。
画像例です。 :
gui/button/slot_idle_background.png の例です。
gui/button/slot/slot_hover_background.png の例です。
このセクションで掲示されたカスタマイズを適用した後の save スクリーン
スライダーは preferences スクリーンでプレイヤーが設定の値を調整するのに使用されるバーです。デフォルトでは、 GUI は水平スライダーのみを使用しますが、垂直スライダーも使用できます。
スライダーは以下の画像でカスタマイズできます。 :
idle 状態とフォーカス状態の垂直または水平バーの背景に使用される画像です。
バーの移動可能な部分、つまみに使用される画像です。
以下の変数も使用できます。 :
gui.slider_size
= 64 link水平スライダーの長さと垂直スライダーの幅です。
gui.slider_tile
= True linkTrue ならスライダーのバーを含むフレームはタイリングされます。 False なら、スケーリングされます。
gui.slider_borders
= Borders(6, 6, 6, 6) linkgui.vslider_borders
= Borders(6, 6, 6, 6) linkバー画像のフレームに使用されられる borders です。
こちらは、水平スライダーのカスタマイズ例です。
gui/slider/horizontal_idle_bar.png の例
gui/slider/horizontal_hover_bar.png の例
gui/slider/horizontal_idle_thumb.png の例
gui/slider/horizontal_hover_thumb.png の例
スクロールバーは viewport をスクロールするのに使用されるバーです。 GUI において、スクロールバーが使用されるもっとも確実な場所は history スクリーンですが、他のスクリーンでも同様に垂直スクロールバーを使用できます。
スライダーは以下の画像でカスタマイズできます。 :
idle 状態とフォーカス状態の垂直または水平バーの背景に使用される画像です。
バーの移動可能な部分、つまみに使用される画像です。
以下の変数も使用できます。 :
gui.scrollbar_size
= 24 link水平スクロールバーの高さと、垂直スクロールバーの幅です。
gui.scrollbar_tile
= True linkTrue ならスクロールバーのバーを含むフレームはタイリングされます。 False なら、スケーリングされます。
gui.scrollbar_borders
= Borders(10, 6, 10, 6) linkgui.vscrollbar_borders
= Borders(6, 10, 6, 10) linkバー画像のフレームに使用されられる borders です。
gui.unscrollable
= "hide" linkバーがスクロールできないときどうするかを制御します。 "hide" はバーを非表示にし、 None は表示し続けます。
こちらは垂直スクロールバーのカスタマイズ例です。
簡単なバーはプレイヤーに数字を表示するのに使用されます。それらは GUI では使用されませんが、ユーザー定義スクリーンでは使用できます。
バーは以下の画像を編集してカスタマイズできます。 :
水平、垂直バーの、最大状態の画像です。
水平、垂直バーの、最大状態の画像です。
バーを制御する変数もあります。
gui.bar_size
= 64 link水平バーの高さと垂直バーの幅です。
gui.bar_tile
= False linkTrue ならバー画像はタイリングされます。 False なら、画像はスケーリングされます。
gui.bar_borders
= Borders(10, 10, 10, 10) linkgui.vbar_borders
= Borders(10, 10, 10, 10) linkバー画像を含むフレームに使用される Borders です。
こちらは、水平バーのカスタマイズ例です。
skip, notify スクリーンは、共にメッセージを表示するスクリーンです。どちらも背景画像を使用します。
スキップインディケーターの背景です。
通知インディケーターの背景です。
これらを制御する変数です。 :
gui.skip_frame_borders
= Borders(24, 8, 75, 8) linkskip スクリーンに使用されるフレームの borders です。
gui.notify_frame_borders
= Borders(24, 8, 60, 8) linknotify スクリーンに使用されるフレームの borders です。
gui.skip_ypos
= 15 linkスキップインディケーターの垂直位置で、ウィンドウの頂点からのピクセル数です。
gui.notify_ypos
= 68 link通知インディケーターの垂直位置で、ウィンドウの頂点からのピクセル数です。
こちらは、 skip, notify スクリーンのカスタマイズ例です。
アクションに対する skip, notify スクリーン
上述の簡単なカスタマイズに加えて、プレイヤーへの台詞の表示の仕方を制御する方法がいくつかあります。
テキストボックス (またはウィンドウ) は台詞が表示されるウィンドウです。 gui/textbox.png の変更に加えて、以下の変数でテキストボックスの表示を制御します。
キャラクター名は gui/namebox.png を背景に使用してフレーム内に配置されます。さらに、名前の表示を制御する変数があります。ネームボックスは話しているキャラクターが名前を持つとき (" " のような空の名前も含みます ) のみ表示されます。
gui.name_xpos
= 360 linkgui.name_ypos
= 0 link名前とネームボックスの水平、垂直方向の位置です。これらは通常テキストボックスの左または上からのピクセル数です。 0.5 に設定するとテキストボックス(下記参照)の名前は中央になります。これらの数字はマイナスにもなります。例えば、 gui.name_ypos を -22 にするとテキストボックスの上 22 ピクセルに配置されます。
gui.name_xalign
= 0.0 linkキャラクター名の水平方向のアラインです。これは 0.0 で左揃え、 0.5 で中央、 1.0 で右揃えとなります(大体は 0.0 か 0.5 です)。 これは gui.name_xpos に対するキャラクター名の相対位置と xpos とともにネームボックスのアラインされる側面を選択の両方に使用されます。
gui.namebox_width
= None linkgui.namebox_height
= None linkgui.namebox_borders
= Borders(5, 5, 5, 5) linkgui.namebox_tile
= False linkこれらの変数はネームボックスを含むフレームの表示を制御します。
gui.dialogue_xpos
= 402 linkgui.dialogue_ypos
= 75 link実際の台詞の水平、垂直位置です。これらは通常テキストボックスの左、または上からのピクセル数です。 0.5 に設定すると テキストボックスの中央に台詞が来ます。(以下を参照)
gui.dialogue_width
= 1116 link台詞行の最大幅をピクセルで指定する変数です。台詞がこの幅に到達すると、Ren'Py によって折り返されます。
gui.dialogue_text_xalign
= 0.0 link水平方向の台詞テキストのアラインです。 0.0 は左揃え、 0.5 は中央、 1.0 は右揃えです。
キャラクター名を中央によせるなら以下を使います。
define gui.name_xpos = 0.5
define gui.name_xalign = 0.5
台詞テキストを中央にするなら以下を使います。
define gui.dialogue_xpos = 0.5
define gui.dialogue_text_xalign = 0.5
サンプルゲームでは、これらのステートメントを使用して中央寄せのネームボックスを設定しています。
define gui.namebox_width = 300
define gui.name_ypos = -22
define gui.namebox_borders = Borders(15, 7, 15, 7)
define gui.namebox_tile = True
gui/overlay/main_menu.png の例
history スクリーンの表示を制御する変数がいくつかあります。
config.history_length
= 250 linkRen'Py が履歴に保持する台詞のブロックの数です。
gui.history_height
= 210 link履歴のピクセル数での高さです。これを None にすると、エントリの高さが可変になりますが、パフォーマンスは低下します。これが None なら、 config.history_length はかなり小さ目にする必要があります。
gui.history_name_xpos
= 0.5 linkgui.history_text_xpos
= 0.5 link名前と台詞の水平位置です。これらはエントリの左側面からのピクセル数で、 0.5 なら中央です。
gui.history_name_ypos
= 0 linkgui.history_text_ypos
= 60 link名前と台詞の、エントリの上端からのピクセル数での垂直位置です。
gui.history_name_width
= 225 linkgui.history_text_width
= 1110 link名前と台詞のピクセル数での幅です。
gui.history_name_xalign
= 0.5 linkgui.history_text_xalign
= 0.5 linkこれはテキストと xpos でアラインされているテキストの側面のアラインを制御します。 0.0 なら左揃え、 0.5 なら中央、 1.0 なら右揃えです。
nvl スクリーンは NVL モードで台詞を表示します。設定方法はいくつかありますが、一つ目は NVL モードの背景画像をカスタマイズすることです。 :
NVL モードで使用される背景画像です。これはゲームウィンドウと同じサイズであるべきです。
NVL モードのテキスト表示をカスタマイズするのに使用する変数もいくつかあります。
gui.nvl_borders
= Borders(0, 15, 0, 30) linkNVL モード背景の borders です。背景はフレームではないので、これは NVL モードを詰め込んで、スクリーンの側面に押し寄せるのを防ぐためにのみ使用されます。
gui.nvl_height
= 173 linkNVL モードの一つのエントリの高さです。これを固定された高さに設定すると、一度に特定数のエントリを表示する、ページ分けのない NVL モードがつくれます。これを None に設定すると、要素は可変サイズになります。
gui.nvl_spacing
= 15 linkNVL モード選択肢間と gui.nvl_height が None のときの要素間のスペースです。
gui.nvl_name_xpos
= 0.5 linkgui.nvl_text_xpos
= 0.5 linkgui.nvl_thought_xpos
= 0.5 linkキャラクター名と台詞テキスト、ナレーションテキストの、要素の左端からの相対位置です。これはピクセル数で、 0.5 なら要素の中央です。
gui.nvl_name_xalign
= 0.5 linkgui.nvl_text_xalign
= 0.5 linkgui.nvl_thought_xalign
= 0.5 linkテキストのアラインです。これはテキストのアラインと、xpos に配置されるテキストの側面を制御します。これが 0.0 なら左揃え、 0.5 なら中央、 1.0 なら右揃えです。
gui.nvl_name_ypos
= 0 linkgui.nvl_text_ypos
= 60 linkgui.nvl_thought_ypos
= 0 linkキャラクター名と台詞テキスト、ナレーションテキストの、要素の上端からのピクセル数での相対位置です。
gui.nvl_name_width
= 740 linkgui.nvl_text_width
= 740 linkgui.nvl_thought_width
= 740 link各種テキストのピクセル数での幅です。
NVL モード選択肢ボタンの位置とアラインです。
Ren'Py はデフォルトでは NVL モードを使用しません。 NVL モードキャラクターの使用や script.rpy でいくつかの変数の定義で実行されます。
define e = Character("Eileen", kind=nvl)
define narrator = nvl_narrator
define menu = nvl_menu
こちらは上述の設定がされた NVL screen の例です。
gui/overlay/main_menu.png の例
ほとんどのテキストは GUI 変数を使用してカスタマイズできます。変数は以下のものが使用されます。 :
gui.kind_text_font
link存在すれば、テキストに使用されるフォントです。
gui.kind_text_size
link存在すれば、テキストのサイズです。
gui.kind_text_color
link存在すれば、テキストの色です。
その他の テキストスタイルプロパティー も同様に設定できます。例えば、 gui.kind_text_outlines は outlines
プロパティーを設定します。
kind 接頭辞は省略され、テキストのデフォルトの外観をカスタマイズします。 kind 以外なら、上述、または以下のボタンの一つです :
ゲームインターフェース外のデフォルトテキストです。
テキストインプットウィジェットのテキストです。
テキストインプットのプロンプト部分です。
装飾ラベルです。
プレイヤーに対する確認プロンプトです。
キャラクター名です。
台詞です。
通知テキストです。
例 :
define gui.dialogue_text_outlines = [ (0, "#00000080", 2, 2) ]
台詞テキストの右下に影を落とします。
gui 名前空間は特別で、初期化後、 translate python
ブロックの前に保存されます。これにより translate python
ブロックで GUI 変数を変更して、第二言語に反映させられます。例えば、以下のコードはデフォルトのテキストフォントとサイズを変更します。
translate japanese python:
gui.text_font = "MTLc3m.ttf"
gui.text_size = 24
翻訳が気を付けるべき問題が一つあり、それは gui.rpy のどこかで、ある変数に別の値を代入することです。例えば、デフォルトの gui.rpy に以下があり :
define gui.interface_text_font = "DejaVuSans.ttf"
後に次があるとします。
define gui.button_text_font = gui.interface_text_font
これらのステートメントの両方が translate
ブロックの前に実行されるので、両変数が変更される必要があります。
translate japanese python::
define gui.interface_text_font = "MTLc3m.ttf"
define gui.button_text_font = "MTLc3m.ttf"
二つ目のステートメントがなければ、 DejaVuSans がまだ使用されます。
さらに高度なカスタマイズが screeens.rpy のすべての削除や置き換えによって可能です。ここでは一部分から始めます。
スタイル と スタイルプロパティー は displayables の表示を制御します。何のスタイルを displayable が使用しているか知るには、それをマウスで触れて、shift+I を押してください。これにより、スタイル名を表示するスタイルインスペクターが起動されます。スタイル名が分かれば、 style ステートメントを使用してカスタマイズが出来ます。
例えば、明るい赤いアウトラインを台詞テキストに追加したいなら、テキストにマウスを合わせて、 shift+I を押し、そのスタイルが say_dialogue と名付けられていることを調べます。そしたら、 (screens.rpy の終端や options.rpy のどこかに ) style ステートメントを追加します。
style say_dialogue:
outlines [ (1, "#f00", 0, 0 ) ]
多くのカスタマイズが style ステートメントの使用で可能になります。
だれもを望むスクリーンはクリック待ちのスクリーンです。これはテキストが表示を完了すると表示されるスクリーンです。こちらは簡単な例となります。 :
screen ctc():
frame:
at ctc_appear
xalign .99
yalign .99
text _("(click to continue)"):
size 18
transform ctc_appear:
alpha 0.0
pause 5.0
linear 0.5 alpha 1.0
この ctc スクリーンは 5 秒後にフレームを表示する transform を使用します。CTC のアニメーションを数秒遅らせて、Ren'Py に画像を読み込ませる時間が与えるとよいでしょう。
上級開発者は screeens.rpy の 一部またはすべてを置き換えられます。このとき、gui.rpy の一部またはすべての内容が余分となります。 gui.init()
を呼び出して、スタイルをリセットするとよいかもしれません。 特別な名前のスクリーン の一部またはすべてを含むことは、プレイヤーが Ren'Py のすべての機能にアクセスできるようになるためよいでしょう。
GUI についての詳細は Advanced GUI を参照してください。
GUI の変更のため、時折変数のいくつかが名前を変えます。これらの変更は GUI が再生成されるときのみ影響します。そのときまで、更新された Ren'Py でゲームは古い変数名を使用し続けます。