生成AI時代のミニゲームの作り方 - アイデアとコードと絵と音を生成する

そうなると人間のやることは何になるかというと……微調整?

このゲームをClaude 3.5 Sonnetや、いくつかの画像・音楽生成AIを使って作ってみた。ここではこれを具体的にどう作ったかを説明したい。生成AIを使ったミニゲーム開発プロセスの参考になれば幸いである。

まずはアイデア作りから。

このリポジトリの中にあるKnowledgeをClaudeに与えて、テーマを入力すれば、いくつかのワンボタンアクションミニゲームのアイデアをClaudeが生成する。Knowledgeには今まで私が作ったゲームのコードとその説明や、ワンボタンにどのようなアクションを割り当てることが可能か、などのゲーム開発ノウハウの文書が入っている。

今回は「電子回路」をテーマとして与えてみた。Claudeの返してきたアイデアは以下の通り。


  1. 回路コネクタ

    • 基本:動くコネクタが回路のパスに沿って移動し、電流を描きます。
    • 操作:押し続けるとコネクタが伸び、離すと収縮します。有効な回路ポイントに接続する必要があります。
  2. 部品ジャンパー

    • 基本:プレイヤーは電子部品間をジャンプする電圧パルスとなります。
    • 操作:ショートや断線を避けながら、部品間をタップしてジャンプします。
  3. 抵抗器ランナー

    • 基本:通電すると回転する抵抗器のフィールドを通して信号を誘導します。
    • 操作:現在の抵抗器に充電するために押し続け、放電して次に移動するために離します。
  4. コンデンサチェーン

    • 基本:コンデンサの充放電サイクルのタイミングを合わせてつなげていきます。
    • 操作:現在のコンデンサを充電するために押し続け、適切なタイミングで離して次に放電します。
  5. 電子フロー

    • 基本:プレイヤーは逆電流を避けながら回路を流れる電子の流れを制御します。
    • 操作:押し続けると電子が加速し、離すと減速します。

今回は5番を採用。するとそのゲームのルールやゲーム内オブジェクトなどの詳細と、それを実装したコードが返ってくるので、コードを実際に動かしてみれば良い。その後、気に入らないところをチャットで微調整する。今回は以下の要望を出した。

  • 自機が右に達したら左端に戻るべきでは?
  • 上端と下端もつなげてください。
  • 連続して生成された2つのreverseCurrentsの間に黄色いラインを引いて、そこを電子が通ると得点が入るようにできますか?
  • reverseCurrentをx=150で生成するようにして、画面外のreverseCurrentとの間を通っても得点できるようにしましょう。

これでだいたいゲームのベースはできた。得点ロジックなど、ゲームバランスの微調整は、コードを直接触った方が速い。

次は絵だ。次のプロンプトをClaudeに与える。

  • このゲームにふさわしい背景画像はどのようなものですか?
  • この画像を生成するために、画像生成AIに与える英語プロンプトを作成して。
    • 画像:10色程度で
    • プロンプト:25ワード程度で。単語を,で区切った形式。強調する単語は()や(())で囲うこと

これをDALL-EなりImageFXなり、他の画像生成AIなり、好きなものに与えれば、なんらかの画像が得られるだろう。これをドット絵に変換する。

ディザリングの強さやカラーパレットが指定可能、などの細かい希望を満たすツールがあまり見つからなかったので自作した。このツールを使えば画像生成AIの作った高解像度の絵をドット絵にできる。

今回は背景だけだったのでそれほど苦労しないが、ゲーム内のキャラクタを同様に作ろうとするとなかなか大変だ。今の画像生成AIは、スプライトシート的な画像を生成することを得意としておらず、ましてやアニメーションパターンのサポートなどはまだまだである。なので試行錯誤してスプライトっぽい絵を生成した上でドット絵化、その後ちょっとしたアニメーションパターンを自力で書かねばならぬ。例えば以下のゲームの恐竜とか。

次はBGM。

  • このゲームにふさわしいBGMはどのようなものですか?
  • このBGMを生成するために、音楽生成AIに与える英語プロンプトを作成して。
    • 音楽:矩形波を用いた3チャンネルの8-bitチップチューン。150BPM
    • プロンプト:15ワード程度。()を使わない自然な英文で

これをSunoなりUdioなり他なりに与える。プロンプトの形式は使う音楽生成AIが好むものにすると良い。好みの音楽ジャンルなどあれば、好きにプロンプトに追記できる。今回はノリで'Industrial techno'を加えてみたが、出来上がりに反映されているかは分からん。3チャンネルなどの制約も、あまり守られていない気がする。

次は効果音。

  • このゲームに必要な効果音を箇条書きで示してください。
  • これら効果音を生成するために、効果音生成AIに与える英語プロンプトをそれぞれ作成して。
    • 効果音:矩形波を用いた8-bit時代の短時間の効果音
    • プロンプト:25ワード程度。()を使わない自然な英文で

効果音生成AIのデファクトが何かはよく分かってないが、ElevenLabsやLOVOなどがある。レトロゲーム向けにいいものがあれば教えて欲しい。

これでコードとアセットが全て揃うので、あとはビルドすれば良い。今回のゲームのリポジトリは以下だ。

このように、一通りゲームに必要なリソースを生成AIで作ることは可能である。ただ、ゲームバランスを中心とした、ゲームにとって重要な微調整は人手で行った方が当然良い。気に入ったアイデア、コード、絵、音が出てくるまでひたすら生成を繰り返すことは可能だが、不毛である。チャットを通じた対話によるリソースの微調整は、現在の生成AIではまだ制約が多い。

絵や音、もっと言えばゲーム体験など、テキストで表すことが難しい内容についても、チャットを通じて微調整できるようになれば、チャットのみを介したゲーム制作も現実味を帯びてきそうだ。今の状況から見てそれらが実現されるのはなかなか難しそう、とか言っているといつのまにか余裕でできるようになったりするのが昨今の生成AI界隈なので、実際のところどうなるかは分からない。気長に期待して待つ。