Unity×Codexでヴァンサバライクを作る【第8回・完結】プロジェクト整理と仕様書作成を行う | Unity入門の森 ゲームの作り方

Unity×Codexでヴァンサバライクを作る【第8回・完結】プロジェクト整理と仕様書作成を行う

Unity×Codexで2Dヴァンサバライクゲームを作る ~AIでプログラムもドット絵素材も制作しよう~

この記事は「【UnityでAIゲーム制作】2Dヴァンサバライクゲームを作る講座」の第8回です。プログラミングいらず・画像素材も含めて生成AIでゲームを完成させます。

前回は実際に遊びながら気になったところを直したり、ゲームバランスの調整を行いヴァンサバライクの2Dゲームを完成させました。

前回の記事:

Unity×Codexでヴァンサバライクを作る【第7回】スクショで不具合を伝えてゲームを調整する
この記事は「【Unity×Codex】2Dドット絵ヴァンサバライクゲームをプログラム・画像素材ごとAIで作る講座」の第7回です。前回は、BGMと効果音を付けて絵も音もそろったゲームになりました。前回の記事:今回は、実際に遊びながら気になった...

今回は、プロジェクトの中身を整理してあとから見ても分かる状態にします。ゲームは動いていますが、7回分の作業でファイルが増え「どこに何があるか」、「数値をどこで変えるか」がCodexとの会話の中にしか残っていません。これをフォルダの整理、パラメーターの管理そして仕様書という3つの形で残します。

仕様書があればゲームを改造したいときに何を変更すればいいかわかります。使用するAIが変わってもそのAIに情報を渡して開発を引継いでもらうことが可能です。もちろん、途中から人間が制作を引き継ぐ時にも役に立ちます。

ただAIに丸投げしてその後のメンテナンスや改造はできない・・・なんてことにならないようにプロジェクト整理と仕様書作成を行う方法をマスターしましょう!

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

今回やることを確認しよう

今回の流れは次のとおりです。

  1. フォルダ構成を確認して整理してもらう
  2. ScriptableObjectで数値を管理する仕組みを確認する
  3. Codexに仕様書を書いてもらう

作る作業はほとんどありません。Codexに「今どうなっているか」を書き出してもらい、それを読んで整える回です。

フォルダ構成を整理しよう

まずは、Unityプロジェクトの中身です。

今のフォルダを確認しよう

第2回で、ゲーム専用のファイルはすべて Assets/_Game/ の下に置くと決めました。今はその中がこうなっています。


フォルダ 入っているもの
Art ドット絵、タイル、エフェクトの絵、UIの絵
Audio BGM、効果音、環境音、ライセンス文、一覧ファイル
Data キャラや武器などの数値と設定(ScriptableObject)
Prefabs 敵や弾、UIなど、組み立てた部品
Scenes タイトル、キャラ選択、ゲームの3画面
Scripts プログラム。役割ごとにさらにフォルダ分け
Resources 起動時に読み込む素材(ロゴ、背景、フォント、音の一覧)
Settings 描画パイプラインなどの設定

Codexが自分で整理していた

これらのフォルダは、こちらが指示して作ったものではありません。第2回のAGENTS.mdに「ゲーム固有のアセットとコードは Assets/_Game/ 配下を基本とする」と書いておいたので、Codexが作業のたびにこの決まりに沿って置いていきました。

このほかに、作業のたびに作られた Editor フォルダと、確認用のスクショや生成途中の画像がたくさん残っています。ここから整理していきます。

Editorフォルダとは?

Editor という名前のフォルダは、Unityが特別に扱うフォルダです。ここに入れたスクリプトはUnityの編集画面の中だけで動き、完成したゲームには入りません。メニューに自分用のボタンを足したり、Sceneを自動で組み立てたりする「作業用の道具」を置く場所です。

Codexは、Sceneにオブジェクトを置いたりPrefabを作ったりするとき、手で1つずつ置く代わりに「組み立ての手順をまとめたスクリプト」を書いて、それを動かして作業していました。たとえば T015MvpSetup.cs は、T-015のタスクで使うScene・Prefab・データを一度に作るためのものです。どれもUnity上部の Tools > MECHANOID RESISTANCE メニューから動かせるようになっていました。

また、追試の2回目ではTestsフォルダもできていました。こちらはUnityを自動で動かして機能テストを行うUnity Test Frameworkを動かすためのものです。

要らないものを洗い出してもらおう

まずは、消してよいものを洗い出してもらいます。ここでも「まだ消さないで」と付けるのがポイントです。

ゲームの各画面から実際にたどれるファイルを調べて、たどれなかったものを表にしてもらいました。

全部で400件もありました。第4回で作ったドット絵の元画像や、コマに切り分ける前のシート、確認用のGIFなど、作る途中で生まれたファイルがほとんどです。

ライセンス文のように「ゲームでは使わないが人には必要なもの」には、Codexのほうから「削除非推奨」と注意が付いています。

チェックリストで消すものを決めよう

まず置き場所の整理とEditorスクリプトの整理は、別のタスクにしてもらいます。(400件全て見るのではなくフォルダごとチェックをつけていく形です)

できあがったチェックリストは、こんな形です(一部を抜粋)。

今回は、確認用の画像と中間画像は削除、ドット絵の元画像と生成のメタデータは「保管」にしました。あとで絵を直したくなったときに、元画像があると作り直しが楽だからです。

消してもらおう

チェックを付け終わったら、実行してもらいます。

作業用のスクリプトは消してしまおう

最後に、Editorフォルダのセットアップ用スクリプトです。Codexが各回の作業で、SceneやPrefabを組み立て直すために作ったものが12個残っていました。

T-024のチケットでは「使わないものだけ消す」案でしたが、間違って実行すると今の状態が昔の構成に戻ってしまう危険があります。そこで、こちらから方針を伝えました。

12個すべてを削除し、プログラムの中に残っていた「Toolsメニューから再実行してください」という案内文も直してもらいました。Editorフォルダごと無くなり、Assets/_Game は8つのフォルダになりました。

先祖返りとは?

先祖返りは、直したはずのものが、古い状態に戻ってしまうことです。今回のセットアップ用スクリプトは「最初の状態を組み立てる」ためのものなので、第7回で細かく直したあとに実行すると、その修正が消えてしまいます。役目を終えた道具は、残しておくより消したほうが安全です。

 2回目追試でのやり取り ~少し手抜きしてみました~


チェックリストは作ってもらいますが、予めAI側に推奨選択を作成してもらい、ざっと確認して実行してもらいました。

ScriptableObjectで数値を管理しよう

次に、ゲームの数値がどこにあるかを確認します。

ScriptableObjectとは?

ScriptableObjectは、数値や設定をプログラムから切り離して、Unity上で編集できるファイルにしたものです。

たとえるなら、料理のレシピカードです。「炒める」「煮る」という手順(プログラム)はそのままで、「塩は小さじ1」「10分煮る」という分量(数値)だけをカードに書いておきます。分量を変えたいときは、カードを書き換えるだけで、手順を作り直す必要はありません。


 

実際のファイルを見てみよう

Assets/_Game/Data/ の中には、この回の作業を終えた時点で40個のファイルがあります(AIが開発しているので読者さんによって内訳は異なります)。

フォルダ ファイル 決めていること
Characters Guardian、Assault、Fortress HP、移動速度、攻撃力の倍率、初期武器、固有能力、絵
Weapons MachineGun、Missile、Laser、EnergyBlade、Drone 威力、連射の間隔、射程、弾の絵とエフェクト
Abilities Overdrive、MissileBarrage、EnergyShield 効果時間、クールダウン、アイコン
Enemies Walker、Runner、Tank、Boss HP、攻撃力、速度、倒したときの経験値
Upgrades 15個 レベルアップで選べる強化の内容と効果量
Waves 6個 何分から何分まで、どの敵が何体出るか
Stages VerticalSlice 制限時間、中ボスとボスの出現時刻、ステージの広さ(この回で追加)
Encounters EliteTank 中ボスの倍率、色、倒したときの回復(この回で追加)
EnemyAttacks OverseerShot ボスの弾の間隔、ダメージ、速さ(この回で追加)
(直下) LevelTable レベルごとに必要な経験値

たとえばキャラクターの設定は、プログラム側ではこう定義されていました(一部を抜粋)。

[SerializeField] が付いた項目が、Unityの画面(Inspector)で編集できる項目です。[Header] はInspectorに出る見出し、[Tooltip] はカーソルを合わせたときに出る説明です。Guardian、Assault、Fortressの3つのファイルは、この同じ型で、数値だけが違います。

見出しと説明が日本語で付いていると、Inspectorを開いたときに何の数値かすぐ分かります。英語だけで分かりにくいときは、「Inspectorの見出しと説明を日本語で付けて」と頼めば追加してくれます。

数値を変えてみよう

試しにUnity上でGuardianのHPを100から150に変えて、ゲームを再生してみてください。プログラムを1文字も直さずに、HPが変わっているはずです。

第7回で「ゲームが簡単すぎる」と調整したとき、敵のHPやウェーブの内容を変えてもらいました。あれもScriptableObjectの数値を書き換えていたので、プログラムの変更は最小限で済んでいます。


HPはキャラ選択画面ではARMORのバーとして表示されます。このあたりも詳細は人によって異なります。

残りの数値もScriptableObjectに移そう

ただし、すべての数値がScriptableObjectにあるわけではありません。たとえば第7回で決めた「制限時間5分、3分で中ボス、4分でボス」の時間は、Sceneに置いたコンポーネントに直接書かれていました。中ボスの「HP4倍、攻撃1.35倍」のような倍率も講座執筆時はプログラムの中にありました。

こうした数値をCodexに洗い出してもらいます。

続きを読む
このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

今回のまとめ

今回は完成したゲームプロジェクトを後から見てもわかる状態に整えました。

まずはフォルダ構成を整理しました。Codexに使われていないファイルを洗い出してもらい、チェックリストで消すものと残すものを自分で決め、いらないファイルを削除しました。役目を終えたセットアップ用スクリプトも先祖返りを防ぐために消しています。

次に、プログラムに散らばっていた数値を洗い出してもらいチケットにしてからScriptableObjectに移しました。ScriptableObjectに移したので数値の調整がUnity Editor上で完結します。

最後に設計書とは別に、今のゲームがどう動くかを書いた仕様書をCodexに作ってもらいました。整理が終わったあとに書くので、中身が最新の状態です。「まず目次だけ」、「図解を多めに」と頼むことで、確認しながら読みやすいものにできました。

これで2Dドット絵のゲームを企画し、開発し、改善し、整理するところまで一通り終わりました。
次回からは同じ流れで3Dのゲームを作っていきます。

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました