GPT Plays Pokemon FireRed(自律AIエージェント)
概要
このリポジトリは、OpenAIのLLMを中核に据えた自律AIエージェントが、エミュレータ上の「Pokemon FireRed」をリアルタイムで操作するためのプロジェクトです。エミュレータ層(mGBA + Lua)でゲーム実行とソケット経由のブリッジを提供し、Pythonのブリッジがゲーム状態(メモリ/画面情報やイベント)を取得してLLMに送信。LLMは受け取った観測から行動を決定し、ブリッジ経由で入力を注入します。結果はライブWebダッシュボードに可視化され、実行ログやスクリーンショットを確認できます。研究・実験向けに構築されており、設定は.envベースで管理されます。
リポジトリの統計情報
- スター数: 23
- フォーク数: 5
- ウォッチャー数: 23
- コミット数: 5
- ファイル数: 14
- メインの言語: Python
主な特徴
- mGBA+Luaでゲーム実行とソケットブリッジを実装し、実機相当の観測を取得
- PythonブリッジとOpenAIのLLMを連携させ、自然言語ベースで行動決定を実行
- ライブWebダッシュボードで進行とログ、スクリーンショットをリアルタイム監視
- 設定は.env例により簡単に構成可能で、拡張しやすいモジュール構成
技術的なポイント
本プロジェクトの中心は「ゲーム環境を現実のセンサーのように扱い、LLMを高レベルの意思決定エンジンとして用いる」点にあります。エミュレータ層ではmGBAに組み込んだLuaスクリプトがソケットブリッジを公開し、ゲーム内のメモリや画面状態、イベント(バトル開始やメニュー遷移など)を逐次外部に送出します。Python側のブリッジ(READMEで言及されている firered_mgba_bridge.py を含む想定)はこのデータを受信し、必要に応じてスクリーンショット取得やメモリ読み出しを組み合わせて観測を構成します。
観測はプロンプトとして整形され、OpenAIのLLMに投げられます。LLMは受け取った情報から高レベル(例:アイテム使用、メニュー遷移、戦闘での攻撃選択)の行動を生成し、ブリッジがそれを受けてエミュレータに対する入力(ボタン押下の注入、Lua経由の関数呼び出し)に変換して実行します。リアルタイム性を保つためにソケット/HTTPでの非同期通信やタイムアウト処理、簡易的な状態追跡(行動履歴、直近フレームの差分)を実装している点が重要です。
また、ライブダッシュボードは実行中の状態、最新フレーム、LLMの出力やログを見やすく集約することで、デバッグやプロンプト改良のサイクルを高速化します。設計はモジュール化されており、他のゲームタイトルや別のエミュレータへ適応しやすい構成になっています。一方で法的/倫理的観点(ROMの使用など)はREADMEでの注意喚起が必要であり、計算コストとレイテンシがLLM主導のループに与える影響を考慮した運用が求められます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .env.example: file
- .gitignore: file
- .gitmodules: file
- LICENSE: file
- README.md: file
…他 9 ファイル
(README抜粋)
GPT Plays Pokemon FireRed
An autonomous AI agent that plays Pokemon FireRed in real time, powered by OpenAI’s LLM — with a live web dashboard for monitoring.
まとめ
LLMをゲーム操作の意思決定に応用するシンプルで実用的なリポジトリ。研究やプロンプト設計に最適。
リポジトリ情報:
- 名前: gpt-play-pokemon-firered
- 説明: An autonomous AI agent that plays Pokemon FireRed in real time using OpenAI’s LLM, with a live web dashboard for monitoring.
- スター数: 23
- 言語: Python
- URL: https://github.com/Clad3815/gpt-play-pokemon-firered
- オーナー: Clad3815
- アバター: https://avatars.githubusercontent.com/u/68906051?v=4