Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み

 【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み

2025/07/23 CEDEC2025

Avatar for Cygames

Cygames PRO

July 29, 2025
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

  1. 5/78 解決したい課題 ◼ 従来はプランナーがシナリオを読んで手動で設定 ◼ AIで最初の叩き台を作りたい ◼ 最終調整は人力 ゲーム内会話パートの要素をAIで求めたい ◼

    モーション、キャラクターの表情差分、パートボイス 求める要素 ◼ 既存ツールへの組み込み ◼ Jenkinsを使ったシステム ツールの提供方法は2種類
  2. 12/78 今回作成したいもの walk01 入力 キャラ名 : セリフ1 キャラ名 : セリフ2

    キャラ名 : セリフ3 出力 モーションの候補x7 モーションの候補x7 モーションの候補x7 最大で7つ依頼元からの指定
  3. 20/78 プロンプトの例(1) 指示内容&出力例 最初の部分はゲームキャラクターの「キャラA」の 「モーション名 : セリフのリスト」の対応関係です。 後半の内容は「行番号 : キャラクター名

    : セリフ」です。 後半の部分のセリフの行ごとに最適な「モーション名」を 5つ程度選んでJSON形式で出力してください。 === (JSONでの出力の例)
  4. 28/78 推論スケーリング 逐次スケーリング vs 並列スケーリング ◼ More Agents Is All

    You Need (Li, 2024) ◼ GPT-3.5を20回実行するとGPT-4と同じ性能 多数の論文が発表済み ◼ 今回の手法 GPT-4oモデルで多数決
  5. 29/78 複数回実行して多数決 ◼ 1、5、10、20、30回で正解率が向上 実行回数に応じて正解率が向上 ◼ 乱数のシードを変える ◼ プロンプトの位置を変える ◼

    温度パラメータを上げる 推論にランダム要素を入れる ◼ 当初は0.5 ◼ 0以上の場合は測定が難しい 温度パラメータ=0
  6. 30/78 プロンプトの位置によって結果が変わる ◼ 通称「Lost in the Middle」 ◼ 関連論文「Lost in

    the Middle: How Language Models Use Long Contexts」(Liu, 2023) ◼ モデルの種類によって異なる プロンプトが長いときに真ん中が無視される 文章の配置を変えると結果が変わる
  7. 32/78 正解率 ◼ 「複数実行して多数決」がかなり有効 ◼ 推論対象のセリフはプロンプトから除外 0.39から0.70まで改善 1回 5回 10回

    20回 30回 0.39 0.66 0.66 0.67 0.70 1回 5回 10回 20回 30回 0.49 0.66 0.74 0.78 0.77 上位12候補に正解が含まれる割合 上位7候補に正解が含まれる割合
  8. 34/78 関連論文 ◼ https://arxiv.org/pdf/2402.05120 More Agents Is All You Need

    ◼ https://arxiv.org/abs/2307.03172 Lost in the Middle: How Language Models Use Long Contexts ◼ https://arxiv.org/pdf/2404.11018 Many-Shot In-Context Learning
  9. 36/78 正解率をさらに上げるには? ◼ 長期運営の大型ゲームならLLMが知っている可能性が高い ◼ 「以下はゲーム(XXX)のシナリオです」 ◼ 対象作品を教えるとモデルの知識を使える 作品名をプロンプトに含める ◼

    データが毎月増えるので反映したほうがよい ◼ 今回はUnityからのデータが取得が必要なので対応できず 運営タイプのゲームならデータを更新する ◼ モーションに対応するセリフのリストを要約して利用 ◼ surprise02 : 否定的なニュアンスで驚いたときに利用 セリフのリストを要約する
  10. 38/78 シナリオ執筆ツール ◼ Cygames Tech Conference : ウマ娘 プリティーダービーの大規模シナリオ制作 を効率化するソリューション

    〜社内Webアプリ開発運用事例〜 ◼ ツール内からAI機能を呼び出す シナリオの執筆、監修、台本作成など
  11. 42/78 会話パートのスクリプト作成を効率化したい ◼ 2023年に開発し、PJへ提供済み ◼ 評判がよく、現役で使われている ◼ CEDEC2023 : AIによる自然言語処理・音声解析を用いたゲーム内会話

    パートの感情分析への取り組み ゲーム内会話パートのスクリプト作成の効率化 ◼ 話が来た理由はわかるが…… 同じように別プロジェクトでも効率化したい ◼ ほぼ新規での開発 ◼ AIは新しいものが使える ゲームのスクリプトはPJによって完全に違う
  12. 43/78 スクリプト作成のワークフロー シナリオライター Wordで執筆 スクリプトのテンプレート プランナー キャラクターの表情差分を設定 演出処理を追加 名前 セリフ

    演出指示 キャラA おはよー! キャラ登場 キャラB やぁ、元気? キャラA バッチリ! 名前 セリフ 画像 演出パラメータ キャラA おはよー! A_happy3 1.0 キャラB やぁ、元気? B_happy2 キャラA バッチリ! A_jump1
  13. 46/78 キャラクターは複数の衣装を持つ デフォルト スーツ 正月 ファイル名 説明 normal01 通常 normal02

    通常(目閉じ) angry01 怒り ファイル名 説明 normal01 通常 angry01 怒り angry02 怒り(目閉じ) ファイル名 説明 normal 通常 happy 喜び
  14. 47/78 プランナーのワークフロー 表情差分を確認するためのhtml 表示 表示 表示 ファイル名 説明 normal01 通常

    normal02 通常(目閉じ) angry01 怒り 画像表示+ファイル名がコピー キャラクターA デフォルト衣装 normal01 ボタン
  15. 48/78 マスターデータがない! ◼ ゲーム中のキャラクターリスト ◼ キャラクターごとの衣装リスト ◼ 衣装ごとの表情差分のリスト 自動化のために欲しいデータ ◼

    長いPJなので途中からのデータしか整理されていない ◼ 困った…… マスターデータがなかった ◼ 全部のキャラクターの衣装と表情差分が入っている ◼ イベントごとに確実に更新される 作業用のhtmlをマスターデータとして扱う!
  16. 49/78 問題は残っている ◼ htmlはイベントごとにプランナーが追記 ◼ 微妙に書式が違う! ◼ AIで扱うには大きい(50万行以上、毎月数回更新) 最大の問題は「手打ち」 ◼

    エンジニア:正規表現で頑張って書式の違いを吸収 ◼ プランナー:書式が違う部分を修正、扱いやすいように記号を追加 お互いが頑張って解決 ◼ パースが失敗するごとにデバッグして対応 ◼ 全体の2割の工数を消費 数ヶ月かかって完全にパースできるように
  17. 51/78 コラボへの対応も必要 ◼ 同名のキャラクターが存在する! ◼ 表示するキャラクター名に作品名は入っていない 運営型のゲームでは他作品とのコラボ ◼ htmlのブロックごとに「コラボ」と書いてある ◼

    今回はコラボキャラクターは自動設定の対象外とした htmlファイルから識別可能 プロジェクト キャラ名:XXX コラボ先1 キャラ名:XXX コラボ先2 キャラ名:XXX
  18. 55/78 指示内容&出力例 最初の部分はゲームキャラクターの「キャラA」の「画像ファイル名 : セリフ のリスト」の対応関係です。後半の内容は「行番号 | キャラクター名 : セリ

    フ」です。後半の部分のセリフの行ごとに最適な「画像ファイル」を5つ程度選 んでJSON形式で出力してください。出力は「キャラA」のセリフの行ごとに 「行番号 : 画像ファイル名のリスト」を出力してください。「キャラA」以外 のセリフは出力しないでください。以下は出力の例です。 === "1" : [”10000001_sad.png", " 10000001_angry.png", …], "2" : ["10000003_happy.png", "10000003_laugh.png", …], "3" : ["10000008.png", " 10000008_jump.png", …], ...
  19. 56/78 画像ファイル名 : セリフのリスト === 10000001_sad.png : 「頑張るよ…」「そんな…」 「泣かない…もう」 10000001_happy.png

    : 「わぁい!」「えへへ、嬉しい!」「最高!」 10000001_eyeclose.png : 「ふふ…秘密だよ」「考え中…ねぇ」 ...
  20. 57/78 新規のシナリオ === 1 : キャラA : おはよう! 2 :

    キャラB : やほー、元気? 3 : キャラA : うん、最高! 4 : キャラB : 今日もがんばろ 5 : キャラA : 一緒なら楽しい! ===
  21. 59/78 正解率 ◼ 完全一致 : 0.46 ◼ 上位3候補 : 0.65

    ◼ 上位10候補 : 0.78 10回の多数決 ◼ 表情差分は最大23だが大半は6程度 ◼ 外れていても近いものが選ばれる 選択肢が少ないので正解しやすい
  22. 61/78 候補を絞り込んでいく方式 候補1 候補2 候補3 候補4 候補5 候補6 候補1 候補2

    候補3 候補4 候補5 候補6 候補1 候補2 候補3 候補4 候補5 候補6 候補1 候補2 候補3 候補4 候補5 候補6 2回目 3回目 絞り込み 1回目
  23. 62/78 多段階の推論は有効か? その2 ◼ 正解率が1〜2%向上 ◼ ソースコードの管理の手間とAPIのコストを考えて不採用 1回目の結果を2回目にヒントとして与える === 1

    : キャラA : おはよう!: 10000001_sad.png 2 : キャラB : やほー、元気? 3 : キャラA : うん、最高!: 10000008_jump.png ... 前回選ばれたもの
  24. 64/78 新規のキャラクターへの推論 ◼ ファイル名からある程度の判別は可能 ◼ angry01, angry02などの連番の区別はできない 新規追加のキャラクターは過去のセリフがない 最初の部分はゲームキャラクターの「キャラA」の 「画像ファイル名

    | 画像ファイルの説明テキスト」の対応関係です。 … === 10000001_laugh.png : 楽しい、笑っている表情 10000001_serious.png : 真面目、シリアスな場面での表情 10000001_jito.png : 呆れ、軽蔑の表情
  25. 67/78 演出の処理も追加 ◼ 「場面転換」「選択肢」などの演出指示が入っている ◼ 指示に応じて「セルを埋める+行の追加」 ◼ AIではなくプログラムで対応 エクセルには演出の処理も含まれる 名前

    セリフ 演出指示 キャラA おはよー! キャラ登場 キャラB やぁ、元気? キャラA バッチリ! 名前 セリフ 演出内容 演出パラメータ キャラA おはよー! 登場演出 1.0 キャラB やぁ、元気? キャラA バッチリ! 演出指示に合わせて各種設定を行う
  26. 68/78 演出の処理が多い! エフェクト 地の文 選択肢(分岐あり) 選択肢(分岐なし) シーン開始・終了 男女分岐 ボイスタイプ 季節イベント

    ◼ 演出の処理はAIの処理の2倍の行数 ◼ 工数の7割を使用(AIは1割) 演出の指示の表記揺れにも対応
  27. 70/78 導入した結果、効率化できたのか? ◼ 会話中心のシーンでは5割くらいの効率化 ◼ バトルシーン等、激しく動くシーンでは1割程度の効率化 ◼ 表情が外れることが多いので、修正がやや手間 ◼ 1案件あたり平均2〜3割の効率化

    ◼ 作業前に「おお、ちょっとできてる…!」みたいな感動が ◼ 効率化もそうですが精神的にもありがたみがある ◼ スクリプトを組むとき「0→1」はほぼ考えずにやる作業。 自動化されることで「1→10」にする作業にリソースを 使えるのがとてもありがたい 表情差分の 自動化 案件ごとの 効率化
  28. 74/78 AIでパートボイスを求めたい ◼ セリフから125種類のパートボイスを選ぶ ◼ キャラクターごとにパートボイスは異なる セリフに対応するパートボイスを自動で選びたい ◼ RoBERTaでのファインチューニング ◼

    CEDEC2023 : AIによる自然言語処理・音声解析を用いたゲーム内会話 パートの感情分析への取り組み 2023年の実装 ◼ 今回の手法との性能差が気になったため GPT-4で再実装して比較
  29. 75/78 RoBERTa vs GPT-4o モデル 完全一致 上位20 RoBERTaをファインチューニング 0.35 0.82

    GPT-4oで30回の多数決 0.15 0.64 ◼ 学習データが多いのが原因か? ◼ ファインチューニングが手間 RoBERTaのほうが正解率が高い ◼ 学習が必要ない ◼ 新しいモデルへの置き換えで正解率が上がる 今回の手法
  30. 77/78 まとめ ◼ モーション ◼ キャラクターの表情差分 ◼ パートボイス シナリオから3つの要素を自動設定 ◼

    複数回推論+多数決で正解率向上 推論スケーリングは有効 ◼ 毎月のキャラクター・衣装の追加に対応する仕組み 運用プロジェクトへの対応