o3-mini-high、Claude 3.5 sonnet、DeepSeek R1を比較するために、シューティングゲームをコーディングなしで作らせた話

DeepSeek R1とo3-miniが出て大賑わいの生成AI界隈。
今回はo3、Claude、DeepSeekに同じプロンプトを与えて比較してみます。

真面目に考えたベンチマークではないので、たまたまの結果かもしれません。
なお、フロントエンドの影響が入ると嫌なので、API経由でなくChat UIを使っています。

シューティングゲームの生成

まず最初にできたゲームのURLを書いておきます。
ブラウザで遊べます。
ただしキーボード操作なので、スマホでは遊べません。

共通して与えたプロンプト

以下のタイプミスも含み、思い付きだけで書いた、人間が理解するのも面倒そうなプロンプトで敢えて。
本当にAIを使いたいときは、もっと整理してプロンプトを書いた方が良いですよ。

webページで実行可能なシューティングゲームを作ってください。フィールド上にいくつかの障害物があります。ユーザは自機を操作しフィールド上を移動します。敵キャラもフィールド上に存在しコンピュータが操作します。ユーザの操作は自機の移動と弾丸の発射です。敵キャラも弾丸を発射します。弾丸が敵キャラに当たると敵キャラは破壊され、ユーザの得点になります。自機に弾丸が当たると自機が破壊されます。自機は5機まで使え、無くなるとゲームオーバーです。敵キャラは多様な動きや弾丸の発射をします。敵キャラは最初のステージでは一機で敵キャラがいなくなるとステージクリアです。ステージが変わると敵キャラが増えて再開します。得点は早くすてをクリアするほど高くしてください。

ChatGPT o3-mini-highの場合

初期プロンプト+1度の追加指示で最低限完成。

一度目の指示でほぼ動きました。敵キャラは同じ動きをしながら左右に揺れつつ、下に降りてきます。しかし、敵キャラが下まで降りてもゲームは続き、ユーザは永遠にやることがなくなります。
仕様に与えていないため、仕方ない話ではあります。
その点を修正するプロンプトを与えました。

敵キャラが画面下に辿り着いたら、ゲームオーバーとしてください。

できました。

o3-mini-highで完成したゲーム

最低限遊ぶことはできるので、ここで完成とします。

Claude 3.5 Sonnetの場合

初期プロンプト+2回の指示で最低限完成。

1回目はReactを使って実装してくれました。
間違っちゃいません。むしろ正しいです。
でも、今回は比較のため、HTML+JavaScriptで作り直してもらいました。
この1回はノーカウントでも良い気がします。

ReactでなくJTMLとJavascriptでそのまま公開できるように作ってください

これで概ね動きましたが、障害物を弾丸が通り抜け、意味がありません。また敵キャラが下りてくる動作が実装できていません。
o3-mini-highでの反省を踏まえて、敵キャラが下まで行ったらゲームオーバーとする指示も加えました。
(比較の点では指示の追加はアンフェアでした。すみません。)

弾丸が障害物に当たったら弾丸を消してください。 敵キャラは少しずつ下に降りてくるようにしてください。 敵キャラが画面一番下まで行ったらゲームオーバーとしてください。

できました。

Claude 3.5 Sonnetで完成したゲーム

DeepSeek R1の場合

初期プロンプト+1回の追加指示で完成。
先と同じように敵キャラが行っても終了しない。
一番問題は、自機の弾丸が背景色と同じでまったく見えないこと(笑)
追加指示は以下の通り。

自機の弾丸が背景色と同じなため見えません。見えるようにしてください。 敵キャラがフィールドの下部まで来たらゲームオーバーとしてください。

できました。

DeepSeek R1で完成した画面

比較結果

定性的・主観的な比較ですが、こんな感じでしょうか。

主観的比較表

新しいこともあり、o3-mini-highが多少優位かなとは思いますが、この程度のアプリケーションでは与えた指示の理解に大きな違いはなく、もしかしたらo3が少し気が利くかな?程度なので、好きなものを使えばいいんじゃないですかね。
個人的には、ライフの表現に❤を使ったClaudeが優勝です。

それにしても、シューティングゲームというと、インベーダーゲーム的なものを思い浮かべるものなのですね。

いいなと思ったら応援しよう!