AIとゲームを作る:オリジナルゲームは難しい?プロンプトの重要性

AI

この記事では、Google のAI Google GeminiのCanvasという機能を使って、簡単なゲームが作れるか試してみました。

今回は、AIが作ったプログラムコードは、ぜんぜんイジらずに、AIとの会話だけでゲームを完成させることに挑戦です!

プログラミングの知識がない方でも、気軽に読んでもらえると嬉しいです。

まずは、「テトリス」や「ブロック崩し」など、有名なゲームが簡単に作れるかを試し、次に、AIがまだ学習していないオリジナルのゲームを作れるかを試してみました。

AIを使えば、オリジナルゲームの開発って、誰でも簡単にできるようになるのかな?

それとも、やっぱり難しいのかな?

この記事では、特に、AIにゲームのアイデアを伝えるための「プロンプト」が、どれくらい大切なのかを、具体的な例を交えながら解説していきます。

Geminiに定番のゲームを作ってもらう

まずは、定番のゲームの作成をお願いしてみました。

具体的には、テトリスブロック崩しといったものです。

Geminiに「Webブラウザで動くテトリスを作って」「ブロック崩しを作って」というように、とてもシンプルな言葉でお願いしたところ、これらのゲームのコードをすぐに作ってくれました。

しかも、作られたコードは、どれもそのまま動いちゃうんです!

もちろん、ゲームとしての完成度は高くなく、グラフィックやサウンドは、必要最低限のものしかありませんでしたが、ゲームの基本的な機能は、ちゃんと入っていました。

ただ、これらのゲームを、もっと面白くするためには、いくつかの調整が必要でした。

たとえば、テトリスのブロックが落ちる速さを変えたり、ブロック崩しのボールの速さや角度を変えたりする作業ですね。

AIが作ったコードをベースに、GeminiのCanvas機能を使うことで、ゲームの見た目や動きをリアルタイムで確認しながら、AIと協力して調整することで、とても短い時間でゲームを仕上げることができました。

やっぱりGemini Canvasはすごい!

Gemini Canvasについては、以下の記事で解説していますので、ぜひご覧ください。

またWebページの簡単な作り方や基礎についての記事を書きました。

オリジナルゲームの作成に挑戦

次に、AIが学習していないであろう、オリジナルゲームの作成に挑戦してみることにしました。

お題は、「宇宙船からUFOを撃ち落とすゲーム」です。このゲームのアイデアをGeminiに伝え、コードを作ってもらうように依頼しました。

このゲームの基本的なアイデアは、プレイヤーが宇宙船を操作し、砲撃の照準モニターを動かしながら、UFOを撃ち落とすというものです。

以下は、最終的に完成したUFO撃墜ゲームのプレイ動画です。

また、ゲームは以下から試せますので、よかったらプレイしてみてください。

UFOシューター

でも、最初は思うように動かなかったんです。

最初のプロンプト(指示)が、あまりハッキリしていなかったため、Geminiが作ったゲームは、私のイメージとは大きく異なるものでした。そもそも、ゲームの画面イメージが大きく異なっていて、さらにスタートボタンを押しても、何も動きませんでした。

以下は、プロンプトの一部です。

宇宙船内のプレイヤーが、敵のUFOを撃って破壊するゲームをJavaScriptで作りたい。
プレイヤーは、砲撃のモニターの方向を変えながら、UFOに照準を合わせ撃破する。
モニターは、5×5の合計25個の長方形で構成される。
ゲーム画面の大部分は、その25個の長方形です。
プレイヤーは、方向キーを操作して砲撃の方向を変え、UFOを照準に合わせる。
方向キーを1回押すと、1個の長方形分、方向を変えることができる。

ここで分かったのは、自分のイメージをAIに正確に伝えることの難しさです。

頭の中にある、なんとなくのアイデアを、具体的な指示に落とし込む作業は、簡単ではありません。

ゲームの目的、ルール、操作方法、登場するキャラクターの動き、背景の世界観など、様々な要素を詳しく説明する必要があると思われます。

最初からすべてを伝えようとするのは、一旦やめて、まずはゲームのステージを作り、次に敵を配置する、というように、段階的に指示をすることにしました。

でも、それでも、出来上がったものは、私のイメージしていたものとは違ったものになってしまいました。

Gemini 2.5 Pro で試してみる

オリジナルゲームの作成に苦戦する中、Geminiの新しいバージョンである2.5 Pro (Experimental)でもCanvas機能を使えるのを知り、試してみることにしました。

2.5 Proは、より高度な自然言語処理能力を持ち、より複雑な指示を理解し、より高品質なコードを作ることができるとのことです。

そこで、2.0 Flashで使用したのと同じプロンプトを、2.5 Proに入力したところ、なんと、一発で私のイメージに近いゲームが作られたのです。

2.5 Pro、本当にすごい!

ゲームのステージ、キー操作なども滑らかで、思っていた通りの動きになっていました。

あまりにも簡単にゲームが作成できたので、ちょっとびっくりしました。まるで、私の頭の中を読まれてしまったかのようです。

全然整理されていないプロンプトでも、2.5 Proは、しっかりと意図をくみ取ってくれたのです。

その後、2, 3回のやり取りを通して、ゲームの細かな部分を調整し、ほぼイメージ通りのゲームを完成させることができました。実際にゲームをプレイしてみると、思った以上に楽しめました。

プロンプトの重要性を検証

ここで、ふと疑問に思いました。「なんで、2.5 Proは私のイメージ通りのゲームを作ることができたんだろう?」。もしかしたら、2.5 Proの性能が高いだけでなく、私が書いたプロンプト自体にも、問題があったのかもしれません。

2.0 Flashでオリジナルゲームの開発に苦戦した原因の一つに、プロンプトの曖昧さがありました。

最初のプロンプトでは、ゲームのアイデアを十分に伝えることができていなかったため、AIが意図したゲームを作ることができなかったのかもしれません。

そこで、2.5 Proに、先ほど作成したゲームのプロンプトを生成してくれるように依頼してみました。

つまり、「私がどんなプロンプトを書けば、このゲームを作ることができるのか」を、AIに教えてもらうということです。

すると、2.5 Proは、ゲームの目的、ルール、操作方法、登場するキャラクターの動き、背景の世界観などが、詳しく書かれたプロンプトを生成してくれました。そのプロンプトは、まるでゲームの設計図のように、具体的で分かりやすいものでした。

このプロンプトを2.0 Flashに戻って入力してみたところ、以前はあんなに苦労したのが嘘のように、1回の指示で私のイメージに近いゲームが作成されたのです。

もちろん、2.5 Proが作ったゲームと比べると、見た目や動きは少し異なりますが、しっかりとプレイできるゲームが出来上がっていました。少し動きはぎこちないものの、十分に楽しめるレベルのゲームになっていました。

実際のプロンプト

ここで、2.5 Proが作ってくれた実際のプロンプトを載せておきます。

依頼内容

HTML, CSS, JavaScript を使用して、ブラウザで動作する「UFOシューター」ゲームを作成してください。

ゲーム概要:

プレイヤーは宇宙船の砲撃手となり、5×5のグリッドで構成される「モニター」を通して見える範囲の敵UFOを撃墜するゲームです。制限時間内にできるだけ多くのUFOを破壊し、高得点を目指します。

必須要件

基本画面構成:

  • ゲーム画面中央に、主要なプレイエリアとなる 5×5のグリッドモニター を配置してください。
  • 画面右側(または適切な位置)に、スコア、残り時間、スタート/リスタートボタン、UFOの種類とポイントを示す凡例(レジェンド)を表示する情報パネルを配置してください。
  • ゲームオーバー時に、最終スコアと破壊したUFOの内訳を表示するオーバーレイ画面を用意してください。

ゲームプレイ

  • モニター操作: プレイヤーは 方向キー(上下左右) を使用して、モニターの視点を1マスずつ移動できるようにしてください。(WASDキーにも対応)
  • ワールド: モニターが表示している範囲よりも広い仮想的な「ワールド」(例: 25×25マス)を設定してください。モニターの移動範囲はこのワールド内に制限されます。
  • UFO出現:
    • ワールド内に複数のUFOをランダムに配置してください。
    • UFOはモニターの中心が到達できないワールドの端には出現しないようにしてください。
    • UFOの種類は最低4種類(例: 🛸, 👾, 👽, 🚀)設定し、それぞれ異なるポイント(例: 10, 20, 30, 5点)を割り当ててください。凡例には絵文字とポイントを表示してください。
    • UFOは破壊されると、新しいUFOがワールド内のランダムな(空いている)位置に補充されるようにしてください。
  • 射撃:
    • モニターの中央のセル(1つ)を照準として明確に(例: 赤い枠線で)表示してください。
    • プレイヤーが スペースキー を押したとき、照準セルにUFOがいれば、そのUFOを破壊できるようにしてください。
  • スコア: UFOを破壊すると、その種類に応じたポイントが加算され、スコア表示が更新されるようにしてください。
  • 制限時間: ゲーム時間は 30秒 とし、スタートボタンでカウントダウンを開始してください。残り時間はリアルタイムで表示し、0になったらゲームオーバー処理を行ってください。

ゲームフロー

  • 「スタート」ボタンでゲームを開始できるようにしてください。ゲーム中はボタンを無効化(または「プレイ中」表示に)してください。
  • ゲームオーバー画面には、最終スコアと、破壊したUFOの種類ごとの数を表示してください(例: 🛸 x 5, 👾 x 3)。
  • ゲームオーバー画面に「もう一度プレイ」ボタンを配置し、クリックするとゲームがリセットされ、再スタートできるようにしてください。

演出・サウンド

  • 視覚効果: モニターの各セルの背景色を、ワールドの中心からの距離に応じて変化させてください(中心に近いほど明るく、遠いほど暗く)。
  • サウンド効果:
    • Tone.js ライブラリを使用してください。
    • 方向キーでモニターを移動させた際に、「カチッ」という短い効果音を再生してください。
    • UFOを破壊した際に、爆発音のような効果音を再生してください。
    • サウンドは、ユーザーが最初に「スタート」ボタンを押したときに初期化・有効化されるようにしてください。

技術仕様・スタイリング

  • 言語: HTML, CSS, JavaScript のみを使用してください。
  • スタイリング:
    • Tailwind CSS を使用して、モダンで見やすいデザインにしてください。
    • フォントは Inter を使用してください。
    • 全体の配色(背景、文字色、ボタン色など)は、宇宙やSFのテーマに合うように調整してください(例: ダーク系の背景)。
    • レスポンシブデザインを考慮し、極端に表示が崩れないようにしてください。
  • コード:
    • JavaScriptコードには、処理内容が理解しやすいように適切なコメント(日本語)を記述してください。
    • エラーハンドリングを適切に行い、予期せぬエラーでゲームが停止しないようにしてください(特にサウンド関連)。

まとめ

AIの進化により、テトリスやブロック崩しのような定番ゲームは、「作って」とお願いするだけで、期待通りに動作するものを簡単に作ってくれるようになりました。

オリジナルゲームを作ろうとする場合、AIに的確な指示を出せるかが重要になります。

それとともに、2.5 Proでは、曖昧なプロンプトでもしかり意図をくみ取ってくれました。
あらためて、AIの進化の速さを実感しました。

今回は、AIが作成したプログラムコードを1行も変更せず、AIとの会話のみで簡単なゲームを作成しました。

プログラミング知識がない方でも、簡単なものであれば、AIと会話するだけで作れてしまいます。

興味のある方は、ぜひチェレンジしてみてくださいね。

コメント

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