前言
最近赋闲在家(被迫),有时间可以看一下一些UE的新技术。其实Horde和UBA对我来说也不算特别“新”,我大概是在2025年初的时候就知道有这么个东西。不过当时心思不在,就没去折腾。昨天在B站虚幻引擎看到介绍,就搭建了使用一下,整体效果还不错。对于Homelab,能有效替代Incredibuild免费版。对于大型团队,复杂的网络环境,有待验证。
Horde和UBA是什么
做过游戏项目的都知道,打包、测试、发布这几个流程是非常折磨人的。不管是什么引擎(UE更甚),几乎打打包都需要耗费大量的时间,尤其是版本日(估计行业内看到这个词都PTSD)。我在这里姑且先不讨论打包为什么需要这么久。Horde和UBA就是EpicGames提出一个解决方案。
UBA提供联机编译,替代的是IncrediBuild的生态位,目前支持Shader和C++联机编译。相对IB,UBA的功能更加简单、纯粹。它只提供联机任务执行的框架,其他IB的例如节点管理、节点发现等都是由Horde提供。
而Horde相对来说更加复杂,提供了很多功能,后面会针对这个功能逐一细说。关于这两者的安装和使用,以下这两篇文章12基本都提到了。唯一的区别是我是Docker安装Horde服务器,也很简单,官网有参考的Compose文件。
唯一需要注意的是,Project范围的BuildConfiguration.xml似乎没生效;在用户目录下有个BuildConfiguration.xml,在那里修改UBA和HordeServer才生效。
联机编译
性能初略测试
- 测试了两遍,3700X+5950X,全新编译Larya(不包含引擎),大概2分钟。
- 全引擎编译重编(Build All),UE5.7Release全新checkout的代码代码,3700X+5950X+E3 1280,大概是2个小时30分钟。
- 全引擎编译重编(Build All),UE5.7Release全新checkout的代码代码,3700X+5950X+E3 1280+8809G,编译时间2小时。
Build completed at 22:46 and took 02:02:55.179 hours - 带有一个简单UBA Visualizer如下图:

结论
- 对于目前有限次测试来说还是很稳定的,Horde基本没出现挂掉的情况。偶尔会出现Agent连开以后又断开,原因暂时未知。
- 免费、不限CPU数量很香,比IB的免费版香太多了。
- 安装难度比IB麻烦一点,要先装一个Toolbox,然后再安装Agent,还要改BuildConfiguration,如果能都集成在Toolbox就完美。
- 观察到发起编译的机器也会被Horde分配到联合编译当Helper,相当于发放了两倍任务。虽然总体完成时间不会有太大差异,但是内存占用是实打实翻了一倍。
- 单核性能太弱鸡的建议不要放到Pool里面。最后几个任务总会拖后腿,高性能的机器总在等待,最长有10-20秒。
- 分发的启动稍微有点慢,参考图1,基本发起要在Initiator编译完1.5轮以后才全部连接上。不过其实IB也是这样,分发的策略也保守。
CI/CD
Horde还有一个很重要的功能,就是提供CI/CD。本来看视频的时候还寄予厚望能替代Jenkins,没想到还是一个要靠编辑服务器JSON写流程。对于协作来说没有可操作性,不过文档看起来还挺Promising的,后面有机会可以试试。
不过相比于完善编辑器,我觉得更加希望可以将其他步骤都进行分布式,尤其是Cooking,这个才是日常打包耗时大户。
设备测试
可以连接移动端的设备。除了跑自动化测试框架之外,似乎还能跑Job,暂时还不清楚怎样跑Job,有什么能力。
工作室遥测
这个其实是一个相当有用的概念。它可以测量编辑器在工作室内部的卡点,有什么特别耗时的地方。不过对于Horde的统计和分析能力我觉得是要打个问号。仅从文档来看,只提供了一些Charts的定义方式,远不如传统的ELK分析灵活。不过还好Horde也提供了透传日志的功能,算是额外的扩展。
我觉得更有价值的是编辑器提供打点的插件。简单搜了一下UE5.7的代码,目前提供的打点不少。工作室内部在这个基础上扩展肯定有一番作为。
总结
我觉得Horde和UBA算是开了一个很好的头,EpicGames也意识到天下苦打包久矣。对于低成本的公司、工作室,通过免费的联机编译作为“诱饵“,吸引他们入局使用,然后提出意见修改,算是比较好的切入点;相反,对于已经购买IB授权的大公司,这个诱饵对他们的吸引力不强。而其他功能也没能完善到开箱即用、非用不可的地步。
如果能投入更多的人力,把分布式Cooking搞掂,Horde才能实现自己更多的野心。
感谢您的耐心阅读!如需交流,请留个评论吧!