Skip to content

ビジュアルノベルのCSV命令表 ​

このページを参照しながら、会話・選択肢・分岐・結末を持つ台本を書きます。ここでいうスクリプトは、会話システムが読むCSVの台本です。C#を書き換える必要はありません。

最初に動かす完成見本 ​

配布する見本では、講師の指示に従うかを選びます。従うと会話を続けて終了し、逆らうと別のCSVへ移り、一枚絵のゲームオーバーになります。最初に両方を再生し、選択した後に何が変わるかを確かめてください。

一枚絵と本文だけを残したゲームオーバー画面一枚絵と本文だけを残したゲームオーバー画面

配布プロジェクトの準備 ​

CSV台本制作用プロジェクトをダウンロードし、ZIPを展開します。Unity Hubから中のVisualNovelフォルダーを追加し、Unity 6000.5.5f1で開いてください。Packageの読み込みが終わったら、Assets/UNSLOW/VisualNovel/Scenes/SchoolCourt.unityを開き、Playします。前の回の完成物は必要ありません。

台本はAssets/StreamingAssets/Scenarios/にあります。まずintro.csvを編集します。CSVはUTF-8で保存してください。保存後、GameビューでRを押すと、変数とフラグを初期化して開始用の台本を読み直します。CSVだけの変更なら、Playを停止して起動し直す必要はありません。

会話はクリック、Space、Enterで全文表示または次の行へ進みます。選択肢はクリックか数字キーで決定します。

配布ファイル一覧
ファイル用途
Assets/StreamingAssets/Scenarios/intro.csv一つの選択とフラグを使う開始用の見本
Assets/StreamingAssets/Scenarios/game-over.csv一枚絵と本文を表示する共通のゲームオーバー
Assets/StreamingAssets/Scenarios/rule-choices.csv三つの掟について選ぶ完成見本
Assets/StreamingAssets/Scenarios/rule-branches.csv三つのフラグを8通りに分ける完成見本
Assets/UNSLOW/VisualNovel/Art/NovelCatalog.asset画像・音と、台本で使う名前の対応
Assets/UNSLOW/VisualNovel/Scripts/実装済みの会話システム
Assets/ThirdParty/外部フォント・音源とライセンス文書

CSVの書き方 ​

一行に一つの命令を書き、半角カンマで命令名と引数を区切ります。引数とは、その命令に渡す値です。たとえば背景,auditorium-courtは、auditorium-courtという名前で登録した背景を表示します。

csv
# この行はコメント
背景,auditorium-court
テキスト,学生,通常,授業を始めます。

空行と、行頭が#の行は読み飛ばします。見出し行として命令,引数1,引数2などを書く必要はありません。

書く内容規則と例
命令名下の表と同じ表記を使う。BGMとSEは英大文字
台本のファイル名英小文字・数字・ハイフンを使う。例:game-over.csv。先頭は英小文字か数字
画像・音の登録名NovelCatalogにある名前を指定する。命令には拡張子を付けない
人物名・表情名・変数名・ラベル名日本語を使える。同じものを指す箇所では表記をそろえる
空欄テキストと立ち絵の表情欄だけ省略できる。それ以外の引数は空欄にしない
行末のカンマ引数が一つ増えるため付けない。選択,はい,いいえ,は空の選択肢があるためエラー
秒数0〜30。小数点には.を使う。例:0.3

本文に半角カンマを入れるときは、その欄を半角の二重引用符で囲みます。欄内の二重引用符は二つ続けて書きます。

csv
テキスト,学生,通常,"Wait, please."
テキスト,学生,通常,"先生は""確認すること""と言いました。"
テキスト,地の文,-,前半の文。\n後半の文。

本文中の\nは表示上の改行です。半角スペースを二つ続けた箇所も改行になります。CSVでは一つの命令を途中で実際に改行せず、一行に収めます。

命令表 ​

書式の人物、本文、画像名などを、自分の台本で使う値に置き換えてください。命令は上から順に実行され、会話・選択・時間待ちに達すると、入力や時間の経過を待ちます。

命令の一覧 ​

用途から命令を探し、下の解説で書式と引数を確認してください。

命令用途
テキスト会話や地の文を表示する
立ち絵人物の表情を変える
背景通常の背景を表示する
一枚絵立ち絵や見出しを隠して一枚の絵を表示する
見出し章名を表示する
BGM音楽をループ再生・停止する
SE効果音を一度再生する
待機指定した秒数だけ待つ
フェード画面や画像を暗転・表示する
終了結末を表示して台本を終える
選択二択または三択を表示する
変数名前を付けた整数を記録する
加算記録した整数を増減する
フラグ二つの状態のどちらかを記録する
分岐条件を満たしたときにラベルへ移る
ラベル同じCSV内の移動先に名前を付ける
ジャンプ条件を調べずラベルへ移る
シーン別のCSVへ移る

会話・画像・音の解説 ​

テキスト ​

書式 テキスト,人物,表情,本文

引数の意味 人物は話し手の名前、表情は表示する立ち絵の表情、本文は表示する文章です。地の文では人物を地の文、表情を-にします。

例

csv
テキスト,学生,通常,授業を始めます。
テキスト,地の文,-,講堂の扉が開いた。

進み方 全文表示後の入力を待ちます。

立ち絵 ​

書式 立ち絵,人物,表情

引数の意味 人物は絵を変える相手、表情は切り替え先の表情です。表情欄を空にすると現在の絵を維持します。

例

csv
立ち絵,講師,怒

進み方 表示を変えて次へ進みます。

背景 ​

書式 背景,背景名

引数の意味 背景名はCatalogに登録した背景の名前です。一枚絵の表示中に使うと、通常の背景と立ち絵へ戻します。

例

csv
背景,auditorium-court

進み方 背景を変えて次へ進みます。

一枚絵 ​

書式 一枚絵,画像名

引数の意味 画像名はCatalogのIllustrationsに登録した名前です。立ち絵と通常の見出しを隠し、絵の縦横比を保って表示します。

例

csv
一枚絵,bad-end-bear

進み方 絵を表示して次へ進みます。

見出し ​

書式 見出し,章名

引数の意味 章名は通常画面の上部に表示する文字です。一枚絵の間は見出しが隠れます。

例

csv
見出し,第一の弁論

進み方 見出しを変えて次へ進みます。

BGM ​

書式 BGM,曲名

引数の意味 曲名はCatalogに登録したBGMの名前です。停止を指定すると音楽を止めます。

例

csv
BGM,school-trial

進み方 ループ再生を始めて次へ進みます。BGM,停止も停止後すぐに次へ進みます。

SE ​

書式 SE,効果音名

引数の意味 効果音名はCatalogに登録したSEの名前です。

例

csv
SE,desk-hit

進み方 一度だけ再生します。音の終わりを待たず次へ進むため、台詞と同時に鳴らしたい場合は、その台詞の直前に置きます。

待機 ​

書式 待機,秒数

引数の意味 秒数は次へ進むまでの待ち時間です。

例

csv
待機,0.5

進み方 指定した時間を待って次へ進みます。

フェード ​

書式 フェード,対象,向き,秒数

引数の意味 対象は全体または画像、向きはoutまたはin、秒数は変化にかける時間です。outは黒く覆う指定、inは黒い覆いを取り除く指定です。

例

csv
フェード,全体,out,0.3

進み方 フェードが終わるまで待ちます。0秒なら即座に変えて次へ進みます。

全体は文字を含む画面全体、画像は背景・立ち絵・一枚絵に作用します。暗転させて文字だけを読ませたいときは、画像を使います。

別CSVの読み込み直後は、全体が暗転した状態です。背景または一枚絵を指定してから、フェード,全体,in,0.3で表示してください。

終了 ​

書式 終了,結末名

引数の意味 結末名は終了時に表示する文字です。一枚絵の表示中は、絵と最後の本文を残します。

例

csv
終了,ゲームオーバー

進み方 台本の進行を終了します。

選択・記録・分岐の解説 ​

選択 ​

書式 選択,選択肢1,選択肢2または選択,選択肢1,選択肢2,選択肢3

引数の意味 選択肢はプレイヤーに提示する文です。2〜3個を指定します。

例

csv
選択,指示に従う,指示に逆らう

進み方 選択を待ち、選んだ番号を選択結果へ記録して次へ進みます。

変数 ​

書式 変数,名前,整数

引数の意味 名前は値を記録する変数名、整数は設定する値です。設定済みなら値を上書きします。

例

csv
変数,説得力,0

進み方 値を記録して次へ進みます。

加算 ​

書式 加算,名前,整数

引数の意味 名前は設定済みの変数名、整数は現在の値に加える数です。負の数を指定すると減らせます。

例

csv
加算,説得力,1

進み方 値を変更して次へ進みます。

フラグ ​

書式 フラグ,名前,trueまたはfalse

引数の意味 名前は状態を記録するフラグ名です。trueは1、falseは0として記録します。

例

csv
フラグ,講師の掟に逆らった,false

進み方 状態を記録して次へ進みます。

分岐 ​

書式 分岐,名前,比較,整数,ラベル名

引数の意味 名前は調べる変数やフラグ、比較は==などの比較方法、整数は比較する値、ラベル名は条件を満たしたときの行き先です。比較方法は下の表を参照してください。

例

csv
分岐,選択結果,==,2,逆らう

進み方 条件を満たすと同じCSVの指定ラベルへ移ります。満たさなければ次の行へ進みます。

ラベル ​

書式 ラベル,ラベル名

引数の意味 ラベル名は同じCSV内の移動先に付ける名前です。

例

csv
ラベル,逆らう

進み方 目印なので、そのまま次へ進みます。

ジャンプ ​

書式 ジャンプ,ラベル名

引数の意味 ラベル名は移動先の名前です。同じCSV内で定義したラベルを指定します。

例

csv
ジャンプ,判定

進み方 条件を調べず、指定ラベルへ移ります。

シーン ​

書式 シーン,台本名

引数の意味 台本名は移動先のCSVファイル名です。拡張子は書きません。game-overならgame-over.csvを読み込みます。

例

csv
シーン,game-over

進み方 移動先CSVの先頭から実行します。

選択結果と比較 ​

選択番号は1から始まります。二択なら1または2、三択なら1〜3です。次の選択を実行すると選択結果が上書きされるため、後まで残したい選択は別のフラグや変数へ記録します。

加算と分岐で使う名前は、その前に変数またはフラグで設定してください。選択結果は選択後にシステムが設定します。フラグを比較する行の値には、整数の1または0を使います。

比較意味例
==等しい分岐,選択結果,==,2,逆らう
!=等しくない分岐,説得力,!=,0,根拠あり
>=以上分岐,説得力,>=,3,反証成立
<=以下分岐,説得力,<=,1,根拠不足
>より大きい分岐,説得力,>,2,反証成立
<より小さい分岐,説得力,<,3,根拠不足

ラベルと別CSVの違い ​

ラベルの有効範囲は、そのラベルを書いたCSVの中です。別のCSVでも同じラベル名を使えますが、一つのCSV内で同じ名前を二度定義するとエラーになります。移動先が後の行にあっても、名前が一致していれば参照できます。

シーンは読むCSVを切り替える命令です。UnityのSceneは切り替わりません。別CSVの途中のラベルへ直接移動する指定はありません。

別CSVへ移っても変数とフラグは引き継がれます。背景・立ち絵・本文・音は場面の入口で整え直すため、各CSVに必要な表示命令とBGMを書きます。物語全体で使うフラグの初期化は開始用のCSVへまとめ、途中で初期値に戻さないようにしてください。

指定できる素材名と表情 ​

配布する台本制作用プロジェクトには、次の素材を登録してあります。登録先はAssets/UNSLOW/VisualNovel/Art/NovelCatalog.assetです。画像や音のファイル名を変えても、Catalogの登録名は自動で変わりません。

種類登録名内容
背景auditorium-court講堂の法廷
一枚絵bad-end-bear赤と黒のゲームオーバー画像
BGMschool-trial会話・弁論の曲
BGMjudgement判決の曲
SEdesk-hit強く机を叩く音
SEdesk-tap軽く机を叩く音

人物名は学生、講師、学長です。三人とも、表情は通常、喜、怒、哀、驚き、余裕、困惑から選んでください。表情欄を空にしたテキスト,学生,,そのまま話を続けます。では、現在の立ち絵は変わりません。一枚絵の間も、テキスト命令の表情で立ち絵を表示し直すことはありません。

新しい素材を使う場合は、画像をSpriteとして読み込んでから、CatalogのBackgroundsまたはIllustrationsへ登録します。音はMusicまたはSoundsへ登録します。登録名は英小文字・数字・ハイフンにそろえ、同じ種類では重複させません。外部素材を追加するときの配置と利用条件は、素材の登録と出典も確認してください。

選択から結末まで書く ​

intro.csv ​

配布したintro.csvの全文です。まず、二番目の選択肢を選んだときに通るラベルを、再生する前にたどってください。

csv
背景,auditorium-court
BGM,school-trial
見出し,講師の掟
フラグ,講師の掟に逆らった,false
フェード,全体,in,0.3
テキスト,講師,通常,指示に従うかね?
選択,指示に従う,指示に逆らう
分岐,選択結果,==,2,逆らう
テキスト,学生,通常,指示に従います。
ジャンプ,判定

ラベル,逆らう
フラグ,講師の掟に逆らった,true
テキスト,学生,驚き,指示には従いません。

ラベル,判定
分岐,講師の掟に逆らった,==,1,ゲームオーバーへ
テキスト,講師,喜,では、授業を始めよう。
終了,授業を続ける

ラベル,ゲームオーバーへ
フェード,全体,out,0.3
シーン,game-over

一番目を選ぶと、学生の返事の後にジャンプ,判定を実行します。このジャンプがあるため、下に並ぶ「逆らう」側の会話は実行されません。ラベルを置くだけでは、その前からの進行は止まりません。

二番目を選ぶと、フラグをtrueに変えます。「判定」ではその値を調べ、ゲームオーバーへ移るか、会話を続けて終えるかを決めます。

game-over.csv ​

csv
# シーン,game-overで呼び出す共通のゲームオーバー。
BGM,停止
見出し,ゲームオーバー
一枚絵,bad-end-bear
フェード,全体,in,0.3
テキスト,地の文,-,死は誰の身にも等しく訪れる。
終了,ゲームオーバー

一枚絵の表示後も、会話と同じ操作で本文を読み進めてください。終了に到達すると、絵と最後の本文が残ります。通常の会話へ戻す場合は背景,auditorium-courtを使います。

どのCSVも、最後は終了か、別CSVへ移るシーンで終えてください。何も指定せずファイルの末尾に達するとエラーになります。

自分の台本へ広げる ​

最初は上の例の台詞を変え、保存してRで確認してください。次に、選択肢の文を自分の会話に合わせて変えます。選択肢を入れ替えた場合は、番号を調べる分岐も合わせて直してください。

一つの選択が動いたら、単位と課題についても二択を加えてください。三つの名前を分けてフラグへ記録し、最後の判定に使います。複数の条件を調べるときは、分岐とラベルを組み合わせて次の判定へ進めてください。

講師の掟単位の掟課題の掟結末の識別例
守った守った守った結末000
守った守った逆らった結末001
守った逆らった守った結末010
守った逆らった逆らった結末011
逆らった守った守った結末100
逆らった守った逆らった結末101
逆らった逆らった守った結末110
逆らった逆らった逆らった結末111

配布したrule-choices.csvとrule-branches.csvが、この8通りを分ける完成見本です。前者で選択を記録し、後者で判定します。単独で確認する場合は、Playを止め、Novel SystemのFirst Scenarioをrule-choicesにして再生してください。確認後はintroへ戻します。

各結末のラベルと終了の間に、自分の会話や演出を加えてください。共通のゲームオーバーにする枝はシーン,game-overへ接続できます。8通りの結末を区別したい場合は、それぞれの終了に異なる結末名を書きます。

保存と確認 ​

次の項目を確かめてから、一つずつ台詞や演出を増やしてください。

  • 最初のCSVに背景または一枚絵と、フェードインを書いた。
  • 選択した番号と、その番号を調べる分岐が対応している。
  • 後で使う選択を、別のフラグや変数へ記録した。
  • 各枝から、合流・別CSV・終了のいずれかへ進める。
  • 表の8通りを毎回Rから試し、予想した結末へ到達した。
表示や進行の問題確認する箇所
空の引数がある行末のカンマ、空の選択肢、本文の書き忘れ。表情だけは空欄にできる
ラベルがない・重複している同じCSV内の名前と、分岐やジャンプの指定
未設定の変数初期化より先に比較・加算していないか
別CSVを読み込めないファイルの場所、英小文字・数字・ハイフン、命令側の拡張子の有無
画像や音がないCatalogの登録名とSprite・Clipの参照
黒い画面のまま全体と画像のそれぞれに残った暗転。必要な対象へinを指定したか
両方の選択の会話が続く最初の枝から合流へ移るジャンプや、枝ごとの終了

エラーにはCSV名と行番号が表示されます。該当行を直して保存し、Rで読み直してください。表示の変化を確かめる操作は命令と引数の実習、フラグの考え方は変数による記録も参照できます。

ライセンス ​

アセット作者提供元ライセンス
Courtroom and JudgementJulie Damsgaard / Spring Spring / Spring EnterprisesOpenGameArtCC0 1.0
Impact SoundsKenneyKenneyCC0 1.0
UDEV GothicYuko OTAWARAUDEV GothicSIL Open Font License 1.1。配布物のAssets/ThirdParty/UDEVGothic/LICENSE.txtに同梱

音源はファイル名を変更していますが、音の内容は変更していません。SDF Font Assetは、同梱したフォントファイルから作成したものです。出典と加工の記録、各素材のライセンス文書は配布物のAssets/ThirdParty/にあります。背景・人物・一枚絵は本教材用の生成画像です。生成条件は配布物のimage-source.jsonで確認してください。