本文へスキップコンテンツへスキップ
深掘り

AIがポケモン金をプレイ: Bobcat、新しいゲームからバッジ16個まで

Bobcatは一言も文章を書きません。状態を読み、選択肢ごとに1つの確率を返すだけです。韓国語版『ポケットモンスター 金』を、事実だけを伝えてゲームが許す行動を列挙するハーネスの向こうに置き、Bobcatに攻略ガイドを渡して、新しいゲームの最初からすべての選択を任せました。1つのコミットで新しいゲームを20本始め、動いているあいだは何も変えずにいたところ、17本がバッジ16個をすべて獲得し、ゲーム内時間は中央値19.3時間でした。別のコミットでの2回目のバッチも、同じく20本中17本。同じハーネスでランダムに答えると、バッジは1つも取れませんでした。さらに1本のゲームを全編記録し、行き詰まった6本はその理由とともに挙げています。

Foxl AI更新 14 分で読めます

記録したゲームの1つから、ゲーム最後のバトルであるシロガネやまのレッド戦を早送りで。左がゲーム、その横にBobcatに送られた状態、Bobcatが高く評価した選択肢とそれぞれのボタンと確率、そして選択の記録が並びます。 GIF
このページの内容
2026年10月14日 に、リリース済みの実装と残っているテストで内容を確認しました。

更新(2026年10月14日): 私たちの最新モデルBobcat 1.3が、Jev Decision Indexで同率3位になりました。スコアは62.8で、Jevは60.1です(後述)。この記事のゲームをプレイしたのはそれより前のリリースであるBobcat 1.1で、バトルにはBobcat Flash 1.1を使っています。

Bobcatは、一言も文章を書かないモデルです。状態と選択肢の一覧を渡すと、選択肢ごとに1つの確率を返します。できるのはそれだけです。私たちは韓国語版の『ポケットモンスター 金』を、事実だけを伝え、その時点でゲームが許す行動を列挙するハーネスの向こう側に置き、Bobcatに攻略ガイドを読ませて、新しいゲームの最初からすべての選択を任せました。どこへ行くか、そこで何をするか、すべてのバトルのすべての技、何を買うか、誰を捕まえるか、そしてガイドのステップがいつ終わったかまでです。

そして、新しいゲームを20本、1つのコミットで同時に始め、動いているあいだは何も変えませんでした。20本中17本が、ジョウトの8個とカントーの8個、合わせて16個のバッジをすべて獲得し、その途中で四天王とチャンピオンも倒しました。クリアしたゲームにかかったのは、ゲーム内の時計で中央値19.3時間、決定の数は約5,100回です。これを数時間離れた2つのコミットで2回行い、どちらのバッチも20本中17本という結果でした。同じハーネスでランダムに答えると、獲得したバッジはゼロでした。

私たちの目標は10本中9本でしたが、まだ届いていません。行き詰まった6本は、それぞれの理由とともに下に挙げています。バッチのあと、2つ目のバッチのコミットでさらに3本のゲームを始め、1フレームずつ記録しました。3本すべてが16個のバッジを獲得し、シロガネやまでレッドに勝ち、ホウオウを捕まえました。ここに載せた動画は、最初にクリアしたゲームのものです。決定は4,887回、ゲーム内時間は19.9時間でした。

20本の新しいゲームのバッチごとに1枚、計2枚のパネル。各ゲームは、ゲーム内時間に対するバッジ数を表す階段状の線です。どちらのパネルでもほとんどの線が16個のバッジに届き、行き詰まったゲームはそれより早く止まって、それぞれ×印がついています。2つ目のバッチのコミットであとから記録したゲームは2つ目のパネルの上に粘土色で描かれ、動画のゲームは太い線です。
記録したゲームを60秒で。寝室から最後のバッジまで(YouTubeで見る)。各フレームの左はゲームで、パネルはその決定のためにBobcatに送られた内容です。右にはBobcatが高く評価した選択肢が、それぞれを実行するボタンと確率つきで並び、そのあとに選択の記録が続きます。ファイルとして共有するには、動画とポスター画像をどうぞ。

記録したゲームのハイライト

記録したゲームから8つの場面を、Bobcatが見ていたダッシュボードのまま早送りで紹介します(記録した1フレームが、ゲームの1秒です)。左がゲーム、その横がBobcatに送られた状態、続いてBobcatが高く評価した選択肢とそのボタンと確率、そして選択の記録です。まず、すべてのジムリーダーを含む全25場面を4分で、そのあと8つの場面を1つずつ見ていきます。

ハイライト。すべてのジムリーダー、四天王、カビゴンを起こす場面、レッド、ホウオウ(YouTubeで見る)。
バッジ1: 最初のジム、ハヤト。ゲーム内時間0時間37分の場面を、ゲームの19倍速で。
バッジ3: アカネとミルタンク。ゲーム内時間2時間07分の場面を、ゲームの120倍速で。
バッジ8: ジョウト最後のジム、イブキ。ゲーム内時間8時間36分の場面を、ゲームの60倍速で。
チャンピオン、ワタル。ゲーム内時間13時間07分の場面を、ゲームの22倍速で。
ポケギアのラジオでカビゴンを起こす。ゲーム内時間15時間16分の場面を、ゲームの8倍速で。
バッジ16: トキワシティのグリーン。ゲーム内時間16時間02分の場面を、ゲームの30倍速で。
シロガネやまのレッド。ゲーム内時間17時間39分の場面を、ゲームの30倍速で。
ホウオウとマスターボール。ゲーム内時間19時間55分の場面を、ゲームの6倍速で。
記録したすべてのフレームを収めたゲームの全編。バッジごとにチャプターがあります(YouTubeで見る)。

どのくらいの割合でクリアするのか

バッチとは、ハーネスとガイドの1つのコミットで、同じ新しいゲームのオープニング直後の寝室から一斉に始めた20本のゲームのことです。動いているあいだは何も編集せず、セーブから続けるゲームもありません。行き詰まったゲームは、クリアしなかったゲームです。各ゲームは16個目のバッジを獲得した時点で止まります。ガイドの1つのステップで数千回の決定を重ねても進まなかったゲームは停止し、行き詰まったものとして数えました。

バッチコミットバッジ16個すべてクリアまでのゲーム内時間(最速、中央値、最遅)
A13803fe20本中17本17.1、20.3、26.0
B6c233f120本中17本17.0、19.3、24.2

合わせて40本中34本、85%です。40本のゲームでは割合を精密には絞り込めず、95%区間は71%から93%にわたります。クリアしなかったゲームは次のとおりです。

  • バッチA、ゲーム7、バッジ15個の時点: 最後のジムリーダーであるグリーンに何度も負け、戦いの合間にはレベル上げをせず、ほかの場所へふらふらと行ってしまいました。そのステップで4,977回決定したところで停止しました(ゲーム内時間56.6時間)。
  • バッチA、ゲーム11、バッジ7個の時点: 強いポケモン1匹に頼り、残りのチームが大きく遅れたままイブキに負け続け、ジムから離れていってしまいました。そのステップで3,514回決定したところで停止しました(ゲーム内時間22.1時間)。
  • バッチA、ゲーム15、バッジ7個の時点: こおりのぬけみちの岩を、すでに読んだ看板と同じように除外していました。実際には、訪れるたびにかいりきを使い直す必要があります(バッチBの前に修正)。そのステップで3,215回決定したところで停止しました(ゲーム内時間19.9時間)。
  • バッチB、ゲーム2、バッジ8個の時点: すでに技を4つ覚えていたギャラドスに、たきのぼりを覚えさせられませんでした。ゲームの質問のうち2つが読まれず、技を覚えさせる処理が起きなかったのです。そのステップで5,677回決定したところで停止しました(ゲーム内時間27.6時間)。
  • バッチB、ゲーム14、バッジ7個の時点: バッチAのゲームの1つと同じように、最初のポケモンに大きく遅れたチームでイブキに負けました。そのステップで6,450回決定したところで停止しました(ゲーム内時間25.6時間)。
  • バッチB、ゲーム20、バッジ11個の時点: 自転車を持たずにサイクリングロードでセキチクシティへ向かおうとし、ゲートの係員に毎回追い返されました。そのステップで4,681回決定したところで停止しました(ゲーム内時間24.6時間)。

6本のうち3本は、Bobcatが勝たなければならないバトルに負けました。1匹のポケモンを軸にしたチームで、強いジムリーダーに挑んだケースです。残りの3本はハーネスの抜けでした。除外してしまった岩(バッチのあいだに修正済み)、読まなかった質問、通れないと知らなかった道です。あとの2つが次の修正対象で、バトルはBobcat自身が勝つべきものです。

ハーネスは何をして、何をしないのか

スピードランナーなら、このハーネスをステータスチェッカーと呼ぶでしょう。ゲームを読み取って、何が事実かを伝えます。画面のダイアログ(カートリッジ自身のフォントと照らし合わせてピクセルから読み取ります)、メニューとカーソルの位置、場所とタイル、所持金とバッジ、手持ちのポケモン(それぞれのレベル、HP、技と残りのPP)、バッグとポケギアのカード、バトル中は両方のポケモンと自分側のタイプ、そして試してうまくいかなかったこと(効果のない技、どこにも通じなかった出口、手持ちのレベルつきの負けたバトル)です。さらに、今ゲームで許されていることを列挙します。プレイヤーが歩いて行ける出口、手の届く人や物、看板、手持ちが覚えているフィールド技を使える水や木、草むら、眠っているカビゴンが道をふさいでいる場所でのポケギアのラジオ、そしてバトルではPPが残っている技、入れ替え、回復アイテム、ボール、逃げる、です。各選択肢には、それを実行するボタン(「→5 ↑3 A」)が、プレイヤーが押すとおりに表示されます。

ハーネスは選びませんし、ゲームが見せないことは伝えません。相手のタイプは一切与えず、技の効果があるかどうかも与えません。Bobcatはそれを知っているか、技のあとにゲームが表示するメッセージから読み取る必要があります。Bobcatが行動を選ぶと、ハーネスはそれを機械的に実行します。「ラジオ塔の2Fへ行く」なら、階段までの最短経路と、それを上るボタン操作です。

Bobcatは何を決めるのか

記録したゲームでBobcatが決めたのは、次のことです。

  • どこへ行き、何をするか。状況が変わるたびに、2つのChoiceを含む1つのリクエストで決めます(フィールドでの決定2,245回)。選んだ場所は次の数回の決定まで保持され、各出口にはそこへ通じるかどうかが示されます。
  • すべてのバトルのターン: どの技を使うか、入れ替えるか、回復するか、ボールを投げるか、逃げるか(2,234回の決定)。
  • すべての質問とメニュー: はいかいいえか、何を買うか、どの技を忘れるか、誰にひでんマシンを覚えさせるか(323回の決定)。
  • 捕まえるかどうか: ガイドが野生のポケモンを捕まえるよう言っているとき、捕まえるかどうかと、どのボールを使うか(13回の決定)。
  • 誰を先頭にするか: 手持ちの1匹がほかより大きく先行しているか遅れているときに、ポケモンセンターで尋ねられます(30回)。
  • ガイドのステップが終わったかどうか: ゲームが記録する事実だけでは決められない場合です(確認41回)。

なぜ攻略ガイドなのか、中には何があるのか

長いゲームを初めて遊ぶ人は攻略本を読むので、Bobcatにも1冊渡します。バッジの数ごとに1章ある韓国語のテキストで、ゲームで使ったものをそのまま公開しています。ストーリーの順番、地名、捕まえるチーム(32ばんどうろのメリープ、なみのりを覚えられるみずタイプのポケモン、赤いギャラドス)、各リーダーに有利なタイプ、そして答えが1つしかない数少ないパズル(こおりのぬけみちの岩、地下通路のスイッチ、ヤマブキシティのワープパネル)についてはその答えを載せていて、答えはゲームの逆アセンブルとタイル単位で照合済みです。それをどう使うかはBobcatが決めます。ハーネスがページをめくるのは、事実があるときだけです。ステップに書かれたアイテムがバッグにある、ステップの終点の場所に入った、名前の挙がったトレーナーに勝った、ゲームが記録するイベント(発電所の部品を返した、カビゴンと戦った、グレン島でグリーンと話した)が立った、といった場合です。

Bobcatが選ばなかったのはどれか

ハーネスには固定のルールがあり、どれもしきい値とともに公開コードに含まれ、ゲームのログで回数が数えられています。フィールドでは、Bobcatが同じことを繰り返すとき、そのいちばん上の行動を除外します。1つのマップで50回中4回選ばれた行動、2回失敗した出口、同じことを3回言った相手などです。そのとき実行されるのは、残りの中でBobcatがいちばん高い確率をつけた行動、すべてが除外されている場合は、最近いちばん行っていない行動です。記録したゲームでは、2,245回のフィールドでの行動のうち79%が、Bobcat自身の第一候補でした。バトル、質問、捕獲はBobcatの答えです。いくつかのことは尋ねずに行います。オープニング、ニックネームの辞退、Bobcatが選んだ購入や技の習得の確認、そしてハーネスが理解できないメニューのループからの脱出です。

記録したゲームのフィールドでの各行動を、誰が選んだか。一部はBobcat自身の第一候補で、残りは公開されたループのルールのいずれかが決めたものです。

プレイしているのがハーネスではないと、どうしてわかるのか

同じハーネス、同じコミット、同じ新しいゲームで、すべてのChoiceをランダムに引いたところ、9,517回の決定で獲得したバッジはゼロでした。ハーネスは中立ではありません。選ばれた場所へ歩き、ガイドの場所に向かう出口に印をつけるので、ランダムな答えでもどこかにはたどり着けます。それと16個のバッジとの差が、Bobcatの力です。ハーネスはさらに、すべての決定について、Bobcatに送った状態、確率つきのすべての選択肢、そしてその選択を除外したルールがあればそれも記録しているので、この主張は1行ずつ検証できます。

ここまでの道のり

ハーネスは、Bobcatをループに入れたまま、このゲームに合わせて書きました。作業の大半は、ゲームの奥深くでハーネスが読み間違えるものを見つけることでした。開いたままのパソコンのメニュー、ひんしのあとの手持ち画面、描画途中で読んだバッグのポケット、ボールのポケットと取り違えた空のどうぐのポケット、短いボタン入力を無視するショップの一覧、ガイドがまだ船長を探せと言っているうちに着いてしまった船。どれも数百、数千回の決定を重ねてから初めて現れました。ゲームがそれで行き詰まるとハーネスを直し、そのゲームを最後のセーブから続けました。最初のゲームが16個のバッジ、レッド、ホウオウまでたどり着いたのは、この方法でした。そのあとに、新しいゲームを20本ずつ走らせるバッチが続きました。各バッチの行き詰まりが次のコミットの修正になり、ガイドのヒントの変更は、同じセーブからオンとオフの両方で試してから採用しました。上の2つのバッチが、その最後の2つです。そのあいだに、バッチAで見つかった問題の1つであるこおりのぬけみちの岩を直し、コガネシティとその地下通路のあいだの階段の名前を変えました。ゲームがそれをスイッチの部屋と取り違えていたからです。

Bobcatの弱点

  • 上のように、偏ったチームで強いリーダーに挑むバトル。記録したゲームでは30回のバトルに負け、トレーナーとのバトルには229回勝ちました。
  • 最初のポケモンに頼りがちです(記録したゲームの最後の手持ちはLv.93のバクフーン、Lv.30のトゲチック、Lv.8のメリープ、Lv.10のヤドン、Lv.34のギャラドス、Lv.40のホウオウ)。誰を先頭にするか尋ねられても、たいていは順番を変えません。
  • ループのルールは欠かせません。記録したゲームのフィールドでの行動のうち21.0%は、ルールが決めたものでした。

かかった費用

記録したゲームは、4,887回の決定で9,015,052の入力トークンを使いました。ほかの記録したゲームと共有した、レンタルのRTX PRO 6000(96 GB)1台で0.9時間動き、1時間$2.76なので、その時間の費用は$2.37です。バッチのクリアしたゲームが使った入力トークンは、中央値で940万で、20本で1台のGPUを共有します。2つのバッチの背後にあるすべて、つまりその前のバッチやすべての修正のテストも含めて、GPU 1台の39.8時間、1時間$4.12で$164.13かかりました。規模の目安として、記録したゲームのトークンを、Jevが公開している定価の入力100万トークンあたり$0.042で計算すると、$0.38になります。これは参考値で、このワークロードでどちらかのサービスを測ったものではありません。

これらのゲーム以降のBobcat

上のゲームはBobcat 1.1がプレイし、バトルにはBobcat Flash 1.1を使いました。最新リリースのBobcat 1.3(2026年10月11日)は、これらのゲームをプレイしていません。代わりに、意思決定モデルの公開ボードであるJev Decision Indexで測定されました。このボードのFullスコアでは運営者の非公開テストが80%を占め、そのテストは運営者自身が実行しています。Bobcat 1.3のスコアは62.8で、Perplexity Decider v1.1(62.8)、Darwin-27B-ZTC(62.5)と並ぶ同率3位です。スコア順では166エントリー中5位で、同じケースでのJevの60.1を上回りました。ここまでの経緯はBobcatの物語にあります。

Jev Decision Index 0.3.2のボード。Fullスコアで、Jev以上のモデルに絞り込んだ表示です。66.3からJevの60.1まで12本のバーが、順位のグループごとに並んでいます。同率1位はvLLM-SR d3 (27B) 66.3とlinne-oak 1.0 (31B) 65.6、同率2位はDecider 31B (NVFP4) 64.6とSieve 31B 63.8、同率3位はBobcat 1.3 (31B) 62.8、Perplexity Decider v1.1 (27B) 62.8、Darwin-27B-ZTC 62.5、同率4位はMORJ 1.0.1 61.0、AnyJev L0 60.2、Fastino GLiDE no-thinking 60.2、Sieve 27B 60.2、Jev 60.1です。
2026年10月14日のDecision Indexボード。Fullスコアで、ボード自身の「Jev and above」フィルターをオンにしています。Bobcat 1.3は5本目のバーで#3のグループにあり、Jevは右端の黒いバーです。すべてのベンチマークはBobcat 1.3のページで見られます。

限界

  • 40本の新しいゲームのうちクリアしたのは85%で、私たちの目標である10本中9本に届いていません。また、40本のゲームは小さなサンプルです。
  • 1つのバッチの20本は同じ新しいゲームから始まり、混み合ったモデルサーバーで生じる小さな数値の違いでしか差が生まれません。20人の独立したプレイヤーではないということです。序盤の章を同じように進めることが多く、行き詰まりも1つずつではなく、種類ごとにまとまって起きました。
  • どちらのコミットも、このゲームに合わせて調整しています。すべての修正とヒントは、このゲームの以前のプレイから来たものです。検証用に取っておいたゲームはなく、別のゲームにはそれ専用のハーネスが必要です。
  • ガイドは私たちが書いたもので、ゲームの固定のパズルの答えと、捕まえるチームが含まれています。
  • バッチは記録していなかったため、記録したゲームはバッチのあと、バッチBのコミットでプレイしたものです。動画は、その中で最初にクリアしたゲームです。

コード、ガイド、決定のログは、github.com/foxl-ai/bobcatのdemos/pokemonにあります。カートリッジのダンプは各自で用意する必要があり、ROMやゲームのアセットは公開していません。ポケモン(Pokémon)は任天堂、クリーチャーズ、ゲームフリークの商標です。これは独立した研究デモであり、これらの企業やTypeSafe AIとは関係がなく、承認も受けていません。モデルについては、Bobcat: Typed Decisions from One Forward Pass(英語)で説明しています。

この記事は韓国語でも読めます。

参考資料

  1. コード、ガイド、決定のログ(GitHub)参考
  2. Bobcat 1.1の重み(これらのゲームをプレイしたモデル)参考
  3. Bobcat Flash 1.1の重み(バトルの技のほとんどを担当)参考
  4. Bobcat 1.3の重み(最新リリース)参考
  5. Jev Decision Indexのボード参考
  6. Continual Harness(arXiv)参考
  7. PyBoyエミュレーター参考
  8. pret/pokegoldの逆アセンブル参考