生成AIでゲームを作る舞台裏
自分でゲームやいろいろな素材を作ろうとしている人の参考になるかもしれないので、生成AIで実際にゲームのコードを作成していった過程を「リバーシ」を作成していった事例をもとに説明します。
【ゲームコード作成のスタート】
まず最初にこういうように切り出しました。相手はGemini君です。
私「次のゲームを作りたい。index.html style.css script.js を書いてほしい。テーブルに正方形の盤があります。薄い緑で8×8のマスの線が引かれています。
初期配置(並べ方)
最初に中央の4マスに白と黒の〇が、それぞれ2つずつ互い違いに置かれているところからスタートします。
具体的には、右上が黒、左下が黒、左上が白、右下が白となるように配置します。まず、黒のプレイヤーが先に盤上のマスをクリックします。すると黒い〇が表示されます。
相手の石を挟むと、挟んだすべての石が黒く表示されます。次に白がどこかのマスをクリックします。白い〇が表示されます。相手の石を挟むと、挟んだすべての石が白く表示されます。
以下交互に打っていきます。・・・・そのあと細かいルールを補足・・・
相手の石を挟める場所がない場合は「パス」となり、相手の手番になります。なので「パス」のボタンが必要です。
盤面が全て埋まるか、両方のプレイヤーが打てる場所がなくなった時点でゲーム終了です。「ゲーム終了」ボタンも用意してください。
勝敗は最終的に自分の色の石が盤面上で多い方のプレイヤーが勝ちとなります。終わったら、白、黒の石の数が表示され、勝者が発表されます。」
以上のようにけっこう細かく規定してお願いしました。
【Gemini君の対応①】
これに対して以下の返事がありました。
「リクエストありがとうございます!リバーシのようなゲームのコードですね。承知いたしました。HTML、CSS、JavaScriptをそれぞれ以下に示します。・・・」と3種類のコードが示されました。
【示されたコードをPCで検証】
提示されたindex.html style.css script.js を1つのフォルダに入れて、index.html を実行して検証した結果はほぼよかったので、検証した結果を報告。
【次のバージョンアップをお願い】
次に、スマホでの検証ではうまくいかなかったので、スマホバージョンの作成を依頼。
【Gemini君の対応②】
スマホバージョンを作成して、コードを提示
【裏返る演出の改良を依頼】
PC版で取った石が裏返る際の演出を希望
【Gemini君の対応③】
演出として、少し時間をかけて裏返す方法を提案してきて、そのコードを提示
【いくつか試行錯誤のやり取り】
Geminiの提案を検証しながら改善を3回ほど繰り返した。
【6×6マスバージョンの依頼】
小さい子供向けに6×6マスの小さいものを作ってほしいと依頼。
【Geminiの対応④】
改良版のコードを提示
【初期画面のシャッフルを依頼】
初期画面がいつでも同じでなく、毎回変わるように依頼
【Geminiの対応⑤】
提案のコードを作成
【白番を自動で打つモードの依頼】
白番は、人間でなく自動で打ち返せるか聞いてみたら、ランダムに選ぶ方法と、セオリーにそう方法の2種類でできるという返事。
そこで、まず6×6マス版でランダムな自動モードを依頼。
【Geminiの対応⑥】
6×6マスの自動モードのコードを作成
【セオリーにそうモードの依頼】
ランダムモードがうまく行ったので、セオリーにそうモードも依頼
【Geminiの対応⑦】
セオリーにそう自動モードを6×6マスで実装のためのコードを提示
【PC版とスマホ版にセオリーにそう自動モードを依頼】
PC版とスマホ版にセオリーにそう自動モード実装を依頼。なお、ここでは以前作成したスクリプトとの混乱が懸念されたので、ベースとなる既存のスクリプトも提示した。
【Geminiの対応⑧】
PC版とスマホ版にセオリーにそう自動モード実装のためのコードを提示。
【まとめの感想】
★最初に提示するフレームはかっちりと伝えたほうがよい
★簡単なものから順にレベルを上げていくと混乱が少ない
★AIが何をできるかを聞いてから頼む方が、スムーズにできる
★混乱しそうになったら、既存のコードも添付するほうが無難
生成AIは、うまくお願いをしていくことで、どんどんいいものにしていってくれますね。うまく活用していきましょう。