Case Studies

Undead Labs

从僵尸到猎豹:Undead Labs 将漫长的 1 小时烘焙构建时间冲进了 10 分钟以内

关于Undead Labs

Undead Labs 是一家 AAA 游戏开发商,以其僵尸生存模拟游戏《腐烂国度》闻名业界,现正在开发这款游戏万众期待的续篇《腐烂国度 2》。该工作室与微软建立了深厚的合作关系,并与该技术巨头签订了 Xbox 和 Windows 平台的多部游戏作品发行协议。

千万别被这家工作室的名称蒙蔽。就像其热门游戏的主题一样,Undead Labs 非常活跃,正在生龙活虎地打造其荣耀的游戏未来。

难点

如果游戏的前身非常成功,开发续篇的压力通常会很大。游戏开发人员希望能超越自己,满足粉丝们的期望,并制作出配得上该 IP 的游戏作品。制作此类令人兴奋的游戏需要天赋、激情和努力,同时也需要一些能够成为开发人员最好的朋友或最坏的敌人的东西:时间。Undead 拥有 55 名开发人员,目前正努力致力于《腐烂国度 2》的开发,他们需要的是时间。Undead Labs 的总经理 Ted Woolsey 谈到:“像大多数开发人员一样,我们非常重视迭代时间。” 开发 AAA 游戏,也意味着需要投入大量时间,以获取最佳图形效果,因此 Woolsey 还提到,着色器编译和烘焙构建是主要的耗时大户。随着该工作室的 CI/构建系统每天快速产生超过一百以上不同类型的构建版本,包括几十个跨平台(Xbox One 和 PC)代码和内容构建,以及少量场景烘焙构建,另一个难点在于持续集成优化。

Undead 拥有 55 名开发人员,目前正努力致力于《腐烂国度 2》的开发,他们需要的是时间。Undead Labs 的总经理 Ted Woolsey 谈到:“像大多数开发人员一样,我们非常重视迭代时间。” 开发 AAA 游戏,也意味着需要投入大量时间,以获取最佳图形效果,因此 Woolsey 还提到,着色器编译和烘焙构建是主要的耗时大户。随着该工作室的 CI/构建系统每天快速产生超过一百以上不同类型的构建版本,包括几十个跨平台(Xbox One 和 PC)代码和内容构建,以及少量场景照明效果任务,另一个难点在于持续集成优化。

随着该工作室的 CI/构建系统每天快速产生超过一百以上不同类型的构建版本,包括几十个跨平台(Xbox One 和 PC)代码和内容构建,以及少量场景照明效果任务,另一个难点在于持续集成优化。

Incredibuild 帮我们加速计算密集型工作,我们工作室的每个人因此都有更多时间真正投入游戏制作之中,这让我们的生活品质得到可观的改善。

Ted Woolsey

总经理

INCREDIBUILD 的应对之道

通过在 3 个专用构建服务器(12 核)以及约 45 台开发人员电脑(4 核)上部署 Incredibuild Agents,Undead 使用 Incredibuild 将时间砍掉了一半以上。结果显而易见,团队中的每一个开发人员都可以将他的工作站扩展至 216 核,并利用该性能获取额外的速度。

该工作室的开发人员使用 Incredibuild 的开发工具解决方案,这使得他们能够加速一系列定制构建工具,并在战略性浪费时间的任务上节省了大量时间,例如着色器编译和照明效果中间件预计算任务。

因此,Undead 的各种构建类型在时间方面获得根本改进:

  • 对于完整代码构建或广泛引用的头文件发生变更的情况,构建时间从 ~45 分钟缩短至了 ~7 分钟。
  • 对于正常的增量构建,Undead 的开发人员平均缩短了 50% 的时间。由于每个开发人员每天都会多次进行增量构建,这完全是扭转局势的利器。
  • 对于着色器编译,构建时间从几分钟降至了几秒钟。
  • 最大的一致性差异,出现在 Undead 的照明效果中间件预计算任务上,特定场景的时间从 ~1小时降至了 ~10 分钟。

据 Woolsey 称,Incredibuild 对 Undead 的 CI 优化产生了重大影响。他告诉我们:“是的,IB 大幅缩短了构建时间,从而实现了更快的迭代。更快的迭代,能够让我们以更具针对性的增量,更快地分发和测试游戏变更。我们相信快速迭代是高效游戏开发的一个支柱。”“除了代码编译之外,我们还发现,IB 对于加快我们所使用的许多着色器变更的编译过程,以及在我们场景中预先计算照明效果数据非常有用。”

Undead Labs 的开发人员们体验到 IncrediBuild 能够在如此多的层面产生积极变化后,他们正在寻找甚至更多可以进行加速的任务:

我们确信,随着开发的深入,我们将找到更多适合 IB 的用途,我们相信 IB 将能够在非常短的时间内收回成本。

Ted Woolsey

总经理

结果概要

Lighting Pre-Compute Pass
60分钟
10分钟
完整的 C++ 源代码构建
45分钟
7分钟
Shader编译
3分钟
0.25分钟