在 UE 编辑器中构建光照时,会拉起一个 SwarmAgent 进程在后台执行光照构建任务。
UE 提供了多台机器联机构建光照的支持,通过配置 SwarmCoordinator
与SwarmAgent
作为 C/S 的方式来下发构建任务,实现联机烘培的效果。官方文档:Unreal Swarm。
要求:
- 在局域网内需要一台设备当作调度器(Coordinator),该机器上需要具有完整的引擎,并且该机器需要开放 TCP 的 8008/8009 端口的 in/out,不然无法连接。
- 其余的机器上不要求安装引擎,但是需要运行 SwarmAgent。
SwarmAgent
可以从引擎的 Engine\Binaries\DotNET
目录下提取以下文件:
1 | C:\build_agent\workspace\SwarmAgent>tree /a /f |
其中 SwarmAgent.Options.xml
与SwarmAgent.DeveloperOptions.xml
是配置文件。
需要关注的参数:
CacheFolder
:注意该目录需要有读写权限,因为SwarmAgent
可以脱离引擎单独运行,默认的引擎目录不适合,建议设置为C:\tmp\SwarmCache
。AllowedRemoteAgentNames
:允许远程 Agent 分配任务到本地的名字,如果不做分组的情况,可以用通配符*
允许所有的 AgentCoordinatorRemotingHost
:局域网中运行 SwarmCoordinator 机器的 IP 地址(注意该机器需要开放 TCP 8008/8009 端口)AvoidLocalExecution
:只允许从本地分发任务,但本地不执行任务。EnableStandaloneMode
:SwarmAgent 的独立模式,不允许传入任务,也不向其他机器分发任务。ShowDeveloperMenu
:显示 DeveloperSettings 菜单。
在 DevelopSettings 中可以控制超时时间、核心数等。
当配置完之后把 SwarmAgent 运行在其余设备上,在 Coordinator 的机器上就可以看到以下连接:
展示了连接的机器数,工作状态(如果 SwarmCoordinator 进程关闭,重启后会自动连接 Agent)。
在任意启动了 Agent 的机器上可以开启 UE 启动光照构建任务(注意一定要先单独启动被配置完成的 SwarmAgent,如果使用引擎自动拉起 SwarmAgent 则会使用一份额外的配置文件),就能在本地 SwarmAgent 进程中看到以下任务分配:
在 SwarmCoordinator 中可以看到任务分配情况:
注意:不一定所有的任务都会被分配至其他的 Agent 执行,取决于任务数量、Agent 的负载情况等。
当 Agent 处于 Busy 状态时,Coordinator 不会给其分配任务:
其他资料: