StoryGraphEditor 11「繰り返し要素をうまく使う」

この記事では、「Bot3D StoryGraphEditor」のテンプレート【クイズテンプレ】繰り返し要素をうまく使うを使います。
前回の記事StoryGraphEditor 10「点数計算をする」で点数計算のあるクイズの作り方を見てみましたが、このテンプレートで紹介しているような繰り返し要素をうまく使うことを意識すると、より効率的な手順でストーリーが作れるようになります。
(この記事は応用編です。それぞれのアクションの詳細な使い方は、ヘルプブログの個別の記事をご覧ください。)

この記事のサンプル

「Bot3D StoryGraphEditor」ではいろいろな便利な機能をシンプルに使えるように、様々なテンプレートが用意してあります。
画面左上の「テンプレートから作成」を押します。 テンプレートが表示されるので、【クイズテンプレ】繰り返し要素をうまく使うをクリックして開きます。 ことばの説明:このテンプレートの説明では以下のことばを使います。
  1. 会話ボックス:
    このグレー地の箱は、アクションをひとまとめにするものです。アクションとは、「Botにさせること」です。いろいろなことをさせることができます。
  2. "変数操作"アクション:
    "変数操作"と書いてある、この青色の箱(アクション)は、変数を定義したり、文字や数値を覚えさせたり計算させたりといった変数操作ができます。
  3. "Botのセリフ"アクション:
    "Botのセリフ"と書いてある、このオレンジ色の箱(アクション)は、この中にセリフや絵文字を書くことでBotをしゃべらせることができます。また、変数を入力をすることで、変数の値をセリフとして読み上げることができます。
  4. "通過回数でふりわけ"アクション:
    "通過回数でふりわけ"と書いてある、この緑色の箱(アクション)は、ある会話ボックスを何回通ったかをカウントして、ストーリーを分岐することができます。
  5. "条件一致でふりわけ"アクション:
    "条件一致でふりわけ"と書いてある、この緑色の箱(アクション)は、変数の値を判定して、ストーリーを分岐することができます。

基本操作のおさらい

簡単に基本操作のおさらいをしましょう。
テンプレートをカスタマイズするときに一番重要なのは、9番の、ストーリーのいちばん最後の会話ボックス「終了ボックス」につなげることです!

繰り返し要素をまとめてアクションを共通化する

それではテンプレート【クイズテンプレ】繰り返し要素をうまく使うを開いて一度保存し、どんなふうに「Bot3D Player」で再生されるか見てみましょう。
再生の仕方はStoryGraphEditor クイックヘルプ:Bot3DPlayerで見る方法をご覧ください。
1問25点の問題が4問だされます。問題が終わったら、総合得点の結果発表をして、点数によって最後のメッセージが変わります。 問題と回答と集計と結果判定という構成は、StoryGraphEditor 10「点数計算をする」で紹介した、【クイズテンプレ】点数計算をするの内容と何も変わらないように見えますが、今回の【クイズテンプレ】繰り返し要素をうまく使うとどう違うのか、ストーリーグラフファイルを比較して見てみましょう。

以下は、【クイズテンプレ】点数計算をするのファイルです。
ずっと横に、問題・回答、正解不正解、点数加算、問題・回答、正解不正解、点数加算、と作っていけばいいのでわかりやすいのですが、同じような正解不正解・点数加算のアクションを何度もつくらなければならないので若干面倒です。
また問題文の順番をいれかえるのが大変です。 さて、こちらは今回の【クイズテンプレ】繰り返し要素をうまく使うのファイルです。
正解不正解・点数加算という繰り返し出てくる要素を共通化しており、基本的に問題・回答だけを縦にふやしていけばよい作りになっています。
また後述しますが、通過回数で出す問題を変えているので、 "通過回数でふりわけ"アクションのコネクタをつなぎ変えれば出題順が変えられるメリットもあります。

"通過回数"でストーリーを制御する

この【クイズテンプレ】繰り返し要素をうまく使うのヒミツは、 "通過回数でふりわけ"アクションを使って、ストーリーがループする作りになっているところにあります。
ループしているので、共通部分を共通化しやすいんですね。ストーリーの流れを見てみましょう。

  1. まず「通過回数判定」と書いてある会話ボックスの中の"通過回数でふりわけ"アクションを通ります。
    この時、通過回数は1なので、Q1へストーリーが分岐します。
  2. 回答後、共通化された正解・不正解処理を通ります。
  3. 「終了判定」と書いてある会話ボックスの中の"条件一致でふりわけ"アクション変数"isEnd"の値を判定しています。
    通常、変数"isEnd"は0に設定されており、一番最後の問題文を通ると1になります。
    今回は1問目なので、終了判定は、変数"isEnd"が0で、そのまま「次へ」と書いてある会話ボックスへ行きます。
  4. いちばん最初の"通過回数でふりわけ"アクションにループしてもどります。
次はループして戻ってきて2周目の流れです。
今度は"通過回数でふりわけ"アクション通過回数は2なので、Q2へストーリーが分岐します。
この場合も、共通化された正解・不正解処理を通り、終了判定を通ってループします。 3周目も同様で、下の図は、最後の4周目です。
今度は"通過回数でふりわけ"アクション通過回数は4なので、Q4へストーリーが分岐します。
この場合も、共通化された正解・不正解処理を通り、終了判定では変数"isEnd"が1になったので、ループからぬけて得点集計を通って、終了ルートにぬけます。

このストーリーの構成のポイント

今回ご紹介した作り方についてまとめると、

  1. ループさせて"通過回数でふりわけ"アクションを使えば、問題を次々と進められる
  2. ループの中で繰り返し使うアクションを共通のルートにすれば、作成が効率化できる
  3. ループからぬけるためには、最後のルートを通ったことがわかるように変数の値を変えて終了判定する
というのがポイントなんです!
ちょっとプログラムちっくですが、通過回数や変数を使って繰り返し要素をうまく使えば、工夫次第で効率的でメンテナンスしやすいストーリーが作れますので、ぜひテンプレート【クイズテンプレ】繰り返し要素をうまく使うをカスタマイズして、挑戦してみてくださいね!