本帖最后由 suboysugar 于 2010-2-9 18:45 编辑
【导读】:战地系列游戏在PC平台一直都是人气最高的FPS游戏,因此《战地:叛逆连队2》(官方名《战地风云:恶名昭彰2》 Battlefield: Bad Company 2)关注度也颇高,在1月28日之前预订《战地:叛逆连队2》的用户将会得到Beta帐号,可以参与测试阶段的游戏。我为了在第一时间为广大硅谷网友带来此篇技术分析及性能测试,伟大的、无私的自掏腰包order了此游戏的特别版。本文将着重从以下几个方面,让读者对《战地:叛逆连队2》的游戏引擎技术,性能需求有一个清晰而全面的认识,主要着重弄清楚以下问题。
《战地:叛逆连队2》使用的“冰霜”引擎有何特点?
《战地:叛逆连队2》DX9 DX10和DX11游戏画面画质有什么区别?分别效率如何?
《战地:叛逆连队2》主流显卡在其中的性能表现如何?
《战地:叛逆连队2》双核心和四核心的性能差距有多大?到底需要多大内存?
《战地:叛逆连队2》主流配置应该如果优化设置以达到画面和效能的平衡?
想要玩爽《战地:叛逆连队2》的应该如何升级?
《战地:叛逆连队2》实际游戏画面到底怎么样?
DICE最早被人知晓是其在Xbox和PC平台的赛车游戏《拉力锦标赛》(RalliSport Challenge),这个游戏即使从现在眼光看来画面也相当不错,可以说是Xbox和PC DX8时代的代表作,其也基本是最早大幅运用Shader的游戏之一,当时DICE在图像技术方面就表现出相当高的造诣和水平。 战地系列虽然最早可以追溯到使用Refractor引擎的《代号飞鹰》(Codename:Eagle),但正统的《战地1942》是始于2002年9月,较比《拉力锦标赛》稍晚,引擎方面《战地1942》则是采用的是改良的Refractor 2引擎,得益于引擎的强大,战地系列在初作就基本奠定了战地系列开阔地形、多兵种配合、丰富载具的基本风格,游戏凭借良好的多人模式的游戏性而大获成功,并且这个风格一直被延续下来。之后DICE又推出了越战题材的《战地:越南》不过反响一般。

而之后真正成就DICE的则是《战地2》(Battlefield 2),其凭借现实武器设定的号召力、优秀的画面和多人游戏性而大获成功,使得其成为PC游戏史中最为有人气和生命力的FPS游戏。引擎方面《战地2》还是继续沿用之前的Refractor 2引擎,但在技术方面做了大幅改进,使得其在DX9时代,画面也大放异彩,并且其引擎执行效能很高,在当时主流级别的6600GT就能很好应付,因此也同时获得了大量主流玩家的支持。
之后2142和网游《战地online》、《战地英雄》也是继续沿用的Refractor 2引擎 在《战地2》大获成功后,游戏大鳄电子艺界不仅满足于单纯的发行商身份,从而整体收购了DICE,气候又推出科幻题材的《战地2142》(国内由中视网元发行),不过限于题材的缘故,市场反应一般。EA此时也对其产品策略进行了调整,使得研发更为倾向次世代的Xbox 360和PlayStation 3平台,推出了家用机独占的《战地:叛逆连队》,DICE在研发过程中给BFBC使用了全新架构的Frostbite(冰霜引擎)。
开阔可破坏地形

战地系列一大特点是是开阔的世外场景和载具,因此引擎对于大型地图的支持对于游戏而言也十分重要。而Frostbite引擎支持最大32x32km的可见区域大小的地图(可以到达区域为4x4km),同时可以破坏,并拥有高质量可以动态调节质量的地形纹理,且存储空间占用小。得益于前面提到的实时过程着色和表面着色技术,可以方便的对多重材质进行混合,添加额外的shader,使得地形生成十分灵活且有弹性。


同时地面还允许生成更多如植被、石头和废弃物之类细节,使得场景更为真正生动。地面细节数量会依据视野距离进行动态调整,以流的形式处理,在PC DX10平台全部仅需GPU处理以减小延迟,而对于家用机则是交给PPU和SPU。
R600(Radeon 2900XT)的Ruby Demo同样是基于Frostbite引擎,跟本次我们测试的场景较为类似,有大量的雪景,其中雪和周边环境的融合进是图像处理的一大难题,Frostbite使用法线贴图和凸凹贴图的方式判断积雪高度和覆盖,并加入噪点的技术使得积雪边缘过度更为自然。

下图加入噪点的技术使得积雪和岩石边缘过度更为自然
光照系统和动态天空
之前的Refractor 2引擎的战地游戏都还是大量采用的固定场景预渲染阴影,而对于有破坏场景的Bad Company而言这样的传统方式明显行不通,而Frostbite引擎的光照系统也得以全新构建,采用类似UE3、S.T.A.L.K.E.R和KillZone 2里使用的延迟渲染的技术,延迟渲染方式首先把全景多边形物体的信息比如位置、法线面、各种贴图渲染到G-Buffer(缓冲区)内,延迟打光步骤。这样的好处可以避免在渲染过程中出现无效渲染,能够大幅提高像素渲染的工作效率。

当然Frostbite引擎引擎使用的延迟渲染更进一步,采用Single-pass Stable Cascaded Bounding Box Shadow Maps(单通道稳定渐进式盒阴影贴图),这样的方式由于采用Geometry Shaders来完成一些操作,使得平台的CPU负载更低,效能也更高,并且阴影绘制距离更远,也更为有弹性,不同距离物体会有不同细节的阴影。
此外《叛逆连队2》PC版本还加入了对SSAO(Screen-Space Ambient Occlusion屏幕空间环境光遮蔽)的支持(作为AMD主导支持的游戏并没有采用AMD主导的HDAO而采用NVIDIA的HBAO让人觉得有点奇怪)。SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影,如《叛逆连队2》就使用SSAO生成如墙角、窗台这样一些折面的细微阴影,使得画面整体看来更为真实。《叛逆连队2》使用的是由NVIDIA主导的HBAO(Horizon-Based Ambient Occlusion 水平基准环境光遮蔽)技术,其实现的效果和对性能的影响我们会在后文详细叙述。


现在的《战地:叛逆连队2》还是使用Frostbite一代引起,而2代引擎将使用Direct Compute 11进行延迟渲染的计算,在今年早些举行Siggraph 09大会上,DICE 1000个动态光源的演示及是采用了这样的技术。但目前的《叛逆连队2》是否采用Direct Compute进行延迟渲染计算我们还是不能确定。
可破坏场景和其他特性
《战地:叛逆连队》使用是Havok的物理引擎,但DICE在此基础上又做了很多后续工作,使得游戏在可破坏场景方面有更佳的表现,如建筑不同于其他游戏,都有区域损坏,玩家可以轻易在墙壁上使用榴弹炮或者RPG打出一个洞来,甚至可以把房子打得只剩框架(虽然技术上完全推倒不难,但出于游戏平衡度的考虑,还是保留了框架)。
而《战地:叛逆连队2》物理引擎和损坏系统在前作基础上继续改良,采用Destruction 2.0破坏系统来表现更为庞大的可破坏场景、尸体的布娃娃效果和粒子效果,让整个战场给人感觉真实可信。Destruction引擎采用Collision Detection碰撞检测系统,这将有别于以往传统游戏中的hitbox系统。适合造成动态破坏。如一个狙击手躲藏在建筑物里,你可以将整个建筑物连同狙击手一起轰上天,而不用跟其玩捉迷藏,同时玩家驾驶的60吨重M1A2坦克也绝不会像其他FPS游戏一样会被一棵树或者一面墙挡住,《叛逆连队2》甚至还有核爆之类大范围的物理损坏效果。
当然由于采用的是基于CPU计算的Havok物理引擎,因此使得《叛逆连队2》对于处理器要求较高,我们稍后会具体测试。
PC版同家用机的阉割版相比,除了拥有更高分辨率的分辨率、材质贴图和阴影贴图,此外还由于《战地:叛逆连队2》DX11的加入,使得游戏可以对多线程进行了特别优化,现在可以并行调用所有的可用的处理单元来进行渲染,性能的提升可以使得我们可以更为自由创建相比之前更为细节丰富的场景。
同时细分曲面(Tessellation)技术也将运用到冰霜引擎中,一方面使得如车轮之类的物体更为圆滑,另一方面细分曲面配合置换贴图也运用在如鹅卵石这样的重复凸凹材质的表现上。(Tessellation的效果请见我们后文的截图对比)

OIT十分合适处理玻璃窗这样的半透明物体
OIT(order-independent transparency 顺序无关透明化)虽然并非是DX11的关键特性,但其却帮我们解决了一个图形学的上的老问题,DX11之前画面如果有透明物体,正确判断不同物体的前后关系并正确渲染并不是简单的事情,而DX11的OIT则解决了这个问题,不同的层会使用Compute shader计算正确的排序并混合起来,而这个特性在《叛逆连队2》的DX11版本中也有运用,如在通过建筑和载具的窗户观察窗外的景物,窗外景物同玻璃材质的混合、畸变就用到这样的OIT技术,不过开发商DICE考虑到多人游戏公平性的问题,在多人游戏中DX10和DX11两者的效果会使一致的。
在家用机版本得益于Cell和PowerPC处理器,Frostbite引擎的地形几何处理、地面细节生成、印记处理、粒子模拟、遮挡剔除、遮挡光栅化、命令缓存生成都是分归于不同的线程,可以并序执行,而PC版受限于DX10而不乏做到,但DX11加入的MT Rendering线程管理技术将目前单一执行的Direct 3D设备被分为三个独立的接口:。DX11设备(Device)、立即执行范畴(immediate Context)和延迟执行范畴(Deferred Context),这三者都被分发到各自独立的线程,而且设备和Deferred context还可以分配多个线程,负责将等待执行的任务发送给immediate Context或渲染线程。这样的设计可以将图形生成所需的资源做预先的存取。同时,CPU还可以利用显卡的多线程处理加快DirectX的处理,减少CPU的响应时间而使游戏不再受到CPU的瓶颈限制。
而《叛逆连队2》也充分利用了这样的技术,使得最多可以支持到最多8个物理核心的处理器,并且支持超线程技术,最多支持16个虚拟处理器。多线程技术使得我们可以并行的载入shader和其他资源使得进入游戏的速度更快,并可以在游戏中减小CPU的负担和处理延迟以提升游戏效能。但效能究竟如何,具体测试我们将会后文叙述。
目前的Beta版本具体设置如下:

设置部分总体较为简单,用户可以对分辨率、纹理质量、细节质量、效果质量、垂直同步刷新、HBAO进行设置。
需要注意到是游戏没有直接提供对DX版本的选择设置,而是自动选择硬件可以支持的最高版本,我们需要手工修改我的文档下的BFBC2Beta的settings.ini文件。默认DXVersion=Auto,用户可以修改为9或者10,后文我们将做具体的性能测试对比。
另外需要提及的是由于《战地:叛逆连队2》使用的是类似《战争机器》的延迟渲染技术,因此引擎本身并不提供抗锯齿支持,而需要DX10或者11来实现,因此在DX9模式游戏无法开启AA。 |