- クラシックゲーム どうぶつの森(GameCube, 2001) の反復的なセリフを、リアルタイムのクラウドベースLLM対話に置き換えるプロジェクト
- ゲームコードを改変せず、メモリハッキングと共有メモリ(mailbox)方式によって外部のPythonスクリプトとAIを接続
- ゲーム内テキストは単なる文字列ではなく特殊な制御コード言語で処理されるため、独自のエンコーダー・デコーダーを実装して解決
- セリフ生成は**Writer(創造的なセリフ作成)とDirector(制御コード・演出追加)**に分離し、品質を確保
- その結果、村の住民たちがニュース、うわさ、風刺まで反映した予測不能なAI対話を繰り広げ、クラシックゲームに新たな生命力を与える
- プロジェクトのコードは GitHub で公開
問題定義
- どうぶつの森は魅力的である一方、反復的なセリフでも有名だが、23年経ってもセリフは変わらず、これを革新的に変える方法が考案された
- 問題は、GameCubeが485MHz CPU、24MB RAM、ネットワーク非対応という閉じた環境であること
- オリジナルのゲームはコードを変更せず、そのまま維持する必要があった
- 反復的なセリフを現代のLLMに置き換えるブリッジ構築が目標
第一段階: 会話システムのハッキング
- コミュニティによるAnimal CrossingデコンパイルのおかげでCコードにアクセス可能
m_message.c ファイルの関数呼び出しをフックし、セリフテキストの置き換えに成功
- しかし、外部AIデータをリアルタイムでやり取りする方法が課題として残った
メモリメールボックス方式
- GameCube RAMの特定領域をIPCメールボックスとして活用
- Pythonスクリプトがメモリアドレスへ直接書き込み/読み取り → ゲームとAIの間で通信
- メモリスキャナーを作成し、話者名(0x8129A3EA)、セリフバッファ(0x81298360) のアドレスを特定
制御コード言語
- 単純な文字列を送信するとゲームがフリーズした
- 理由: どうぶつの森は
<End Conversation>, <Pause>, <Color Line> などの制御コードベース言語を使用
- Pythonでエンコーダー/デコーダーを作成 → 人間に読みやすいテキスト ↔ ゲームが理解するバイト列へ変換
ネットワーク代替案の検討
- GameCube Broadband Adapter は存在するが、Animal Crossingにはネットワークスタックがない
- BBAを使うにはネットワークスタックと非同期I/Oを追加する必要があり、非効率的
- その代わりにエミュレータのメモリハッキングの方がシンプルで安定していると判断
AIパイプライン
- 当初は単一のLLMに創作と制御コードの両方を担当させたが、品質上の問題が大きく、Writer-Director分離戦略を選択
- Writer: キャラクターの性格に基づいて創造的なセリフを生成(ファンWikiのデータを活用)
- Director: セリフを読み、適切な制御コード、表情、色、サウンドを挿入
- この2段階LLMパイプラインは、AIの創造性と技術的要件を分離し、それぞれの強みを活かす構成
- 役割分担により安定した品質を確保
結果と広がり
意義
- レトロコンソールハッキング、AI統合、ゲーム保存が結びついた実験的プロジェクト
- 2001年のゲームに2025年のAIをつなぎ、世代を超えたインタラクションを実現
- ゲームはもはや反復的な会話ではなく、生きた仮想世界へと進化
- 開発プロセス全体/デモ動画: Modern AI in a 24-Year-Old Game
まだコメントはありません。