Bootstrap

Unreal Swarm 联机构建配置说明


要进行联机构建,并不需要参与的每台电脑上都安装好UE4,只需拷贝少数的几个文件即可(稍后说明)。并且Unreal Swarm比较智能,配置好之后可以从任意一台上发起构建,会自动分发至其他电脑。 
Coordinator(调度器)的配置 
首先,参与联机的电脑中至少要有一台运行SwarmCoordinator(作为任务调度器),位于Engine\Binaries\DotNET目录下。 
 
刚刚启动的SwarmCoordinator如上图所示。里面暂时什么也没有。 先把它放在这里,稍后我们再回来。 
Agent(参与构建的电脑)的配置 
首先要保证参与的电脑均为64位,已经安装了VC201364位运行库和DX运行时。 然后,复制Engine\Binaries\DotNET目录下的 SwarmAgent.exe AgentInterface.dll 
SwarmCoordinatorInterface.dll UnrealControls.dll 
四个文件到其他所有参与联机的电脑上去。如果它们已经安装有UE4,也可以直接从它们的Engine\Binaries\DotNET目录下运行SwarmAgent。  

运行SwarmAgent,切换到Settings选项卡,来对Agent进行配置。

需要注意的主要是红框中的几项。  
CoordinatorRemotingHost 
运行SwarmCoordinator的电脑的IP或者主机名。建议填主机名,这在有多个IP地址的情况下可增强稳定性。  
SwarmAgent支持进行分组,也就是即使Agent们都连在同一个局域网中,也可以分属不同的组。不同的组之间构建任务互相独立,不会跨组分发构建任务。  
AgentGroupName 
组名,这里简化起见,所有Agent都在同一组。需要保证同一组的Agent组名都一样,否则不会分发任务。因此将就默认的Default也没什么不好。 AllowedRemoteAgentGroup 
允许接受哪个远程组分派过来的任务。只有一组的情况下,要和AgentGroupName保持一致。 AllowedRemoteAgentNane 
允许接受哪些名字的Agent分派过来的任务。简化起见,填星号表示一切Agent。最好填星号,否则调试阶段很可能怎么都连不上。  
AvoidLocalExcution 
避免本地执行构建,强制将任务分发到远程。注意如果没有可用的远程机器,将会暂停,一直等到有可用机器才会继续。 
EnableStandaloneMode 
开启独立模式。开启后所有任务将强制在本地执行,和上一项恰好相反。  

配置好之后选择Agent菜单栏上的Network -> Ping Coordinator,等待一段时间之后,Agent的Log窗口中应当有提示,同时Coordinator端可以看到连上来的Agent。


依次对每台参与构建的电脑的Agent都做如上配置。 
小提示:SwarmAgent的配置存储在同一目录下的SwarmAgent.Options.xml 文件中。如果嫌配置麻烦可以配置好一台之后把这个文件连同上面的四个文件一起拷贝走,就可以方便许多。 
如果你不直接运行SwarmAgent.exe,而是由UE4的编辑器启动SwarmAgent,SwarmAgent会使用另外一份配置文件,这时候需要重新配置。 
发起联机构建 
做好以上配置之后,运行UE4,点击光照构建,任务应当就会被分发下去了。从发起构建的电脑的Agent主界面上可以看到进度条。 
常见问题 
发起构建之后只有一台电脑参与,其他的没有反应。 可能的原因: 
 工程太小,Unreal Swarm不会调度。 
 网络问题。首先要确保Coordinator中能够看到所有Agent,其次可以通过Agent的菜单栏上的Network -> Ping 
Remote Agents来检测和其他Agent的连通性。如果连通的话可以在Log下面看到其他Agent的名字和IP。 如果能Ping通但仍不能连上,请尝试关闭Windows防火墙。 
尽量不要在无线路由下进行联机。无线网络带宽较小,反而很可能拖慢整体速度,并且常常不能连接。  如果电脑有多个IP地址(比如多块网卡),SwarmAgent将很有可能取到错误的IP。这个时候只能禁用产生错误
IP的网卡。 
 保证参与的电脑为64位,且已经安装了VC201364位运行库和DX运行时。如果没有,Unreal Lightmass会启动
失败,但是不会有明显错误提示,因此这个问题不容易发现。 
 如果你不直接运行SwarmAgent.exe,而是由UE4的编辑器启动SwarmAgent,SwarmAgent会使用另外一份配
置文件,这时候需要重新配置。 
另外,可以尝试由我修改的Strong SwarmAgent,能够在一定程度上克服网络问题。

;