Unity製ノベルゲーム制作キット。iphone・Android アプリ化対応。

ストーリーを分岐させよう

選択肢を表示して物語を分岐させる方法を解説します。また、シナリオファイルを複数作成する方法もみていきます

確認したい場所へジャンプ

さて、いよいよストーリーの分岐を作っていきますがその前に
結構ストーリーも長くなってきて、確認したい場所まで読み進めるのが面倒くさくなってきましたね。

そこで、確認したい場所をすばやく確認する方法をお伝えします。

まず、スクリプトの最後に以下のようなコードを追加してください

*debug
ジャンプ先[p]

そして、scene1の最初のセリフの直前あたりに
[jump target="debug"]
と追加して、ゲームを開始します。
すると、いきなり「ジャンプ先」というテキストが表示されましたね?

*(アスタリスク)で始まる箇所はラベルと呼ばれます。
ラベルはゲームの中で印(しるし)のような役割を持ちます。
例えば、他の場所から移動してくる場合や選択された結果の飛び先をこのラベル名を指定することで実現します

今回の例だと、*debug というラベルに

[jump target="debug"] というタグでジャンプしてきたというわけです

(注)一つのシナリオファイル中に同一のラベル名を使用することはできませんのでご注意ください


このラベルはストーリー分岐で重要な役割を果たすので
詳しく見てみましょう

選択肢を表示しよう

アドベンチャーゲームで選択肢は欠かせませんね。
自分の選択した行動によって物語が分岐していくのは、ゲームの醍醐味です。
ジョーカースクリプトではもちろん、分岐に対応しています。ただ、分岐するだけでなく複雑な条件分岐も可能です。
それでは早速、基本的な分岐のスクリプトを見ていきましょう。

[select_new text="選択肢1" target=*select_a1 ]
[select_new text="選択肢2" target=*select_a2 ]
[select_new text="選択肢3" target=*select_a3 ]

[select_show sound=click ]

[s]

*select_a1
選択肢1が押されました[p]
@jump target=*a_common

*select_a2
選択肢2が押されました[p]
@jump target=*a_common

*select_a3
選択肢3が押されました[p]
@jump target=*a_common

*a_common
共通ルートです[p]

保存して、実行してみましょう。


選択肢によって、表示される内容が変わるのが確認できましたね?

それでは、具体的な内容を見ていきましょう。


[select_new text="選択肢1" target=*select_a1 ]
[select_new text="選択肢2" target=*select_a2 ]
[select_new text="選択肢3" target=*select_a3 ]

[select_show ]


ここが選択肢を登録している部分です。
[select_new]タグで選択肢を定義しています
このタイミングではまだ、選択肢は表示されていません

target属性にその選択肢が選択された時のジャンプ先ラベルを記述します

そして最後に [select_show] のタグが実行されると
select_newで登録していた選択肢が表示されます

今回の例だと、*select_a1 *select_a2 *select_a3 というジャンプ先のラベルが存在します。


最後の[s]タグは重要です。
このタグはゲーム進行を完全にストップさせる効果があります。
クリックされても先に進みません。
つまり何か選択肢をクリックしない限りはゲームが進まない状況にできます
選択肢を表示する場面では必須でしょう


*select_a1
選択肢1が押されました[p]
@jump target=*a_common


「選択肢1」がクリックされると
ラベル「*select_a1」のところに移動してきます。
そして、分岐が終わる時点で[jump]タグを使って共通ルートに戻しています。
(@jump target=*common と [jump target=*common])は同義

共通ルートに戻さないと、そのまま*select_a2の部分が実行されてしまいますので、ご注意下さい。

いかがでしょう?物語を分岐するのも簡単ですね。

シナリオファイルを分けて分岐する

ストーリーが長くなってくると、1つのシナリオファイルで記述していると、長くなりすぎて制作しにくくなってきますよね。
そこでシナリオファイルを複数に分ける方法を見ていきましょう。

先程のスクリプトを修正して、選択肢がクリックされた場合
別のスクリプトファイルに移動して戻ってくるというスクリプトを組んでみます

まず、プロジェクトフォルダの「scenario」フォルダに新しく

・scene2.txt
・scene3.txt


という2つのシナリオファイルを作成してください。
それぞれのファイルの内容ですが

scene2.txt *select_a1
「選択肢1」がクリックされました[p]
@jump file=wide/scene1 target=*a_common



scene3.ks *select_a2
「選択肢2」がクリックされました[p]
@jump file=wide/scene1 target=*a_common



scene1.ks *select_a1
選択肢1が押されました[p]
@jump file="wide/scene2" target=*select_a1

*select_a2
選択肢2が押されました[p]
@jump file="wide/scene3" target=*select_a2


それでは実行してみて下さい。

選択肢を選択すると別のファイルに処理が移り、その後「scene1」に戻ってきて 「別ファイルから戻って来ました」というメッセージが表示されました


(ラベル名が指定されていない場合は先頭から実行します)
(file属性が指定されていない場合は、同一ファイルとみなされます)

いかがでしたでしょうか?

次回は音楽や効果音を学びます


>>次:「音楽を鳴らそう」へすすむ