「マインスイーパーを作って。」の一文から、Windowsで遊べるまで

ゲームを作らせてみた

Astraでゲームを作れるらしい。それなら、自分でも試してみよう。

最初は、誰もが知っているゲームにしました。ルールを細かく説明せず、名前と開発環境だけを渡します。AIがどこまで仕様を補い、実際に遊べるところまで進められるかを見るためです。

Codexに渡した指示は、本当にこれだけでした。

Unity 2DでWindows用のマインスイーパーを作って。

結果から言うと、Windows用の配布パッケージを作り、スタンドアロンで起動するところまで到達しました。ただし、この一文を送ってから何もせず待っていれば、すべて済んだわけではありません。ゲーム本体よりも、Unityを入れて開くまでのやり取りに、人間向けの説明の難しさが出ました。

※Astraは、ChatGPTを提供するOpenAIのAIモデル「GPT-6 Astra」です。今回は、ファイルの作成やテストをAIに任せる開発ツール「Codex」で使っています。AstraとCodexとは。

制作・動作確認はWindowsのPCで行っています。筆者の使用環境と、macOS・Linuxなどで手順を読み替える際の案内は、準備編をご覧ください。

完成したマインスイーパー

Windowsで動くマインスイーパーです。盤面をクリアした状態で、旗・難易度・タイマー・ベストタイムが確認できます。

今回は、何を試したのか

このシリーズでは、Codex上でAstraに開発を任せ、できたものを私が使って評価しています。一般的な開発環境はありますが、Unityは入っていない状態から始めました。詳しい背景は「私とAIコーディング」にまとめています。

一方で、今回確かめたかったのは、自分で実装を仕上げる力ではありません。AIへ短く依頼し、必要なら質問や追加指示を返すことで、どこまで先へ進めるかでした。

マインスイーパーは、既知のルールをAIに補ってもらうための題材です。ここで作れたからといって、まだ説明していない独自仕様まで読み取れるとは限りません。その違いは次の実験で見ます。

指示していない機能まで、一通りそろった

AIは最初に、盤面生成、旗、タイマー、難易度選択を備えたものを作ると説明しました。その後、初手と周囲の安全、連鎖開放、周囲の一括開放、ベストタイム保存まで仕様を補いました。

会話記録にある初回の実装報告は、次の内容でした。

項目 AIが実装したと報告した内容
表示 日本語UI、3段階の難易度
操作・ルール 旗、連鎖開放、初手の安全保証
記録 タイマー、ベストタイム保存
出力 Windows x64向けのビルド機能

こちらは難易度を3つにしろとも、ベストタイムを保存しろとも言っていません。「マインスイーパー」という名前から、ゲームとして必要そうな機能を組み立ててきました。

外部チャットには、この段階で「5分で作りよった」と感想を残しています。ただし、この5分は私のその場の反応です。環境構築やスタンドアロン起動まで含めた総所要時間ではありません。

テストは進んだ。しかし、Unityはまだ入っていなかった

AIは、300種類の盤面で170,009件のチェックに合格したと報告しました。対象は初手の安全性、旗、一括開放、クリア判定などです。

ここで重要なのは、同じ報告に「Unity Editorがないため、Unity上の動作確認と.exe生成は未実施」と書かれていたことです。

つまり、この時点でできていたのは、ゲームのプロジェクトとルール部分のテストでした。画面を開いて遊べることや、配布用の実行ファイルができたこととは別です。テスト件数も、この会話でAIが報告した値として扱います。私がここで全件を独立に検証したわけではありません。

私からは、こう聞き返しました。

Unity入ってないけど、どうすればいい?

開発作業をするAIにとっては「Unityで開いてください」で済むかもしれません。しかし、こちらはそこからが分かりません。プロジェクトが作られていることと、利用者が起動できることの間には、まだ作業が残っていました。

Unityの案内は、途中で訂正された

最初の案内では、Unity Hubを入れ、Unity Editorの2022.3.62f1を使うよう説明されました。

操作に迷ったらスクリーンショットを撮り、Codexにアップロードして、「CLIを起動する必要があるのか」「今はこの画面だが、どれを選ぶのか」と質問しました。途中でUnity 6.6がインストール済みと分かり、それを使う方針に変わりました。

Unityの操作画面を添付し、次の操作をCodexに質問した会話

操作画面を添付し、「いまここ」「三択」と質問したやり取りです。画像内の細かな操作画面は、以下の個別画像でも紹介します。

さらに、最初に案内された2022.3.62f1には、当時のUnity Hub画面でセキュリティ警告が表示されていました。AIはその案内を訂正し、インストール済みの6000.6.2f1を選ぶよう説明しました。

これは当時のやり取りであり、この記事で古いバージョンの導入を勧めるものではありません。実験として残したいのは、最初の案内がそのまま通用したわけではなく、画面を確認して訂正する必要があったことです。

Unityのバージョン選択とセキュリティ警告

2022.3.62f1にセキュリティ警告が表示された画面です。インストール済みの6000.6.2f1も選択肢にあります。

次は、指定された文字描画パッケージが見つからず、プロジェクトを開くところで止まりました。私は三択のエラー画面のスクリーンショットを撮り、Codexにアップロードして質問しました。AIがパッケージ指定を修正し、「Retry」を押すよう案内しました。

Unityで必要なパッケージが見つからず、起動が止まった画面

パッケージが見つからずに止まった画面です。Codexが指定を修正した後、Retryを押すよう案内されました。

こうしてUnity Editorは起動しました。そこでも私の質問は続きます。

起動した。ここからどうする

ScenesからMainを開いて再生する、という説明を受けて、ようやくゲームを動かす段階へ進みました。

Unityで再生

Mainシーンを開き、Unity EditorのGame画面でマインスイーパーを再生したところです。

AIは質問すれば案内できるし、自分が作った設定も直せました。ただ、最初から初心者が迷わない説明になっていたかというと、そこは別の評価になります。

今回はUnityが入っていない状態から始めたことも、影響していたのかもしれません。最初から環境が整っていれば、その環境に合わせて、初めからより適した形で進められた可能性もあります。

Unityの外で起動するところまで

続いて、スタンドアロンで動くパッケージにする方法を聞きました。

プロジェクトにはWindows x64向けのビルドメニューが用意されており、そこから出力する手順が案内されました。配布時は.exeだけを渡すのではなく、隣のデータフォルダやDLLを含む出力フォルダ全体をまとめる必要がある、と説明されました。

外部チャットには、私自身が次の反応を残しています。

ま?配布用パッケージまで作成してスタンドアロン起動まで出来たんだが

開発側の会話記録はビルド手順の案内までですが、この発言で、その先の起動を私が確認したことも追えます。AIの「作成しました」だけで終わらず、開発環境の外で起動できるところまで来ました。

作る前後の相談には、別のチャットも使った

マインスイーパーへの開発指示は一文でしたが、何を試すか、次の段階をどうするか、記事として何を見るかは外部チャットでも相談しています。

相談と実装を分ける運用や、利用枠についての考え方は準備編にまとめています。

一文で進んだ部分と、会話が必要だった部分

今回、既知のルールと基本機能は、短い指示からかなり補われました。こちらが一つずつ項目を挙げなくても、マインスイーパーらしい機能がそろいました。

一方で、Unityの導入、バージョンの選択、パッケージエラー、シーンの起動では、スクリーンショットを撮ってCodexにアップロードし、質問する必要がありました。自分が今どこで止まっているかを伝えることは、人間側の仕事として残りました。

次は、既知ゲームの仕様を任せるだけでなく、こちらが追加した独自ルールをどう解釈するかを試します。題材は3Dのブロック崩しです。作ったものを遊び、その感触から修正を頼む段階へ進みます。

次の記事:速くしてもらったら、今度は速すぎた。3Dブロック崩しをAIと調整する

関連記事:Android対応はワンパンだった。Windows版マインスイーパーをGalaxyで遊ぶまでと、APKを配らない理由

ゲーム制作の一覧へ

afさんのAIラボのトップへ

ソース一式と最新バイナリー

この記事で制作したWindows用ゲームの配布ZIPです。ZIPをすべて展開してから、フォルダ内の Minesweeper.exe を起動してください。

最新バイナリーの案内ページから、配布ZIPをダウンロードできます。

コメント

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