AIゲーム開発研究室

2026-08-19 19:49:00

自然言語による指示だけで、AIはUnityを実装できるのか

ゲーム開発ドキュメント

Unity AI Agentによるゲーム実装実験

自然言語による指示だけで、AIはUnityを実装できるのか

これまで「森のどんぐり大作戦」では、キャラクター、背景、前景、どんぐりなど、ゲームに必要となる素材の制作を進めてきた。

そして今回、いよいよUnityによるゲーム実装へ入る。

ただし、本研究では、人間がUnityを操作し、AIにはC#スクリプトだけを書いてもらう、という方法を目指しているわけではない。

AIにスクリプトを書いてもらい、

人間がGameObjectを作り、

人間がスクリプトをアタッチし、

人間がComponentを追加し、

人間がInspectorを設定する。

それでは、ゲーム実装の主体は依然として人間である。

そこで今回は、さらに一歩踏み込むことにした。

自然言語による指示だけで、AIがUnity Editor内部の実装作業そのものをどこまで行えるのか。

Unity AI Agentを使用して、実際に検証する。


Unity AIを前提としたプロジェクトの作成

今回の実装環境には、

Unity 6.5(6000.5.8f1)

を使用した。

テンプレートには、

Universal 2D

を選択。

プロジェクト名は、

Omusubiyama

とした。

そして今回、特に重要なのが、

「AI Assistantを使用」

をONにした状態でプロジェクトを作成したことである。

 

UnityHub.png

 

今回Unityを使用する目的は、単にゲームを実装することではない。

AIがUnity内部のゲーム構築に、どこまで直接参加できるのか。

それ自体を検証する。


Unity AI Agentの導入

Unity Editorを起動し、

Window → AI → Assistant

からUnity AI Assistantを開いた。

Unity AIを使用するため、今回は14日間の無料トライアルを開始した。

しかし、これですぐ実験開始とはならなかった。

Assistantには、

Checkpoints setup failed

という警告が表示された。


AIにUnityを任せるための「戻り」

Checkpointは、AIがUnityプロジェクトへ変更を加える際、その変更前の状態を保存しておくための仕組みである。

AIによる実装では、

AIに変更させる

だけでは不十分である。

問題が発生した場合、

変更前へ戻れる

ことも重要になる。

画像生成AIによる素材制作でも、生成結果を比較し、必要なら前の状態へ戻ることは重要だった。

Unity実装では、それ以上に「戻り」が重要になる。

そこでCheckpointを使用できる状態にしてから実験を開始することにした。

エラーを確認したところ、Gitが見つからないことが原因だった。

そこでGit for Windowsを導入した。

導入直後にはUnity側で認識されなかったが、PCを再起動したところ、

System(git 2.55.0)

として正常に認識され、

Checkpoints setup successful

となった。

 

40.png

 

これで、AIにUnityを変更させるための実験環境が整った。


実験1 AIにGameObjectを作らせる

最初からゲーム本体を実装させることはしない。

まず確認したいことは、非常に単純である。

自然言語による指示だけで、AIはUnity Editorを実際に操作できるのか。

Unity AI Agentへ、次のプロンプトを入力した。

使用プロンプト

Create one empty GameObject in the current scene and name it AI_Test_Object.
Do not make any other changes.

指示したのは、

現在のSceneに空のGameObjectを一つ作成し、AI_Test_Objectという名前を付ける。

ただそれだけである。

Agentは処理に必要なコードを生成した。

内容を確認すると、

AI_Test_Object

というGameObjectを作成する処理が記述されていた。

実行を許可すると――

Hierarchyに、

AI_Test_Object

が出現した。

 

43.png

 

人間はUnityのメニューからGameObjectを作成していない。

自然言語でAIへ指示しただけである。

Unity AI AgentがUnity Editorを実際に変更できることが確認された。


実験2 Componentを追加し、Inspectorを設定する

GameObjectを作れることは確認できた。

しかし、それだけではゲーム実装とは言えない。

次に確認したのは、

既存のGameObjectをAIが認識し、Componentを追加し、そのパラメータまで設定できるのか。

ということである。

使用プロンプト

Add a Rigidbody2D component to AI_Test_Object.
Set its Gravity Scale to 0.
Do not make any other changes.

Agentは既存の AI_Test_Object を検索し、Rigidbody2Dがすでに存在するか確認したうえで、存在しない場合には追加する処理を生成した。

さらに、

Gravity Scale = 0

を設定する処理も生成した。

実行すると、

AI_Test_Object

のInspectorに、

Rigidbody 2D

が追加され、

Gravity Scale = 0

に設定された。

 

46.png

 

これによって、

GameObjectの生成だけでなく、Componentの追加とInspector相当のパラメータ設定までAIが実行できる

ことが確認された。


AIが止まった?

ところが、この実験中に一つ問題が発生した。

Agentへ指示を出しても、いつまでたっても処理が終わらない。

画面では処理中のように表示されている。

最初は、

PCの性能が足りないのではないか。

とも考えた。

しかし、よく画面を見ると、

Awaiting input...

と表示されていた。

さらに、

Assistant wants to Execute code

と表示され、

人間に、

Deny / View / Allow

の選択を求めていた。

つまり――

AIは止まっていたのではなかった。

人間からの許可を待っていたのである。

しかも、人間がそれに気づかなかったため、AIは長時間、何もせず待ち続けていた。

ここで今回の実験による副次的な発見があった。

AIは非常に辛抱強い。


AIへ与える権限を変更する

Unity AI Assistantの設定を確認すると、

Execute Generated C# Code

が、

Ask Permission

になっていた。

つまり、AIが生成したC#コードを実行するたびに、人間の許可を必要とする設定である。

そこで、

Ask Permission → Allow

へ変更した。

 

47.png

 

すべての権限を無条件にAIへ渡したわけではない。

今回必要となる、

生成したC#コードを実行する権限

だけを変更した。

そして再び実験を行った。


実験3 Colliderを追加し、数値を設定する

次に、既存の AI_Test_Object へBoxCollider2Dを追加させる。

使用プロンプト

Add a BoxCollider2D component to AI_Test_Object.
Set the BoxCollider2D Size to X = 2 and Y = 3.
Do not make any other changes.

すると――

驚くほど速く処理が完了した。

AI_Test_Object のInspectorには、

Box Collider 2D

が追加され、

Size X = 2

Size Y = 3

に設定された。

 

48.png

 

人間はComponentを追加していない。

Inspectorの数値も入力していない。

自然言語による指示だけで、

対象GameObjectの認識
→ Componentの追加
→ パラメータ設定
→ Unityへの反映

までが実行された。

同時に今回の実験では、もう一つ重要なことが分かった。

AI Agentの能力だけではなく、人間がAIへどのような権限を与えるかによって、開発フローそのものが大きく変化する。

これは今後、AIによるゲーム実装を考えるうえで重要な検討事項になる。


実験4 C#スクリプトを作り、GameObjectへアタッチする

最後に、さらに一段階進める。

今度は単なるComponent設定ではない。

AI自身にC#スクリプトを新規作成させ、それをGameObjectへアタッチさせる。

そして実際に動作させる。

Unity AI Agentへ、次の指示を行った。

使用プロンプト

Create a new C# script named AI_Test_Movement.

The script should make AI_Test_Object move slowly left and right automatically while the game is running.

Attach the AI_Test_Movement script to AI_Test_Object.

Do not modify or remove the existing Rigidbody2D or BoxCollider2D.

Do not make any other changes.

今回は、新しいファイルを作成するため、

Create file

の許可を求められた。

これはC#コードの実行とは別の権限である。

ファイル作成を許可すると、Agentは、

AI_Test_Movement.cs

を新規作成した。

さらに、

AI_Test_Objectへ自動的にアタッチ

した。

既存の、

Rigidbody2D

BoxCollider2D

も維持されている。

 

50.png

 

Inspectorにはスクリプトの公開パラメータも表示された。

ここまで、人間はC#コードを書いていない。

スクリプトファイルも作っていない。

GameObjectへのアタッチもしていない。

すべてAIが行った。


AIが作ったゲーム処理を実行する

最後にUnityのPlayボタンを押した。

すると、

AI_Test_ObjectのTransformのX座標が左右へ往復し始めた。

AIが作成したC#スクリプトが、Unity上で実際に動作したのである。

 

51.png

 

今回作ったもの自体は、左右へ動くだけの単純なGameObjectである。

しかし、この実験の目的はゲームを完成させることではない。

確認したかったのは、

AIがUnityの実装作業そのものを担当できるのか

ということである。

その問いに対して、今回の基礎実験では明確な結果が得られた。


今回の実験で確認できたこと

今回、人間は、

C#を書いていない。

Rigidbody2Dを手動で追加していない。

BoxCollider2Dを手動で追加していない。

Inspectorのパラメータを手動で設定していない。

生成されたスクリプトをGameObjectへ手動でアタッチしていない。

人間が行ったのは、

何を実装するのかを決めること。

AIへ自然言語で指示すること。

必要な権限を判断して与えること。

AIが行った結果を確認すること。

次に何を行うのかを判断すること。

である。

一方、AIは、

GameObjectの生成

既存GameObjectの認識

Componentの追加

パラメータの設定

C#スクリプトの生成

GameObjectへのアタッチ

実行可能な状態の構築

を担当した。


人間 → AI → Unity

これまでゲーム実装では、

人間 → Unity

という関係が基本だった。

人間がUnityを操作し、GameObjectを作り、Componentを追加し、Inspectorを設定し、スクリプトをアタッチする。

しかし今回の実験では、その間にAIが入った。

人間

自然言語による実装指示

AI Agent

Unity

という新しい実装経路が、実際に成立した。

これは単に、

「AIにC#を書いてもらう」

ということではない。

人間が実装方針を決め、

AIへ指示し、

AIがUnity内部で実装し、

人間がその結果を確認して次の判断をする。

ゲーム実装における人間とAIの役割そのものが変化する可能性がある。

今回の実験は、まだ非常に小さな基礎実験にすぎない。

複数のGameObject。

ゲーム素材。

Prefab。

Collider同士の関係。

ゲーム進行。

キャラクター制御。

シーン管理。

エラーの発見と修正。

実際のゲーム制作では、これから検証しなければならないことが数多く残されている。

しかし少なくとも今回、

自然言語による指示から、AIによるUnity実装、そして実際の動作までを一本につなぐことができた。

ゲーム素材の制作を終え、

いよいよ「森のどんぐり大作戦」のUnity実装へ入ろうとしていたその入口で、

想定していた以上に大きな扉が開いた。

AIはゲーム開発を支援するだけなのか。

それとも、

人間と役割を分担し、ゲームそのものを実装する存在になり得るのか。

 

ここから、その答えを実際のゲーム制作によって確かめていく。