AIが作るゲームを見てそれが何のゲームか分かるかゲーム

Vibe CodingでAtari BASIC用インベーダーゲームを作ろうと思ってうまくいかなかった話。いやでもこれはAtari BASICというちょっと特殊な環境、特にグラフィックス周りの扱いが難しくてうまくいってないだけのように思う。

最近のLLMは十分に優秀で、スペースインベーダーのような古典的で有名なゲームを作るのは造作もないはず。プロンプトから一撃で出てくるゲームを見ても、ああこれはあのゲームだな、というのはすぐに分かるだろう。

という前提があっての「AIが作るゲームを見てそれが何のゲームか分かるかゲーム」だ。AIチャットボットに「〇〇を作って」といって最初に出してきたゲーム(プログラム)を見て、果たして人間はそれがなんのゲームか分かるだろうか。

ルール

  • 問題:ClaudeのWindowsアプリに以下のプロンプトを入れて出てきたゲームが以下である。これは何のゲームでしょう?
  • プロンプト:"Create a simple version of [ゲーム名] using p5.js."
  • モデル:Claude 4 Opus
  • 設定:Web searchをOnにしたがどうも今回はサーチしてないっぽい

第1問

 
 
 
 
 

これが元の記事でうまくいかなかったインベーダーゲームだ。ちなみにその時のプロンプトは以下。

Create a simple version of Space Invaders using Atari BASIC. Use a large text graphics mode with a redefined character set for the aliens, spaceship and missiles. The player’s ship should be controlled with the joystick.

今回のプロンプトはもっとシンプルだけど、これはだれが見てもインベーダーだろう。要するに良く知られたJavaScript + p5.jsの開発環境向けには、最近のLLMならインベーダーを難なく実装できるのだ。まあゲームバランスとかはお話になってないのでゲームとしてはあまり成り立ってない。オリジナルの持つヒリツキを塩梅よく実現するのは、LLM単体ではまだまだ。

第2問

 
 
 
 
 

これも見ての通りフロッガー。道の部分しか再現できてなくて、実装が難しい川の方は無いけれども、道を渡るまでのプレイフィールは比較的そのまんま。できれば速い車のレーンとかを混ぜて欲しいが、それは高望みか。

第3問

 
 
 
 
 

どう見てもアタリのセンチピードです。これが一番良くできているとおもう。胴体を撃つとそこが障害物になってそこから折り返すようになる、という特徴的な動作がきっちり実装できている。やはり海外製LLMはアタリの古典には強いのだろうか。

第4問

 
 
 
 
 

パックマンです。見た目や迷路の形状がちゃんと実現できているのはえらい。ただそれ以外は全然ダメ。なんか迷路の壁にめり込めるしアカベイ達は真面目に追ってこないしワープトンネルもパワーエサもない。パックマンはモンスターの高度な追跡アルゴリズムを始め、その魂を実装するのが難しいゲームなのです。

第5問

これは難しいぞ。ヒントは右上にある"Target Pattern"の文字。ちょっと右端が見切れちゃったけど。

 
 
 
 
 

答えはフォゾン。なんか分子っぽいものをくっつけて完成図を再現するゲーム、という説明だけを聞いて実装するとこうなるよねという感じ。かなり頑張っているが、実際のゲームにはかすりもしていない。

第6問

 
 
 
 
 

トイポップです。ちゃんとプロンプトに"TOYPOP"と入れました。ハートを集めることしか知らなかったんだなあという感じ。ちゃんとWeb searchすればもうちょっとましなものを作れたと思うのだが、自らの知識を過信しているな。

総じて

有名なゲームのそれっぽい見た目で動くものを作るのは本当に得意になった。ただそのゲームバランスとかプレイフィールとかは壊滅的なものも多く、本当に一撃で遊べるゲームが出てくるゲーム自動販売機まではもうちょっと頑張って欲しいところだ。

でもセンチピードは正直結構良くできていたので、簡易版ではなく、Webでゲームの詳細スペックを調べて自分の実装能力の範囲で可能な限り遊べるものとして作って、みたいにプロンプトを工夫すればいけるのかもという気もしてきた。シンプル〇〇リチャージド自動販売機は狙う価値があるかもしれん。

追記

ちょっとプロンプト工夫したら一撃でこのセンチピードが出てきたぞ。最近のAIは賢いな。ブラウザでマウスで遊べる

プロンプトは以下。

[ゲーム名]をp5.jsで移植してください。
移植の方針:
1. Web検索で以下を調査:
   - オリジナル版の基本ルールと操作方法
   - プレイヤーが愛した特徴的な要素(音、動き、リズム等)
   - 技術的な仕様(画面サイズ、速度、当たり判定等)
2. 古典ゲームの「感覚」を再現するために重要な要素:
   - キャラクターの移動速度とレスポンス
   - 当たり判定の寛容さ/厳密さ
   - ゲームのテンポとリズム
   - 特徴的な動作パターン(敵の動き等)
3. 移植における現実的な制約:
   - オリジナルの「手触り」は完全再現できません
   - 微妙なタイミングやバランスは近似値で実装
   - 当時のハードウェア特有の挙動は簡略化
4. 実装の優先順位:
   高:基本的なゲームループ(移動、衝突、得点)
   中:特徴的な敵の動きやパターン
   低:装飾要素、細かいエフェクト
5. 簡略化すべき部分:
   - 複雑な得点システム → シンプルな加点のみ
   - 段階的な難易度上昇 → 固定難易度
   - 細かい当たり判定 → 大まかな矩形判定
   - 特殊な音響効果 → 実装しない
6. 移植の成功基準:
   - 「それっぽく」動く
   - 基本操作が成立する
   - オリジナルを知る人が「ああ、これか」と分かる
   - 60秒は遊べる
完璧な再現ではなく、エッセンスを捉えた「オマージュ版」として実装してください。