Case Studies

Scaleform Corporation

加速编译和打包进程

2008 年 5 月 16 日 – Scaleform Corporation

关于 SCALEFORM

Scaleform Corporation 是电子游戏、嵌入式设备、移动设备和台式设备市场上工具和中间件的领先提供商。Scaleform 授权了一套跨平台的硬件加速型矢量图形引擎和 Flash UI 工具包,让用户能够跨多种平台和格式,设计、开发和部署多种多样的交互式娱乐内容。有关更多信息,请访问:www.scaleform.com.

摘要

本文介绍了如何用 Incredibuild 来极速完成 Scaleform 分配管道的编译和打包阶段。Scaleform 的招牌产品 Scaleform GFx 是一款简洁的高性能富媒体用户界面和矢量图形引擎。利用 Scaleform GFx 和 Adobe Flash Studio,我们的客户能够从以编程为中心的静态 UI 开发环境转换为以艺术设计为导向的动态 Flash UI 和动画纹理制作管道。由于我们支持所有主流游戏平台系统以及 Windows、Mac OS 和 Linux,因此 Scaleform GFx 的编译涉及了 80 种不同的配置。一旦编译完成,这些配置便必须压缩成 zip 文件或安装程序可执行文件。

难点

我们的分配管道包含四个基本阶段:编译、打包、测试和投递。我们编译 86 种不同的配置,其中包括我们的核心 GFx SDK、演示和样例。这些配置被打包成 10 个不同的安装程序。

仅在一台 3.4 GHz 机器上运行时,我们的编译过程要耗费大约 2 小时 40 分钟,而安装程序的创建(打包阶段)则需要 1 小时多一点。测试阶段能够发现导致需要重复执行编译和打包阶段并随后执行另一轮测试的问题或漏洞。在未采用 Incredibuild  的情况下,这个重新编译过程会导致每轮测试之间需要空置近 4 小时。这种漫长的延迟着实妨碍着我们向客户按时交付优质软件的能力。

备用方案

我们为解决这个问题所采取的主要方案曾是升级硬件。然而,这种解决方案收效甚微,因为即使是最新的多核PC,其速度收益也比不上通过将另一个节点添加到 Incredibuild 网络所实现的速度收益。这是因为前者存在磁盘争用问题并涉及不仅仅依赖于处理器的其他高负荷系统任务。

解决方案

而利用 Incredibuild ,我们能够跨我们的网络将编译工作分配给许多多核机器。使用 Incredibuild 时,还能够联接主机上的多个核心,而不仅仅是将一个核心用于 Visual Studio 2005,这就让我们能够在一台 n 核机器上以提升了 n 倍的速度编译SDK(比如,在双核机器上速度提升两倍,在四核机器上速度提升四倍)。

利用 Incredibuild,我们能够快速且轻松地在多台机器之间分配 GFx 安装包的创建工作。我们最大的安装程序仅需 8 分钟即完成创建,但在单 CPU 机器上对所有这些安装程序的线性编译则需要超过一小时。在利用对安装包排队后,整个打包过程被缩减至 8 分钟或者编译最大包所需的时间。

集成 Incredibuild 以编译 GFx SDK 是一个简单的过程,其中包括将 Incredibuild Agent安装在整个网络中,然后针对要分配的每个解决方案向编译脚本中添加一行代码。脚本还会返回每次编译的结果,让我们能够更好地对所有编译运行错误校验。

Scaleform GFx 安装程序的编译方式是:将命令行动态插入到批处理文件中,然后用 Incredibuild 对命令执行排队。批处理文件然后被发送至 xgConsole,它能够快速高效地跨我们的网络复制大量数据,并将这些数据压缩成小于 50MB 的安装程序。

益处

受 Incredibuild 影响的两个阶段是编译和打包阶段。我们的编译工作通常需要 2 小时 21 分钟;而在使用 Incredibuild 后,这个时间缩减至 40 分钟。编译时间的净节省为 1 小时 41 分钟,即节省率为 71%。

在不分配安装程序创建工作的情况下,我们的打包耗时 1 小时 3 分钟。在使用 Incredibuild 的情况下,打包时间缩减至 8 分钟,净节省 55 分钟,即节省率为 88%。

由此,编译和打包的总时间消耗从 3 小时 24 分钟缩减至 48 分钟,节省率在 75% 以上。

总结

Incredibuild 解决方案为我们带来的分配管道速度改善远超任何其他解决方案。75% 的改善意味着,更快的测试,以及最终实现更快的分配,这样,我们就能够不必受困于管道的缓慢进程,从而达到发布日期要求。随着 Scaleform GFx 被推广到更多平台,以及与越来越多的主流电子游戏引擎集成到一起,简化且高效的编译过程就至关重要。Incredibuild 在这方面起着举足轻重的作用。

构建和包装的总时间
3小时Without Incredibuild
48分钟With Incredibuild