Unreal Engine Generative AI Support Plugin について
Unreal Engine Generative AI Support Plugin は、ゲームプロジェクトから複数の LLM や生成 AI モデルを呼び出す、無料のオープンソース UE プラグインです。AI クライアントから UE5 プロジェクトを操作する MCP サーバーも備えています。Unreal Engine 内に AI 機能を組み込みたい開発者を対象としています。
主な機能
- 01OpenAI、Claude、Grok、DeepSeek などのチャット呼び出し
- 02OpenAI の構造化出力への対応
- 03シーンオブジェクトとマテリアルを操作する MCP ツール
- 04Python スクリプトとコンソールコマンドの実行
- 05Ollama によるローカルモデルへの対応
活用シーン
- 01UE5 プロジェクトの NPC に LLM による対話を追加
- 02Claude Desktop や Cursor でシーンやブループリントの作成を支援
- 03MCP ツールによるプロジェクトコンテンツの一括変更
MCP 対応
本プラグインは mcp_server.py という MCP サーバーを含み、Claude Desktop、Claude Code、Cursor などの MCP クライアントに UE エディターの操作機能を提供します。README によると、無料版の MCP 機能は現在積極的に開発されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
使用例:
MCP の例:
Claude がシーンオブジェクトを生成し、トランスフォームやマテリアルを制御します。ブループリント、関数、変数を生成したり、コンポーネントを追加したり、Python スクリプトを実行したりできます。
API の例:
NPC が OpenAI のエージェントインスタンスとして動作する「become human」というプロジェクトです。このプラグインを使って構築されています。

Unreal Engine 生成 AI サポートプラグイン:
毎月、さまざまな組織から数百もの新しい AI モデルがリリースされるため、最新の進歩を追い続けるのは困難です。
「Unreal Engine Generative AI Support Plugin」を使えば、LLM/生成 AI の統合レイヤーを気にすることなく、ゲーム開発に集中できます。
現在の進捗:
このプラグインは、最新の機能やモデルに対応するため、今後も更新されます。コントリビューションを歓迎します。 200 以上の AI モデル、安定性の保証、自動テスト、UE 5.1~5.7 以降への対応を備えた、本番環境向けの代替プラグインについては、以下のプロプラグインをご覧ください。 この無料プラグインは、上記の例を含む多くのユースケースに対応しており、永久に無料でご利用いただけます。
Fab.com のプロ向けプラグイン
Gen AI Pro |
Gen AI Pro China |
GenAI Model Generator |
Gen AI Llama |
無料プラグイン(このリポジトリ)- LLM/生成 AI API サポート:
- OpenAI:チャット(
gpt-4.1、gpt-4.1-mini、o4-mini、o3、o3-pro)、構造化出力 - Anthropic Claude:チャット(
claude-4-latest、claude-3-7-sonnet、claude-3-5-sonnet、claude-3-5-haiku) - XAI Grok:チャット(
grok-3-latest、grok-3-mini-beta) - DeepSeek:チャット(
deepseek-chatV3.1)、推論(deepseek-reasoning-r1) - ローカル AI:unreal-ollama (MIT) -
gpt-oss、qwen3-vlなど
全モデル一覧(すべてのプラグインで 200 以上のモデル)
#### Gen AI Pro - **OpenAI**: `gpt-5.4`, `gpt-5.4-pro`, `gpt-5.3-codex`, `gpt-5.2`, `gpt-5.1`, `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `gpt-4.1`, `o4-mini`, `o3`, `o3-pro` | Responses API、ビジョン、リアルタイム(`gpt-realtime`)、画像生成(`gpt-image-1.5`、`dall-e-3`)、TTS(`gpt-4o-mini-tts`、`whisper-1`)、ストリーミング、関数呼び出し、マルチモーダル - **Anthropic**: `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-4.5-opus`, `claude-4.5-sonnet`, `claude-4.5-haiku` | 拡張思考、ビジョン、ツール使用 - **Google Gemini**: `gemini-3.1-pro`, `gemini-3.1-flash-lite`, `gemini-2.5-pro`, `gemini-2.5-flash` | Imagen(`imagen-4.0-generate`、`imagen-4.0-ultra`)、リアルタイム、TTS、マルチモーダル - **XAI Grok**: `grok-4.1`, `grok-4`, `grok-4-eu`, `grok-code-fast-1`, `grok-3` | ビジョン、ストリーミング、推論 - **ElevenLabs**: TTS(`eleven_v3`、`eleven_turbo_v2_5`)、文字起こし(`scribe_v2`)、効果音(`eleven_text_to_sound_v2`) - **Inworld AI**: TTS(`inworld-tts-1.5-max`、`inworld-tts-1.5-mini`) - **OpenAI Compatible Mode**: Alibaba Qwen、Mistral、Groq、OpenRouter、Meta Llama、GLM-4、OllamaGen AI Pro China
- Alibaba Qwen:
qwen3.5-plus,qwen3.5-flash,qwen3-max,qwen3-coder-plus| マルチモーダル(qwen-omni-turbo、qwen-vl-max)、画像生成(qwen-image、wan2.2-t2i-plus)、TTS(qwen3-tts-flash) - Moonshot/Kimi:
kimi-k2.5,kimi-k2-thinking,kimi-k2-thinking-turbo| マルチモーダル(kimi-latest) - ByteDance:
seed-2-0-mini,seed-1-8,skylark-pro-250415| ビジョン(skylark-vision)、画像生成(seedream-4-0-250828) - ZhipuAI:
glm-5,glm-4.7,glm-4.7-flash| マルチモーダル(glm-4.6v) - Baidu:
ernie-5.0-8k,ernie-4.5-8k,ernie-x1-32k
GenAI Model Generator (3D)
- Meshy AI:
meshy-6- テキストから3D、画像から3D、リテクスチャ、オートリギング - Tripo AI:
tripo-v2.5- テキストから3D、画像から3D - Hunyuan3D (Tencent):
hunyuan3d-v3.1-proテキストから3D、hunyuan3d-v2.1画像から3D - TripoSR: 画像から3D(高速、<1s)
- Rodin (Hyper3D):
rodin-gen-2- PBR マテリアルを使用したテキスト/画像からの3D生成 - Trellis 2 (Microsoft): PBR マテリアルを使用した画像からの3D生成
- Google Gemini:
gemini-3.1-flash- PBR テクスチャ生成
追加機能:
- プラグインのサンプルプロジェクトはこちら
- バージョン管理:Git サブモジュールに対応、Perforce(対応作業中)
- 軽量:外部依存関係なし、ビルドから MCP を除外
- プラットフォームおよびエンジンバージョンをまたいだテスト(Pro プラグインで利用可能)
Unreal MCP (Model Control Protocol):
その他の MCP オプション: Epic Games は UE 5.8 以降向けの公式 Unreal MCP 統合を進めています。また、Natfii による UnrealClaude (MIT) もあります。これはスタンドアロンの Unreal MCP 実装であり、確認する価値があります。このプラグインの MCP サポートは UE 5.4~5.7 以降を対象としており、Claude Desktop、Claude Code、Cursor と併用して動作します。注意: この無料プラグインにおける MCP は活発に開発されていません。以下に記載する機能は現状を反映したものです。
MCP 機能のステータス (✅ = 完了、🛠️ = 進行中、🚧 = 予定)
- クライアントサポート ✅
- Claude デスクトップアプリのサポート ✅
- Claude Code CLI のサポート ✅
- Cursor IDE のサポート ✅
- OpenAI Operator API のサポート 🚧
- Blueprint の自動生成 🛠️
- 各種タイプの新しい Blueprint の作成 ✅
- 新しい関数、関数/Blueprint 変数の追加 ✅
- ノードと接続の追加 🛠️ (バグあり、issue 募集中)
- 高度な Blueprint 生成 🛠️
- LLM 向けのレベル/シーン制御 🛠️
- オブジェクトとシェイプのスポーン ✅
- オブジェクトの移動、回転、スケーリング ✅
- マテリアルと色の変更 ✅
- 高度なシーン機能 🛠️
- 生成 AI:
- プロンプトから 3D モデルを取得してスポーン 🛠️
- 制御:
- Python スクリプトの実行機能 ✅
- コンソールコマンドの実行機能 ✅
- UI:
- ウィジェットの生成 🛠️
- UI Blueprint の生成 🛠️
- プロジェクトファイル:
- プロジェクトファイル/フォルダの作成/編集 ️✅
- 既存のプロジェクトファイルの削除 ❌
- その他:
- プロジェクトのクリーンアップ 🛠️
目次
API キーの設定:
メモ
Claude アプリで MCP 機能をテストするために API キーを設定する必要はありません。Anthropic キーは Claude API を使用する場合にのみ必要です。
エディターの場合:
環境変数 PS_<ORGNAME> に API キーを設定します。
Windows の場合:
setx PS_<ORGNAME> "your api key"
Linux/MacOS の場合:
-
ターミナルで次のコマンドを実行します。yourkey はお使いの API キーに置き換えてください。
echo "export PS_<ORGNAME>='yourkey'" >> ~/.zshrc -
新しい変数でシェルを更新します:
source ~/.zshrc
PS: 環境変数を設定した後は、エディターを再起動し、接続されている IDE も必ず再起動することを忘れないでください。
<ORGNAME> には次のものを指定できます:
PS_OPENAIAPIKEY、PS_DEEPSEEKAPIKEY、PS_ANTHROPICAPIKEY、PS_METAAPIKEY、PS_GOOGLEAPIKEY など。
パッケージ化されたビルドの場合:
パッケージ化されたビルドに API キーを保存するのは、セキュリティ上のリスクがあります。OpenAI API のドキュメントには、次のように記載されています。
「ブラウザーやモバイルアプリなどのクライアント側環境で OpenAI API キーを公開すると、悪意のあるユーザーがそのキーを取得し、あなたになりすましてリクエストを送信できるようになります。予期しない料金が発生したり、一部のアカウントデータが侵害されたりする可能性があります。API キーを安全に保管できるよう、リクエストは必ずご自身のバックエンドサーバー経由で送信してください。」
詳しくはこちらをご覧ください。
テストビルドでは、パッケージ化されたビルドで API キーを指定して、C++ またはブループリント関数から GenSecureKey::SetGenAIApiKeyRuntime を呼び出せます。
MCP の設定:
メモ
プロジェクトで MCP ではなく LLM API のみを使用する場合は、このセクションをスキップできます。
注意
免責事項:プラグインの MCP 機能を使用すると、Claude Desktop App から Unreal Engine プロジェクトを直接操作できるようになります。 セキュリティリスクを理解し、管理された環境でのみ使用してください。MCP 機能を使用する前にプロジェクトをバックアップし、バージョン管理を使用して変更を追跡してください。
1. 以下のクライアントからいずれかをインストールします:
2. MCP 設定 JSON をセットアップします:
Claude Desktop App の場合:
Claude Desktop App のインストールディレクトリにある claude_desktop_config.json ファイルを使用します。(お使いのプラットフォームでの場所は、claude に尋ねるとわかる場合があります!)
ファイルは次のようになります:
{
"mcpServers": {
"unreal-handshake": {
"command": "python",
"args": ["<your_project_directoy_path>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py"],
"env": {
"UNREAL_HOST": "localhost",
"UNREAL_PORT": "9877"
}
}
}
}
Claude Code CLI の場合:
プロジェクトのルートディレクトリにある .mcp.json ファイルを使用します。ファイルは次のようになります:
{
"mcpServers": {
"unreal-handshake": {
"type": "stdio",
"command": "python",
"args": ["<your_project_directoy_path>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py"],
"env": {
"UNREAL_HOST": "localhost",
"UNREAL_PORT": "9877"
}
}
}
}
Cursor IDE の場合:
プロジェクトディレクトリにある .cursor/mcp.json ファイルを使用します。ファイルは次のようになります:
{
"mcpServers": {
"unreal-handshake": {
"command": "python",
"args": ["<your_project_directoy_path>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py"],
"env": {
"UNREAL_HOST": "localhost",
"UNREAL_PORT": "9877"
}
}
}
}
3. FastMCP をインストールします。
pip install fastmcp
4. Unreal Engine で Python プラグインを有効にします。(Edit -> Plugins -> Python Editor Script Plugin)
5. [任意] エディター起動時に MCP サーバーを自動起動する設定を有効にします
プロジェクトにプラグインを追加する:
Git を使用する場合:
-
プラグインのリポジトリを、プロジェクトのリポジトリにサブモジュールとして追加します。
git submodule add https://github.com/prajwalshettydev/UnrealGenAISupport Plugins/GenerativeAISupport -
プロジェクトファイルを再生成します: .uproject ファイルを右クリックし、「Generate Visual Studio project files」を選択します。
-
Unreal Editor でプラグインを有効にします: Unreal Editor でプロジェクトを開きます。「Edit」>「Plugins」に移動します。リストからプラグインを検索して有効にします。
-
Unreal C++ プロジェクトの場合、プロジェクトの Build.cs ファイルにプラグインのモジュールを含めます:
PrivateDependencyModuleNames.AddRange(new string[] { "GenerativeAISupport" });
Perforce を使用する場合:
現在開発中です..
Fab(Unreal Marketplace)を使用する場合:
この無料プラグインは、上記の Git 経由で利用できます。プロ向けプラグインについては、Fab.comをご確認ください。
最新のプラグイン変更を取得する:
Git を使用する場合:
次のコマンドで最新の変更を取得できます:
cd Plugins/GenerativeAISupport
git pull origin main
または、プロジェクト内のすべてのサブモジュールを更新します:
git submodule update --recursive --remote
Perforce を使用する場合:
現在開発中です..
使い方:
プラグインを実装済みの Unreal プロジェクトのサンプルがあります。こちらから確認できます。
OpenAI:
現在、このプラグインは OpenAI API のチャットと構造化出力をサポートしています。C++ とブループリントの両方で利用できます。
テスト済みモデル:gpt-4.1、gpt-4.1-mini、gpt-4.1-nano、o4-mini、o3、o3-pro、o3-mini。
1. チャット:
C++ の例:
void SomeDebugSubsystem::CallGPT(const FString& Prompt,
const TFunction<void(const FString&, const FString&, bool)>& Callback)
{
FGenChatSettings ChatSettings;
ChatSettings.Model = TEXT("gpt-4o-mini");
ChatSettings.MaxTokens = 500;
ChatSettings.Messages.Add(FGenChatMessage{ TEXT("system"), Prompt });
FOnChatCompletionResponse OnComplete = FOnChatCompletionResponse::CreateLambda(
[Callback](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
Callback(Response, ErrorMessage, bSuccess);
});
UGenOAIChat::SendChatRequest(ChatSettings, OnComplete);
}
ブループリントの例:
2. 構造化出力:
C++ の例 1:
カスタムスキーマ JSON を関数呼び出しに直接送信
FString MySchemaJson = R"({
"type": "object",
"properties": {
"count": {
"type": "integer",
"description": "The total number of users."
},
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string", "description": "The user's name." },
"heading_to": { "type": "string", "description": "The user's destination." }
},
"required": ["name", "role", "age", "heading_to"]
}
}
},
"required": ["count", "users"]
})";
UGenAISchemaService::RequestStructuredOutput(
TEXT("Generate a list of users and their details"),
MySchemaJson,
[](const FString& Response, const FString& Error, bool Success) {
if (Success)
{
UE_LOG(LogTemp, Log, TEXT("Structured Output: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Error: %s"), *Error);
}
}
);
C++ の例 2:
ファイルからカスタムスキーマ JSON を送信
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
FString SchemaFilePath = FPaths::Combine(
FPaths::ProjectDir(),
TEXT("Source/:ProjectName/Public/AIPrompts/SomeSchema.json")
);
FString MySchemaJson;
if (FFileHelper::LoadFileToString(MySchemaJson, *SchemaFilePath))
{
UGenAISchemaService::RequestStructuredOutput(
TEXT("Generate a list of users and their details"),
MySchemaJson,
[](const FString& Response, const FString& Error, bool Success) {
if (Success)
{
UE_LOG(LogTemp, Log, TEXT("Structured Output: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Error: %s"), *Error);
}
}
);
}
ブループリントの例:
### DeepSeek API:
現在、プラグインはDeepSeek APIのチャットと推論をサポートしています。C++とブループリントの両方に対応しています。 注意点:
- 推論モデルでは、現在システムメッセージが必須です。指定しない場合、APIはnullを返すようです。
- また、ドキュメントには次のように記載されています:「入力メッセージのシーケンスにreasoning_contentフィールドが含まれている場合、APIは400エラーを返すことにご注意ください。 詳細についてはこちらをご覧ください。」
警告
R1推論モデルを使用する場合、UnrealのHTTPタイムアウトがデフォルトの30秒のままになっていないことを確認してください。 これらのAPI呼び出しは応答に30秒以上かかる場合があります。HttpRequest->SetTimeout(<N Seconds>);を設定するだけでは不十分です。 そのため、プロジェクトのDefaultEngine.iniファイルに次の行を追加する必要があります。[HTTP] HttpConnectionTimeout=180 HttpReceiveTimeout=180
1. チャットと推論:
C++の例:
FGenDSeekChatSettings ReasoningSettings;
ReasoningSettings.Model = EDeepSeekModels::Reasoner; // or EDeepSeekModels::Chat for Chat API
ReasoningSettings.MaxTokens = 100;
ReasoningSettings.Messages.Add(FGenChatMessage{TEXT("system"), TEXT("You are a helpful assistant.")});
ReasoningSettings.Messages.Add(FGenChatMessage{TEXT("user"), TEXT("9.11 and 9.8, which is greater?")});
ReasoningSettings.bStreamResponse = false;
UGenDSeekChat::SendChatRequest(
ReasoningSettings,
FOnDSeekChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
// Log response details regardless of success
UE_LOG(LogTemp, Warning, TEXT("DeepSeek Reasoning Response Received - Success: %d"), bSuccess);
UE_LOG(LogTemp, Warning, TEXT("Response: %s"), *Response);
if (!ErrorMessage.IsEmpty())
{
UE_LOG(LogTemp, Error, TEXT("Error Message: %s"), *ErrorMessage);
}
})
);
ブループリントの例:
Anthropic API:
現在、プラグインはAnthropic APIのチャットをサポートしています。C++とブループリントの両方に対応しています。
テスト済みモデル:claude-4-latest、claude-3-7-sonnet-latest、claude-3-5-sonnet、claude-3-5-haiku-latest。
1. チャット:
C++の例:
// ---- Claude Chat Test ----
FGenClaudeChatSettings ChatSettings;
ChatSettings.Model = EClaudeModels::Claude_3_7_Sonnet; // Use Claude 3.7 Sonnet model
ChatSettings.MaxTokens = 4096;
ChatSettings.Temperature = 0.7f;
ChatSettings.Messages.Add(FGenChatMessage{TEXT("system"), TEXT("You are a helpful assistant.")});
ChatSettings.Messages.Add(FGenChatMessage{TEXT("user"), TEXT("What is the capital of France?")});
UGenClaudeChat::SendChatRequest(
ChatSettings,
FOnClaudeChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
if (bSuccess)
{
UE_LOG(LogTemp, Warning, TEXT("Claude Chat Response: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Claude Chat Error: %s"), *ErrorMessage);
}
})
);
ブループリントの例:
XAIのGrok 3 API:
現在、プラグインはXAIのGrok 3 APIのチャットをサポートしています。C++とブループリントの両方に対応しています。
1. チャット:
FGenXAIChatSettings ChatSettings;
ChatSettings.Model = TEXT("grok-3-latest");
ChatSettings.Messages.Add(FGenXAIMessage{
TEXT("system"),
TEXT("You are a helpful AI assistant for a game. Please provide concise responses.")
});
ChatSettings.Messages.Add(FGenXAIMessage{TEXT("user"), TEXT("Create a brief description for a forest level in a fantasy game")});
ChatSettings.MaxTokens = 1000;
UGenXAIChat::SendChatRequest(
ChatSettings,
FOnXAIChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
UE_LOG(LogTemp, Warning, TEXT("XAI Chat response: %s"), *Response);
if (!bSuccess)
{
UE_LOG(LogTemp, Error, TEXT("XAI Chat error: %s"), *ErrorMessage);
}
})
);
Model Control Protocol(MCP):
現在、開発中です。プラグインはClaude Desktop AppやCursorなど、さまざまなクライアントをサポートしています。
使い方:
MCPサーバーの自動起動が有効な場合:(プラグインの設定内)
1. Unreal Engineエディターを開きます。
2. Claude Desktop App、Claude Code CLI、またはCursor IDEを開きます。
これで完了です!プラグインのMCP機能を使用できます。
MCPサーバーの自動起動が無効な場合:
1. プラグインのPythonディレクトリからMCPサーバーを実行します。
python <your_project_directoy>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py
2. ClaudeデスクトップアプリまたはCursor IDEを開くか再起動して、MCPクライアントを実行します。
3. 新しいUnreal Engineプロジェクトを開き、プラグインのPythonディレクトリから次のPythonスクリプトを実行します。
ツール -> Pythonスクリプトを実行 ->
Plugins/GenerativeAISupport/Content/Python/unreal_socket_server.pyファイルを選択します。
4. これでClaude Desktop AppにUnreal Engineの使用を指示できるようになります。
既知の問題:
- MCPでノードが正しく接続されない
- MCPで元に戻す/やり直しがサポートされていない
- DeepSeek推論モデルでストリーミングがサポートされていない
- マテリアル作成ツールで複雑なマテリアルの生成がサポートされていない
- LLMが生成した一部の有効なPythonスクリプトの実行で問題が発生する
- LLMがブループリントをコンパイルする際、応答に適切なエラー処理が含まれない
- 特定のノード、特にゲッターとセッターの生成で問題が発生する
- シーンやプロジェクトファイルの編集時に、正しいコンテキストウィンドウが開かない。
- ブループリント用のウィンドウがエディター内に正しくドッキングされない。
貢献ガイドライン:
開発環境のセットアップ:
unrealPythonパッケージをインストールし、適切なインテリセンスが使用できるようIDEのPythonインタープリターを設定します。
pip install unreal
詳細は近日中に追加されます。
プロジェクト構成:
詳細は近日中に追加されます。
参考資料:
- 環境変数の設定ロジック 出典:OpenAI-Api-Unreal by KellanM
- MCPサーバーの参考 出典:Blender-MCP by ahujasid
クイックリンク:
- OpenAI API ドキュメント
- Anthropic API ドキュメント
- XAI API ドキュメント
- Google Gemini API ドキュメント
- Meta AI API ドキュメント
- Deepseek API ドキュメント
- Model Control Protocol (MCP) ドキュメント
- TripoSt ドキュメント
このプロジェクトを支援する
UnrealGenAISupport が役に立った場合は、プロジェクトを継続できるよう、ぜひスポンサーになってください。上の「Sponsor」ボタンをクリックしてご支援ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。