「Unreal MCPを入れて終わり」にしない!LLMが使えるプロジェクト専用ツールの作り方【Unreal Fest Tokyo 2026】

「Unreal MCPを入れて終わり」にしない!LLMが使えるプロジェクト専用ツールの作り方【Unreal Fest Tokyo 2026】

2026.11.04
取材レポート注目記事講演レポートAIUnreal Festレポートアンリアルエンジン講演レポート
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

エピック ゲームズ ジャパン主催のアンリアルエンジン公式カンファレンス「Unreal Fest Tokyo 2026」が、2026年11月3日(火・祝)・4日(水)に東京・有明のTFTホールで開催されました。

2日目の講演「Unreal Engine MCP の活用法 – LLM と上手に付き合って作業を効率化」では、エピック ゲームズ ジャパンの鈴木 孝司氏が登壇し、Unreal MCPを使ったUMG(Unreal Motion Graphics)・シーケンサー制作の仕組みが紹介されました。LLMにエディター作業を任せるにはどのようなツールや知識が必要となるのか、実装の過程で生じた問題と、ワークフローを改善した検証の過程が語られた講演の模様をレポートします。

TEXT / 浜井 智史

目次

FTホールをイメージしたレベルで、MetaHumanのキャラクターと会話する検証デモ。UIとシーケンサーによる演出をMCP経由で制作した

講演の目的は、LLMとMCPでエディター作業のワークフローを改善すること。鈴木氏は検証の主な対象として、UIを作るUMG(Unreal Motion Graphics)と、時間軸に沿ってカメラやアニメーションを制御するシーケンサーを選びました。

デモでは、キャラクターへのインタラクトを契機に会話演出が始まります。吹き出しや画面切り替えのUIに加え、カメラの構図を自動調整する仕組みと、JSON形式の絵コンテを読み取ってシーケンサーを生成する仕組みが用意されました。

検証環境はUnreal Engine 5.8.3(以下、Unreal EngineはUEと表記)。追加機能はプロジェクト側のコードやプラグインとして実装しており、エンジン本体は変更していません。なお、講演で紹介された成果は検証用プロジェクトのもので、商用タイトルでの継続運用に基づく実績を示すものではないと申し添えられました。

デモの各要素とMCPの役割を整理した表。画面確認・再起動などの作業基盤、UMG、会話演出を支える仕組みを、プロジェクト側のコードやプラグインとして実装した

Unreal MCPは操作の窓口。知識はスキルで補う

MCP(Model Context Protocol)は、AIと外部のツールを接続するための共通規格です。Unreal MCPは、AIコーディングエージェントとUEをつなぎ、自然言語による指示で必要なエディターの機能を呼び出せるようにします。

講演で紹介された標準のTool Searchモードでは、ツールセットの一覧を取得する「list_toolsets」、ツールセットの説明と中のツールの呼び出しフォーマットを取得する「describe_toolset」、実際にツールを呼ぶ「call_tool」という3つのメタツールを用います。必要な機能の情報だけをLLMのコンテキストへ取り込む方式です。

スライド右の枠内はlist_toolsetsの出力例。オレンジの部分がツールセット名、白い部分がその概要を示している

ツールセットは、LLMに公開する機能をまとめたもので、C++またはPythonで記述できます。関数や引数の型、ソースコードに記したコメントがLLM向けの説明になるため、何をする機能か正確に書く必要があります。

一方、操作手順やプロジェクト固有の知識は、マークダウンの指示書やスキルにまとめて与えます。鈴木氏は、スキルを何も渡さずに進めると遠回りになりやすいと説明。ただし、コンテキストには上限があるため、情報を大量に詰め込めばよいわけではないとも指摘しました。

機能が足りないのか、AIの見落としか見極める

標準のツールセットで足りなかった部分を、プロジェクトやワークフローに合わせて拡張していきます。

最初に追加したのは、シーケンサーのイベントを操作するツール。作業中にAIエージェントから「イベントのトリガーキーの配置やエンドポイントの作成・割り当てを行う機能がありません」と報告を受けたため、イベントトラックへのキー配置や、イベントから呼ぶ処理をDirectorブループリントに作って接続する操作を行うツールセットの作成を依頼し、プラグインとして追加させました。

上は拡張前のトラック、下はイベントを追加した状態。キーを配置し、Directorブループリントの呼び出し先を作って接続する操作を、MCPから行えるようにした

ただし、AIの「できない」という回答が、必ずしも機能不足を意味するとは限りません。カメラ制御中にフロートトラック(数値を時間に沿って変化させるトラック)を追加できないと報告された際は、一度はタイマーを使う案を受け入れたものの、「さすがにこれができないことはないのでは?」と再検証したところ、既存の2つのツールを組み合わせることで制御できることが分かりました。

フロートトラックの操作は、既存のadd_track_to_bindingとset_property_name_and_pathの組み合わせで可能だった。LLMはツールセットの活用方法を1回で確実に理解できるわけではないという

鈴木氏は、ツールを無闇に増やす前に既存機能を吟味する必要があると説明しました。そのうえで、何度も使う複数の操作や複雑な工程をまとめるユーティリティには、追加する価値があるのではないかと見解を述べました。

未保存アセットの確認からエディター再起動まで自動化

機能追加後のエディター再起動をAIエージェントに指示すると、タスクキルで唐突にエディターを閉じようとしたそう。未保存のアセットの破損などが発生する恐れがあったため、未保存アセットの有無を確認するツールとエディター終了用ツールに加え、終了待ち、ビルド、起動、MCPの応答待ちをまとめたスクリプトを用意し、これらの利用手順をマークダウンに追記しました。これによって、未保存アセットがなければ、再起動からテストまで一貫して進められるようになりました。

AIの任意のタイミングで動的な画面を撮影・確認可能に

アクターの動的解決やカメラの自動計算など、PIE(Play In Editor)でしか確認できないシーケンサーの画面確認において、ロード時間の兼ね合いや、シーケンサーの再生自体が1秒で終わるほど短い場合、演出を撮影する前に再生が終わってしまう問題がありました。対策として、確認対象のシーケンサーを事前に登録し、サブシステムがPIEでの開始を検知して、狙った位置で一時停止する仕組みを実装。これにより、動的な演出でもエージェントが意図したタイミングでスクリーンショットを撮影・確認できるようになりました。

検証環境における標準のスクリーンショットツールは、画像をBase64方式でエンコードしてAIエージェントに返します。UE5.8のプラグインではMPCに画像を渡す規格を利用していなかったため、その文字列がそのままLLMへ渡る可能性を考慮して、トークン削減のためローカルに画像を保存してパスだけを返すラッパーを作りました。ただし後の確認では、これによるトークンの削減効果は期待したほど得られなかったとのことです。

動的なUIレイアウトの揺れは人間が不具合を報告・修正指示

続いて、UMG操作用ツールを作成してデモに吹き出しや画面切り替えUIを追加した事例が紹介されました。

吹き出しUIは漫画調のデザインで作成。まず素材のテクスチャを渡し、9スライスで伸縮させ、文字量に応じて大きさが変化するように指示したところ、レイアウトは組めたものの、実際に動かすと尻尾が細かく震えたり、左右の向きが繰り返し切り替わったりする問題が確認されました。

動きのあるUIや実行時にレイアウトが変わるものでは、数枚のスクリーンショットだけで正しさを確認できない場合があると鈴木氏は指摘。今回の例でも人間がが不具合を見つけて修正を指示しました。

また、出現・退場の演出を頼んだ際、AIエージェントはUMGのアニメーション機能を使わず、Tickによる毎フレームの処理で動かそうとしました。検証環境ではUMGアニメーションを追加するツールが足りなかったため、シーケンサーのツールを参考に機能を拡張しています。

「作る・変える・消す」を一通りそろえる

画面切り替えUIでは、Unreal Fest Tokyo 2026のイベントロゴを1920×1080ピクセルに拡大し、文字の行を横方向に分割して上下の黒帯を含めてスライドさせる演出を依頼しました。

一度で形にはなりましたが、文字の間の約3ピクセル、約5ピクセルの隙間まで別の帯として扱っていたため見た目が芳しくなく、分割方法を修正することになりました。

アニメーションを作り直す過程で、削除したウィジェットに対応するアニメーションの行が残り、消せない問題が発覚。自作ツールにその機能が追加されていなかったためです。さらに、アニメーションを削除して同名で作り直すとエディターがクラッシュしました。リスト上からのみアニメーションが取り除かれ、アセット内にオブジェクトが残されていたことによる名前の衝突が原因でした。

どちらも機能の追加・修正で解決。ツールを作るときは「作る・変える・消す」をそろえ、一連の動作をテストする必要があるという教訓が語られました。

UMGを作り直す過程で見つかった、削除機能の不足と自作ツールの不具合。削除したウィジェットに対応する行が残るため、行自体を削除するツールも追加した

ブループリントの編集では、長い配線で人が追いにくいグラフや、分岐・戻り値の処理でコンパイルエラーが生じる例もありました。鈴木氏は、関数を適切な大きさに分ける指示が必要だとし、今回の経験から、複雑な構造のブループリントをそのまま作らせることには慎重な見解を示しました。

長い配線が画面を横断し、人間には処理を追いにくくなったブループリントの例

JSONの絵コンテからシーケンサーを自動生成

会話演出では、JSONに登場人物、カメラワーク、セリフ、アニメーションなどを記述し、MCP経由でAIエージェントがレベルシーケンスを作る流れを構築しました。JSONを読み書きする専用の絵コンテエディターも、AIエージェントを使って制作しています。

絵コンテのJSONをエージェントが読み取り、MCPを通じてシーケンサーを生成する流れ。緑の矢印は、人間が結果を確認し、絵コンテや実装に修正を返す経路を示している

当初はカットごとの細かな調整を設定項目に増やしていましたが、入力の手間が膨らみ、ワークフローを単純にするという目的から離れてしまいました。そこで、必須の大まかな指定だけを項目として残し、細部は自由記述の「LLMへの指示」欄にまとめました。

たとえば「30度程度の見下ろし角度」など、欲しいカットの意図を言葉で伝えます。数値や条件をすべて専用の欄に落とし込まず、自然言語を解釈できるLLMの特徴を使う方針です。

専用の絵コンテエディター。カットごとの細かな調整項目を増やす代わりに、「LLMへの指示」欄で構図やカメラの意図を言葉で伝える形に整理した

シーケンサーの生成において、絵コンテで定義された「プレイヤー」や「スピーカー」といった登場人物のタグを実際のアクターにどう紐付けるかが課題となりました。実行時に対象を決めるバインディングでは、プレイヤーのポーンや会話相手のプロパティを参照し、見つからなければアクタータグで探す処理を指定しています。ただし、条件分岐などを含むブループリントの生成ではエラーが解消しきれず、一部は鈴木氏が直接修正しました。

スライド右上は登場人物とバインド方法の設定、右下は生成したシーケンサー

カメラに関しては、毎回LLMに配置させると試行回数が増えたり、結果が揺らいだりする懸念があったため、CineCameraを継承したオートフレーミングカメラを実装。カメラワークを指定するパラメーターを設け、フロートトラックで進行を制御する形にしました。

ゲームプレイ中のカメラからの移動を小さくする、壁へのめり込みを避ける位置を探す、複数人を映す際は全員が画面に入る構図にする、といった条件を追加しています。デモに必要な組み合わせには対応できた一方、あらゆるカメラワークを再現するには、さらに調整が必要だと鈴木氏は評価しました。

アニメーションは、アセットのパス、スケルトン、自然言語の説明をまとめた別のJSONから検索して割り当てます。移動や回転には専用の制御コンポーネントを用意し、対象のアクター、動作、ターゲットアクターを組み合わせて指定できるようにしました。

ここまで順調に動作するようになったため、最後に機能の追加として吹き出しの組み込みに着手。

吹き出しは当初、プレイヤーの独り言を表示する実装でしたが、会話演出でほかのアクターから使えるように再構成しました。C++のワールドサブシステムを用意し、ウィジェットには通信のための共通の基底クラスを導入。鈴木氏の指示のもと、この組み替えは出戻りなく完了したといいます。

プレイヤー用だった吹き出しを、シーケンサーから扱える構成へ変更した。右下は複数のキャラクターに吹き出しを表示した例

3つのシーケンサーを再作成し、処理時間を比較

実装が一通り終わった後、新規セッションでデモの3つのシーケンサーを作り直し、処理時間を計測しました。最初のSonnetでの再作成は約17.7分。分析すると、エディター側の処理よりも、モデルとMCPの呼び出しの往復が大きな時間を占めていたそうです。

そこで、複数のツール操作をまとめるバッチ処理を見直しました。組み込みのexecute_tool_scriptでは、失敗時にどこまで処理が済んだか分からないとエージェントが判断し、長いバッチの利用を控えていました。鈴木氏は進捗を追える版を追加させ、積極的にまとめて実行するよう指示。同時に、エラーへの対処やカメラ角度の基準もスキルに追記しました。

【3つのシーケンサーを再作成したときの比較】

再作成(Sonnet) 調整後(Sonnet) 調整後(Opus)
概算の処理時間 約17.7分 約10.8分 約17.7分
モデル呼び出し 110回 55回 73回
キャッシュ読み込み 23.3M 7.5M 12.7M

※ M=100万トークン

調整後のSonnetでは約10.8分となり、モデルの呼び出しも110回から55回に減りました。一方、調整後のOpusでは、保存状態や画面などを慎重に確認しながら進める挙動が見られ、約17.7分かかっています。オートフレーミングカメラなどで処理を導く構成にしたため、成果物に大きな差は感じなかったと鈴木氏は述べました。

プロジェクト全体の消費は約15億6,000万トークンでした。このうち、絵コンテからシーケンサーへ変換する仕組みを作ったセッションが約6億5,600万で、全体の約4割を占めます。仕組みが固まった後、新規セッションで3つのシーケンサーを変換し直した際は約2,400万トークンを消費しました。

Claude Codeにセッションの統計を概算させたところ、大部分は入力キャッシュの読み込みでした。なおキャッシュ利用分には割引があるため、総トークン数に通常の入力単価を掛けても費用は求められず、実際の請求額との正確な照合はしていないとのこと。

鈴木氏は、定型処理をスキルと実装で十分に導けるようになれば、高価なモデルでなくても必要な結果を得られるという見解を示しました。

プロジェクト全体のトークン集計。利用モデルは前半がOpus 5.0、後半がOpus 5.5とSonnet 5.5で、エフォート設定はMedium。通常の入力・出力とは課金の扱いが異なり、調査や講演用の知見整理も数値に含まれる

講演では、ツールを追加するだけでは作業を任せきれないという点が繰り返し示されました。既存機能で賄えないか確かめ、動作を人間が確認し、その知見をスキルや実装に反映する積み重ねによってワークフローが整えられていったことが示されました。

今後の改良として、スクリーンショットをMCPの画像形式で返す実装が開発ブランチに入っており、UE 5.9で利用できる見込みだと説明されました。

なお質疑応答では、ローカル推論での利用や、MCPとPythonによる一括処理の効率比較は未検証と回答しています。初心者への助言として、まずエディターを触って基礎を固め、日々のワークフローで足りない部分をMCPで補うという考え方が示されました。

鈴木氏は、日々のワークフロー改善からUnreal MCPを試し、開発の効率化や表現の拡張につなげてほしいと呼びかけ、講演を締めくくりました。

「Unreal Fest Tokyo 2026」公式サイト
浜井 智史

ゲームメーカーズで編集や諸業務に携わっています。『星のカービィ』シリーズと『ポケモン不思議のダンジョン』シリーズが好きです。

関連記事

UE6は最初からBP廃止へ方針転換、UE5.9は来週プレビュー版リリース。Epic Games CEOが登壇した基調講演をレポート【Unreal Fest Tokyo 2026】
2026.11.03
UEやMetaHumanをAI学習データとして使用可能に。UEのエンドユーザーライセンス契約が改定
2026.11.03
UE6、アクター・ブループリントが「非推奨」から「削除」へ。C++ Gameplay Frameworkも廃止し、Verseへ完全移行
2026.11.03
【インタビュー】モバイルグラフィックス最新事情2026──24時間ライティングからHLSL単体テストまで、サイバーエージェントに聞く“画作りの限界”の越え方
2026.11.02 [PR]
AIによるPBRマテリアル付きメッシュ生成を実用水準へ。パーツごとの材質も正しく割り当てる新パイプラインをシリコンスタジオが提唱【CEDEC2026】
2026.10.30
売上2,000万本の『めっちゃカメレオン』を2か月で作った開発者へのインタビュー記事をEpic Gamesが公開。EOSを活用し、同接34万人超でも利用料はゼロ
2026.10.27

注目記事ランキング

2026.10.28 - 2026.11.04
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

ローパスフィルター(Low-Pass Filter)
ローパスフィルター
  1. 電気信号のうち、指定した周波数(カットオフ周波数)以下の信号を通し、それより上を大きく低減させるフィルター。
  2. ゲーム開発において、基本的にはサウンド用語として用いられる。例として、特定のセリフをローパスフィルターによってくぐもった音に加工することで、隣の部屋や遮蔽物の後ろで話しているかのような表現を行うことができる。
VIEW MORE

Xで最新情報をチェック!