1. 概要
前回に引き続き、AIを活用して、Unityを使用してPC専用のシューティングゲームを実装しました。
筆者はUnityを使ったゲームを実装するのは初めてで、最初は何をしたらよいかわかりませんでした。
そこで、まずこちらのUnityの実装方法を紹介するブログを参考に実装に着手し、Unityでのゲーム実装の基本が把握できたところで、具体的なシューティングゲーム部分のアレンジをAIを活用しながら進めて、アプリを完成させました。
本アプリは8時間程度で完成しました。
2. ゲーム
ゲーム
今回のゲームはPCブラウザ上で直接プレイしていただけます。
このゲームは、戦闘機がスペースデブリを破壊した際に獲得したポイントの多さを競うゲームです。
戦闘機がスペースデブリに衝突して爆発したらゲームオーバーとなります。
スペースデブリを上手く回避しながら、より多くのスペースデブリを破壊してスコアを稼ぎましょう!
※画面を一度クリックし、画面にフォーカスを当てた状態でご利用ください。
操作方法
操作方法は下記の通りです。
- 左矢印:左移動
- 右矢印:右移動
- Spaceキー:弾を発射
3. ゲーム説明
ゲーム概要
このゲームは、戦闘機がスペースデブリを破壊した際に獲得したポイントの多さを競うゲームです。
戦闘機がスペースデブリに衝突して爆発したらゲームオーバーとなります。
スペースデブリを上手く回避しながら、より多くのスペースデブリを破壊してスコアを稼ぎましょう!
スペースデブリの紹介
スペースデブリには2つの種類があります。それは、破壊可能なスペースデブリと、破壊不可なスペースデブリです。
破壊可能スペースデブリ

破壊不可スペースデブリ

ゲームプレイのヒント
破壊可能なスペースデブリを1つ破壊すると10ポイント獲得できます。
各スペースデブリの落下速度はランダムです。
時間の経過とともに、1秒あたりに出現するスペースデブリの数が増加します。場合によっては、あえてスペースデブリを破壊せずによけることも戦略の一つです。
注意事項
このゲームは継続的な保守は予定しておりません。
4. 実装にあたっての所感
実装初期段階はブログを参考に実装
私は今回の実装がUnity初挑戦でした。
Unityの設定が終わってから画面を開きましたが、何を実施してよいのか全く分かりません。そこで、何かお手本を元に作ってみることで、アプリケーションを完成させることとしました。
Google検索していたところ、下記のブログを発見しました。ブログで紹介しているゲームはシューティングゲームだったため、シューティングゲームを作ってみることにしました。

参考にしたのは、このブログ記事シリーズの第1回から第4回までです。
ゲームのアレンジ
基本的な実装方法がわかった段階で、ブログ記事の実装をなぞることから、ゲームをアレンジする方針に切り替えました。
アレンジにはAIを活用しています。アレンジした点は主には下記の通りです。
- ロケットは戦闘機に変更(昔プレイしたことのあるファミコンのゼビウスを思い出して)
- 落ちてくるものを隕石からスペースデブリに変更。加えて、落下物は1種類ではなく2種類に変更。片方は破壊可能デブリ、もう片方は破壊不可デブリとした。
- 上記ブログでは隕石が画面一番下まで落ちるまでに隕石を破壊できなかったらゲームオーバーとなっていたが、このゲームでは戦闘機がスペースデブリに衝突したらゲームオーバーとする仕様に変更した
- 戦闘機が画面外に出ないように、移動可能範囲を設定
- スペースデブリの1秒当たりの出現数は、ゲームプレイ時間が増えるにしたがって増える仕様に変更
AIの使用ポイントとそうでないところ
AIは下記のような点で使用しました
- 自分が実装したい内容をプロンプトを使って提示し、それは何の機能を使用したら実装できるか確認するため
- 個別命令・設定方法の確認(AIから得られた回答を元に、必要に応じて技術ブログを参照)
- 戦闘機、スペースデブリデザインの出力
下記のような点ではAIを使用しませんでした
- Unityのオブジェクト(戦闘機、スペースデブリ、弾、爆発エフェクト、プログラム関連付けなど)の設定作業(AIでのカバーが難しい範囲だったため、手動で実施)
- オブジェクトの当たり判定の調整など、実際に人間がプレイして気持ちいいと感じる部分の細かい調整(AIでの調整が不可能な範囲であるため)
- プログラムの分割(AIが苦手とする分野であるため)
5. 実装を終えた所感
今回は、AIを利用してUnityをベースとしたシューティングゲームの実装をしました。
私自身がUnityに不慣れなこともあり、Unityの基礎知識の部分で少し苦戦しましたが、ベース部分を整えられた後は、AIの補助を活用しつつ、ゲーム仕様のアレンジに加えて、完成まで持っていくことができました。
一方で、以下の部分では、AI活用があまり上手くできそうにありませんでした。
- Unityのオブジェクト(戦闘機、スペースデブリ、弾、爆発エフェクト、プログラム関連付けなど)の設定作業
- オブジェクトの当たり判定の調整など、実際に人間がプレイして気持ちいいと感じる部分の細かい調整
- プログラムの分割
今回ではUnityでの実装が初めてだったこともあり、ステップ・バイ・ステップで、少しずつプログラムに修正を加えるような手続きでのAI活用に留まりましたが、次回はより効率的な実装方法や、今回AI活用があまり上手くできなかった領域などでのAI活用方法を深堀ってみたいと思います!