AI チャットボットは新しいゲームを作れるのか

大規模言語モデル(LLM)を搭載した AI チャットボットは、ゲームのアイデア創出とコード実装が可能である。しかし、その能力はまだ発展途上であり、人間の介入なしに適切にバランスの取れたゲームを作成するには至っていない。それでも、近年の LLM の性能向上により、小さなゲーム開発の多くの部分を担えるようになってきた。

GPT-3.5 時代

ChatGPT で GPT-4 が利用可能になったのは 2023 年 3 月 14 日であり、それ以前は GPT-3.5 が使用されていた。GPT-3.5 は登場時には画期的な性能を持つ LLM であったが、その後に登場したより高性能な LLM と比較すると、生成物の品質が劣る点は否めない。

GPT-3.5 を用いたゲーム制作には、以下の課題があった:

  • 新しいゲームのアイデアを発想すること、またそれを実装可能なレベルまで詳細化することが困難
  • 新しいアルゴリズムのソースコードを実装することが不得意

GPT-3.5 にミニゲームのアイデアを考えさせても、漠然とした凡庸なゲームアイデアが返ってくるだけで、実装に必要な具体性に欠けていた。また、具体的なアイデアを提示しても、新しいアルゴリズムが必要な場合、適切なコードを出力できないなどの問題もあった。そのため、LLM をミニゲーム生成器として活用することは困難であった。

Claude 3.5 Sonnet 時代

OpenAI は ChatGPT のモデルを GPT-3.5 から GPT-4、GPT-4o へとアップデートし、性能が大幅に向上していった。OpenAI の競合である Anthropic がリリースする Claude の LLM も変更を重ねてアップデートし、2024 年 6 月 21 日に Claude 3.5 Sonnet 1 がリリースされた。

これら LLM の性能向上とともに、プロンプトに大量の参考文書を添付することが可能になり、LLM に様々な前提知識を与えた上で作業させることができるようになった。これら LLM の性能や機能の強化により、上記の問題はある程度克服されてきている。

LLM は新しいアイデアを考えられるようになってきた

LLM の性能向上がそのままアイデア発想能力の向上につながるのかは不明な点も多いが、体感的には良くなってきている。また、参考文書を通じて、アイデアの考え方や、このようなアイデアを考えて欲しいという例を、前提知識として与えることが簡単になった。

ワンボタンで遊べるアクションミニゲームの自動生成を目標に LLM を使う場合、ここで言うアイデアとは、新しくて面白いゲームルールのことである。そのため、以下の知識を LLM に与えた。

  • ゲームアイデアを生み出すためのブレーンストーミング方法 2
  • ワンボタンに割り振ることのできるアクションの説明 3
  • 既存自作ゲームのルール 4

その結果、Claude 3.5 Sonnet の性能の高さもあいまって、ユニークなゲームルールが生成される確率を高めることができた。

LLM は手順を踏めば新しいアルゴリズムを実装できる

上記のように適切なゲームルールを LLM が生成できるようになった。次の問題はそれを正しいコードに落とし込めるかどうかである。

ゲームルールをいきなりコードに変換することは、最近の性能の良い LLM でも難しい。ゲームルールから少しずつ具体的な実現方法を書き出していくことで、正しいコードが得られる確率が高まる。そのため、プロンプトで以下のステップを踏んで実装するよう指示した。

  1. ゲームルールを、ゲーム環境、コアメカニクス、プレイヤーインタラクション、チャレンジの点から整理する。
  2. 整理したゲームルールを実現するゲームオブジェクトの動作を、プロパティ、初期状態、形、色、動作、ワンボタンコントロールなどの面から詳細化する。
  3. ゲームルールやゲームオブジェクトを実現する JavaScript のスケルトンコードを提示する。
  4. ライブラリを用いてスケルトンコードをゲームが動くコードとして完成させる。

合わせて、自作ゲームを上記ステップで実装する例をプロンプト内で示した。こうすることで、どのような出力を期待されているかを LLM に伝え、出力をさらに改良した。

LLM はゲームのバランス調整は不得意である

高性能な LLM を用いることで、ゲームのモチーフ、ルールなどのアイデア作成や、アイデアに対応するソースコード生成を、一定の品質で行えるようになった。反面、作ったゲームの良し悪しの判断、ゲームの悪いところの改良を行うことは、LLM では今だほとんどできない。

ここで言うゲームの良し悪しとは、以下を意図している。

  • ゲームとして成り立っているか。不条理なゲームオーバーや、永久パターンなどが存在しないか。
  • 適切なリスクやリワードを備えているか。プレイヤーの技量に応じてスコアやプレイ時間が伸びるようになっているか。
  • 楽しいか。プレイ感覚が直感的で、爽快感が得られる内容か。

上記の問題に対する改良としては、以下が一例となるだろう。

  • ルールの改良:ゲームオーバー条件やスコアリングシステムの変更
  • パラメタの調整:自機や敵の速度や出現頻度の変更
  • 操作方法の改良:プレイヤーにとって分かりやすくストレスを感じない操作への変更

これらは LLM 単体でなんとかできるとは思えない。作ったゲームの良し悪しの判断を行うためには、コンピュータが実装されたゲームを自らプレイし、その結果を解析する必要がある。ただ、LLM に限らない範囲では、ゲームをプレイする AI はすでに存在するので、そういった仕組みと併用することで現時点でもある程度は可能であろう。爽快感などの人間感覚を、コンピュータがどの程度理解可能かは正直よく分からない。

ゲームの悪いところの改良をコンピュータに行わせることは、とても難しそうだ。AI がゲームの良し悪しを判断できるのであれば、それを報酬とした強化学習的な仕組みでなんとかできるかもしれない。ただ、ゲームを良くするためにルールや操作方法などを適切に改良することや、非常に多岐に渡るゲーム中パラメタを適切に調整することは、AI に可能なのだろうか。

そのため、現時点では LLM のできることに限定して、小さなゲーム作りを助けてもらった方がよさそうだ。そうすると、LLM に行わせることは、ゲームアイデア作成およびその実装コード生成までとなる。その結果生成されたコードやゲームはまだ不完全なので、以下を人手で行う。

  • コードの不具合や意図通りになっていないルールに対応する修正
  • ゲームとして成り立つためのルール、コードの改良
  • リスクやリワードを加味したゲームオーバー条件やスコアリングシステムの追加
  • ゲームを楽しくするためのルールやパラメタの調整
  • 難度上昇方法の実装、難度曲線の調整

こう考えると、LLM を使ったところであまり作る手間は減って無さそうに見える。ただ、LLM が実装したコードを見ると、面白い挙動をするものが出てくることもある。なので、そういったゲームの発想のベースとなるトイ(おもちゃ)を作る、という用途には今でも使える。

LLM を用いたガチャ指向ゲーム開発

上記のような LLM の使い方をすることで、自分の気に入るゲームが生成されるまでひたすら LLM を回し、それを人手で完成までもっていくというゲーム開発が可能となる。これを仮にガチャ指向ゲーム開発と呼ぼう。

ここではガチャ指向ゲーム開発の実例を示す。使う LLM は Claude 3.5 Sonnet、LLM に与えるプロンプトや前提知識は、5 のリポジトリ内にある。

上記のプロンプトに「fragile pillars」というテーマを与えると、以下のゲームを提案してくる。

Pillar Paraglider: Control a paraglider flying through a course of fragile pillars. The paraglider constantly descends. Press the button to ascend, but each press also sends a shockwave that can damage nearby pillars. Core mechanic: Balancing ascent with pillar preservation.


Pillar Paraglider: 壊れやすい柱のコースを飛行するパラグライダーを操縦します。パラグライダーは常に下降しています。ボタンを押すと上昇しますが、押すたびにショックウェーブが発生し、近くの柱にダメージを与える可能性があります。コアメカニズム:上昇と柱の保護のバランスを取ること。

このアイデアを詳細化し、実装させた結果、6 のゲームができた。これは Claude の出力結果そのままである。

ボタンを押すと赤い自機が上昇し、同時に周囲に円状のショックウェーブを放つ。ショックウェーブは柱を破壊する。フラッピーバードの影響を受けすぎな感じはするが、挙動としてはなかなか面白いものが実装できている。

だが、このゲームには明らかにいくつかの問題がある。

  • 簡単すぎる。ボタンを連打していればショックウェーブで柱を無効化できる。自機が画面上端や下端に行っても何も起きないので、ほぼゲームオーバーにならない。
  • スコアリングシステムが安直である。単に進んだ距離がスコアになっているだけなので、リスキーな行動がスコアにつながったりしない。
  • 元々のコアメカニズムを実現していない。「上昇と柱の保護のバランスを取ること」とあるので、本来はショックウェーブで柱を壊さないようにするゲームにしたいのだろうが、そのように実装されていない。また、そのメカニズムを忠実に実装すると、当たり判定の大きい自機でプレイするようなストレスフルなゲームになる。

ガチャ指向ゲーム開発では、このように面白い挙動をする不完全なゲームを、どのようにしてゲームとしても面白いものに改良するか、このプロセスが重要となる。

今回のゲームでは、以下のように変更した。

  • 全方向に出る円状のショックウェーブは強すぎるので、自機に方向を付け、自機の前方向の限られた角度にのみショックウェーブが出るようにする。また、ショックウェーブは柱全体を破壊するのではなく、当たった部分のみを破壊する。また、自機が画面上端や下端に接触したらゲームオーバーとする。
  • 破壊した部分ごとにスコアを与える。また連続して破壊することで、スコアが増加するようにし、柱に向かって進むリスキーな行動で大きなスコアが得られるようにする。
  • コアメカニズムは無視する。「壊さないように」よりも「壊しまくる」ゲームの方が、一般的には楽しい。

その結果、ゲームは 7 のようになった。

WAVY BIRD screenshot

柱にショックウェーブで穴を開けて進むゲームになった。若干難しすぎる感じはするが、最初のバージョンよりは、適切なリスクとリワードのバランスが実現できており、ゲームとしての完成度が上がっているだろう。

改良版とオリジナルのコード上の差異は 8 の通りである。こう見るとオリジナルのコードは跡形もなくなっているように見えるが、実際はオリジナルの枠組みを参考にして修正できるので、0 から作るよりはだいぶ楽である。

音やタイトルを付けた完成版は 9 になった。5 のリポジトリには、同様なプロセスで開発したゲームが多数あるので、参照いただきたい。

これが現時点での、LLM を用いたガチャ指向ゲーム開発の実態である。果たしてこれが、人が普通にアイデアを考えて、それを実装するのと比べて楽か、と言われると、あまり楽ではない。ただ、LLM が提案してくるゲームを選別し、それをいかにして面白いゲームにするのか、というコンピュータからのお題に立ち向かうような開発プロセスは、従来の開発プロセスとは違った面白さがある。また、ゲーム開発と並行して、生成のためのプロンプト開発・改良を行う必要もあり、そこも合わせて楽しむことが、ガチャ指向ゲーム開発においては大切である。

将来的には何も考えずに「面白いゲームを作って」と LLM に言えば、いい感じのゲームが実装されて返ってくるようになるかもしれない。現時点だと、面白い挙動をするゲームを得るには数十回のガチャが必要とされるのが当たり前で、打率はかなり低いと言わざるを得ない。だが、以前の LLM ではそもそも挙動として面白いものが返ってくることは皆無で、どこかで見たような凡庸なゲームしか出てこないことが当たり前であった。それがここ 1 年程度の LLM の進化によって、少なくともなにかの斬新さを感じられるものが生成されるようになったのは、良い兆候である。

LLM がこのまま進化を続ければ、出てくるアイデアの質が上がり、アイデアをコードとしてより正確に実装できるようになるだろう。また、上記で挙げたような問題点を指摘すると、それに応じてコードを修正できるかもしれない。そうすれば、より少ないガチャ回数と、より簡単な改良で、遊べるゲームが作れるようになるだろう。ただ、そのようなことができるように今後の LLM が順調に性能向上するかは現時点では不明である。2024 年現在、LLM の性能向上スピードは鈍化している印象もある。

AI チャットボットを活用したゲーム開発の今後

AI チャットボットを活用したゲーム開発は、まだ完全に自動化されたプロセスではないが、新しい可能性を秘めている。現時点では、AI チャットボットは面白い挙動をする「トイ」を生成する程度の能力を持っており、それを人間が改良してゲームに仕上げるというプロセスが有効である。

今後、LLM の性能がさらに向上すれば、より質の高いゲームアイデアやコードが生成されるようになる可能性がある。しかし、ゲームのバランス調整や楽しさの評価など、創造的な側面については依然として人間の介入が必要不可欠であろう。

「ガチャ指向ゲーム開発」は、従来とは異なる新しいゲーム開発の楽しみ方を提供している。LLM が生成するアイデアやコードを基に、人間の創造性を加えてゲームを作り上げていくプロセスには、新たな発見や驚きがある。

LLM の進化と共に、このような開発手法もさらに発展していくことが期待される。小さなゲームの開発者にとって、AI チャットボットは新しい創造の扉を開く可能性を秘めている。


1. Claude 3.5 Sonnet
2. claude-one-button-game-creation/ideas.md
3. claude-one-button-game-creation/one_button.md
4. claude-one-button-game-creation/arcfire.md
5. claude-one-button-game-creation
6. Claude の作ったオリジナルの Pillar Paraglider
7. 改良された Pillar Paraglider
8. 改良版とオリジナルの diff
9. Pillar Paraglider 改め WAVY BIRD

results matching ""

    No results matching ""