NVL モード link
ビジュアルノベルには、主に2つの表示方法があります。ADV スタイルのゲームでは、一般に画面の下部にあるウィンドウに台詞とナレーションを一度に一行だけ表示します。NVL スタイルのゲームでは、画面全体に広げられたウィンドウに一度に複数の行を表示します。
このチュートリアルでは、Ren'Py を使った NVL モードのゲームをどのように作るかを説明します。このチュートリアルでは、 クイックスタートマニュアル で説明した Ren'Py の基本事項を熟知していることを前提とします。
はじめに link
NVL モードは、以下の手順で Ren'Py のスクリプトに追加できます。まず、キャラクターを NVL モードで宣言し、次にそれぞれのページの最後に nvl clear
ステートメントを追加するだけです。
キャラクターを NVL モードで使うように宣言するには、 kind=nvl
パラメーターをそれぞれのキャラクター宣言に追加します。例えば、クイックスタートマニュアルのキャラクター宣言を引用すると
define s = Character('Sylvie', color="#c8ffc8")
define m = Character('Me', color="#c8c8ff")
NVL モードに変更するには、これらの宣言を以下のようにします:
define s = Character('Sylvie', kind=nvl, color="#c8ffc8")
define m = Character('Me', kind=nvl, color="#c8c8ff")
NVL モードのナレーターは以下の定義によっても使用可能です。
define narrator = nvl_narrator
ここで、 narrator
という NVL モードのキャラクターも追加したことに注意してください。 narrator
キャラクターは、関連付けられた名前を持たない、ナレーション行に使用されます。
このようなゲームを実行すると、はじめの数行は普通に表示されますが、しばらくすると、行が画面下部よりも下に表示されてしまいます。スクリプトの途中で改ページをするには、それぞれのページの最後に nvl clear
を含めます。
次は、改ページを行うスクリプトの例です:
label start:
"I'll ask her..."
m "Um... will you..."
m "Will you be my artist for a visual novel?"
nvl clear
"Silence."
"She is shocked, and then..."
s "Sure, but what is a \"visual novel?\""
nvl clear
NVL モードのゲームでは一般的に段落ごとのテキスト量が多くなりますが、この例では基本的な NVL モードのスクリプトの例を示しています(トランジションの無いキネティックノベルでの使用に適しています)。
モノローグモード は NVL モードでも同様に動作します。 {clear}
テキストタグをその行に含むことはモノローグモードのままである他は nvl clear
ステートメントと等しいです。 例
label start:
s """
This is one block of text in monologue mode.
This is a second block, on the same page as the first.
{clear}
The page just cleared!
"""
NVL モード・ウィンドウの表示/非表示 link
NVL モード・ウィンドウは、標準の window show
及び window hide
ステートメントによって制御できます。ウィンドウの表示、非表示時のデフォルトトランジションを指定するには次のコードをゲームに追加します
init python:
config.window_hide_transition = dissolve
config.window_show_transition = dissolve
デフォルトの config.empty_window
は適切なウィンドウを自動的に選択するはずですが、 config.empty_window
を nvl_show_core
に設定するとNVL モードウィンドウがトランジション中に強制的に表示されてしまいます(訳注: 以前はこの設定が必要な場合がありましたが現在のバージョンでは不要です。)。.:
init python:
config.empty_window = nvl_show_core
window コマンドを用いてウィンドウの表示/非表示を行う例を次に示します:
label meadow:
nvl clear
window hide
scene bg meadow
with fade
window show
"We reached the meadows just outside our hometown. Autumn was so
beautiful here."
"When we were children, we often played here."
m "Hey... ummm..."
window hide
show sylvie smile
with dissolve
window show
"She turned to me and smiled."
"I'll ask her..."
m "Ummm... will you..."
m "Will you be my artist for a visual novel?"
nvl show
と nvl hide
コマンドは NVL モードのウィンドウを表示、非表示します。これらは任意でトランジションを受け取り、また、 NVL と ADV 両方のモードのウィンドウが混在するコードで使用出来ます。
キャラクターのカスタマイズ link
NVL モード・キャラクターの外観はカスタマイズできるため、うまく設定すると作成中のゲームに最も適切な外観を選べます。
既定の状態ではキャラクター名が左側で、台詞がキャラクター名の右側にインデントされて配置されています。名前の色は「color」パラメーターで設定できます。
define s = Character('Sylvie', kind=nvl, color="#c8ffc8")
2つ目では、キャラクター名をテキストに含みます。キャラクターが話した台詞はクォーテーション(")で囲まれています。ここでの注意点はキャラクター名が what_prefix パラメーターの中に開きクォーテーション(括弧開き)とともにあることです(閉じクォーテーションは what_suffix パラメーターの中にあります)。
define s = Character(None, kind=nvl, what_prefix="Sylvie: \"", what_suffix="\"")
3つ目はキャラクター名を完全に省くとともに、台詞をクォーテーションの中に入れています。
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"")
3つ目の表示は、誰が話した言葉なのかを見分けるのが難しくなる可能性があります。その場合は、「what_color」パラメーターを用いて台詞に色を付けられます。
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"", what_color="#c8ffc8")
もちろん、全くカスタマイズされていない NVL モードのキャラクターを使うこともできます(これはナレーターに使われることが多いです)。
define s = Character(None, kind=nvl)
config 変数 link
以下の config 変数は nvl に関連する機能を制御します。
- define config.nvl_layer = "screens" link
NVLスクリーンを表示するレイヤーです。
- define config.nvl_list_length = None link
None か、NVLダイアログリストの最大長さです。これを設定して無限にスクロールするNVL ウィンドウを再現出来ます(しばしばダイアログを固定長に強制して問題になります)。
- define config.nvl_page_ctc = None link
None を指定するか、ページの最後 ( 直後に nvl clear ステートメントが続くもの ) で NVL キャラクターに使用する ctc を指定します。これは
Character()
の ctc パラメーターを置き換えます。
- define config.nvl_page_ctc_position = "nestled" link
None を指定するか、ページの最後 ( 直後に nvl clear ステートメントが続くもの ) で NVL キャラクターに使用する ctc の座標を指定します。これは
Character()
の ctc_position パラメーターを置き換えます。
- define config.nvl_paged_rollback = False link
True の場合、一度にページ全体に対して発生するNVLモード・ロールバックとなります。
Python 関数 link
- nvl_clear() link
nvl clear
ステートメントと Python 等価な Python 式です。
- nvl_hide(with_) link
nvl hide
ステートメントと Python 等価な Python 式です。- with_
NVLモードウィンドウを非表示するトランジションです。
NVL スタイルで選択肢を表示する Python 関数です。直接は滅多に使われず、代わりに
menu
変数に以下のように代入されます。define menu = nvl_menu
- nvl_show(with_) link
nvl show
ステートメントに相当する Python 式です。- with_
NVLモードウィンドウを表示するトランジションです。
ページ毎のロールバック link
ページ毎のロールバックにより、Ren'Py は NVL モードのページ1つを1回でロールバックするようになります。この機能は、以下のコードをスクリプトに入れて有効化できます。
init python:
config.nvl_paged_rollback = True
The Question のスクリプト (NVLモード版) link
NVL モード版の「The Question」の完全なスクリプトは、 ここ で入手できます。