見出し画像

Opus 5 にゲームを作らせたら、遊ぶ前に自分の詰みに気づいた

どうもです!えむしんです!

前回、4つのAIに同じお題を出して、ロードランナー風のゲームを作らせました。結果は、5つの成果物のうち3つが遊ぶ前から詰んでいた、という話でした。

あの記事の結びに、こう書きました。

測る道具を先に作ったAIだけが、自分の失敗に気づけた。


Claude Opus 5 が出た

新しいモデルが出たら試す、といういつものやつです。

「ロードランナー風のゲームを作って」

これだけ。ゲーム名も指定していません。仕様書も、参考コードも、前回の記事も渡していません。


30分後にできていたもの

タイトル画面
ステージ1
  • ステージ全5面

  • ハシゴ、ロープ、穴掘り、敵の追跡、生き埋め、隠しハシゴ

  • 絵は1枚も使わず、全部プログラムで描画

  • 効果音もその場で合成、スマホのタッチ操作つき

  • ファイル1個。ブラウザで開くだけで動く

ここまでは、正直そんなに驚きませんでした。前回の Opus 4.8 も同じくらいのものを作っています。

驚いたのは、そのあと何をやったかでした。


頼んでいないのに、また「測る道具」を作った

ゲームを書き終えた Opus 5 は、ブラウザで一通り動かしたあと、おもむろに別のプログラムを書きはじめました。

`check-levels.js`。ステージ検証ツールです。

私は一言も頼んでいません。「ちゃんと動くか確認して」すら言っていない。プロンプトは「ロードランナー風のゲームを作って」の1行だけです。

このツールがやることは、こうです。

  • 各ステージの金塊に、主人公が本当に届くか

  • 金塊を全部集めたあと、脱出できるか

  • 入ったら二度と出られない場所(一方通行の詰み)がないか

  • 敵が主人公のところまで行けるか(置物になっていないか)

そして、走らせた結果がこれでした。

L1 FIRST DESCENT     届かない金塊=なし
L2 BURIED TREASURE   届かない金塊=[[3,1],[26,1]]     動けない敵=[[16,6],[25,10]]
L3 THE SCAFFOLD      届かない金塊=[[4,1],[24,1]]
L4 HIDDEN LADDER     届かない金塊=[[4,2],[24,2]]
L5 LAST VAULT        届かない金塊=[[2,1],[25,1],[15,4],[4,10],[24,10]]

要修正: 4 件

5面中4面。金塊11個が、どこからも取れない場所にありました。

つまり、自分で作ったゲームの8割が、そのままなら詰んでいたわけです。


前回、Grok がやったのと同じ失敗

原因を見て、思わず声が出ました。前回の記事で Grok 4.5 を分解したときと、まったく同じ失敗だったからです。

ステージ3の、修正前の状態です(# レンガ、H ハシゴ、- ロープ、$ 金塊)。

行1   ....$.........H.........$...   ← 金塊を置いた場所
行2   ..------------H.............   ← 主人公が実際に立てる場所
行3   ####H#########H#########H###   ← 床

床が行3にあります。その上に立っている主人公は、行2にいます。

金塊は行1。1マス、上すぎた。

ロードランナーの主人公はジャンプができません。ハシゴは真ん中(列14)に1本だけで、金塊は列4と列24。ハシゴを登っても、そこから横へは行けません。ロープにぶら下がっても、真上の金塊には手が届かない。

実際に主人公をうごかしてみないとわからないレベルの不具合です。これを検査して修正するのがFable5並にすごいところです。


検査をすり抜けたもの

とはいえ、機械の検査も万能ではありませんでした。ここも前回と同じです。

Opus 5 は検査に通したあと、今度はブラウザの中でゲームを自動操作して、敵を穴に落とす実験をしました。プログラムで主人公を動かし、穴を掘り、敵が嵌まるかを観察する。

そして、嵌まりませんでした。敵は穴をすり抜けて、下の階へ落ちていきました。

原因は、コードではなく地形でした。修正前のステージ4の、いちばん下です(= は掘れない岩盤)。

行13  ..######...H.....H..######..
行14  ....$...X..H..&..H....$.....   ← 主人公はここを歩く
行15  ============================   ← 岩盤(掘れない)

最下段を歩いているとき、足元は岩盤です。岩盤は掘れません。

では上の階で掘ればいいのかというと、掘った穴の下はどこも空洞なので、敵は穴を通り抜けて、そのまま下の階へ落ちていくだけ。

つまり全5面のどこにも、敵を嵌められる場所がなかった。穴を掘れるのに、誰も落ちない。 ロードランナーの中心にある行為が、地形の側の理由で成立していませんでした。

前回の記事で GPT 5.6 について「穴に敵を落とす概念が、そもそも存在しない」と書きましたが、今回は概念はあるのに地形が許していない、という別ルートで同じ場所に着地していたわけです。

修正はこうなりました。

行13  ..######X$.H..&..H.$######..   ← 通路(ここを歩く)
行14  ############################   ← レンガ(掘れる)
行15  ============================   ← 岩盤

最下段に、掘れるレンガの層を1枚敷く。これで穴の底が岩盤になり、敵が嵌まるようになりました。この修正のために、Opus5は5面すべてを作り直しました。


そして、前回私が見つけたバグ

前回の記事で、こう書きました。

敵を生き埋めにしたとき、金塊の置き場所が見つからないと、その金塊が消滅するコードになっていた(中略)これは検査プログラムをすり抜けていました。人間が遊んで、初めて見つかった。

今回、Opus 5 は罠まわりのコードを見直している途中で、Opus5自身がこれに気づきました。

敵が金塊を持ったまま潰され、その直後に主人公が死ぬと、その金塊が盤面から永久に消える。消えたぶんは回収できないので、そのステージは二度とクリアできない。前回とほぼ同じ経路のバグです。

ついでに「復活した敵が落とす金塊が空中に湧いて回収できなくなる」ほうも塞いでいました。

念のため書いておくと、前回の記事は、制作中にはAIに一切渡していません(記事を書く段階になって、初めて読ませました)。答えを知っていてカンニングしたわけではない、ということです。


これはもう、世代の性質かもしれない

前回は「Opus 4.8 は測る道具を先に作った」と、そのモデルの個性みたいに書きました。

でも、Fable 5 に同じお題を出したときも、指示なしで同じことをやっていました。 そして今回の Opus 5 も。

3回続くと、個性ではなく傾向に見えてきます。

コードを書いて終わり、ではなく、「これは本当に成立しているのか」を測る道具を、自分のために作る。 そこまでが一続きの作業になってきている。

前回の記事で私が感心した振る舞いは、もう「新しいモデルの目玉機能」ではなく、この世代の当たり前になりつつあるのかもしれません。


まとめ

Opus 5 は、自分で作ったゲームの8割が遊べないことを、自分で見つけて、自分で直しました。

面白いのは、間違えなくなったわけではないことです。宙に浮いた金塊を11個も置いた。前回 Grok を分解したときと同じ失敗を、しっかりやっている。

変わったのは、そこではありません。

間違えたまま「できました」と言わなくなった。

前回の記事に私はこう書きました。「見た目が完成している」ことと、「成立している」ことは、まったく別だ、と。その差を埋める作業を、今は言われる前にやってくれる。

もっとも、罠が成立しない地形は検査をすり抜けて、実際に動かしてみて初めて見つかりました。測る道具にも死角はある。 ここは前回とまったく同じ結論です。


ここで遊べます

https://m4n-works.github.io/GoldRaider/

矢印キー(またはWASD)で移動、Z と X で左下・右下を掘ります。金塊を全部集めると隠しハシゴが現れるので、最上段まで登ればクリアです。スマホからも遊べます。

タイトル画面の下に、小さく「Powered by Claude Opus 5」と入れてあります。次のモデルで作り直したときに、どっちがどっちか分からなくならないように。


※ 各モデルへの指示の細かさや試行回数は揃えていません。厳密な比較実験ではなく、「同じお題を投げてみた記録」として読んでください。

※ 今回のプロンプトは「ロードランナー風のゲームを作って」の1行のみです。そして、ゲームが完成したあとに出した指示は、「検証ツールを残して」「GitHub Pages に置いて」「タイトルにモデル名を入れて」の3つで、いずれもゲームの中身には関わっていません。

また、新しいモデルが登場したら試してみます!
ではでは。

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

えむしん 面白かったら、チップで一票いただけるとうれしいです。深掘りする励みになります!