論争ゲームシステムの組込み【Unity】

絶対調味ロジック

ノベルパートに、ちょっとしたゲーム性を取り入れようと考えていた「論争パート」です。
試作ということもあって、内部的には「+1」「-1」などの単純計算システムを目指しました。

システムについてAiと議論

以前にも論争ゲーム性についてはAiに相談していましたが、「肯定ばかりしない」設定にしていたこともあり、
「シンプルでこんな感じのゲーム性を作ろうと思っていて」から始めると、
「それだとプレイヤーが楽しめるのか?」とか「シンプルというけれどそれだと矛盾が起きる」とか
議論が白熱してしまって、なかなか決まらないといった具合でした。

肯定しかしないAiを変える方法はAiカスタム指示・お役立ちプロンプトで詳しく紹介しています。

なんとか、これだと判断したシステムを用意。

再びAiに構築を頼んだところ、また難航…

良く分からないから頼んでいるのに、最低限の仕様を考えて教えてくれと言われて、ぐぬぬ!状態に…
それでも、
想定している制作方法とシステム構築をきっちり伝えて、5つのスクリプトからなるシステムを構築してくれました。

想定システムは、ラウンド制の正解・不正解バトルです。
意見に対して、反論を選び、それが正解(+1)か不正解(-1)でスコアが変動して1ラウンド終了になります。

  • 探索パートで取得した反論パーツのみを表示
  • スコア0から始まり、正解で+1、失敗で-1
  • スコア管理の方法
  • 正解・不正解のジャッジシステム
  • スコア増減に応じて、矢印オブジェクト移動
  • 4ラウンド終了時点で+3以上で、最終ラウンドへ

とりあえず、必要システムを構築してもらったので、各オブジェクト・各スクリプトを用意して組み込めば、
論争ゲームの完成!になるはずです。

画面と素材作り

画面のアタリを決めて、素材を作り、Unityで配置していきます。

UIと通常オブジェクトの重なり順

システム構築以外での第一関門は、すぐにやってきました。

Unityの性質上、「UI」と「通常オブジェクト」の重なり方が思い通りにいかないのです。
UI」オブジェクトは常に最前列に表示されるため、それをかいくぐってキャラクターを上に表示させる必要があります。

UIを扱う「Canvas」のカメラ設定とレイヤー設定を変更して、キャラクターを最前列にすることができました。

できたのですが、今度は下の「タブボタン」が隠れてしまっています。
「矢印」は、「文字」も、「ボタン」は、みたいな自由度高く配置する設定が今のところ分からなかったので、
今回はすんなり諦めました。

この表示方法についてはUIの手前に通常オブジェクトを表示させるで詳しく解説しています。

使用フォントを複数登録

第二関門です。

この段階で、数種類の「フォント」をUnityに取り込んで、キャラクター毎に使い分けようと目論んでいました。
しかし使用フォントのデータ量の問題で、あまり多くのフォントを使わないほうが良いとも聞きかじっていました。

ゲーム内で使っていない文字などを取り除いてフォントデータを軽くすればいけるだろうと甘く考えていたのですが、
テキストメッシュでの使用方法にもプロ視点があり、
やり方が、なんやかんや立て込んでいたので、今回はこちらも見送ることにしました。

というわけで、意見・反論のテキスト部分は、力業の「画像データ」での出力となりますw

妥協案での画面作り

重なり順」と「複数フォント」を諦めて、想定メイン画面を作りました。
開発者が思い描く、ほとんどの挙動が実現できるとは思うので、Unity知識の浅さがここらへんで出てしまいますね。

まぁ、実装に「力業」を使う、は製作者あるあるだとは思いますので、良しとしましょう(≧∇≦)

システムの組込み

画面が出来上がったので、作ってもらってあった「論争システム」を組み込んでいきました。

案の定、うまく動かず、そもそもスクリプト内での割り当てや役割をすべて理解していたわけでもありません。
当時に想定していたオブジェクト配置も変わってしまっています。

なので、基軸をそのままに、改めてシステムを構築してもらいます。
今回は怒られないように詳細を伝えて、こちらもスクリプトの挙動を把握しやすくする作戦にでます。

ヒエラルキーのオブジェクト配置とその役割を書き出しました。
どのシステムスクリプトをどのオブジェクトにアタッチするかなども把握しやすくします。

結局、いろいろ怒られながらも、既存のヒエラルキー構造を保ったシステム構築をしてもらいました。

今回のことで、ゲーム性を構築するにあたり、
Aiにどのくらいの準備をしておくか、どのくらいのことを伝えるか、ということが学べたので勉強になりました。

システム用オブジェクトの指定場所やスクリプト内記述の認識違いの気付きなどを経て、
最初に想定していたゲーム挙動を実装することができました。
単純なものでも、なかなかに大変ですね。

今回の構築はここまでになりましたが、Aiと話し合っている中で、将来を見据えた提案もありました。
その通りのことを考えていたので、驚きと頼もしさを更に感じてしまいました。

これで「ノベルパート」「探索パート」「論争パート」の土台ができあがりました。
システム設定「セーブロード」「バックログ」「早送り」「音量調整」などを構築しなければ、
ゲームループまでは持っていけるのではないでしょうか。

現段階でいろいろと懸念点があり、作業自体も遠回りになりそうですが、
とりあえずゲームループ完成を目標としてみます。

コメント