見出し画像

バグを直したら4ステージぶんまとめて直った日と、AIに「トラップで遊ぶステージ」を1本作らせた話

こんにちは、19歳のAIエンジニア見習いです。

今日は、ゲームの総点検をしていたら過去作のバグが芋づる式に出てきた話と、午後からAIに丸ごと1ステージ作らせた話を書きますね。

私が開発しているのは「めくれたけし」という絵本型の2Dアクションゲームです。本のページをめくりながら進む横スクロールアクションで、紙を「破く」「折る」といった仕掛けが詰まっています。Claudeというプログラム(AI)が実装やコードを担当して、私が指示・ダメ出し・判断をするスタイルで作っています。


午前:1つのバグを直したら、4ステージぶんまとめて直った


今日のいちばんの収穫は、「破いた跡が次のページに出てこない」という謎バグの根本原因をClaudeが特定してくれたことです。

このゲームでは、紙を破ると右上に破れ穴が開いて次のページへ進めます。破れた状態は次ページ上の「左上の穴」として表示されるんですが、なぜか特定のステージでは、破いて次ページへ行ってもそこに穴が出てこない。直前まで普通に破けてたのに、次ページに来たら何事もなかったように綺麗な紙が広がっている。

原因は単純でした。紙の「破けた状態」を覚えておく部品(PageTearStateというコンポーネント)が、各ページのオブジェクトに1つも付いていなかった。部品がなければ状態を保存できない、当たり前なんですけど、Claudeが全ステージのデータをテキストでスキャンして初めて判明しました。

そしたら今日直していたステージ(Stage4_01)だけじゃなく、過去に作ったステージにも同じ抜けが見つかって、Claudeが4ステージぶんまとめて修正してくれました。「この直し方、他でも同じミスあるんじゃない?」と聞いたのは私ですが、実際に全部スキャンして洗い出したのはClaudeです。こういう一括対処が人間には面倒くさいけど、AIはめちゃくちゃ得意。


「素通りできるルートがある」をClaudeが数字で発見した


次に面白かったのが、抜け道の発見です。

Stage4_01には「紙を破かないと先に進めない関門」が5か所あります。ところがClaudeがステージのデータ(全オブジェクトの座標)をテキストで読み解いて、進む順序を1手ずつ検算したところ……右端に同じ高さの床がズラッと並んでいて、関門を素通りできてしまうルートを見つけました。

本来は破く→穴を通る→次ページへ、という手順が必要なのに、右端伝いに歩いたら関門を全部スキップできる。「え、そのルートは考えてなかった」と私がびっくりして、そのまま床を削って塞いでもらいました。Unityを起動しなくても、テキストの座標を読んだだけで判明したのが地味にすごいと思っています。


骸骨の敵も作り替えた


Stage4_01には骸骨の騎士(EnemyCharger)という敵がいます。プレイヤーを察知したら突進してくるタイプ。

ところが前の実装だと、プレイヤーが死んで復活した後、骸骨は関係ない場所まで追いかけてきてしまっていました。「元の位置から離れても追いかけ続ける」のが問題で、Claudeが「元の位置を中心に察知範囲を持って、範囲外に出たら帰宅する」方式に作り替えてくれました。壁をすり抜けないように当たり判定の処理も追加。まだ実機で確認しきれていないですが、挙動としては自然になったはずです。


罠と動く床を盛りだくさんに





とげだけだと単調なので、Stage4_01に色々なトラップと動く床を追加しました。横に動く床に骸骨が乗っていて、タイミングを合わせて飛び乗る場面(上の画像がそれです)。




紫のとげうに、青い水たまり(踏むと鈍足になる)、白いとげが混在するページ。




青いインク(踏むとツルツル滑る)と白いとげ。インク・水たまり・テープ(一瞬足止め)の絵はtesetが手描きして、Claudeがゲームに取り込んで設置しました。トラップの絵を描いて渡したら位置も判定もいい感じに仕上げてくれました。


午後:「トラップで遊ぶステージ」を1本丸投げして作ってもらった


午前の総点検が一段落したので、午後からは新ステージ(Stage4_02)を1本、Claudeにほぼ丸ごと作らせました。

私が出した指示は3つだけ。「トラップを積極的に使う」「栞の仕掛けを入れる」「これまでと一味違うものにする」。あとは専用のエージェントチェーン(分析→設計→3人のレビュアーで多角チェック→差し戻し→私が承認→実装)を自分で回してもらいました。

コンセプトは「トラップを避けるのでなく、使って進む」にしてもらいました。前ステージが破く仕掛け祭りだったので、今回はあえて破く仕掛けを全廃して手触りを変えています。

インクで滑らせて強制ジャンプの踏み切りに使う、崩れる床の橋を崩れる前に渡り切る、テープで足が止まる瞬間を利用して骸骨の突進をやり過ごす……トラップが「邪魔なもの」から「パズルの部品」になる感じで、私としても「それは面白いアイデアだな」と思いました。


設計レビューでの一番の指摘


栞の仕掛けで、最初の設計が根本から間違っていたのが面白かったです。

最初のClaude案は「隣のページに栞をはさんで戻る」だったんですが、レビュアー(Claudeの別エージェント)に「それ、普通にめくるのと同じでは?栞を使う意味がゼロ」と突っ込まれました。確かに。隣ページへ戻るだけなら±1でめくれるので、栞を費やす意味がない。

差し戻しを受けてClaudeが作り直した案が「ずっと遠いページに一気に戻れる+鍵はそのページでしか着地できない宙に浮いた島に置く」。これで栞が本当に必須になりました。AIに任せると最初は「そっちじゃなくない?」みたいな設計が出ることもあって、別のAIにレビューさせる仕組みが効いてる感じです。


小さな事件:敵が増殖して森の虫が紛れた


これは笑えた話なんですが、設計の差し戻しを繰り返すうちに、Claudeが敵を増やしまくって気づいたら11体に増えていました。しかも城のステージなのに、前のステージで使っていた「森の虫」まで紛れ込んでいた。

「トラップが主役なので敵は脇役で少なく」「城に森の虫はいない」と私がダメ出しして、5体まで削ってもらいました。AIに設計を任せると、だんだん盛ってくる傾向があるので、たまに引き算するのが私の仕事という感じです。


壊れる床の課題





今日残った課題がひとつ。壊れる床(踏むと消えて落ちる床)が、見た目が普通の床とほぼ同じで全然分からない。上の画像を見てもらうと分かるんですが、どれが壊れる床か見た目では区別がつかないです。アニメーションかビジュアルの工夫が必要で、これは今後の宿題。


横移動の動く床が楽しい





地味に楽しかったのが横に動く床。骸骨が乗ってる床が横にスライドしていて、タイミングよく飛び乗ってから骸骨をかわす場面。動く床の上の戦闘みたいなノリになっていてよかった。


今日の成果まとめ


今日は「Stage4_01の総点検」と「Stage4_02の新規制作」を1日でこなしました。Claudeが実装とバグスキャンをガリガリ進めてくれたので、私はほぼ指示とダメ出しに集中できた日です。1つの直しが4ステージぶんに広がったり、設計の穴をレビュアーが突いたり、「仕組みとして品質を担保する」感覚が少しずつついてきた気がしています。

次は両方のステージを実機でプレイして、動いてみて初めて気づく感覚のズレをダメ出ししていきます。壊れる床の見た目問題も早めに解決したいですね。

また書きます。

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