Frag Lab是一家乌克兰独立视频游戏开发商,由一群热衷于开发最佳的AAA级在线F2P FPS游戏的开发者组成。 作为 FPS的发烧友,以及拥有之前开发多款值得关注的FPS的经验,‘Frag Lab出品’正在成为射击游戏爱好者所追逐的标签。
该团队使用Visual Studio在Windows平台上开发C ++游戏客户端,另一方面,游戏的服务器基于Windows和Linux的混合环境。使用Windows版本的服务器是因为方便使用Visual Studio IDE,而Linux版本的服务器是使用Clang构建的,其目的在于生产部署。
Frag Lab工作室的技术总监Sergey Rustamov表示,他们最大的挑战是开发人员在本地进行编译的时候。由于源代码的组织方式和C ++语言本身的原因,特别是在常见的C ++头文件中发生的许多变化会触发不同地方的大规模重建。没有分布式编译系统,此操作非常耗时。而且导致了整个CPU的使用率在编译过程中非常高,因此几乎不可能切换到另一个任务,所以非常浪费开发人员的时间。
编译缓慢并不是Frag Lab唯一的性能挑战。该工作室用Jenkins开发的持续集成系统,也需要尽可能快地执行。
Sergey表示在开发流程中,最重要的是持续集成系统的速度,它使他们能够在提交到Perforce时尽早发现错误,并在开发人员对源代码进行更改后几乎立即让QA团队获得自动编译,同时再次寻找错误。
而Incredibuild完全符合他们的发展理念——加快编译速度,立即获得成果,尽早发现错误,从错误中吸取教训,重复发展,直至获得成功。
通过IncrediBuild,每个Frag Lab的开发人员都可以将与游戏开发相关的各种任务分配给网络中的其他机器,并享受所有机器内核总和的计算能力带来的速度。
IncrediBuild在开发过程中可以用于以下内容:
l 帮助开发人员快速编译本地更改
l 加快Frag Lab的持续集成系统,减少编译和自动编译工具的等待时间
所有IncrediBuild的编译步骤均由称为WAF的编译系统进行管理。它使用Make and Build解决方案与IncrediBuildirectly集成,允许开发人员加速WAF,Ninja,MS Build等工具,以及更多即插即用的工具。
Linux版本的游戏服务器不是分布式的,而是在所有可用的CPU内核上垂直扩展,以加快编译过程。加速CI周期时,Incredibuild的分布式处理技术加速了以下内容:
l 通过提交操作触发的开发流自动编译
l Canary版本主线自动编译系统及早发现破损主体
l 主线以及分支的编译速度
Sergey总结了他对IncrediBuild的看法,从开发人员的角度来看,使用和不使用IncrediBuild的编译时间之间的差异是巨大的。我们从开发团队收集编译数据,以查看大多数典型编译操作的平均时间,平均需要200秒来编译本地更改,而没有IncrediBuild时,它会花15分钟到几个小时不等,具体取决于更改的规模大小。 IncrediBuild是为我们提供快速CI管道的关键组件,尤其是对于自动编译流程。“
|