Игры / Эксперимент

Jev играет в Pokémon Red

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

Запись автора: Pokémon Red и решения Jev во время боя
Запись игрового интерфейса автора · Оригинал
По делу

Что это решает

В этом проекте Jev не видит поток игровых кадров и не нажимает кнопки напрямую. Python читает состояние Pokémon Red из памяти эмулятора PyBoy, строит список допустимых действий и спрашивает модель только на развилках.

Результат для пользователя

Посмотреть, как модель выбирает ход в настоящей игре Game Boy

Что происходит между экраном и моделью

Эмулятор исполняет игру, а код извлекает из памяти конкретные факты: где находится персонаж, какой диалог открыт, какие варианты доступны в меню, что произошло в бою. Маршрут, проверка допустимости и арифметика остаются в Python. Jev получает цель и ограниченный выбор — например, взять ли предложенного покемона или давать ли ему прозвище.

Один и тот же ответ «да» не подходит для обеих ситуаций. В опубликованном логе автор показывает, как модель выбирает «да» при предложении взять Чармандера и «нет» при вопросе о прозвище. Между развилками код ведёт игру сам, без API-вызова на каждый кадр.

Что видно на записи

Автор показывает настоящую игру под PyBoy с наложением вероятностей действий. В демонстрации персонаж выходит из дома, добирается до профессора Оука, получает Чармандера и выигрывает бой с соперником. Это конкретный воспроизведённый маршрут, а не доказательство универсального прохождения Pokémon.

Скорость и границы эксперимента

В README опубликованы шесть замеров ответа через шлюз: медиана 621 мс. Сам автор подчёркивает малый объём выборки и не публикует оценку калибровки, пока данных недостаточно. Поэтому сравнивать этот прогон с полноформатными игровыми агентами как полноценный бенчмарк нельзя.

Как попробовать самому

  1. 01Установить зависимости через uv sync и указать свой легальный ROM Pokémon Red: игра не включена в репозиторий.
  2. 02Добавить ключ TypeSafe и запустить uv run jpp play --rom /путь/к/red.gb --overlay.
  3. 03Смотреть, в каких местах происходит вызов Jev, и сопоставлять вероятности с реально доступными действиями.
Инструкция и код автора

Ограничение этого проекта

Авторский результат относится к одному ограниченному маршруту и малой выборке вызовов; ROM и игровые данные пользователь предоставляет самостоятельно.