概要
ファミコン時代の「初見殺し」な敵キャラ ― 魔界村のレッドアリーマー、ロックマン2のクイックマンなど、幾多のプレイヤーの心を負ってきた彼ら。本トークでは、AI/MLエンジニアの私が「あの頃倒せなかった敵キャラを、今の技術で返り討ちにしたい」という動機から始めた、Python強化学習による攻略プロジェクトの全工程を共有します。
ただし市販ROMの使用には著作権・上映権の壁があり、技術カンファレンスでの実演は事実上困難です。そこで取った戦略が「自作ファミコンゲームを作る」こと。cc65 + NESlibで6502アセンブリベースの「初見殺しボス」を実装し、Gymnasium環境化、stable-baselines3でPPOエージェントを学習させました。
今回のチャレンジで学んだ知見:
- 自作ROMだからこそ可能なクリーンなメモリレイアウトと観察空間設計
- プレイヤーの攻撃を回避し、人間反応時間(〜250ms)を下回る予告5フレームでカウンターしてくる「RLにしか勝てない」ボス設計
- 報酬関数の試行錯誤と典型的な報酬ハッキング失敗例
- 権利問題を回避しつつゲーム × RLを発表する実践的アプローチ
本トークは「強化学習に手を出してみたいPython中級者」「ゲーム × AIに興味があるエンジニア」「かつてのファミコンのトラウマを今晴らしたい人」のためのものです。
スピーカーについて
Yoshihiro Matsugi
AI/MLエンジニア。業務では画像認識系の開発に従事しています。業務外で Gymnasium + stable-baselines3を触っているうちに「子供の頃倒せなかったレッドアリーマーを、今の技術で殴り返したい」と思い立ち、気づいたら6502アセンブリで自作ボスを書いていました。PyCon JP は今回が初登壇です。直近の最大の功績はSekiroの葦名一心を倒したこと。次の目標は、自作したエージェントが自作したボスを倒すところを皆さんの前でお見せすることです。
- GitHub: https://github.com/caffein1371