Case Studies

Bohemia Interactive

采用网格计算的卫星图像处理

2007 年 6 月 24 日 – Ondrej Spanel,Bohemia Interactive

关于 BOHEMIA INTERACTIVE

Bohemia Interactive 是一家独立的游戏开发公司,在捷克共和国和澳大利亚均设有工作室,公司成立于 1999 年,致力于开发先进的电脑娱乐软件以及研究面向实时交互环境的先进图形技术、人工智能和物理模拟技术。公司的首秀产品“闪点行动”以其对战争场景的真实模拟而广受好评,游戏中的技术甚至还被现实军队纳入特殊战斗培训应用软件“虚拟战场空间”中,该软件被全球各军事组织广泛采用。公司曾荣获“2001 年度最佳电脑游戏开发商大奖”(Best PC Game Developer of the year 2001 Award) 以及“GDC 2002 年度新秀工作室”(Rookie Studio of the Year Award at GDC 2002)。有关该公司的更多信息,请访问 http://www.bistudio.com.

摘要

在电脑游戏“武装突袭”的世界开发过程中,卫星图像处理的周期时间极大地妨碍着我们的生产效率。Incredibuild 接口让我们能够将处理工作分配到企业的多个现有可用工作站,从而缩减这个时间。

难点

就“武装突袭”而言,我们力求打造一款兼具广袤和高细节地形的游戏。卫星图像最具灵活性和真实感,因此我们决定采用这种方法。出于质量原因,我们希望呈现的卫星图像分辨率为 1 m。除卫星图像外,我们还设计了具有相同分辨率的另一图层,用于确定给定位置的地表类型。为了打造场景恢弘(包括车辆和飞机)的游戏,我们希望地形大小为 20 km x 20 km。原始数据的总大小约为 3 GB,这些数据所需的处理时间约为 8 小时,其中大部分时间用在了纹理压缩上。如此长的处理周期让地形编辑变得非常困难,这尤其体现在我们进入项目后期的微调和漏洞修复阶段后。

备用方案

我们有时要在多台计算机之间手动拆分工作,这个过程非常不方便,因为它需要其他用户的协作,极大地增加了转换所需的必要人工步骤的数量。我们也许能够通过升级硬件的方式来获得一定改善,但由于自 2004 年起,CPU 频率就几乎没有提高,这种方式的收益相当低,因此实现显著改变的唯一途径是,采用一定程度的并行处理。

解决方案

地形处理包括“世界生成器”,这是一种自定义应用程序,用于处理主世界文件(高程数据和其他信息),并请求“纹理转换器”进程对各地形段执行纹理处理。我们已经将源图像拆分成大小合适的独立小图像,整个过程中最耗时的部分便是图像到纹理的转换。这种类型的任务非常适合 Incredibuild,因为各独立部分之间没有依赖性

我们遇到的最大阻碍是,要通过不必要的数据等待来避免生成器创建错误的依赖关系,因为一旦转换完成,生成器便会对每个纹理执行一些琐碎处理。为了确保有效的基于 Incredibuild 的分配,我们需要能够在等待转换完成前,生成若干纹理转换请求。为此,我们返回纹理占位符,而不是真实纹理,只有在世界中所有纹理的转换过程完成后,才会将该占位符解析成真实纹理。

除此之外,我们只需要在调用转换器时添加 _P_NOWAIT 标记,并引入简单的过程计数防护来避免一次性创建过多进程,从而防止 Windows 耗尽其进程相关资源。

在这个阶段,生成器即可供 Incredibuild Automatic Interception接口使用。

值得注意的是,在不使用 Incredibuild 的情况下,这种类型的架构也允许在单台机器上运行的多个进程之间分配工作。从根本上说,Incredibuild 在这里提供的是在整个网络中的无缝且透明的进程分配,因此能够将速度提升系数从利用双核机器实现的 2 倍增大到使用多个工作站实现的 10 倍及其以上。

上述具体实施可由一个程序员在大约三天的时间内完成。

益处

地形处理现在耗时约 40 分钟(而原来则为 8 小时),极大地方便和简化了整个过程的执行。此外,通过将 CPU 能力与编译专区相结合,实现了几乎线性的速度提升,因此,我们现在确信,我们能够通过在过程中添加更多工作站的方式,在合理的时间内处理甚至更大的地形数据,这预计将是我们未来所需要的。

总结

利用 Incredibuild 接口,我们只需要做适量的工作,就能显著缩减“武装突袭”中所用地形数据的处理时间。

地形处理
8小时Without Incredibuild
40分钟With Incredibuild