Slide 1

Slide 1 text

グラフ基盤ワークフローで実現する LLMによる自動ゲームプレイ 株式会社WFS エンジニア 崔 碩訓

Slide 2

Slide 2 text

崔 碩訓 株式会社WFS エンジニア 2017年4月、ファンプレックス株式会社 (現:グリーエンターテインメント株式会社)に 入社後、株式会社WFSに配属。 エンジニアリード、開発ディレクション、 開発プロジェクト管理などを経て、2026年 7月よりData Platform チームにてAIを用いた、 ゲーム開発・QA自動化における共通課題の 解決に携わる。 2

Slide 3

Slide 3 text

アジェンダ 1. はじめに ○ AI自動プレイの課題と開発成果 2. システムの構造 ○ アーキテクチャ全体像 ○ レイヤー別の詳細構成 3. システム構築における工夫 ○ How We Build(開発のアプローチ) ○ LLM単体の推論を超えるための課題 ○ ゲームの状態を正しく認識させる工夫 4. まとめ 3

Slide 4

Slide 4 text

はじめに 4

Slide 5

Slide 5 text

用語・参考論文 用語 本セッションでの定義 人間 複数のゲームで共通する仕組みが 分かっていて、滞りなく操作できる プレイヤーを指す AI 26年現在、動作やアーキテクチャ 基盤が共通する主要な LLMを指す 使用 モデル gemini-3.6-flash Qi, R., Ni, Y., Jiang, L., Li, Z., Huang, K., & Guo, X. (2025, October 21). Memory-Augmented State Machine Prompting: A novel LLM agent Framework for Real-Time Strategy Games. arXiv.org. https://arxiv.org/abs/2510.18395 Cemri, M., Pan, M. Z., Yang, S., Agrawal, L. A., Chopra, B., Tiwari, R., Keutzer, K., Parameswaran, A., Klein, D., Ramchandran, K., Zaharia, M., Gonzalez, J. E., & Stoica, I. (2025, March 17). Why do Multi-Agent LLM systems fail? arXiv.org. https://arxiv.org/abs/2503.13657 5

Slide 6

Slide 6 text

取り組んだ課題 自動 手動 自動テスト 手動テスト 「自動テスト」にするには保守が煩わしく、 「手動テスト」をするには単調な操作が続く 『曖昧な領域』 6

Slide 7

Slide 7 text

成果物1 : AIによる自動プレイを実装 ■リグレッションテストの様子 ・『ヘブンバーンズレッド』をプレイ ・MacにUSBで実機(Pixel 10)を 接続して本システムを起動しています。 ・AIが実機を直接操作し、ゲームを プレイします。 ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 7

Slide 8

Slide 8 text

成果物2 : AIの成果物を可視化 リグレッションテストの様子 ■全工程のログ保存 AIによる操作は、すべての工程が詳細な ログとして自動で残されます。 ■直感的な可視化ツール 保存されたログを可視化ツールから いつでもプレイした状況を確認・検証 できます。 ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 8

Slide 9

Slide 9 text

成果物2 : AIの成果物を可視化 ■指定した目標が達成できた時の一覧が表示される ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 9

Slide 10

Slide 10 text

成果物2 : AIの成果物を可視化 ■全ての操作の履歴がタイムラインとして表示される 種別で色分けされた各サイクルのフレームが操作できる ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 10

Slide 11

Slide 11 text

成果物2 : AIの成果物を可視化 ■タイムラインを見返せる ■ 本プレイのトークン使用量 (参考値) 1 サイクルあたり - 入力:約 1万 トークン - 出力:約 1千 トークン プレイ全体 - 125サイクル - 137.5万トークン ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 11

Slide 12

Slide 12 text

AIだけでプレイさせると直面する壁 ■AIは判断はできるが、ゲームのルールは知らない 12

Slide 13

Slide 13 text

AIだけでプレイさせると直面する壁 【実例】 会話画面での操作ルール タップで一度にスキップ 長押し中だけ早送り ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 13

Slide 14

Slide 14 text

AIだけでプレイさせると直面する壁 ■汎用的なAIは、単に早送りをタップする ・ゲームのルールが分からない ・学習頻度が高いであろう[▷▷]を優先する ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 14

Slide 15

Slide 15 text

AIだけでプレイさせると直面する壁 ■本システムではスキップをタップする ・ゲームのルールが分かるようになる ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 15

Slide 16

Slide 16 text

システムの構造 16

Slide 17

Slide 17 text

システムの全体構造 17

Slide 18

Slide 18 text

インタフェース / デバイス ■構成 - インタフェース python cli, ブラウザー ■構成 - デバイス langgraph-cua-py android : uiautomator2 iOS : WebDriverAgent ■役割 ・プレイ目標を指定してシステムを起動する ・システムがデバイスを操作できるようにする ・実行結果や動作成果の確認を行う ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 18

Slide 19

Slide 19 text

ドメイン宣言 ■スキル 「アイテムを拾う操作方法」等を mdファイルに記述して、 ゲームの知識をプロンプトに渡す ■ミッション 「クエストが示すアイテムを集める」等の 達成目標をYAMLで定義して、 具体的な行動指針をプロンプトに渡す ■ワークフロー テストシナリオに沿って複数の ミッションを組み合わせて、 実行順序・操作手順を制御する ゲーム知識を平文で書いたスキル(md) 19

Slide 20

Slide 20 text

ロジック ■構成 pyyaml opencv ■役割 ・ゲームの状況に合わせて、AIに 渡すプロンプトを動的に構築する ・スクリーンショットからデータを 取得・判定して、進行を制御する ・AIの無限ループ等の異常を検知し システムを安全停止させる pythonの純関数で構成 20

Slide 21

Slide 21 text

エージェント基盤 ■構成 pydantic LangGraph ■役割 ・LangGraphをベースに、ゲームの 状態を追跡しながら次に必要な処理へ 適切に分岐する ・LLMや外部ツールなど、システムが 利用する各種機能を一括管理する グラフの図式 21

Slide 22

Slide 22 text

推論 ■構成 google-genai dinov2 ■役割 ・OpenAI互換APIを通じてLLMへ プロンプトやパラメータを適切に伝達する ・スクリーンショットからの要素抽出や バウンディングボックスの検出を行い LLMに連携する ・テキストだけでは捉えきれない画像の 情報を抽出・補完する バウンディングボックス検出およびLLMからの出力例 ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 22

Slide 23

Slide 23 text

観測 ■構成 jsonl langfuse ■役割 ・プレイした全工程におけるログを jsonl形式で記録する ・デバッグに必要な情報をlangfuseに 送信する ・システム全体の成果や実行時の 挙動を視覚的に確認・追跡する プレイした全工程をログとして保存 23

Slide 24

Slide 24 text

観測 ■trace.jsonl 中身: 構造化ログ(プロンプトは除外) 用途: ブラウザビュアー(inspector)での 高速閲覧・機械的リプレイ ■Langfuse 中身: プロンプト全文 & レスポンス全文 用途: プロンプトチューニング時 モデル挙動の詳細追跡 24

Slide 25

Slide 25 text

長期記憶 ■構成 vectorize-io/hindsight ■役割 ・ログから失敗した操作や共通の 観測傾向を抽出し、スキルへの反映 提案をレポートとして作成する ・提案をHITL(Human-in-the-Loop) で評価してスキルを更新する ログから得た改善点の提案レポート ・知識をスキルとして永続化(長期 記憶化)し、次回のプレイに反映する 25

Slide 26

Slide 26 text

システム構築における工夫 26

Slide 27

Slide 27 text

1. How We Build 27

Slide 28

Slide 28 text

1. How We Build ■取り組み ・コーディングエージェント(Claude Code等)を活用し、実装効果を細かな 粒度で計測 ・「実装 ➔ 計測 ➔ 有効性の確認 ➔ 採用」 というサイクルでシステムを構築 ■利点 ・エージェント開発で陥りがちな オーバーエンジニアリングを防げる ・実測データに基づき、機能の 取捨選択を客観的に判断できる 実測の一例 28

Slide 29

Slide 29 text

2. ゲームの知識を平文(Skills)で書く ■仕組み common: 全画面共通の安全ルール screens: 現在の画面固有の知識 capabilities: 実行可能な機能 routing.yaml: (画面 × 機能) の対応関係を 定義するルーティング表 ■役割 画面状態や目的に応じ、4種の定義から プロンプトを動的に合成してゲームの 知識をAIに与える ゲーム知識をシステムのコードと分離して 管理することができるようにする --name: advance_dialogue description: ADV パートの台詞・演出を送って先へ進める。 metadata: kind: capability --## 操作メカニクス 台詞ウィンドウ(画面下部の帯)をタップすると次の台詞に進む。 右上の ▷(オート)を有効にすると自動で送られる。 ▷|(next scene button)は次の停止点(選択肢)まで会話を進める。 ▷▷(fast forward button)は**押している間だけ**早送りする。1 タップ では指を離した瞬間に止まるので、会話はほとんど進まない。 ## 行動ツリー(上から順に評価する) 1. 右上のボタン列の**左から 2 番目**にある「▷|」(next scene button)をタップする。これが既定の手である。次の停止点まで一気に進 む。 2. いちばん右の「▷▷」(fast forward button)は押さない。 押している 間だけ早送りするボタンなので、1 タップでは会話が進まない。 会話操作スキルのmd 29

Slide 30

Slide 30 text

3. メタ情報をシステムで捉えてAIに渡す 【実例】 ・座っているキャラクターとはすでに会話をしていて、また 話しかけても同じセリフだけを言う ・AIは視覚的な「吹き出し」に誘導され、タップを繰り返してしまう ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 30

Slide 31

Slide 31 text

3. メタ情報をシステムで捉えてAIに渡す ①履歴なしでのAIアウトプット 操作履歴 NPCの前にキャラクターが十分に近づきまし た。吹き出しアイコンが出ており、距離も適切 になったためタップして会話を開始します。 # What has happened so far ## 4 cycles ago — on the field screen: 吹き出 しを押して会話を開始する; 画面に変化はありま せん. This was not what you expected. ②履歴ありでのAIアウトプット これまで吹き出しを直接押す操作や各種移動を 試してきましたが、中央へ移動したことで NPCとの距離が十分に詰まりました。吹き出 しが表示されているため、再度吹き出しをタッ プして会話を開始します。 ## 2 cycles ago — on the same screen You did: 吹き出しをタップしてキャラクターに 報告します。 What happened: No change detected between the first and second screenshots. ## Last cycle — on the same screen because: 吹き出しのタップが2回連続で効果 を発揮しなかったため、位置や向きがキャラク ターに対して不十分である可能性があります。 31

Slide 32

Slide 32 text

4. DINOによる視覚判定の補助を与える ■DINOを使いキャラクターに4桁のIDを採番し、プロンプトで渡す ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 32

Slide 33

Slide 33 text

4. DINOによる視覚判定の補助を与える ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 33

Slide 34

Slide 34 text

4. DINOによる視覚判定の補助を与える 【判定例】コサイン類似度を計算 ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 34

Slide 35

Slide 35 text

4. DINOによる視覚判定の補助を与える ■画像比較の結果をIDとして表すことができて、警告が出せる ©WFS Developed by WRIGHT FLYER STUDIOS © VISUAL ARTS/Key 35

Slide 36

Slide 36 text

4. DINOによる視覚判定の補助を与える ■AIに判断を委ねるのではなく、システムが制御して初めて成功した 36

Slide 37

Slide 37 text

5. 情報伝達の一元化:advisories ■仕組み AgentState の履歴から、モデルに 伝えるべき「警告(Advisories)」を 1箇所で自動抽出する ・同じ操作の繰り返し ・同じサイクル(移動→会話)の繰り返し ・失敗履歴、DINOによる情報 ■役割 連続失敗やループを検知したら、 Decideノードのプロンプトへ禁止を 注入する 37

Slide 38

Slide 38 text

6. 履歴からの改善をスキルに残して長期記憶化 ■仕組み ログから実行履歴や観測結果をHindsightの データベースへ投入する。 取得した事実と現在のスキルを照らし合わせ、 どのファイルをどう修正すべきかのレポートを 生成する。 ■役割 ・人間への申し送りツールとして機能する ※ 不具合や仕様変更による一時的なエラーを 記憶として残さないため ・スキルはファイルとして保持されるため、 履歴から得た改善が永続的な長期記憶となる スキルの改善提案レポート 38

Slide 39

Slide 39 text

6. 履歴からの改善をスキルに残して長期記憶化 39

Slide 40

Slide 40 text

6. 履歴からの改善をスキルに残して長期記憶化 【ログ】 【レポート】 【スキル】 全工程のパターンから 知見を抽出 改善提案レポートとして 形式知化 獲得した知見を「スキル ファイル」として永続化 40

Slide 41

Slide 41 text

まとめ 41

Slide 42

Slide 42 text

まとめ ■今回の実践 ■ 今後の展望 ・AIによる自動プレイを実現し、決まった 処理だけできる自動テストよりも柔軟な テストができるようになった ・仕組みの洗練化 ・システムロジックとゲーム知識を 分離して管理できる構造を実現できた ・資産の高度化 ・メタ情報の扱いや、プレイ履歴を 「短期・長期記憶」として活用する 仕組みを導入できた より多様な機能や状況に対応した自動 プレイができるようにする 単なる「自動プレイログ」から 「品質・開発を支える検証基盤」へ拡充する 42

Slide 43

Slide 43 text

ご清聴ありがとうございました 43

Slide 44

Slide 44 text

No content