This page is out of date

You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.

Some places to look are:

Please do not create new links to this page.


NVLモード・チュートリアル

nvl-example.jpg
nvl-example.jpg

ビジュアルノベルには、主に2つの表示方法があります。ADVスタイルのゲームでは、一般に画面の下部にあるウィンドウに、対話とナレーションを一度に一行だけ表示します。NVLスタイルのゲームでは、画面全体に広げられたウィンドウに、一度に複数の行を表示します。

このチュートリアルでは、Ren'Pyを使ったNVLモードのゲームをどのように作るかを説明します。このチュートリアルでは、クイックスタートマニュアルで説明したRen'Pyの基本事項を熟知していることを前提とします。


== はじめに ==

NVLモードは、以下の手順でRen'Pyスクリプトに追加できます。まず、キャラクターをNVLモードで宣言し、次にそれぞれのページの最後に "nvl clear" ステートメントを追加するだけです。

キャラクターをNVLモードを使うように宣言するには、"kind=nvl" パラメーターをそれぞれのキャラクター宣言に追加します。例えば、クイックスタートマニュアルのキャラクター宣言を引用すると:

init:
    $ s = Character('Sylvie', color="#c8ffc8")
    $ m = Character('Me', color="#c8c8ff")

NVLモードに変更するには、これらの宣言を以下のようにします:

init:
    $ s = Character('Sylvie', kind=nvl, color="#c8ffc8")
    $ m = Character('Me', kind=nvl, color="#c8c8ff")
    $ narrator = Character(None, kind=nvl)

ここで、narrator というNVLモードのキャラクターも追加したことに注意してください。narrator キャラクターは、関連付けられた名前を持たない、ナレーション行に使用されます。

このようなゲームを実行すると、はじめの数行は普通に表示されますが、しばらくすると、行が画面下部よりも下に表示されてしまいます。スクリプトの途中で改ページをするには、それぞれのページの最後に "nvl clear" を含めます。

次は、改ページを行うスクリプトの例です:

label start:
    "やっぱり聞いてみよう。"

    m "あのさ、良かったら……"
    m "良かったらノベルゲームの絵を描いてくれないかな。"

    nvl clear

    "(沈黙)"
    "彼女はきょとんとした様子で言った"

    s "え……いいけど、でも、\"ノベルゲーム\"って何?"

    nvl clear

NVLモードのゲームでは、段落ごとのテキスト量が一般的に多くなりますが、この例では基本的なNVLモードのスクリプトの例を示しています。(トランジションの無いキネティックノベルでの使用に適しています。)

メニュー

既定では、メニューはADVモードの中で表示され、画面全体を占めます。一方NVLモードでは、NVLモード向けのメニュー表示を行うこともできます。その場合、メニューはNVLモードの現在のページのテキストの直後に表示されます。

NVLモードのメニュー表示を行うには、以下のように書きます:

init python:
     menu = nvl_menu

メニューは、選択が行われた後に消去されるため、メニューを "nvl clear" に続けて表示したり、選択したものが何であるかわかるように、多少表示するようにすると良いでしょう。

NVLモード・ウィンドウの表示/非表示

NVLモード・ウィンドウは、標準の "window show" 及び "window hide" ステートメントによって制御できます。この制御方法を有効化する場合は、以下のコードをゲームに追加します:

init python:
    config.empty_window = nvl_show_core
    config.window_hide_transition = dissolve
    config.window_show_transition = dissolve

nvl_show_core に設定すると、NVLモード・ウィンドウは、トランジションを伴って表示されます。(最後の2行では、ウィンドウの表示/非表示の切り替えに使われる既定のトランジションを設定しています。)

window コマンドを用いてウィンドウの表示/非表示を行う例を、次に示します:

label meadow:

    nvl clear

    window hide
    scene bg meadow
    with fade
    window show
    
    "町のすぐ外にある牧草地に着いた。ここの秋はとてもきれいだ。"
    "子供のころ、僕らはここでよく遊んだものだ。"

    m "あの……えーと……"

    window hide    
    show sylvie smile
    with dissolve
    window show
    
    "彼女はこっちを振り向き笑った。"
    "彼女に聞いてみよう……"
    m "あのさ、良かったら……"
    m "良かったらノベルゲームの絵を描いてくれないかな。

キャラクターのカスタマイズ

NVLモード・キャラクターの外観はカスタマイズできるため、うまく設定することで、作成中のゲームに最も適切な外観を選ぶことができます。

nvl-looks.jpg
nvl-looks.jpg

既定の状態では、キャラクター名が左側で、会話がキャラクター名の右側にインデントされて配置されています。名前の色は color パラメーターで設定できます。

init:
    $ s = Character('Sylvie', kind=nvl, color="#c8ffc8")

2つ目は、キャラクター名がテキストに含まれています。キャラクターが話した会話はクォーテーション(")で囲まれています。ここで注意することは、キャラクター名が what_prefix パラメーターの中に開きクォーテーション(括弧開き)とともにあることです。(閉じクォーテーションは what_suffix パラメーターの中にあります。)

init:
    $ s = Character(None, kind=nvl, what_prefix="Sylvie: \"", what_suffix="\"")

3つ目は、キャラクター名を完全に省くとともに、会話文をクォーテーションの中に入れています。

init:
    $ s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"")

3つ目の表示は、誰が話した言葉なのかを見分けるのが、難しくなる可能性があります。その場合は、what_color パラメーターを用いて会話文に色を付けられます。

init:
    $ s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"", what_color="#c8ffc8")

もちろん、全くカスタマイズされていないNVLモードのキャラクターを使うこともできます。(これはナレーターに使われることが多いです。)

init:
    $ s = Character(None, kind=nvl)

メニューのカスタマイズ

メニューの外観を変更するための設定がいくつかあります。ここに、これらのカスタマイズ方法を示したコードを挙げます。ここで、色は一般に "#rrggbbaa" という形の8桁の16進数で表されることに注意してください。ただし aa はアルファ値で、 00 (透明) から ff (完全不透明) までの範囲を取ります。

init python:

    # カーソルが乗っていない時のメニューアイテムの色。
    style.nvl_menu_choice.idle_color = "#ccccccff"
 
    # カーソルが乗っている時のメニューアイテムの色。
    style.nvl_menu_choice.hover_color = "#ffffffff"
 
    # カーソルが乗っていない時のメニューアイテムの背景色。
    style.nvl_menu_choice_button.idle_background = "#00000000"

    # カーソルが乗っている時のメニューアイテムの背景色。
    style.nvl_menu_choice_button.hover_background = "#ff000044"

    # メニューアイテムの左側からのインデント量。
    style.nvl_menu_choice_button.left_margin = 20

NVLモードのカスタマイズ

最後に、NVLモードそのものをカスタマイズする、いくつかの方法を紹介します。

NVLモード・ウィンドウの背景の設定

以下のコードは、NVLモード・ウィンドウの背景を設定します。 "nvl_window.png" は、画面と同じサイズの画像でなければならず、 xpadding と ypadding によって、画面の枠からテキスト領域までの長さを調節します。

init python:

    style.nvl_window.background = "nvl_window.png"
    style.nvl_window.xpadding = 55
    style.nvl_window.ypadding = 55

段落間スペースの設定

段落間スペースとは、1ページ中のテキストの塊同士の間隔です。以下のコードは、間隔を既定値である10ピクセルに設定します。

init python:
    style.nvl_vbox.box_spacing = 10

ページ毎のロールバック

ページ毎のロールバックにより、Ren'PyはNVLモードのページ1つを、一回でロールバックするようになります。これは、通常の一回に1ブロックのロールバックとは異なります。この機能は、以下のコードをスクリプトに入れることで有効化できます。

init python:
    config.nvl_paged_rollback = True

The Question のスクリプト (NVLモード版)

NVLモード版の The Question の完全なスクリプトは、ここで入手できます