Перейти к основному содержимомуПерейти к содержимому
Блог
Русский
Разбор

ИИ играет в Pokémon Gold: Bobcat от новой игры до 16 значков

Bobcat никогда не пишет ни слова: он читает состояние и возвращает по одной вероятности на каждый вариант. Мы поставили корейскую версию Pokémon Gold за обвязку, которая только сообщает факты и перечисляет действия, разрешённые игрой, дали Bobcat руководство по прохождению и позволили ему принимать все решения с новой игры. Двадцать новых игр на одном коммите, без изменений по ходу: 17 выиграли все 16 значков, в медиане за 19,3 часа игрового времени каждая. Вторая серия на другом коммите закончилась так же, 17 из 20. Случайные ответы на той же обвязке не принесли ни одного значка. Ещё одна игра записана целиком; шесть застрявших перечислены с причинами.

Foxl AIОбновлено 10 мин чтения

Ред на горе Сильвер, последний бой игры, в ускорении, из одной из записанных игр. Слева игра; рядом состояние, которое получил Bobcat, варианты, которые он оценил выше всего, с кнопками для каждого и их вероятностями, и журнал его выборов. GIF
На этой странице
Проверено 14 октября 2026 г. по выпущенной реализации и сохраненным тестам.

Обновление (2026-10-14): наша последняя модель, Bobcat 1.3, делит третье место в Jev Decision Index с результатом 62,8 против 60,1 у Jev (подробнее ниже). Игры в этой статье сыграл более ранний выпуск, Bobcat 1.1, а в боях Bobcat Flash 1.1.

Bobcat - модель, которая никогда не пишет ни слова. Получив состояние и список вариантов, она возвращает по одной вероятности на каждый вариант, и больше ничего не умеет. Мы поставили корейскую версию Pokémon Gold за обвязку, которая только сообщает факты и перечисляет действия, доступные в игре в данный момент, дали Bobcat прочитать руководство по прохождению и позволили ему с новой игры принимать все решения: куда идти, что там делать, каждый приём в каждом бою, что покупать, кого ловить и когда шаг прохождения выполнен.

Затем мы запустили 20 новых игр одновременно, все на одном коммите, и ничего не меняли, пока они шли. 17 из 20 выиграли все 16 значков, восемь в Джото и восемь в Канто, по пути победив Элитную четвёрку и Чемпиона. Дошедшей до конца игре понадобилось в медиане 19,3 часа по собственным часам игры и около 5 100 решений. Мы сделали это дважды, на двух коммитах с разницей в несколько часов, и обе серии закончились результатом 17 из 20. Та же обвязка со случайными ответами не выиграла ни одного значка.

Наша собственная планка была девять игр из десяти, и до неё мы не дотянули: шесть застрявших игр перечислены ниже, у каждой своя причина. После серий мы запустили ещё три игры на коммите второй серии и записали их кадр за кадром; все три выиграли шестнадцать значков, победили Реда на горе Сильвер и поймали Хо-Ох. Видео здесь показывают ту, что закончила первой: 4 887 решений и 19,9 часа игрового времени.

Две панели, по одной на серию из двадцати новых игр, каждая игра - ступенчатая линия значков по игровым часам. На каждой панели большинство линий доходят до шестнадцати значков; застрявшие игры обрываются раньше, каждая отмечена крестиком. Игры, записанные позже на коммите второй серии, нарисованы цветом глины поверх второй панели, а та, что в видео, толще остальных.
Записанная игра за 60 секунд, от спальни до последнего значка (на YouTube). В каждом кадре слева игра; панели показывают, что получил Bobcat для этого решения, а справа варианты, которые он оценил выше всего, с кнопками, выполняющими каждый из них, и их вероятностью, а ниже журнал его выборов. Чтобы поделиться файлом: видео и его обложка.

Записанная игра: лучшие моменты

8 моментов записанной игры, каждый - это панель в том виде, в каком её видел Bobcat, в ускорении (один записанный кадр - одна секунда игры): слева игра, рядом состояние, которое получил Bobcat, затем варианты, которые он оценил выше всего, с их кнопками и вероятностями, и журнал его выборов. Сначала все 25 за четыре минуты, включая каждого лидера стадиона; затем 8 из них по одному.

Лучшие моменты: каждый лидер стадиона, Элитная четвёрка, пробуждение Снорлакса, Ред и Хо-Ох (на 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).

Как часто он доходит до конца?

Серия - это двадцать игр, запущенных вместе из одной и той же новой игры, в спальне после вступления, на одном коммите обвязки и прохождения. Пока они идут, ничего не правится, и ни одна игра не продолжается с сохранения: застрявшая игра - это игра, которая не дошла до конца. Каждая останавливается, когда выигрывает свой шестнадцатый значок. Игру, которая тысячи решений стояла на одном шаге прохождения без продвижения, останавливали и считали застрявшей.

СерияКоммитВсе 16 значковИгровых часов до финиша (быстрее всех; медиана; медленнее всех)
A13803fe17 из 2017,1; 20,3; 26,0
B6c233f117 из 2017,0; 19,3; 24,2

Вместе это 34 из 40, 85%. Сорок игр не позволяют точно определить долю: 95-процентный интервал простирается от 71% до 93%. Игры, которые не дошли до конца:

  • Серия A, игра 7, с 15 значками: она раз за разом проигрывала Блю, последнему лидеру стадиона, и между боями уходила бродить вместо того, чтобы тренироваться. Остановлена после 4 977 решений на этом шаге, спустя 56,6 часа игрового времени.
  • Серия A, игра 11, с 7 значками: она снова и снова проигрывала Клэр, имея одного сильного покемона и остальную команду далеко позади него, и уходила от её стадиона. Остановлена после 3 514 решений на этом шаге, спустя 22,1 часа игрового времени.
  • Серия A, игра 15, с 7 значками: она откладывала валуны Ледяной тропы как уже прочитанные таблички, хотя Силу нужно применять заново при каждом посещении (исправлено до серии B). Остановлена после 3 215 решений на этом шаге, спустя 19,9 часа игрового времени.
  • Серия B, игра 2, с 8 значками: она не смогла научить Водопаду своего Гаярдоса, который уже знал четыре приёма: два вопроса игры остались непрочитанными, и обучение так и не состоялось. Остановлена после 5 677 решений на этом шаге, спустя 27,6 часа игрового времени.
  • Серия B, игра 14, с 7 значками: она проиграла Клэр так же, как одна из игр серии A, с командой далеко позади стартового покемона. Остановлена после 6 450 решений на этом шаге, спустя 25,6 часа игрового времени.
  • Серия B, игра 20, с 11 значками: она поехала по велодорожке в Фуксию без велосипеда, и охранник у ворот каждый раз разворачивал её. Остановлена после 4 681 решения на этом шаге, спустя 24,6 часа игрового времени.

Три из шести проиграли бой, который Bobcat должен был выиграть: сильный лидер стадиона против команды, построенной вокруг одного покемона. Остальные три были пробелами в обвязке: валуны, которые она откладывала (это исправили между сериями); вопросы, которые она не прочитала; дорога, о которой она не знала, что та закрыта. Два последних пробела - следующие на очереди исправления; бои же Bobcat должен выигрывать сам.

Что делает обвязка и чего она не делает?

Спидраннер назвал бы обвязку проверкой состояния. Она читает игру и сообщает, что правда: диалог на экране, считанный по пикселям и сверенный с собственным шрифтом картриджа; меню и положение курсора; место и клетку, деньги и значки; команду с уровнем, HP и приёмами каждого покемона и оставшимися PP; сумку и карты Покегира; в бою обоих покемонов и наши собственные типы; и что было опробовано и не сработало (приём без эффекта, выход, который никуда не привёл, проигранный бой с уровнями команды). Она перечисляет, что игра позволяет сейчас: выходы, до которых может дойти игрок, людей и предметы в пределах досягаемости, таблички, воду и деревья для полевого приёма, который знает команда, траву, радио Покегира там, где дорогу перегородил спящий Снорлакс, а в бою приёмы с оставшимися PP, замену, лечебные предметы, покеболы и бегство. У каждого варианта показаны кнопки, которые его выполняют («→5 ↑3 A»), так, как нажимал бы их игрок.

Она не выбирает и не сообщает того, чего не показывает игра. Типы соперника никогда не сообщаются, как и то, эффективен ли приём; Bobcat должен знать это сам или вычитать из того, что игра пишет после приёма. Когда Bobcat выбирает действие, обвязка выполняет его механически: «пойти на 2F Радиобашни» - это кратчайший путь до лестницы и нажатия кнопок, чтобы по ней подняться.

Что решает Bobcat?

В записанной игре:

  • Куда идти и что делать, одним запросом с двумя выборами (Choice), каждый раз, когда меняется ситуация (2 245 решений на карте мира). Выбранное им место сохраняется на несколько следующих решений, и у каждого выхода указано, ведёт ли он туда.
  • Каждый ход в бою: какой приём, менять ли покемона, лечиться, бросать покебол или бежать (2 234 решения).
  • Каждый вопрос и меню: да или нет, что купить, какой приём забыть, кто выучит HM (323 решения).
  • Ловить ли дикого покемона, когда прохождение говорит поймать его, и каким покеболом (13 решений).
  • Кто идёт первым: этот вопрос задаётся в Покемон-центре, когда один член команды сильно опередил остальных или отстал от них (30 раз).
  • Выполнен ли шаг прохождения, там, где это не решает ни один факт, который записывает игра (41 проверка).

Зачем руководство по прохождению и что в нём?

Человек, который впервые играет в длинную игру, читает прохождение, поэтому Bobcat тоже его получает: корейский текст с одной главой на каждое число значков, опубликованный ровно в том виде, в каком его использовали игры. В нём порядок сюжета, названия мест, команда, которую нужно поймать (Мэрип на Маршруте 32, водный покемон, способный выучить Сёрф, Красный Гаярдос), какие типы хорошо работают против каждого лидера, а для немногих головоломок игры с единственным решением (валуны Ледяной тропы, подземные переключатели, телепорты Саффрона) само это решение, сверенное клетка за клеткой с дизассемблированным кодом игры. Что с этим делать, решает Bobcat. Обвязка переворачивает страницу только по фактам: предмет, названный в шаге, лежит в сумке, место, которым шаг заканчивается, посещено, названный тренер побеждён, событие, которое записывает игра (возвращённая деталь Электростанции, бой со Снорлаксом, разговор с Блю на Синнабаре), отмечено.

Какие выборы делал не Bobcat?

У обвязки есть жёсткие правила, каждое - в опубликованном коде со своим порогом, и каждое учитывается в журнале игры. На карте мира они откладывают лучшее действие Bobcat, когда тот повторяется: действие, выбранное четыре раза из пятидесяти на одной карте, выход, который дважды не сработал, человек, который трижды сказал одно и то же; тогда выполняется следующее по вероятности действие Bobcat, а если отложено всё, то то, что делалось давнее всего. В записанной игре 79% из 2 245 действий на карте мира были собственным первым выбором Bobcat. Бои, вопросы и поимка - это ответы Bobcat. Кое-что делается без вопросов: вступление, отказ от прозвищ, подтверждение покупки или обучения, которые выбрал Bobcat, и выход из зацикленного меню, которое обвязка не понимает.

Кто выбирал каждое действие на карте мира в записанной игре: часть из них - собственный первый выбор Bobcat, остальные задало одно из опубликованных правил против зацикливания.

Откуда мы знаем, что играет не обвязка?

Когда каждый выбор тянули случайно на той же обвязке, на том же коммите и с той же новой игры, она не выиграла ни одного значка за 9 517 решений. Обвязка не нейтральна: она идёт туда, куда выбрано, и помечает выходы, ведущие к местам из прохождения, поэтому случайные ответы вообще куда-то продвигаются. Разница между этим и шестнадцатью значками - заслуга Bobcat. Кроме того, для каждого решения обвязка записывает состояние, которое получил Bobcat, каждый вариант с его вероятностью и то, какое правило, если такое было, отложило его выбор, так что это утверждение можно проверить строка за строкой.

Как мы к этому пришли?

Обвязка писалась под эту игру с Bobcat в цикле, и большая часть работы ушла на то, чтобы находить, что она читала неправильно глубоко в игре: оставленное открытым меню PC, экран команды после того, как покемон потерял сознание, карман сумки, прочитанный наполовину отрисованным, пустой карман предметов, принятый за карман покеболов, список в магазине, который не реагировал на короткие нажатия кнопок, корабль, прибывший, пока прохождение ещё велело найти капитана. Каждая такая ошибка проявлялась только через сотни или тысячи решений. Когда игра застревала на одной из них, мы исправляли обвязку и продолжали эту игру с последнего сохранения, так первые игры и дошли до шестнадцати значков, Реда и Хо-Ох. Потом пришли серии, по двадцать новых игр за раз: застревания каждой серии становились исправлениями следующего коммита, а изменения подсказок в прохождении проверялись включёнными и выключенными с одних и тех же сохранений, прежде чем остаться. Две серии выше - последние две. Между ними мы исправили одно, что показала серия A, валуны Ледяной тропы, и переименовали лестницу между Голденродом и его подземельем, которую игры принимали за комнату с переключателями.

Где Bobcat слаб?

  • Бои против сильного лидера с перекошенной командой, как выше. В записанной игре он проиграл 30 боёв и выиграл 229 против тренеров.
  • Он опирается на стартового покемона (к концу записанной игры в команде были Тайфложн 93-го уровня, Тогетик 30-го уровня, Мэрип 8-го уровня, Слоупок 10-го уровня, Гаярдос 34-го уровня и Хо-Ох 40-го уровня); на вопрос, кто пойдёт первым, он чаще всего оставляет порядок как есть.
  • Без правил против зацикливания не обойтись: 21,0% действий на карте мира в записанной игре задало одно из них.

Сколько это стоило?

Записанная игра израсходовала 9 015 052 входных токена за 4 887 решений. Она шла 0,9 часа на одной арендованной видеокарте RTX PRO 6000 (96 ГБ), которую делила с другими записанными играми; по $2,76 в час это время стоит $2,37. Дошедшая до конца игра из серий в медиане израсходовала 9,4 млн входных токенов; двадцать игр делят одну видеокарту. Всё, что стоит за двумя сериями, включая серии перед ними и проверку каждого исправления, заняло 39,8 часа одной видеокарты по $4,12 в час, то есть $164,13. Для масштаба: токены записанной игры по опубликованной прейскурантной цене Jev, $0,042 за миллион входных токенов, стоили бы $0,38; это ориентир, а не измерение какого-либо из двух сервисов на этой нагрузке.

Bobcat после этих игр

Игры выше сыграл Bobcat 1.1, а в боях Bobcat Flash 1.1. Наш последний выпуск, Bobcat 1.3 (2026-10-11), в них не играл. Вместо этого его измерили на Jev Decision Index, публичном рейтинге моделей принятия решений, где Full score на 80% состоит из закрытых тестов его кураторов, и эти тесты кураторы запускали сами. Bobcat 1.3 набрал 62,8 и делит третье место с Perplexity Decider v1.1 (62,8) и Darwin-27B-ZTC (62,5): пятый по баллу из 166 участников и выше Jev с его 60,1 на тех же задачах. Как он к этому пришёл, рассказано в истории Bobcat.

Рейтинг Jev Decision Index 0.3.2, Full score, отфильтрованный до моделей на уровне Jev и выше. Двенадцать столбцов от 66.3 вниз до Jev с 60.1, по группам мест: #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.
Рейтинг Decision Index на 2026-10-14, Full score, с его собственным фильтром «Jev and above». Bobcat 1.3 - пятый столбец, в группе #3; Jev - чёрный столбец справа. Все бенчмарки - на странице Bobcat 1.3.

Ограничения

  • 85% из 40 новых игр дошли до конца, это ниже нашей собственной планки в девять из десяти, а сорок игр - небольшая выборка.
  • Двадцать игр одной серии начинаются с одной и той же новой игры и различаются только небольшими численными расхождениями загруженного сервера модели. Это не двадцать независимых игроков: игры часто одинаково проходили первые главы, а застревания шли типами, а не по одному.
  • Оба коммита настраивались на этой игре: каждое исправление и каждая подсказка взяты из более ранних её прохождений. Отложенной игры для проверки нет, и для другой игры понадобилась бы своя обвязка.
  • Прохождение написали мы, и в нём есть решения неизменных головоломок игры и команда, которую нужно поймать.
  • Записанные игры сыграны после серий, на коммите серии B, потому что сами серии не записывались; видео показывают первую из них, дошедшую до конца.

Код, прохождение и журналы решений лежат в github.com/foxl-ai/bobcat, в demos/pokemon. Нужен собственный дамп картриджа; ни ROM, ни ресурсы игры не публикуются. Pokémon - товарный знак Nintendo, Creatures и GAME FREAK. Это независимая исследовательская демонстрация, не связанная с ними или с 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Справка