Power Virtual Agentsでドラ○エIII風性格診断作ってみた
Power Virtual Agentsでドラ○エIII風の性格診断Botを作ってみました。
ドラ○エIIIの性格診断って?
ゲームを始める際にいくつか質問に答えて、主人公の性格を決めます。
性格によって、パラメータの上がり方が変わったりする面白いシステムです。
今回はこの仕組を借りて、Power Virtual Agentsで作ってみました。
ブロック分け
再現するにあたって、いくつかのブロックに分けることにします。
・始めの質問部分
・最後の質問 x 8
質問の内容によって最後の質問が変わるので、そこまでの部分と最後の質問とで分けることにしました。
それぞれでTopicsを分けて作っていきます。
ドラ○エIIIの性格診断の仕組みについて
今回の性格診断の仕組みについて軽く解説を。
ドラクエIIIの性格診断では、質問の回答によって次の質問が変わってきます。
また、固定で10問とかではなく、質問の回答に応じて合計の回答数も変わってきます。
先に説明したように、回答の内容によって最後の質問も変わってきます。
あとは質問の道程は無関係に、最終的なルートに応じて性格が決定されます。
多少違うルートから来ても、最終的な質問と答えが一緒であれば同じ性格になります。
質問を作る
ここからは実際に作っていきます。
質問を作成するには、+を選んでから
Ask a Question を選びます。
回答の方法にはいくつか種類がありますが、今回は
YES/NOで回答して欲しいのでIdentifyからBooleanを選びます。
そうしたら、Ask a questionの欄に質問を入れて、質問は完成です。
分岐を作る
次は回答の内容によってルートに分岐を作っていきます。
+からAdd a conditionで分岐を作ることができます。
すると、こんなふうになります。
そしたら、左の方のConditionをいじっていきます。
Select a variableとなっているので、Var1を選択。
Is equal toはそのまま。
3つ目の欄をTrueとします。
これで質問にYESと答えたら左の分岐へ。NO(それ以外)なら右の分岐へ流れていきます。
非常に簡単でわかりやすいですね。
ちょっと解説
Questionのところ。下の方に「Save response as」「Var1(Boolean)」と書かれています。
これは「質問の回答をVar1という変数(入れ物)に入れますよ」と書いてあります。
また、Conditionの方では1つ目の欄でVar1を指定しました。これは、
Var1の値を見ていますよ、ということを表しています。
2つ目の欄は"条件"を表しています。Is equal to は「イコールだったら。」Var1とイコールだったら・・・という事が書いてあります。
3つ目の欄は「何と?」ですね。Var1 と 「何が」イコールだったら、ここの分岐に来るの?ということを表しています。先程Trueとしましたが、全体では「Var1(質問の回答)がTrue(YES)とis equal to(イコールだったら)ここの分岐に来る」ということを表しています。
右の方のConditionは、それ以外の場合に行きます。今回はNOのときのみ該当します。
コレを繰り返していく
コレを何回か繰り返して性格診断の仕組みを作っていきます。
特徴として、次のルートは自由に変更することができます。線を掴んで、クイッとすれば接続先を変えられます。非常に直感的でわかりやすい。
他のルートに合流して回答を再利用することもできますし、無限ループを発生させることもできます。自由度も高いですね。
今回は同じ質問は作らず、ルートのやりくりで対応しています。
ルートの線を見ると結構複雑な感じですが、やってることはかなり単純で特に難しいことはありませんでした。
例)カンダタ無限ループ(今回は使ってない)
例)ルートのやりくり
最後の質問へジャンプ
最後の質問に移動できる段になったら、Go to another topicsから作成済みのtopicを選択して、最後の質問トピックに移動させます。(まだ作ってない場合は後ほど設定)
最後の質問を作成する
こちらもあまり変わりませんが、YES/NOで答えられないものもあるため、選択肢をこちらで用意することにしました。
こういったときにはMulltiple choice optionsを使用します。
New optionを選択すると選択肢を増やすことができます。2つ以上作成することも可能です。
回答の分岐も同様に、
・変数を選んで、
・条件を選んで、
・何と比べるか選んで、
分岐の作成完了です。
結果表示
最後に診断結果を表示して、完了です。
コレも最後の質問の分だけつくっていきます。
厳しかったこと
今回質問や分岐などを含めると1トピックで100以上のカード?アクション?を使いました。多分150とかいってます。
なのですが、数が増えてくると動きがもっさりしてきます。ちょっと耐えかねるレベルでした。
まぁ普通に使用していたらこんなに大きくなることはないでしょうし、なるべくTopicsは分割してモジュール化したほうが再利用性もメンテナンス性も向上するので、そのようにすべきと思います。
エラーで落ちるようなことはありませんでしたが、やりすぎに注意しましょう。
ちなみに動かす分には問題はありませんでした。
デモサイト
デモサイトで公開することもできるのですが、怒られそうなのでやめておきます。
勉強会とかで声をかけてもらえれば、全然お見せします!お気軽にお声がけください~。
感想
Power Virtual Agentsを触ってみた感想としては、かなり直感的で誰でも作れそうだということ。それから全体的にユーザーフレンドリーだなと感じました。なんというか、親切。本当に誰でも作れると思います。
下記の参考リンクから試せると思うので、ちょっとでも興味があるなら是非触ってみてほしいです。
要望としては、変数を自分で作成できるようにして欲しい。現状だとユーザからの回答か、Power Automateからの応答しか変数に入れることができない。Power Virtual Agents編集画面で自由に変数を作成させて欲しい。多分難しいんだろうけど。
参考リンク
Power Virtual Agents