Jev играет в Pokémon Red
Код читает память эмулятора и предлагает только допустимые действия. Jev выбирает на развилках; обычные игровые кадры идут без вызова модели.

Что это решает
В этом проекте Jev не видит поток игровых кадров и не нажимает кнопки напрямую. Python читает состояние Pokémon Red из памяти эмулятора PyBoy, строит список допустимых действий и спрашивает модель только на развилках.
Посмотреть, как модель выбирает ход в настоящей игре Game Boy
Что происходит между экраном и моделью
Эмулятор исполняет игру, а код извлекает из памяти конкретные факты: где находится персонаж, какой диалог открыт, какие варианты доступны в меню, что произошло в бою. Маршрут, проверка допустимости и арифметика остаются в Python. Jev получает цель и ограниченный выбор — например, взять ли предложенного покемона или давать ли ему прозвище.
Один и тот же ответ «да» не подходит для обеих ситуаций. В опубликованном логе автор показывает, как модель выбирает «да» при предложении взять Чармандера и «нет» при вопросе о прозвище. Между развилками код ведёт игру сам, без API-вызова на каждый кадр.
Что видно на записи
Автор показывает настоящую игру под PyBoy с наложением вероятностей действий. В демонстрации персонаж выходит из дома, добирается до профессора Оука, получает Чармандера и выигрывает бой с соперником. Это конкретный воспроизведённый маршрут, а не доказательство универсального прохождения Pokémon.
Скорость и границы эксперимента
В README опубликованы шесть замеров ответа через шлюз: медиана 621 мс. Сам автор подчёркивает малый объём выборки и не публикует оценку калибровки, пока данных недостаточно. Поэтому сравнивать этот прогон с полноформатными игровыми агентами как полноценный бенчмарк нельзя.
Как попробовать самому
- 01Установить зависимости через
uv syncи указать свой легальный ROM Pokémon Red: игра не включена в репозиторий. - 02Добавить ключ TypeSafe и запустить
uv run jpp play --rom /путь/к/red.gb --overlay. - 03Смотреть, в каких местах происходит вызов Jev, и сопоставлять вероятности с реально доступными действиями.
Ограничение этого проекта
Авторский результат относится к одному ограниченному маршруту и малой выборке вызовов; ROM и игровые данные пользователь предоставляет самостоятельно.