853 Views
November 09, 26
スライド概要
本スライドは2026年8月30日(日)に開催したゲーム開発者向けのリアルイベント『ゲームメーカーズ スクランブル2026』で行われた講演のスライドとなります。
タイトル:
UE5.8のMCPをフル活用!LLMでUnreal Engineのゲーム開発を加速しよう\
内容:
UE5.8でサポートが開始されたMCP(Model Context Protocol)を活用し、LLM(大規模言語モデル)とUnreal Engine 5を連携させる方法を解説します。
本講演ではまず、MCPの概要・セットアップ手順から、実際にLLMと接続してUnreal Engineを操作するまでを一通りご紹介します。あわせて、LLMがアセットを的確に探せるようにする「セマンティックサーチ」の設定方法、LLMにUnreal Engine 5の操作手順を理解させる「スキル」の仕組み、そして自分のプロジェクト向けにスキルを自作・拡張する方法についても解説します。本講演が、MCPによる新しい開発スタイルへの第一歩となれば幸いです。
登壇者:
Epic Games Japan 合同会社
Software Engineer, Developer Relations
湊 和久 氏
ゲームづくりに役立つ情報をお届けする「ゲームメーカーズ」の資料公開用アカウント。 WEBメディア「ゲームメーカーズ」では、ゲーム開発TIPSや”作り手目線”のインタビュー、お得なセール情報などを毎日更新! http://gamemakers.jp
UE5.8のMCPをフル活用! LLMでUnreal Engineの ゲーム開発を加速しよう Epic Games Japan Developer Relations, Software Engineer 湊 和久 ゲームメーカーズスクランブル2026
アジェンダ LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
本日お話し しないこと ● ゲーム生成プロンプト 本日お話し すること ● MCP環境の確実なインストール ● 生成アート ● エンジンの拡張方法 ● フォートナイトの話 ● MCP使用体験談
LLMとMCP LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
用語の定義 LLM (大規模言語モデル) エージェント MCP 大量のテキストから学習し、「文 章を読んで次の言葉を選ぶ」こと に特化した思考装置。 LLMを頭脳とし、自ら計画を立 て、ツールを使い、タスク完了に 向けて自律的に行動する実行シス テム。 (Model Context Protocol) 口先だけで、単体ではファイルの 読み書きや、エディタの操作など 具体的な作業はできない! エージェントがデフォルトで使用 できるツールには限りがある。 エージェントと外部アプリケー ションの接続をつかさどる共通規 格。 アプリケーションがMCPに対応 することで、エージェントからそ のアプリケーションを操作できる ようになる。
無料! Unreal MCP ● Unreal Editor で使用できるMCPサーバーのプラグイン ● お手持ちのLLMを接続してUnreal Editorをライブでコントロール ● 開発者が手綱を握り、LLMはオペレーターに徹します なんかいい感じのこと言ってるけど どゆこと? こういうことかな? ● MCPを通じてLLMは人間と同じやり方で開発作業に参加します ● 重要なジャッジはクリエイターが行います ● 人間が後でほどけないような物作りは行わず ツール拡張や、正しいUEの利用で開発者をサポートします
ツールセットプラグイン ● 各ドメインにおけるMCPツールを 提供する数々のツールセットプラ グイン ○ 58個のツールセット、累計878個の ツール ● 各ツールセットがUnreal Editor操 作のための知識も提供 ● プロジェクト側でMCPに提供する 独自のツールを作成可能 これがドメインだ!
ツールセットプラグイン ● PCG Primitives を使いこなし、ルール化された都市を1日で構築 ● 提示された写真からライティングを調整 スキルによる知識提供で、ポスプロに逃げず正しいパラメータを編集
PCG版City Sample公開中! https://www.fab.com/listings/4898e707-7855-404b-af0e-a505ee690e68
【手前味噌】参考資料にどうぞ https://www.docswell.com/s/EpicGamesJapan/ZX23YP-DevDays26-PCG-Primitives
MCP (ライブ状態のエディタと通信) LLMの UE支援の輪 Unreal Python コマンドライン操作 (サブシステム操作を含む無数のAPI) (UnrealEditor, UBT, Insights, etc…)
~UE5.7でもすごかった UE5.8でもっとすごくなる 従来もできた 一時的なPythonコードを生成 (各フレームをサンプリングし、足の骨の座標から接地フ レームを推定、AnimNotifyを埋め込み、保存) New! MCPを通じてPythonを自動実行 (実はそんなツールないがSlateを解析・操作できるので、 コンソールコマンド欄をPythonに切り替えるのを自力で 発見し、Slateを操作実行) > 足が接地したフレームにAnimNotifyを 置いて、足音を鳴らして
MCPの導入 LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
MCPの導入 省略可 Unreal MCP と AllToolsets プラグイン を有効化して、 エディタを再起動 MCPサーバーの自動起 動を設定して エディタを再起動する か、MCPを手動で起動 Configの生成 Configが書きだされた フォルダをワークス ペースにして、エー ジェント起動
MCPの導入 省略可 Unreal MCP と AllToolsets プラグイン を有効化して、 エディタを再起動 MCPサーバーの自動起 動を設定して エディタを再起動する か、MCPを手動で起動 ModelContextProtocol.StartServer Configの生成 Configが書きだされた フォルダをワークス ペースにして、エー ジェント起動
MCPの導入 省略可 Unreal MCP と AllToolsets プラグイン を有効化して、 エディタを再起動 MCPサーバーの自動起 動を設定して エディタを再起動する か、MCPを手動で起動 Configの生成 Configが書きだされた フォルダをワークス ペースにして、エー ジェント起動 ModelContextProtocol.GenerateClientConfig <ClaudeCode|Cursor|VSCode|Gemini|Codex|All>
【重要】Epic公式Claude Codeプラグイン LLM側にUnreal Engineの 操作スキルを追加するための 公式プラグイン unreal-mcp MCPを確実に使用した作業依頼をトリガー unreal-skill UE対応のエージェントスキルを作成・整備 create-toolset ツールセットの作成・整備 https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin
Epic公式Claude Codeプラグイン Claude Code上で、 /plugin install unreal-engine-skills-for-claude-code@claude-plugins-official ※オフィシャルマーケットプレイスにアクセスできない場 合は、先にこのコマンドを実行 /plugin marketplace add anthropics/claude-plugins-official Claude Code 以外のLLMエージェントをお使いでも、GitHubのURLを渡して依頼すれ ば、なんとかエージェントスキルを導入できると思います
MCP環境導入のポイント ● 先にUnreal(というかMCP)を起動してからエージェントを起動する と、MCPの接続でトラブルになりにくい ● 複数のUnrealでMCPを使用したい場合は設定でポート番号を分ける ● MCPを通じた作業を依頼する場合は念のため /unreal-mcp スキルを明示 しておく /unreal-mcp オッケー Claude, いい感じのゲームを作って
2日でゲームを 作ってみた LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
皆さん「ぷちコン」をご存知でしょうか? ● Unreal Engine 学習を目的としたゲー ム/映像開発コンテスト ● Epic Games Japan & ヒストリアの 共催イベント ● 今回で26回目 ○ 明日の朝10時で応募〆切
ヒストリアの社長と7月末にこんな話をした 今回のGMS… 私 ぷちコンの応募作をMCPで 作る講演にしようかと 学習に役立てるような ニュアンスならOKっす 佐
そして怒涛の8月 日 月 火 水 木 金 土 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Expedition 33 DevDays 26’ この二日ぶんで作るしかない 今日の本番 この状況、まさしく・・・
まさしくこの状況だ! そして・・
とても人前に出せるレベルではないが何かできた
己に課した縛り ● ● 設計は一般的なUEゲームと同じ手法を用いる ○ C++とBPのミックス ○ データドリブン コミュニティユーザーが利用可能なリソースで開発する ○ 個人用Claudeサブスクリプション ○ ランチャー版UE5.8.2 ○ 使用するPCは1台のみ
あんまUEと関係ない話 短期間でゴールに走りこむために考えたこと 最短距離を走る エージェントが迷わない開発プロセス作り 複数並行で走る 複数エージェントによる分担 走る時間を長くとる 寝ても覚めてもエージェントを回す
あんまUEと関係ない話シリーズ やったこと①:ブラウザゲーム版の先行開発 ● ブラウザゲームで遊びを完成 ● これをビデオゲーム(UE)に移植 ● 後調整してもブラウザとビデオゲーム で同じものが動く仕組みを確立
あんまUEと関係ない話シリーズ ブラウザ版段階での移植性考慮 ゲームフレーム ワーク UEを模倣したオブジェクト指 向、イベントドリブン実装 バトルマネージャーがターンを管 理し、各ユニットオブジェクトが 手番を処理 BP移行性 データドリブン C++、BPの役割分担の事前想定 ゲームならデータで持つことはブ ラウザ版でもデータ S式ベースのDSL(※)にBP役JS のコーディング規約を寄せて、薄 い共通性を確保 ※このDSLはMCPでUEと通信す る際にエージェントが獲得可能な 公開情報です JSにリテラルをべた書きせず、す べてJSON化 調整データ(JSON)をデータア セットに流し込む仕組み
あんまUEと関係ない話シリーズ やったこと②:複数ワークスペース ● バージョン管理システムを使用し、複 数のワークスペースを確保 ● エンジニア役のMainアーティスト役 のSubに分かれ仕事を分担 ○ ● 3役目はVRAM枯渇を引き起こすこと があり断念 衝突しない仕事手段で7〜8つの仕事 を並行実施 ○ MCPやビルドは指揮者に交通整理 ○ MCP読み取り専用、Pythonでの作 業、設計会議などは並走可 ※UEが2枚立ち上がるので、エディタのテーマカラーを変え て区別したでござるの図
あんまUEと関係ない話シリーズ やったこと③:とにかく走らせる ● 送迎時:トランクにPCを入れて 稼働 ● 外出時:リモートコントロールで 操作を維持 ● 睡眠時:ロングタスクを与えてお まかせ ZZZ… 今回はとことんエージェントに任せて 私はお仕事・・・ん?なんの仕事かって?
無料! これだよ!これ!
まぁでも出来た出来た、、応募するかあ~・・ ん?
応募条件
ということで
失格
しかし分かったこともある
UMG構築とデバッグ能力 ● モック〜本番レベルのUMG を構築可能 ● デザインがあればかなり正 確に従う ● 要素の子ウィジェット化も セオリー通りの組み方 ● クリック操作などの自動デ バッグも可
同じUMGでもアニメーションは組めない・・・が ● LLMエージェントは Playwright的にエディタと インタラクト可能 ● これを駆使して作業しても らうことはできた! ● レベルシーケンスのアニ メーション構築については 未テスト
自動プレイテスト ● 特に指示しなくても UE の Automation Test を使ってくれた ● ゲームの仕様上、複雑な自動操作が必要ではないのでそれ以上は深堀せず
Niagara (パーティクルエフェクト) ● MCPを通じて人語でNiagaraシステム を構築することが可能だった ○ (UE5.7まではNiagaraシステムに APIが通っていなかったので、LLM以 外の開発者にも大きな朗報!) ● 本職のVFXアーティストが使用すれば 相当な助けになるのではないか ● ただし、軽量エミッタは操作できず! 今後の改良に期待
ワールドの見た目の構築 ● 要件に基づき、スクショ撮影を通じて 改善のループを図ってくれた ● ゲーム要件に合わせたレベルインスタ ンス、動的ストリーミングの理解と活 用もほぼ完璧 ● ただし、PCGアプローチとの差は歴然 ● 高密度のワールドを構築できるツール を協働で開発し一緒に使うのが良さげ ここ埋まってるのに 自力で気づける
実感 ● MCPを使えば確実にトータルでの開発は加速する(無人機の相棒重要) ● 人間の開発と同様、手詰まりしない開発プロセスを事前計画しておくとよさそう ● エディタを占有する操作(たとえばスクリーンショットをとって改善を自走)がボ トルネックになるので、Pythonスクリプトで裏で進められる仕事も重要に ● MCPと一緒にツールを作成し、MCPにはそのツールを叩かせるのが確実で早い もちろん人間も使う! ● 今回はトークンは意外と損耗せず・・・モデルもデフォルトで十分 ● ただし、ゲーム開発で一番速く走れるフェーズを単に速く走っただけという感あり ○ ゲーム作りはここからが大変だから…
機能の拡張 (”エンジンの拡張”) LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
MCP環境下におけるエンジン拡張の三本柱 ツールセット スキル サンプル エージェントが使えるエンジン機 能や自社パイプラインのラッパー 未知のワークフローへの道案内と なるプロンプトの束 ツールを組み合わせた実作業の見 本、再利用可能なパターン集
MCP環境下におけるエンジン拡張の三本柱 ツールセット スキル サンプル エージェントが使えるエンジン機 能や自社パイプラインのラッパー 未知のワークフローへの道案内と なるプロンプトの束 ツールを組み合わせた実作業の見 本、再利用可能なパターン集
※でも実はEpic公式スキルで作って
もらうことができる!
ツールセットの実装
C++
Python
/**
* Work with the loaded level: place and remove actors,
* organize the outliner, and query the world.
*/
UCLASS(BlueprintType, Hidden)
class ULevelTools : public UToolsetDefinition
{
GENERATED_BODY()
public:
/**
* Traces a line/ray through the world.
* @param Start The start point, in world space.
* @param End
The end point, in world space.
* @return Distance to the hit point; unset if nothing was hit.
*/
UFUNCTION(meta = (AICallable), Category = "Scene")
static TOptional<double> TraceWorld(FVector Start, FVector End);
};
@unreal.uclass()
class LevelTools(unreal.ToolsetDefinition):
"""Work with the loaded level: place and remove actors,
organize the outliner, and query the world."""
@toolset_registry.tool_call
@staticmethod
def trace_world(start: unreal.Vector, end: unreal.Vector) -> float | None:
"""Traces a line/ray through the world.
Args:
start: The start point, in world space.
end: The end point, in world space.
Returns:
Distance to the hit point, or None.
"""
...
/create-toolset UserDefinedStruct(Blueprint構造体)アセットを AI から作成・編集できる
C++ ツールセットを、プロジェクト側の新規 Editor プラグインとして作って。
ツールセット制作のベストプラクティス 明快 既存の UE API をそのまま写さない。UE の API は不必要に複雑なことが多い。 判定基準: テクニカルアーティストが実装を読まずに理解できるか。 完全 対称性を保つ。set があるなら get、create があるなら delete。 変更できない・する意味がないものは getter だけでよい。 組合せ可能 同種の操作には同じ型を使う。get_graph() が Graph を返すなら get_graph_nodes() は Graph を受け取る。ツールが自然に連結する形にする。 明示的 LLMが自己修正できるよう、失敗時は構造化されたエラーを提供 ※でも実はcreate-toolsetで 作ると自動適用される
ツールセット制作の 真のベストプラクティス /create-toolsetが有効な状態で エージェントに制作を頼もう! ※ある程度プロジェクトを走らせた後、何を作ると開発効率が 上がるか、エージェントに聞いて作らせるとよい
MCP環境下におけるエンジン拡張の三本柱 ツールセット スキル サンプル エージェントが使えるエンジン機 能や自社パイプラインのラッパー 未知のワークフローへの道案内と なるプロンプトの束 ツールを組み合わせた実作業の見 本、再利用可能なパターン集
スキルの制作
C++
※でも実はEpic公式スキルで作って
もらうことができる!
Python
UCLASS()
class UPCGGraphGenerationSkill : public
UAgentSkill
{
GENERATED_BODY()
public:
UPCGGraphGenerationSkill ()
{
Description = TEXT(“Source-control
operations in the editor: status queries,
history, prior, revisions…”);
Instructions = TEXT(“IDENTITIY BY CONTENT
PATH\n”
“-Source-control operations identify an asset
by its content path.\n”
“\nEDITOR OPERATIONS AUTO-INTEGRATE\n”
“-Saving, moving, renaming through the
editor’s tools…”);
}
};
BP
_INSTRUCTIONS = """\
IDENTITY BY CONTENT PATH
- Source-control operations identify an
asset by its content path.
EDITOR OPERATIONS AUTO-INTEGRATE
- Saving, moving, renaming through the
editor's tools…
"""
@agent_skill
class
SourceControlSkill(unreal.AgentSkill):
"""Source-control operations in the
editor:
status queries, history, prior
revisions."""
instructions = _INSTRUCTIONS
/unreal-skill 「新しく構造体を定義しようとしたとき」に読ませる判断基準のスキルを
UAsset で /Game/Skills/ に作って。
スキル制作のベストプラクティス 新規性 エージェントがまだ知らないこと、ツールを使っても分からないことを書く 同僚感覚 マニュアルを書くのではなく、知識のある同僚に手短に伝えるように書く 不変性重視 プロパティ名やツール名など、時間とともに変わるものは埋め込まない 簡潔さ トークンはすべてコンテキストを消費する。本質的でも不変でもない内容は削る ※でも実はMCPまたはunreal-skillで 作ると自動適用される
スキル制作の 真のベストプラクティス MCPか/unreal-skillが有効な状態で エージェントにスキル作成を頼もう! ※こちらもエージェントと相談してみよう!
MCP環境下におけるエンジン拡張の三本柱 ツールセット スキル サンプル エージェントが使えるエンジン機 能や自社パイプラインのラッパー 未知のワークフローへの道案内と なるプロンプトの束 ツールを組み合わせた実作業の見 本、再利用可能なパターン集
例:PCG ToolsetにおけるExamples徹底活用 ・PCGグラフ作成のスキル(Skill_PCGGraphGeneration)に以下の指示が 仕込まれており、サンプルの徹底利用を促している サンプルグラフではプリミティブなノードを使用しており、正しく構成しやすくなっています。 ## サンプルグラフ / 以下のサンプル PCG を利用できます。 - PCG グラフを構築する際の正しいパターンとベストプラクティスについては、これらのサ ンプルグラフを大いに参考にしてください。 - ユーザーのリクエストに取り組む前に、役立ちそうなサンプルグラフの構造をすべて取得し てください。 - グラフをゼロから構築する前に、既存のグラフ(サンプルまたは過去に作成したもの)がユー ザーのニーズにすでに合致していないか確認してください。 - GetGraphStructure を使って、関連するサンプルグラフをすべてロードしてください。 - サンプルグラフは多めに取得する方針とし、「Basics」のサンプルグラフは必ず複数取得し てください。 同じような指示がプロジェクトの作業に参加させる際に有効
【近日公開】より詳しい内部動作に興味のある方は ・・・ @UnrealEngineJPをフォローして最新情報をゲット!→
セマンティックサーチと ターミナル LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
セマンティックサーチ ● サムネイルを説明するキャプションをLLMが生成することで、「かわいい」「機械っ ぽい」「赤い」などのアセットの意味検索を可能にします ● MCPに対応し、アセット検索をよりスマートにします ● アセットを右クリック>「似たようなアセットを探す」ことも可能に
セマンティックサーチの有効化 課金 Semantic Search プラ グイン2種を有効化 エディタ設定でCaption とEmbeddingにAPIキー を設定 Max Concurrent Requestsも調整を OpenAI互換APIキーが必要で、 従量課金となる コンテンツブラウザに 戻り、検索欄の「AI」 トグルをクリックして 有効にする unindexed横のアイコン をクリックするとイン デックスの作成が開始 される
お値段 ● 5,786アセットのインデックス作 成で$3.71 ... 600円くらい(注 :個人アカでの実験です!) ● 一度作成されたインデックスは DDCに保存されトークンの多重払 いを防ぎます ● Indexed Paths を設定すること で、セマンティックサーチの対象 パスを制限できます
ターミナルプラグイン ● Unreal Editor上でシェルを動か すプラグイン ● cmd、PowerShell、Bashなど任 意のシェルを指定 ● Unreal Editor上でLLMのCLIを 直接操作できます ● エディタとのすごい一体感!
ターミナルプラグインの導入 Terminal プラグインを 有効化 省略可 省略可 エディタ設定のShell Executable Pathに任意 のシェルを指定※ 起動時に常時実行する コマンドを1行ずつか く ツール>ターミナルで 起動 ※起動するたびに1枚 ずつ開く ※Windowsの場合、省略するとcmdになるほか、 "C:\Program Files\Git\git-bash.exe"やPowershellを指定する
LLMで 学習も加速しよ う LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
無料! AI Assistant プラグイン ● 無料で使用できるEpic提供のLLMア シスタント ● プラグイン設定で AI Assitantを要有 効化 ● Window > Assistantでパネル出現 ● F1キーでカーソルがあたっているUI 要素の説明を質問する機能も ● (任意)Epic Games アカウントでロ グインすると共通履歴に保管
MCP経由でも分からないことを聞こう! ● MCPは画面が見れる! =アノテーションを識別可 ● サンプルを読んで分からないとこ ろをコメントなどでマーキング し、質問することができる
MCPで「分からないが分からない」を解決 ● MCPは従来よりプロジェクトの 状態が「見える」…次の一手は? ● ログ、プロファイラの数値など、 どこに情報があるかを知らないと 調べようがない領域は、機械に案 内させてよいのでは ● 「調べ方を教わる」と「答えを教 わる」を自分なりに線引きしよう ● 面倒だから試さなかった、を潰す 用途には便利
まとめ LLMとMCP MCPの導入 2日でゲームを作ってみた 機能の拡張 セマンティックサーチと ターミナル ● LLMで学習も加速しよう ● まとめ ● ● ● ● ●
まとめ:今日お話したこと ● MCP とツールセットを有効化することで環境がインストールされます ● Unreal Engine 公式スキルの導入をお勧めします ● アセット化されたスキルで、スキルをUEプラグインに同梱できます ● スキルやツールセットを追加して機能の拡張が可能です (ゼロから書く必要はなく、エージェントに作ってもらえます) ● セマンティックサーチでMCPの使い勝手がさらに向上 ● UE5.9でさらなる改善が見られると思われます
Thank ご清聴ありがとうございました ブースもあるから来てね!