ワンボタンミニゲームを自動的に作るためだけのGPTを作ってみた

GPTsという、特定の役割を持った専用のGPTを作る仕組みが最近できた。といっても、従来のGPT-4にあらかじめ特定の指示 (description)と前提知識のファイル (knowledge)を与えられるだけで、今までできなかったことができるわけではない。だけど、特定のタスクをさせる時に、それらをいちいち指定する手間を省けるので、便利な機能と言えよう。

ChatGPTにミニゲームを作らせる試みは前もやったけど、あまりうまくいかなかった。

そこで今回は以下の改良を加えて、専用のGPTを作ってみた。

  • 最初にユーザからゲームのテーマを与えてもらう。
  • その後、そのテーマに沿ったゲームのアイデアを5つユーザに提示し、適切なものを選んでもらう。
  • 選ばれたアイデアに対して、ルール作成、プレイヤー動作のコード作成、その他の動作作成、スコアリング、難易度、効果音、と順番に少しづつゲームを作らせる。
  • 小さなゲームのアイデアって、どうやって思いつくの」と「ワンボタンの可能性」の記事をknowledgeとして与え、ゲームのアイデア作成の参考にさせる。
  • crisp-game-libの関数や変数の型定義ファイルやサンプルゲームのコードもknowledgeとして与え、コード作成の参考にさせる。

このようにすることで、ある程度適切なゲームアイデアの作成や、それに対応するコードの作成が可能になった。例えば、以下はTOWER CLIMBというゲームを作成した時の会話例である。

https://chat.openai.com/share/a21c6d85-3fa6-425d-b9dc-7d300c58029b

少しづつ作成されるコードに対して、何かおかしな点があれば、「障害物は左右から出るべきではありませんか?」のようにツッコミをすることで、なるべく適切なコードが作られるようにする。ただ、完全に動作するコードをGPTから返してもらうことは期待しない。最後に作成されたコードをエディタにコピーして、そこからの微修正は自分で手作業で行う。このゲームでは、以下の修正はコードに直接行っている。

  • プレイヤーになるべく近いところで障害物を破壊した方が点が高くなるようなスコアリング調整
  • 天井の描画、当たり判定ロジックの改良
  • 障害物の出現頻度などの難易度調整

できあがったゲームは以下になる(画像クリックでそのままブラウザで遊べます)。

towerclimb screenshot

他に作れるゲームの例や、具体的なdescription, knowledgeについては、以下のリポジトリに置いてある。

今回作ったGPT、One Button Game Builderとは、以下から会話できる(ChatGPT Plusが必要)。

https://chat.openai.com/g/g-cpVkJ5jXz-one-button-game-builder

最初に「Respond in Japanese.」を選択すれば、日本語で会話できる。テーマは「伸びる」「レーザー」「反射」「時間」などなんでも良い。

ただ、まだ遊べるゲームをちゃんと出力するのはそう簡単ではない。使いこなすにはいくつかのコツがある。

  • 5つのアイデアから、あまりに凡庸でもなくあまりに斬新でもない、ちょっと楽しそうなアイデアを選ぶ。「〇〇をジャンプで避ける」系の凡庸なアイデアはつまらないゲームになりがちだが、あまりに斬新なアイデアはGPTのコーディング能力が追い付かず、コード化できない。
  • ツッコミはほどほどに。GPTから正しいコードを出力させようと、頻繁にツッコミを入れていると疲れる。コードのガワができたら後で自分で直せばいいやくらいの寛容さで。

このようなコツをつかめば、AIによる今までとはちょっと違って面白いミニゲームの作成も可能だ。目指すべき無限ミニゲーム自動生成器に、一歩近づけたのではないだろうか。