「AIでブラウザ上で動作するゲームをどこまで作成できるのか?」という問いに挑戦するシリーズの第1回、ファミコンの「スペランカー」を再現する回の続きです。
これまでのシリーズ
AIを使ったゲーム制作:「スペランカー」を再現する①(バイブコーディング)
AIを使ったゲーム制作:「スペランカー」を再現する②(バイブコーディング)
AIを使ったゲーム制作:「スペランカー」を再現する③(バイブコーディング)
AIを使ったゲーム制作:「スペランカー」を再現する④(バイブコーディング)
AIを使ったゲーム制作:「スペランカー」を再現する⑤(BGM、敵キャラの実装)
本記事では2025年9月時点の「Gemini 2.5Pro」を使用しています。
ゲーム性の微調整
これまで「コブ」にあたるとミスになるようになっていましたが、「スペランカー」では「コブ」にあたるとミスではなく「跳ね返る」だけでした。
ゲーム性が異なってくるので修正します。

また英語で返されますが、「update」と書いてあるところを書き換えればいいようです。

跳ね返りはするようになったんですが、ちょっとイメージと異なります。
跳ね返り方向の調整を改めてお願いします。

今回はplayerの中を修正するように言われました。

一部分を加えるだけなので、該当部分をコードから探して加えます。
改めてupdate部分も更新するように言われたので、更新するとちゃんと跳ね返るようになりました。
コブの上に乗った時にずっと跳ね返り続けてしまうので修正します。

理解してくれたみたいです。

更新すると上から接触した時も右から左に跳ね返るようになりましたが、跳ね返り幅が都度変わっていたので、固定するようにお願いします。


跳ね返り幅を調整してもらって、あとさっきの更新で動かなくなっていたコウモリを動かすようにしました。
跳ね返りは微調整が必要な気もしますが、一旦はこれで進めます。
コブの接触でミスにならなくなったので、かなり難易度が下がったと思います。
ここで気づいたのですが、いつの間にか下にスクロールしなくなっていたので、下にスクロールするように直しておきました。AIは時々前の状態に戻ることがあるので注意が必要です。
間欠泉の追加
コブに当たってもミスしなくなり、少し簡単になりました。
オリジナルの「スペランカー」と同様にコブから蒸気が出る「間欠泉」を追加していきます。

良い感じで実装されたのですが、当たり判定が無い状態です。
今回提示されたコードをよく見ると「当たり判定のロジックが必要だ」みたいなことがコード内にも書かれてありました。


raku
AI自身もコードが足りていないのが分かっている状態なのが面白いですよね。
改めて当たり判定を追加してもらいます。

updateファンクションのコードが提示されましたが、よく見てみると所々に「unchanged(変更なし)」と書かれて表示が省かれていたので、updateファンクション全体を提示するように依頼します。
Tips:AIはちょくちょく端折ってくるので、関数(ファンクション)全体をもらうようにした方が良さそうです

更新したところ、またコウモリが動かなくなっていたので修正してもらいます。

ミスを認めるのは素晴らしいです
とはいえ、この後もまた下にスクロールしなくなったり、間欠泉が出なくなったりと何度も修正を繰り返すことになりました。。
このポンコツっぽさを愛せるかどうかかもしれません。
なんとか間欠泉の蒸気に当たり判定が実装されました。
蒸気が発生した瞬間に当たっているため、ちょっとわかりづらいですね。
当たり判定に猶予を持たせてみます。

微調整して、発生から0.3秒ごに接触判定を持たせると良さそうな感じになりました。
続いてリフトを追加します。
リフトの追加
左右に足場のあるリフトを実装していきます。ちょっと説明が難しかったので、画像と一緒に指示します。
リフトの調整はなかなか大変でした、、

何段階かに分かれた修正を提案されたので、コード全体を表示するように依頼します。

再度注意なのですが、コード全体を欲しいと依頼しても変更がない部分は削ろうとしてきます。
コードが削られると動かなくなってしまったり、挙動がおかしくなってしまうため、ちゃんとコードが省略されていないか注意が必要です。
何度かリクエストして全体のコードをもらいました。
リフトぽいものは表示されましたが、動かないですし、イメージとちょっと異なります。

修正していきます。

あのリフトを言葉で表現するのは難しいですね、、
この後も修正はリフトだけではなく他の部分にも影響し、ゴンドラが動かなくなったり、ゴンドラの上で横移動ができなくなったり、ゴンドラから降りても宙に浮いてしまったり、細かい修正が続きました。。(長いので割愛)
しかも、一つ直しても、次の修正をしたときに元に戻ったりしてしまうんですよね、、

この後も本当に何回も何回も同じやりとりが続きました。
AIの癖なのか、解決していた部分も含めて直してしまうので、「解決した問題は繰り返さないよう」指示します。

これでなんとか「修正したら他のエラーが再発する」状態から抜け出すことができました。。。
tips:修正を依頼する際にこれまで発生したエラーも記載して再発しないようにする
ようやくリフトの修正に戻れます。

なかなか良い感じに表示されました。
ちょっとだけ修正します。

指示した通り修正されました。
ループの挙動が少し微妙なので、直してもらいます。

表現が難しかったですが、上記の指示でも良い感じになりました。
ただ、左と右のリフトが交互になっていないので、修正してもらいます。
リフトの数も長さに合わせて可変するようにしてもらいます。


交互にリフトが下がっていくようになり、良い感じのリフトになりました。
幅だけ調整しました。
足場をすり抜けてしまうようになっていたため、他も含めて修正してもらいます。

今回はAIもこれまでのエラーのケースも含めて修正する提案をしてくれました。


これで一応リフトに乗る構造までを作成することができました
かなり時間がかかってしまいましたが、リフトの実装自体は完了しました。
マップの変な場所にあるので、修正したいと思います。

英語でいろいろ書かれていますが、「コード上で場所が指定されているので、コードを直してくれ」と言われています。
記号でなんとかならないか聞いてみます。


大文字の「V」を起点として、小文字「v」で長さを調整できるように提案してくれました。
記号をマップ上に記載することでリフトを表示することができるようになりましたが、左右の足場が消えてしまったり、足場の間隔がズレてしまっていたので、修正をお願いします。

説明が難しい場合は、画像を入れるとうまくいく場合があります。
足場が重なる問題もあったので、こちらも画像で説明します。

この後、「足場に乗っていると床をすり抜ける」と「リフトが左右交互に来ない」問題が発生し、また修正のループに入ってしまいました。
おそらく50回〜程度やりとりしてようやく想定の挙動になりました。。修正を依頼していないところまで修正されたりして依頼回数が増えました。AIプログラミングの難しさを感じる部分でした。
tips:何回もやりとりしていると混乱するのか「エラーが発生しました」と左下にポップアップが表示されたり、「私は大規模言語モデルなので対応できません」みたいなことを繰り返し言われて進めなくることがありました。
その場合は「大丈夫ですか?」などAIに聞くと再開することができるようになりました。
かなり時間がかかってしまいましたが、リフトを実装することができました。
今回もかなり長くなりましたが、最後までお読みいただきありがとうございました。
次回はキャラクターの調整やタイトル画面を実装し、ゲームの完成を目指していきます。