Qwen3.6 27b の速度の比較

Qwen3.6 27b は性能が良く、Local LLM で UE5 の Blueprint 編集もできるなど使い勝手の良いモデルです。ただし Dense モデルなので推論速度はあまり速くありません。以下様々な環境での Qwen 3.6 27b の比較です。tps の値が大きい方が高速です。

CPUGPUMTPなしMTPあり
Ryzen 7 7840HS DDR5-5600— (CPUのみ)2.16 tps3.84 tps
Ryzen 7 7840HS DDR5-5600Radeon 780M (8GB)2.39 tps5.28 tps
Ryzen 7 4750G DDR4-3200Radeon 7600 8GB2.78 tps4.12 tps
Ryzen 7 5700X DDR4-3200GeForce RTX 5060Ti 16GB8.70 tps10.24 tps
Ryzen 9 3950X DDR4-3200GeForce RTX 4060Ti 16GB8.76 tps10.75 tps
Core i7-13700 DDR5-5600GeForce RTX 4060Ti 16GB10.39 tps11.26 tps
Mac mini M4 Pro 12CoreApple Silicon 16 Core11.71 tps
Ryzen AI Max+ 395 LPDDR5X-8000Radeon 8060S (96GB)12.96 tps23.11 tps
Ryzen 7 9700X DDR5-5600Radeon AI PRO R9700 32GB33.10 tps55.73 tps
  • llama.cpp b9957, Qwen3.6 27b UD-Q4_K_M, ctx 4096, PC 側はいずれも Performance Mode に設定

コンパクトなので比較的多くの環境で動きますが、Dense モデルなので快適に使用するためにはそれなりの性能が必要となります。また実際の用途では ctx サイズを増やす必要があり、速度はさらに遅くなります。特にエージェントでは入力プロンプトも長くなるため、追加で Prefill による待ち時間も考慮する必要があります。Prefill では演算性能も重要となりさらに条件が厳しくなります。以下は llama.cpp の llama-bench による pp の値です。値が大きい方が高速です。

CPU/GPUpp512tg128
Ryzen 7 7840HS + Radeon 780M (8GB)CPU+GPU57.32 ± 0.062.49 ± 1.02
Ryzen 7 5700X + GeForce RTX5060 Ti 16GBCPU+GPU28.54 ± 0.058.58 ± 0.02
Mac mini M4 Pro 12Core / 16CoreGPU100.07 ± 0.0211.87 ± 0.04
Ryzen AI Max+ 395 128GB (EVO-X2)GPU274.92 ± 2.4113.02 ± 0.01
Radeon AI PRO R9700 32GBGPU806.69 ± 0.8733.36 ± 0.01

Ryzen AI Max+ 395 の場合は Active パラメータが少なく、代わりに RAM 容量を活かせる 122B-A10B の方が向いていると思うのですが、Qwen3.6 でこのサイズが無いのが残念です。

関連ページ

Android 17 版 Pixel の Linux ターミナル

Android 17 にアップグレードしたところ、ターミナル機能 (Linux 開発環境) でメモリ容量を選べるようになっていました。前はスマートフォン本体の RAM 容量にかかわらず 4GB 固定だったので使いやすくなってます。下の画面は Android 17 に更新した Pixel 10 Pro です。10.9 GB まで増やせるようです。

RAM が 8GB しかない Pixel 9a ↓でも 5.2 GB まで選べるようになっていました。

スマートフォンSoCGPU物理 RAM 容量Linuxの最大容量
Pixel 10 ProTensor G516GB10.9 GB
Pixel 9aTensor G48GB5.2 GB

Linux ターミナル機能とは

Pixel スマートフォンに搭載されている Linux 仮想マシンです。CLI だけでなく GUI にも対応しており、開発環境を構築したり Linux のアプリケーションを走らせる事ができます。

Linux ターミナル の有効化方法

有効化方法 (インストール方法) はこれまでと同じです。Android の設定の「システム」→「開発者向けオプション」から「Linux 開発環境」を有効化します。これでアプリケーションドロワーに「ターミナル」アプリが追加されます。もし開発者向けオプションが見つからない場合は、設定の「デバイス情報」→「ビルド番号」を 7回以上タップしてください。

GUI 画面でマウスカーソルが表示されない場合は以下のコマンドを実行してください。

sudo apt update
sudo apt upgrade -y
sudo apt install xcursor-themes

タッチアイコンが ON の場合は、タッチパッドのようにマウスカーソルを操作できます。ダブルタップのあとドラッグするとウィンドウの移動やリサイズできます。Bluetooth マウスやキーボードも利用できます。

メモリを増やして大きなアプリケーションを動かせますし、逆に RAM が少ない機種の場合は減らして安定動作優先にするのも良いかもしれません。

関連ページ

UE5 Unreal Python を使った MCP のテスト

UE5 5.8 には MCP サーバー機能が搭載されましたが、もともと Unreal Engine には python コードをリモート実行する機能も備わっています。こちらでも似たようなことが可能で、5.8 よりも前のバージョンでも動きます。ただしサンドボックス化されていないため、もし AI エージェントから呼び出す場合は注意が必要となります。

Python Remote Execution の有効化

  1. もし有効になっていなかったらプラグインマネージャーから「Python Editor Script Plugin」を有効化して Editor を起動し直します
    • 大抵デフォルトで有効になっています
  2. メニューの “Edit” → “Project Settings…”
  3. 左側のカテゴリから「Python」を選択して、「Python Remote Execution」の中にある ” Enable Remote Execution? ” にチェックを入れます
  4. Editor を一旦閉じて起動し直します

MCP サーバー化スクリプトを作ってみる

python の remote 呼び出しを mcp 化します。ファイル名は “ue5-python-mcp.py” とします。

import os
import sys
import time

from mcp.server.fastmcp import FastMCP

ue5_root= os.environ.get('UE5_ENGINE_ROOT', 'C:/Program Files/Epic Games/UE_5.8')
sys.path.append( os.path.join( ue5_root, 'Engine/Plugins/Experimental/PythonScriptPlugin/Content/Python' ) )
from remote_execution import RemoteExecution

mcp= FastMCP('ue5-python', json_response=True)

#------------------------------------------------------------------------------

logger= None
def print_err( *msg ):
    if True:
        print( *msg, file=sys.stderr )
    else:
        global logger
        if not logger:
            logger= open( 'log.txt', 'w' )
        logger.write( ' '.join([ str(m) for m in msg]) + '\n' )
        logger.flush()


class UEInterface:
    def __init__( self ):
        self.remote_exec= None

    def find_node( self, nodes, machine ):
        for node in nodes:
            if machine == '*':
                return  node.get('node_id')
            pc= node.get('machine')
            if pc == machine:
                return  node.get('node_id')
        print_err( 'Error: UE5 node %s not found' % machine )
        return  None

    def connect( self ):
        if not self.remote_exec:
            self.remote_exec= RemoteExecution()
            self.remote_exec.start()
            time.sleep( 1 )
            hostname= os.environ.get('COMPUTERNAME',os.environ.get('HOST',os.environ.get('HOSTNAME','*')))
            node_id= self.find_node( self.remote_exec.remote_nodes, hostname )
            if node_id:
                self.remote_exec.open_command_connection( node_id )

    def disconnect( self ):
        if self.remote_exec:
            self.remote_exec.stop()
            self.remote_exec= None

    def script_wrapper( self, script ):
        out_str= 'try:\n'
        for line in script.split('\n'):
            out_str+= ' ' + line + '\n'
        out_str+= '\nexcept Exception as e:\n print("Error:",str(e))\n'
        return  out_str

    def exec( self, script ):
        wrapped= self.script_wrapper( script )
        result= self.remote_exec.run_command( wrapped )
        return  result

    def is_valid( self ):
        return  self.remote_exec

ueinterface= None

def get_api():
    global ueinterface
    if not ueinterface:
        ueinterface= UEInterface()
        ueinterface.connect()
    return  ueinterface

#------------------------------------------------------------------------------

@mcp.tool()
def run_ue5python( script:str ) -> str:
    """
    UE5 の remote_execution 機能を使って python script を実行します。
    UE5 の python api を呼び出すことが出来ます。

    Args:
        script     実行するpythonスクリプト
    """
    api= get_api()
    if not api.is_valid():
        return  'Error: Unable to connect to UE5'
    result= api.exec( script )
    success= result.get('success',False)
    output= result.get('output')
    return  str( { 'success': success, 'output': str(output) } )

#------------------------------------------------------------------------------

if __name__=='__main__':
    mcp.run(transport='stdio')

スクリプトをそのまま実行すると、エラー発生時にうまく動かなくなる場合があります。例外が出た場合、Editor のコンソール上では赤文字でエラーメッセージが表示されているのですが、戻り値として LLM には何も返っていないからです。原因がわからないとエラー時に無駄な試行錯誤を繰り返してしまうので、mcp に渡されたスクリプトコードをあらかじめ “try:” ~ “except” で囲んでエラーを返すようにしています。

AI クライアントアプリ側の MCP 設定例

使用するツールにあわせて設定してください。以下は uv を使う場合の mcp.json の設定例です。環境変数 UE5_ENGINE_ROOT にエンジンのパスを設定します。

  "mcpServers": {
    "ue5": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp",
        "ue5-python-mcp.py"
      ],
      "env": {
        "UE5_ENGINE_ROOT": "C:/Program Files/Epic Games/UE_5.8"
      }
    }
  }

または直接 PYTHONPATH に UE5 の remote_execution.py が置いてあるパスを設定しても構いません。

  "mcpServers": {
    "ue5": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp",
        "ue5-python-mcp.py"
      ],
      "env": {
        "PYTHONPATH": "C:/Program Files/Epic Games/UE_5.8/Engine/Plugins/Experimental/PythonScriptPlugin/Content/Python"
      }
    }
  }

uv を使わない場合は “pip3 install mcp” で mcp モジュールをあらかじめ追加しておいてください。

  "mcpServers": {
    "ue5": {
      "command": "python",
      "args": [
        "ue5-python-mcp.py"
      ],
      "env": {
        "UE5_ENGINE_ROOT": "C:/Program Files/Epic Games/UE_5.8"
      }
    }
  }

実行前の注意点

これはあくまで検証用で、サンドボックス化が行われていないので注意してください。このツールを使うと mcp 経由で任意の python コードが実行可能となります。ファイルアクセスやコマンド実行、ネットワークアクセス等が行われる可能性があるため、使用する場合は必ず安全対策を行ってください。以下はその例です。

  • ローカルアカウントを使ったまっさらな PC を用意して、そこで UE5 を起動する
  • 自動承認を行わず、呼び出されるスクリプトが問題ないか毎回確認してから手動承認する

使ってみる

先に UE5 Editor を起動してから、AI 側のクライアントアプリを起動します。例えば Claude Code のような mcp に対応したコーディングツールを使うことができます。Python の unreal モジュールの命令を AI 経由で実行できます。アセットの編集やレベルへの配置などもエージェントに任せることが可能です。

この方法を使うと 5.8 よりも古い UE5 でエージェントを使用することができます。ただ色々と機能制限はあります。UE5 5.8 の標準の MCP サーバーの方ができることが多く機能が豊富なので、やはり本格的に使う場合はそちらを使った方が良いかと思います。

関連ページ

UE5 5.8 の MCP サーバー機能を使用する

UE5 5.8 では実験機能として MCP サーバー機能が追加されました。Plugin として組み込まれており、設定で有効化することができます。MCP を使うとさまざまな AI 用クライアントと接続することが可能で、AI エージェントが直接 Unreal Engine を操作できるようになります。

UE5 5.8 Preview 版との違い

5.8 Preview 版エンジンでも MCP 機能はあったのですが、いくつか問題がありました。5.8 Release 版ではそのあたりが改善されているようです。なお UE5 5.8 Release 版付属であっても MCP 機能自体は実験機能扱いです。今後仕様が変わる可能性があります。

Preview 付属版では load_toolset 命令を使って必要な Tool だけ有効化していく仕組みでした。ただし load すると各 Tool が直接 Function Calling 用のテーブルに組み込まれるため、仮に全部ロードしてしまうと 700 以上もの関数がアクティブになります。そんな使い方はしないと思いますが、この場合 Tool の定義だけで Context Window のおよそ 150K ほどを占有する計算です。またクライアントアプリ次第ですが、ロードした Tool はそのセッションでは有効にならない可能性があります。

他にも関数名に本来使えないはずのドット ‘.’ が含まれていたり、関数名だけで 64 文字を超えるなど Tool の仕様に沿っていないので、使用する LLM の API によってはエラーになっていました。

Release 付属版では直接 Tool として関数を公開せずに、call_tool 命令を使って間接的に呼び出す仕組みに変更されています。LLM に直接公開される関数は 3つだけです。

  • list_toolsets
  • describe_toolset
  • call_tool

list_toolsets, describe_toolset を使って存在する命令の使い方を調べつつ、call_tool に独自の “命令名” とパラメータを渡して実際の呼び出しを行うわけです。間接的にはなりますが、API 側の Tool とは別のネームスペースなるので関数名の制約を受けなくなります。また Tool 定義だけで Context Window を大量に消費することもなくなり効率化されます。

ちなみに Release 付属版でも Editor Preferences → “Model Context Protocol” の “Enable Tool Search” を false にすると Tool として全部ロードされるので注意してください。

他にも Preview だと Python script で例外などのエラーが呼び出し元に返っておらず、何が原因でエラーになったのか AI 側で判断できずにはまってしまうことがありました。Release 付属版ではそういった問題も解消されているようです。

MCP 機能を有効化する

以下何らかのサンプルプロジェクトを作成して Editor が開いてる状態を想定しています。

(1) Editor の言語を英語にします (重要)

  1. メニューの「編集」→「エディタの環境設定」→左側一般の中にある「地域&言語」
  2. 「エディタの言語」を “日本語” から “英語” に変更
  3. Unreal Editor を一旦閉じて起動し直す

日本語設定のままだと、Blueprint (BP) のノード名やピン名が日本語のまま AI に渡されます。この場合 AI が混乱してしまうようで、うまく BP ノードの編集ができないことがあります。英語に切り替えておくことをお勧めします。

(2) プラグインを有効化します

  1. メニューの「Edit」→「Plugins」
  2. 一番上の検索欄に「mcp」を入力
  3. 候補に出てきた「Unreal MCP」にチェックを入れる
    • “MCP Client Toolset” の方は不要です
  4. 同じように検索欄で「toolset」を入力
    • ここに出てきた候補が MCP 用の命令郡になります
  5. 候補に出てきた「Editor Toolset」にチェックを入れる
    • 他にも必要なものがあればチェックを入れます
    • ちなみに “All Toolset” にチェックを入れると、大半のツールが自動的に有効になります
  6. Unreal Editor を起動し直す

あまり多くのツールを有効化してしまうと効率が悪くなるので、最初は最小限にしておくことをお勧めします。

(3) MCP サーバーを起動します

  1. メニューの「Edit」→「Editor Preferences…」→ 左側 General の中にある「Model Context Protocol」
  2. 「Auto Start Server」にチェックを入れておく
    • 注意: “Enable Tool Search” には必ずチェックを入れた状態にしてください
  3. Unreal Editor を起動し直す

Editor を起動し直す代わりにコンソールコマンド「ModelContextProtocol.StartServer」を実行しても構いません。

クライアント (AI エージェント) から接続する

Claude Code や Codex 等、各種ツールに合わせて設定します。設定方法はクライアントアプリごとに異なるのでそちらに従ってください。

設定ファイルの自動生成を使う場合

メジャーなツールに関しては自動的に設定ファイルを生成する機能があるようです。コンソールコマンドで「ModelContextProtocol.GenerateClientConfig All」を実行すると、プロジェクトフォルダに “.mcp.json” 等の設定ファイルが作られます。詳しくはドキュメントを参照してください。

手動で設定する場合

mcp.json 等への設定例は以下のとおりです。

{
  "mcpServers": {
    "ue5": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

Streamable HTTP に対応していないクライアントの場合は以下のような設定が必要かもしれません。

{
  "mcpServers": {
    "ue5": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "mcp-remote",
        "http://127.0.0.1:8000/mcp"
      ]
    }
  }
}

接続確認

先に UE5 Unreal Editor を起動した状態にしてから、コーディング AI エージェント (MCP クライアント) を立ち上げます。「UE5の現在のレベル名は?」など簡単な質問をしてみてください。

使ってみる

MCP で UE5 に接続した AI エージェントから指示を出すと人間の代わりに操作してくれます。Actor の作成や BP の編集もできますが結構時間がかかります。学習による事前知識ゼロなので、説明を見てひとつひとつ確認しながらノードやピンを繋いで構築していく感じです。DSL を使ってまとめて BP コードを編集することもできますが、エラーを出しながら AI もだいぶ試行錯誤しているようです。

UE5 5.8 で ThirdPersonTemplate (C++) のサンプルプロジェクトを作成し、簡単な BP 処理を実装してもらいました。

「Pキーでキャラクタから前方に球を発射するようにして。球は物理で転がるようにしたい」

マテリアルを割り当てたり調整もしてもらいました。

使用したコーディングエージェントは自作のもので、ローカル LLM を使っています。使ったモデルは Qwen3.6 27b (MTP) です。Context Window の消費量は 90~100K になりました。GPU は Radeon AI PRO R9700 32GB で、10分ほどかかっています。

CPURyzen 7 9700X
RAMDDR5-5600 128GB
GPURadeon AI PRO R9700 32GB
ModelQwen3.6 27b MTP (UD-Q4_K_XL)
AI Agent自作

他のモデルでも試してみました。

Qwen3.5 系 (Qwen3.5 27b / 122b-a10b) は一発で実装できず何度かやり取りが必要で、かつ手動での作業を求めてきました。

ローカルではなく Cloud のオープンモデルですが、DeepSeek-V4 Flash や GLM-5.2 はきちんと動作するものができました。

逆に Cloud の Gemma 4 31b (gemma4:31b-cloud) は途中で停止し、何度か継続したもののうまく実装できませんでした。ローカルでの Gemma 4 は未確認です。

Python とサンドボックス

各 Tool は直接呼び出すだけでなく、python スクリプトを使うことができます。繰り返し処理などは python を使ってくれるので効率が上がります。ただし使用できる命令は基本的に Toolset で有効にしたものと同じです。直接 UE5 の Python API (unreal module) を使うことはできず、また多くの外部モジュールは使用禁止となっています。これはサンドボックス化のためです。

クライアントの AI エージェント側をサンドボックス化したり情報へのアクセスを制限したとしても、mcp 経由で任意の python code を実行できると制限の意味がなくなってしまいます。python の標準の機能を使えばほぼ制限無くなんでもできるからです。よって安全のために Python の実行は多くの機能が制限されており、サンドボックス化されています。

BP の DSL 編集機能

BP の編集は Tool を使ってノードのピンをつなぎ、直接グラフを構築していくことができます。ただし大きなグラフの構築だと効率が悪いので、BP 自体をまとめてテキストで編集する機能があります。

  • read_graph_dsl
  • write_graph_dsl

試しに ThirdPersonTemplate (BP) の BP_ThirdPersonCharacter から EventGraph を取得してみるとこんな感じになりました。Lisp 風の表現となっています。

(event EnhancedInputActionIA_Move (ActionValue_X ActionValue_Y ElapsedSeconds TriggeredSeconds InputAction))

(event EnhancedInputActionIA_Look (ActionValue_X ActionValue_Y ElapsedSeconds TriggeredSeconds InputAction))

(event Touch|EventPrimaryThumbstick (Axis_X Axis_Y)
  (CallFunction|Move Axis_X Axis_Y))

(event Touch|EventSecondaryThumbstick (Axis_X Axis_Y)
  (CallFunction|Aim Axis_X Axis_Y))

(event EnhancedInputActionIA_MouseLook (ActionValue_X ActionValue_Y ElapsedSeconds TriggeredSeconds InputAction))

(event EnhancedInputActionIA_Jump (ActionValue ElapsedSeconds TriggeredSeconds InputAction))

(event Touch|EventTouchJumpStart
  (Character|Jump))

(event Touch|EventTouchJumpEnd
  (Character|StopJumping))

Move 関数はこのように定義されています。

(fn Move (X Axis Y Axis)
  (Pawn|Input|AddMovementInput
    (Math|Vector|GetRightVector (Pawn|GetControlRotation) 0.0 (Pawn|GetControlRotation)) X Axis)
  (Pawn|Input|AddMovementInput
    (Math|Vector|GetForwardVector 0.0 0.0 (Pawn|GetControlRotation)) Y Axis))

複雑な BP の構築でも、大量の Tool Call を使って力技で作っているわけではないことがわかります。

使ってみて

BP 編集は使い方を確認したり、試行錯誤がある分だけ時間がかかってトークンも消費します。知識にある汎用言語を使ってコード生成するのと比べると、どうしても効率は落ちていると思います。できるだけ性能が高いモデルを使った方が良いのかもしれません。BP ではなく C++ と Live Coding Toolset を使う方法もありますが、コードに問題があるとすぐ Editor が落ちますので今のところはどちらが良いとも言えません。UE6 でテキスト言語に回帰する理由もわかる気がします。もちろんまだ登場したばかりの新機能なので、今後改良が進んで使いやすくなっていくものと思われます。

関連ページ

UE5 の UnrealBuildAccelerator で C++ とシェーダーのコンパイルを高速化する

Unreal Build Accelerator (UBA) を使うと、複数台の PC を使って UnrealEngine 5 のビルド時間を短縮することができます。UBA は UE5 5.4 で Beta 機能として搭載され、5.5 以降正式版になりました。以下そのインストール方法や設定方法についてまとめます。以前 5.4 で解説を行いましたがそのアップデートとなります。

1. サーバーのインストール (Windows)

どれか一台の PC をサーバーとしてセットアップします。

(1) Horde Server のインストール

  1. UnrealHordeServer.msi をインストールします
    • ソースコード版エンジンの Engine/Extras/Horde/UnrealHordeServer.msi
    • または GitHub の Release ページから直接ダウンロードできます
  2. 途中で出てくる「Horde Server Configuration」はデフォルトのままで OK です
    • Port は 13340
  3. 完了したら自動的にブラウザが開きます
    • 「UNREAL ENGINE HORDE」のページが表示されていれば完了です。HordeServer のドキュメントをここから読むことができます。
    • もし自動的に開かない場合は「 http://localhost:13340 」を開いてください

(2) Windows Firewall の設定

Port 13340 で受信できるように許可します

  1. スタートメニューで “fire” を検索して「Windows Defender ファイアウォール」を開きます
  2. 左側の「詳細設定」をクリックして、「セキュリティが強化された Windows Defener ファイアウォール」を立ち上げます
  3. 「ローカル コンピューター のセキュリティ」の中の「受信の規則」をクリック
  4. 一番右の「操作」の中にある「受信の規則」にある「新しい規則…」をクリック
  5. 「新規の受信の規則ウィザード」が開くの以下の順番に入力します
    1. 「ステップ: 規則の種類」で「ポート」を選択して「次へ」
    2. 「ステップ: プロトコルおよびポート」で TCP(T) のまま、「特定のローカルポート」に「13340,13342」を入力して「次へ」
    3. 「ステップ: 操作」で「接続を許可する(A)」のまま「次へ」
    4. 「ステップ: プロファイル」は「パブリック」からチェックを外して「次へ」
    5. 「ステップ: 名前」に “Horde Server 13340,13342” と入力して「完了」

2. Horde Agent のインストール (Windows)

分散ビルドをさせたい PC で Horde Agent をインストールします。Agent は何台でも構いません。Horde Server を入れた PC にもインストールできます。

(1) Unreal Toolbox のインストール

  1. ブラウザで Horde Server をインストールした PC の Port 13340 を開きます
    • 「 http://<HordeサーバーのIPアドレス>:13340 」
    • 例えば IP アドレスが 192.168.0.100 なら「 http://192.168.0.100:13340 」
  2. 開いたページ上部メニューの「TOOLS」から「Downloads」を選択します
  3. 一番下の「Unreal Toolbox (Windows Installer)」をダウンロードします
  4. ダウンロードした UnrealToolbox.msi をインストールします
  5. 「Horde Server URL:」の入力欄が出たらサーバーの URL を入力します
    • 例えば IP アドレスが 192.168.0.100 なら「 http://192.168.0.100:13340 」
  6. インストールが完了すると Unreal Toolbox の設定画面が開くので次に進みます

(2) Unreal Horde Agent のインストール

  1. Toolbox のインストールが完了すると Unreal Toolbox の設定画面が自動的に開きます
    • もし開かない場合はスタートメニューから Unreal Toolbox を直接開いてください
  2. Toolbox 上で「Horde Agent (Windows Installer)」をインストールします
    • General → Tools の中にある「Horde Agent」の右の「Add」をクリック
  3. Horde Agent のインストーラーが立ち上がるのでそのままインストールします
  4. 途中の「Horde Server URL:」は先程 Toolbox インストール時に入れたものと同じです
    • 最初から URL が入ってるので変更不要です
    • もし手動で入力するなら「 http://<HordeサーバーのIPアドレス>:13340 」
  5. 「Sandbox directory:」もデフォルトのままで OK です
    • 別の場所に設定しても構いません
  6. 最後の画面で「Enroll agent with Horde server」にチェックを入れたまま「Finish」
    • ブラウザが開いて自動的に Agent Enrollment 画面になるので次に進みます

(3) Agent PC の登録

  1. ブラウザページに「Enroll Agent ~」とダイアログが表示されていたら青い「Register」ボタンをクリックします
  2. その後 PC のブラウザで「 http://<HordeサーバーのIPアドレス>:13340/agents 」を開いて、登録した PC が一覧に含まれていれば登録完了です

もし自動的にブラウザが開かなかったり、Agent 一覧に PC が表示されていない場合は以下の手順で登録を行います。

  1. Windows のタスクトレイにある Unreal の “u” アイコン右クリックから「Enroll with Server…」
  2. ブラウザが開いて “Agent Enrollment” のページが開くので、「Enroll Agent~」のダイアログで「Register」をクリック
  3. もし自動的にダイアログが出ていない場合は、自分の PC 名にチェックを入れて右上の「Enroll Agents」をクリック
    • すでに登録済みの場合はこの画面が出ないことがあります。agents のページで確認してみてください

    (4) Windows Firewall の設定

    サーバーと同じように Port 7000-7010 で通信できるように設定しておきます。

    1. スタートメニューで “fire” を検索して「Windows Defender ファイアウォール」を開きます
    2. 左側の「詳細設定」をクリックして、「セキュリティが強化された Windows Defener ファイアウォール」を立ち上げる
    3. 「ローカル コンピューター のセキュリティ」の中の「受信の規則」をクリック
    4. 一番右の「操作」の中にある「受信の規則」にある「新しい規則…」をクリック
    5. 「新規の受信の規則ウィザード」が開くの以下の順番に入力
      1. 「ステップ: 規則の種類」で「ポート」を選択して「次へ」
      2. 「ステップ: プロトコルおよびポート」で TCP(T) のまま、「特定のローカルポート」に「7000-7010」を入力して「次へ」
      3. 「ステップ: 操作」で「接続を許可する(A)」のまま「次へ」
      4. 「ステップ: プロファイル」は「パブリック」からチェックを外して「次へ」
      5. 「ステップ: 名前」に “Horde Agent 7000-7010” と入力して「完了」

    3. Unreal Engine 側の設定

    UE5 5.7 以降

    ~Engine.ini に以下の設定を追加します。同じエンジンを使うプロジェクト全部で同じ設定を使う場合は Engine 側の Engine/Config/BaseEngine.ini に記述します。プロジェクト側の Config/DefaultEngine.ini や UserEngine.ini で定義しても構いません。

    [Uba.Provider.Horde.UE5]
    Enabled=true
    ServerUrl="http://<HordeサーバーのIPアドレス>:13340/"
    MaxCores=500
     
    [UbaController]
    +Providers=Uba.Provider.Horde.UE5

    例えば Horde Server をインストールした PC の IP アドレスが 192.168.0.100 の場合は次のようになります。

    [Uba.Provider.Horde.UE5]
    Enabled=true
    ServerUrl="http://192.168.0.100:13340/"
    MaxCores=500
     
    [UbaController]
    +Providers=Uba.Provider.Horde.UE5

    これで C++ やシェーダーのビルドが複数の PC に分散されるようになります。

    UE5 5.6 以前

    UE5 もしくは HordeServer のバージョンによって設定方法に違いがあります。UE5 5.6 以前など古いバージョンを使用している場合は以下のページも参照してください。

    C++ のビルド分散ビルドには DefaultEngine.ini だけでなく BuildConfiguration.xml の設定も必要なので注意してください。

    関連ページ