UE4虚幻4引擎联机烘焙(SwarmAgent)
前言
烘焙,在游戏设计中占有重要的地位!游戏运行时灯光渲染对于性能影响极大,设计者为了降低灯光在运行时的渲染压力,并且不损失过多效果。加入了场景烘焙。
烘焙主要是在游戏设计阶段,通过预计算,将灯光照射信息渲染到光照贴图上。从而达到运行阶段灯光不再进行照射计算,使用光照贴图进行照射表现的目的。提升了运行性能,并且并没有损失过多的渲染效果。
烘焙本身非常耗时,一般公司会多台配置硬件怪兽计算机用于烘焙场景。如果使用虚幻,那么烘焙场景则可以使用联机方式提高烘焙速度!
这非常酷,我们可以通过接入同一局域网内的电脑,进行联机烘焙!从而加快烘焙!(烘焙占用CPU资源)
准备
如果需要进行联机烘焙需要具备以下条件
- 多台电脑终端需在同一局域网内(网关必须相同,保证所有终端可以互相ping通)
- 所有终端在局域网内的计算机名不能相同,参照这里进行修改
- 终端应装有虚幻引擎(这并不是必须的,也可以拷贝装有虚幻引擎计算机中的Swarm Agent到其他终端使用)。资源路径参照“\Epic Games\UE_4.19\Engine\Binaries\DotNET”
- 计算机必须装有.net框架,请更新到最新版,这是必须的!SwarmAgent使用C#进行编写,对运行环境有要求
- 所有终端建议关闭防火墙,因为联机烘焙需要进行网络通信,Swarm Agent会被防火墙阻挡
步骤
(一)协调器开启(SwarmCoordinator)
协调器:即所有参与烘焙主机的中转服务器,我们可以人为这是服务器。参与烘焙的终端需要连接到开启协调器的主机方可参与到烘焙队列中。协调器终端同时也可以开启烘焙任务代理。
联机烘焙的关键在于协调器的构建(选取网络中任意终端做协调器并且只使用一个协调器即可),协调器主要用于烘焙时收集任务和分配任务。当在联机环境中有任意终端开启工作,协调器则负责将任务进行分发。
协调器路径参考“\Epic Games\UE_4.19\Engine\Binaries\DotNET”下SwarmCoordinator.exe,双击启动即可看到,参照图一
注意你的协调器启动应该是空白的,不会像图一一样,图一是我自己的烘焙环境正在工作
图一中协调器已经有4台主机连入,并且其中三台处于工作状态,一台处于空闲状态
- Available 表示当前主机可以使用,正处于空闲状态
- Unassigned 未指派工作,如果有指派则显示为网络中哪台主机处理任务,请参照二三四条
(二)启动烘焙代理(SwarmAgent)
烘焙代理是真正工作的节点软件,打开方式有两种:
- 在UE中选择构建灯光,可以打开软件
- 直接在引擎路径下,参照“\Epic Games\UE_4.19\Engine\Binaries\DotNET”找到SwarmAgent.exe,双击打开即可
注意:此软件一般会最小化到任务栏,所以切记不要开设两个软件,软件关闭需要右键图标才可以关闭,点击窗口关闭是最小化操作,如图二
关键点说明:
- CacheFolder 烘焙数据缓存目录,请保证此目录所在磁盘空间至少大于5G
- ShowDeveloperMenu 设置是否显示开发菜单,默认false,如果转换为true,则会多出Tab页DeveloperSettings
- AgentGroupName 代理组名称,此选项决定了当前终端加入到远端协调器时,远端进行允许加入的依据(和下面的选项有关系)。例如远端只允许h1组加入,而你是h2组,则你无法加入烘培联机队列
- AllowedRemoteAgentGroup 如果作为烘焙协调器,允许哪些终端进行加入。只有分组名称与此项中名称相同的才可以进行联机
- AllowedRemoteAgentNames 允许哪些主机进行连入(验证名称),一般填入*,允许任何主机连入
- AvoidLocalExecution 禁止本地终端参与烘焙(如果作为协调器),默认false
- CoordinatorRemotingHost 你希望加入远端协调器的地址,可以填入协调器终端在网络环境中的名称,也可以填入IP。如果希望加入当前终端的协调器(也就是此电脑即是协调器又是烘培代理),则此项IP可以填入127.0.0.1
其他使用默认即可
注意:在DeveloperSettings(开发者设置中)可以调整计算机硬件参与烘焙任务时硬件参与度,请自行翻译调整,一般使用默认就是全部投入参与烘焙。
(三)启动测试
协调器终端:开启协调器—开启烘焙代理—调整参数
参与终端:开启烘焙代理—调整参数
完成后,参与终端在烘焙代理软件中尝试ping主机,如果在log中看到信息,则说明链接成功。参照图三
- Ping Coordinator 测试与远端协调器链接是否正常,确认远端协调器必须开启
- Ping Remote Agents 测试远端所有代理链接是否正常
如果正常,将显示红框中的日志信息
所有链接完成,查询协调器情况,如果出现如图一的情况,说明烘培联机构建成功。
(四)启动烘焙
网络中,任意主机开启烘焙,在烘焙代理软件中如看到如图四情况,则说明联机烘焙构建完成。
我的截图是烘焙完成后的场景,不同颜色的线表示了当前烘焙的不同步骤。步骤描述在最下面有说明(参照Key)。
总结
假设网络环境中有AB两台电脑,我们希望构建联机烘焙,并且将A当作协调器,操作步骤如下:
- 启动A电脑上的协调器(SwarmCoordinator)
- 启动A电脑上的烘焙代理(SwarmAgent)
- 配置A电脑上烘焙代理信息,参照图二,将CoordinatorRemotingHost选项中内容填入127.0.0.1
- 启动B电脑上的烘焙代理,设置代理信息,参照图二,将IP地址填入A的IP
- 在B电脑上进行ping测试,参照图三,如日志信息正常则说明连接成功。
- 观察A电脑上的协调器(SwarmCoordinator),看是否有主机连接上来
- 任意终端启动引擎烘焙,如出现图四,则表明构建成功
虚幻版本4.19.2 Swarm Agent版本 1.7.2893.0
。。。看见Zery四个字母我就 愣住了,我好像没写过这文章啊,Zery这名字我用了快20年了,第一次在网上碰见同名的。而且也是玩UE4的同志,你说巧不巧,我叫Zery.Zhao。不怕你笑话,就这点事我都老泪纵横了!
哈哈,缘分缘分~
大神向你学习!
太高端了。。UE这么多功能都没见过
虚幻太强大了~
要是在联机中途有主机退出,后面还能继续连上来一起构建吗
这个我还真没有测试过,你可以测试下,正常来说任务终止,重连后应该继续参与烘焙运算。但是之前的任务应该被宣告失败。这不像是断点续传。