シルバーウィークに以前からやってみたかった「AIエージェントにローグライクをプレイさせてみる」という挑戦をしてみることにした。
ローグライクはターン制で入力が忙しくない、かつ、長期的な目での思考・推論が必要で、AIが解く課題に最適だ。僕自身も生粋のシレンジャーであり、ドメイン知識も豊富。
目指すは『風来のシレン』テーブルマウンテン踏破だが、今回はゲームシステムもシンプルで、最近リメイクで沸いている初代『トルネコの大冒険』を題材に、今のAIエージェントはどのぐらいこの困難なタスクに立ち向かえるのか見てみた。
プレイにあたり、手元に所持しているスーパーファミコンのカートリッジを市販のレトロフリークを使って個人利用の範囲で変換し、検証している。

AIがローグライクを遊ぶためのハーネスを設計
SNESエミュレータMCPを用意する
まずAIがゲームをプレイするコントローラーを用意しなくてはならない。オープンソースのSNESエミュレータ実装であるSnes9xをforkして、macOS版のクライアントにHTTP MCPを実装した。
MCPでは以下の操作が可能になっている。
- ボタンの入力(シーケンスでの送付)
- ゲームの停止、再開、リセット
- スクリーンショットの取得
- メモリダンプの入手
- ステートセーブの操作
- ゲーム状況の録画
MCPは実装したが、結果的に後述のクライアント経由で通信していたので、エージェントが直接エミュレータを操作することは希だった。
入力を決定するハーネスの実装
AIエージェントからMCP経由でエミュレータを操作できるようになったが、ボタン入力の一挙手一投足を全てLLMに投げていては到底トークンが足りない。不思議のダンジョンを踏破するには10000ターン以上の操作が必要になるため、現実的な手数で操作を行えなければならない。
というわけで、AIから直接MCPを実行するのではなく、行いたい行動を決定的にシーケンシャルな入力へと変換し、エミュレータにリクエストするハーネスを実装した。
これにより、「#3番目のアイテムを使う」、「部屋の西の出口まで進む」といったセマンティックな操作単位を「X A ↓ ↓ A A」のようなアトミックな入力に変換できるようになった。

メモリダンプからの状況の取得
基本的にはスクリーンショットから状況を読み込むが、基本的な情報は決定的に取得できるようにするため、ハーネスからメモリダンプを読み取る機能を付けた。ハーネスがエミュレータ上のRAMを取得し、規定のアドレスを読むことでLLMリソースを用いずに状態取得ができるようになっている。
- トルネコの基本状態(HP、満腹度、ちから、装備の強さ)
- インベントリの状態
- トルネコの位置と視界に見える範囲の周辺マップ

ここでフェアプレイのために視界は制限されている。見えない敵(シャドーなど)や視界外の敵はハーネスがRAMの読み取り結果をロジックで落として、エージェント側に返す。インベントリ上の未識別アイテムについても同様。
1度認識したマップをハーネスはキャッシュファイルとして保持している。そのため、あとで先に見つけた階段を目指して経路探索したり、アイテムを取りに戻ったりといったことが可能になった。これによって、上述のような、ある地点まで進むといった処理をハーネスだけで探索できるようになった。
攻略サイトをまるっとスキル化
ローグライクは攻略本を暗記してからが本番とも言えるので、敵やアイテムの情報はSkillに書き込んでいる。攻略サイトのURLを渡して、必要な情報は抜き取ってSkill化してもらった。

また、ゲームをプレイしながら、気付いた洞察はtactics.mdというスキルを自分で育ててもらうことにした。結果的に「通路に下がって囲まれないように行動する」とか「まどうしは殴らない」とか、人間も遊びながら会得するセオリーが次々に書き込まれていって面白かった。
ローグライクの基本ルール、操作については特に何も教えていない
不思議なことに、これ以上のコンテキストは特に与えなかったが、テストランをしてみたところ、あとはモデル自身の知識で上手い具合にゲームを進行できていた。
ターン制であることも理解していたし、Lで矢を射ったり、A+B同時押しで足踏みなども特に教えずに行っていた。
面白かったのは、敵と1マス離れているときに素振りをして、敵を引き寄せて先制を取るといった熟練者なら誰でもやる小技も披露していた。すげえ。
実際に本編前のチュートリアルダンジョン「ちょっと不思議のダンジョン」は一発でクリアしていた。想像以上にゲームが成立していて、これは「不思議のダンジョン」の踏破も夢じゃないのではと実感する。

いざ、しあわせの箱へ!
さて、ここからは本編の「不思議のダンジョン」である。このダンジョンの27階にある「しあわせの箱」を入手後、再度27フロア分引き返すことでエンディングを見ることができる。
全てを観測するには、LLMの実行速度の問題でメチャクチャ時間がかかるので(27階到達で7~10時間ほど)、基本はほとんど放置し、代わりに毎回の冒険のレポートを書いてもらうようにし、プレイの録画もあとから復元できるようにした。

/goalで到達目標を設定していざ出発!

絶対に事故らないように非常に保守的なAIたち
現代のコーディングエージェントは事故を起こさないようにかなり保守的に設計されていて、状況判断が非常にコンサバティブだった。少しでも危ない戦闘にはすぐにアイテムを吐き、弟切草*1はかなり早めに使う。これぐらいで聖域の巻物*2を置くんじゃない!
おかげで十分肉弾戦で打破できる戦闘に関してもアイテムを使い過ぎる傾向にあり、終盤はリソースが枯渇しがちだった。
危険な行動を取らないガードレールもしっかり機能していた。面白かったのはエージェントがリレミトの巻物*3を捨てようとしたときに、CodexのAuto Modeがコマンドの実行を却下したという一幕があった。Auto Modeってこういう部分もジャッジするんだ・・・・・・。

これまで、不思議のダンジョンの一発クリアを目指して、特に脱出に関しては規定していなかったが、倉庫*4解禁後はAIは何度も脱出を繰り返し、装備品の強化を始めた。 倉庫に預ける判断や、引き出す判断も自律的に行いだしたので、全てを任せることにして、もう持ち込みでも何でもいいからクリアを目的とした。
プレイングを見る限り、詰めが甘い部分が多いので一発クリアは難しそうかもしれない。この防御的な挙動はコーディングのようなタスクには素晴らしいのだが、ローグライクを遊ぶにはやや向いていない。
未識別アイテムを積極的に使ってもらう
もう一点、未識別アイテムを上手く活用できないという問題が散見された。モデルは賢く、インパスの巻物*5の用途や使い方を自力で発見し、上手く活用していた。
一方で、上級者になると杖はわざわざインパスを読まずに、実際に振ってみた挙動で独自に鑑定することがほとんどだが、AIはインパスが無い状態で自力で識別することができていなかった。
そこで、「状況判断のリスク許容レベルを上げること」「識別チャートを作成し、未識別アイテムを活用すること」の2点はアドバイスとして指示した。

これによって、自力でアイテム一覧から識別チャートが完成し、未識別アイテムもある程度活用してくれるようになった。

知覚の限界による事故が多発
知覚の多くを入力待機中のスクリーンショットに頼っていたため、自動でスクロールするメッセージを読み解くのが困難という問題があった。仕組み上、スクリーンショットを離散的にしか撮影できないので、自動で消えるメッセージは画面に映り込まないことがある。 例えばラリホー草などのアイテムを投擲したが外れて、実際には眠っていないが、外れたメッセージは一瞬しか表示されないため、誤認した判断をしてしまうことが多発した。初代トルネコは敵が状態異常になっていてもグラフィックが変わらないので、メッセージを見逃すと厳しい!
特に厄介なのは深層に出現する「おおめだま」だ。おおめだまは部屋にいる間、ランダムにトルネコを混乱させてくるのだが、その時の行動が一瞬しか表示されない。そのため、次のターンに操作が意図通りに行えないことを通してしか状況を認識できなかった。
死ぬ度にハーネスを自動更新して知識アンロック
こんな視覚の問題はありつつ、AIは自分でハーネスを改善して再発防止をしているようだった。例えばこんな具合。
- おおめだまのメダパニを認識できずに混乱死:メダパニ状態のエフェクトもなく、文字送りを見逃すことがあるため、RAMをチェックして状態異常が把握できるようになった
- 聖域の巻物を読んで死亡:聖域の巻物は置いて使うアイテムで、読んでも効果がない。それを読んだ直後にゴーレムに殴り殺された回があり、以降は「読む」操作をハーネスが拒否するようになった
- 足踏みのしすぎで事故死:敵の前で足踏みを繰り返して事故死することがあった。結果、1ターンごとにHPを読み直して、殴られたら即座に止めるようになった
- 壁の角越しに素振りし続け、矢で死亡:通路の角で届かない斜め攻撃を繰り返している間にリリパットに矢で撃たれ続けた回があり、以降は視界のマップで角の壁を確認して、届かない攻撃は送らないようになった
プロンプトレベルで行動を制約するのではなく、use:聖域の巻物のようなコマンド実行をハーネス側で拒否することでガードレールを実現していた。
こうした細かい修正の積み重ねで、「1手ごとにLLMが画面を見て判断する」状態から、「通常の探索はハーネスがまとめて自動で歩き、メモリreadにより、視界に敵が入ったときだけLLMに画像付きで判断を返す」形に落ち着いていった。トークン消費も大幅に減り、長時間の周回も回しやすくなった。
実際のプレイレポートによる攻略の軌跡
Astra + Fableによるハーネス構築と試行錯誤
最初の20回ほどはCodexのAstra HighとClaudeのFable 5.1でプレイした。どちらも非常に良く動き、Astraの方が若干洗練されていたくらい。ただ、倉庫が未解禁なのであまり深層まで行けず、知見を溜めつつ凡庸なプレイを繰り返していた。
序盤の壁は16階辺りから。ゴーレムの登場で要求レベルが跳ね上がり、肉弾戦を避けてガンガンアイテムを吐くので、大体20階に行くまでにリソースが尽きてゲームオーバーというパターンが多かった。

これは元のゲームが良くできていて、ちょうど攻略が厳しくなる20階には必ずリレミトの巻物が落ちている。おかげでAIはちょっとでもヤバくなったらすぐ帰還するようになる。
そうこうしているうちにお店が発展して倉庫が解禁。装備を無限に強化できるようになって安定性がグンと上がり、25回目の冒険で目標の27階に到達。ただ、しあわせの箱が迷路部屋に配置されていて見つけられず、満腹度が尽きて脱出。

人間以上に保守的なプレイのおかげで装備のロストも抑えられていて、いよいよクリアが近いと思っていたのだが・・・・・・。
Opus 5.5の登場で沼り、装備育成マラソンに突入
30回目あたりでCodexのRate Resetも使い切った。トークンも枯渇し、AstraやFableなど高価なモデルを回せなくなったので、ちょうどリリースされたOpus 5.5中心の運用に切り替えることにした。
Opus 5.5はレスポンスも速く安価で素晴らしいモデルと前置きしつつ、やたらと探索を自動化したがり、そのせいでAstraが育てたせいぎのそろばん*6とドラゴンシールド+11が溶けた。
その後一晩回しても20回ほど鳴かず飛ばず。その間にお店は最大まで発展。

50回目を超えて大分サチってきたので、Astraにスキルやハーネスを再整理してもらい、Opus 5.5はマラソン要員にした。ゴールを「不思議のダンジョンの踏破」から「装備の強さを15程度まで育成」に変え、脱出を繰り返して装備を温めてもらう。一発クリアを目指さないのはシレンジャーの名折れだが致し方なし。
Opus 5.5はリスクの低い周回を高速に回すのには向いていたが、低層階でまどうしを殴ってやられるとか、凡ミスは相変わらず。そのまま1週間ほど沼り続けて、冒険回数は100回を突破。コーディングエージェントは、ミスったら進捗が0になる賽の河原的なタスクはあまり想定してなさそうだ。
マラソンの果てについに
幾度もの装備ロストを経て、装備が十分育ったところで復活したAstraを使い「多少無理をしてでも突破を狙う」方針に切り替えた。放置によってせいぎのそろばん+9と鋼鉄の盾+10★まで育った134回目では、ゴーレムやギガンテスも通常攻撃で処理できるようになっていて、出発から約12時間半で27階に到着。ついにしあわせの箱を拾えた。

箱を持つとリレミトが効かないので、帰りは歩くしかない。帰りは余裕かと思いきや、あるフロアで部屋を全部回っても上り階段が見つからないうえ、ばくだんいわ*72体に絡まれる。誘爆を食らえば即死の局面。
ハーネスによってばくだんいわへの攻撃を拒否したAIの出した答えは「地震*8を待ってわざともう一度下に落ち、再度登り直す」。ターンを稼いで、地震で下に落ちて仕切り直していた。最後までドラマティック。

25回目ぐらいで目標階には行けていたので、その後クリアに100回以上かかるとは思わなかった。安価なモデルにプレイさせたり、無駄に稼がせたりしなければ、もっと早く到達できていたかもしれない。また、ハーネス改善によって禁止事項が増えて局所最適に陥っていた感もある。
終始、一切ゲームプレイの入力を行っていないが、完全自走だけだと無理そうだったので、適宜ゴールを変えたり、モデルを変えたりといったマネジメントは行った。今後はこういうことも不要になるかも。
夢の汎用ゲームAIがお手元に
大学院生の時に教授と「シレンとかAIに遊ばせたいですね〜」みたいな雑談をした記憶がある。当時は汎用ゲームAIはまだ研究途上だったし、PONGのような単純なゲームでも実現が難しかった。それから15年が経ち、一切ロジックを書かずとも、誰でも簡単に汎用なゲームプレイが実現できるようになった。今や当たり前だけど、当時から考えると隔世の感が強い。今回、15年越しにずっとやってみたかったことをちゃんと実現できて嬉しい。
2〜3週間にわたって続いたこの検証はとても興味深く、AIの成長をたまにチェックするのがすっかり楽しくなっていた。地球環境に悪すぎる。

最近はJevの登場で、瞬間的な判断が必要なユースケースにも利用可能になってきている。またアイディアが思いついたら別のゲームでもやってみたい。
トルネコはうまく行ったので次はシレンかなあ。次回はテーブルマウンテン編でお会いしましょう!











