《爱丽丝:疯狂回归》这款加入了PhysX物理加速技术的游戏凭借较强的可玩性,受到大量游戏玩家的好评。特别是其逼真的PhysX物理加速更为这款游戏增色不少,不过笔者在试玩时发现游戏中的“物理效果”并非由大家熟知的PhysX技术带来的,而一些网上的评测对物理效果的描述也存在较大偏颇。本文将从游戏中采用的物理处理开始,将真正的PhysX物理处理和特殊算法带来的物理模拟区别对待,并给出笔者的测试心得。
《爱丽丝:疯狂回归》是一款融入了魔幻风格的角色扮演类游戏,加入了由PhysX技术带来的物理效果,特别是大量的破碎效果、粒子效果以及流体、场景风等效果的使用,给这款游戏带来了相当优秀的实际体验。不过也有一些“物理效果”并不是由PhysX技术带来的,它们可以大限度地模拟物理效果,可以将其称为物理模拟。但物理效果和物理模拟大的不同在于,前者可以产生实时的互动效果,由实时计算而来;而后者虽然是随机产生的,但无法产生实时互动。例如主角人物的模型就采用的是这种算法,利用小压力的计算来获得和使用PhysX效果近似的结果。而在场景中的流体、烟雾等方面则必须使用PhysX来进行处理。虽然在人物模型上没有使用PhysX,但就终效果来看,也相当不俗。
传统的游戏很难处理飘扬的头发或者衣物,因此将大部分主角的衣服做成贴身的,头发也简单做成短发或者尽量精简,甚至干脆不能飘动。这样一来固然可以降低系统计算负荷,但实际上却失去了很大的图形仿真性。特别是游戏主角,由于长期处在玩家视觉焦点的位置,因此如果能够将毛发和布料做得出色,必定会给游戏带来耳目一新的真实体验。
有约束的弹簧质点算法是爱丽丝拥有一头秀丽长发的关键因素。
该游戏初打算使用传统的手工关键帧动画的方法来表现人物造型,这种传统方法比较死板,实际表现力也不够,终结果会和其他诸多采用这项技术的游戏一样,毛发呆板而不自然。在传统技术不能满足游戏视觉后,《爱丽丝:疯狂回归》采用了一种新的算法来处理这些材质,这就是有约束的弹簧质点算法。这也是该算法首次被应用在毛发和布料的模拟上。
这种算法的核心在于,建立一些有质量的质点,然后在这些质点之间加入无质量但有力学性质的弹簧,组成一个弹簧质点系统。质点本身有质量,同时弹簧会根据受力情况在一定范围内产生形变。当质点较少的时候,体现出来的性质更接近于弹簧弹性本身,但随着质点数量增加,整条质点弹性系统的性质就会由于受到质点和弹簧的双重约束,而更接近于柔性而有质量的线条,这样的系统可以用于表示绳子、长的毛发甚至布料。
爱丽丝的裙子在飞舞中也会根据情况飘荡,相当美丽。
不过从实际使用角度来说,由于存在受力情况的限制(比如头发不可能在飘动中形成彻底弯折的状态),和运动空间的限制(比如头发不能打通头颅在大脑内运动),因此需要对弹簧质点系统进行相当程度的约束,甚至确定弹性质点的运动轨迹和大小范围。在经历了大量的数学计算和分析后,该游戏的开发人员终于确定了目前我们看到的游戏中头发运行的情况。除了头发以外,该游戏在布料模拟上,也使用了类似的弹簧质点系统,不过约束更多,使其更像布料。当然,还需要考虑由于任务运动带来的形变和碰撞问题,避免一些尴尬的情况如腿穿出布料外等视觉“BUG”的出现。
总体来看,《爱丽丝:疯狂回归》中使用的弹簧质点系统,较为完美地解决了在不使用PhysX物理加速下的毛发和布料模拟问题。这样的算法对系统性能的要求比较低,适合于平台移植,在性能较低的Xbox 360上也能很轻松地完成计算,而且其效果也不错。在有限的游戏环境中展示出了相当出色的视觉效果。不过这样的算法也并非十全十美,由于并非拥有整个物理碰撞属性,只是依靠约束来小范围形成柔性效果,因此这类算法可能很难在有大量物理交互的场景中使用。毕竟依靠弹簧和有限的质点,很难模仿大量粒子共同运动的特征。在一些需要模仿大量粒子等复杂环境中,还是需要PhysX这类专属的物理引擎出场。
对于一款以采用PhysX物理效果著称的游戏来说,其物理效果令人关注。接下来,笔者将通过实际的测试,来体验这种效果。
没有空气的场景是毫无生气的。场景风的作用就是带来整个场景的空气感和生气感。在游戏中,开发人员为游戏制定场景、设定特定力场,然后加入特定的粒子,比如树叶、纸片等,在场景风的吹拂下随风飘动。这使得整个场景充满了生气感。
场景中飘落的叶片等,就使用了场景粒子效果。
除了场景风外,游戏还为特定场景添加了大量的粒子特效。比如爱丽丝在空中跳跃时脚下的粒子效果、空中随机出现飘动的碎片等。在一些出现燃烧或者类似火山的场景中,PhysX还添加了大量的粒子在空中模拟烟火灰尘的效果,比如随机飘落的燃烧的纸片、空中出现的飘荡火星等,都是场景粒子效果的功劳。在关闭了PhysX后,场景粒子效果大部分会消失,只有少部分依旧存在。虽然场景粒子效果不直接影响游戏,但对烘托游戏氛围,提高游戏临场感和玩家视觉娱乐感还是相当有帮助的。
该游戏中的山体破碎、战斗中的打斗破碎等,均利用PhysX破碎效果呈现。所有的破碎都是随机的,碎片粒子会互相影响并形成独一无二的破碎景观,甚至这些碎片还会自然地叠加在一起,并形成上下有序的结构。另外,在破碎处理中一个相当鲜明的特点就是打斗中的随机破碎效果。在爱丽丝和各种各样的怪物战斗过程中,会出现各种破碎,比如盾牌破碎、墙面破碎、怪物本身破碎等。这些破碎效果都根据玩家对物体的受力情况进行实时计算,并进行随机的碎片爆裂,终呈现了完全不同于以往游戏的、个性独特的专属破碎特效。
独一无二的破碎效果始终贯穿游戏,无论大到山崖还是小到妖怪,破碎效果加入让游戏更为生动。
流体效果是该游戏中应用相当多的物理特效之一。传统的流体模拟均相当困难,因为流体实际上是大量粒子聚集在一起所形成的类似“集群”的效果,众多粒子的行为需要大规模并行计算来解决,单纯依靠CPU很难处理。因此很多游戏中对流体的处理除了简单的贴图和动画外,并没有很好的手段。
游戏中不少场景都有使用光滑粒子流体动力学制作的流体效果。
在这款游戏中,流体使用了PhysX中的光滑粒子流体动力学(Smoothed Particle Hydrodynamics)来进行加速计算,实现了真正的可互动流体效果。在物理技术的影响下,这些流体不再是简单的喷溅和流淌,而是和周围的环境产生互动效果。在实际游戏中复杂的地方,流体甚至拥有超过10000个粒子同时计算。这样高强度的计算,让玩家看到从高处跌落的融化沥青在地面会有不同的溅落痕迹,人物走在流体上,会出现流体和人物的互动场景,流体的粘稠度会随之变化并粘附或者散开,完全不像传统游戏那样人物和流体相互穿透或者简单的应用半透明效果。
虽然爱丽丝的衣服并没有使用PhysX进行布料模拟,但不意味着游戏中不存在使用PhysX布料模拟的场景。在游戏开篇的第一章中,爱丽丝在疯人院中穿行时,可以看到一些晾在绳子上的衣服,这些衣物使用了PhysX的布料模拟效果。每当游戏玩家操纵爱丽丝穿过这些衣物时,布料会根据游戏玩家的运动情况进行改变。
虽然整个主人公的衣物没有使用PhysX,但在场景的其他可互动的布料上,还是应用了PhysX来处理布料。
加入PhysX后,虽然该游戏拥有更真实的场景,但对游戏帧数的影响也不容忽视。不过这款游戏的自由度相当高,选择什么样的武器和装备、在什么地方开打、怎么打,都需要玩家根据情况来自行判断。根据前文描述,《爱丽丝:疯狂回归》中大部分物理特效都不太耗费系统资源,只有烟雾模拟和流体模拟对系统要求较高。烟雾模拟主要出现在胡椒枪频繁使用的时候,游戏帧数会有较为明显的下跌;流体模拟主要出现在较多黑色沥青的场景,如果此时使用胡椒枪,再加上场景的粒子效果,也会给游戏帧数带来较大影响。为了确定PhysX对游戏的影响究竟有多大,笔者选择了一个物理计算相当复杂的极端场景,并全程开启使用胡椒枪(将产生大量烟雾),测量关闭和打开PhysX情况下,GeForce GTX 560 1GB的性能表现差异。另外,这款游戏已经锁帧至30fps,笔者将使用一些技术手段将锁帧解开并进行测试。测试使用的CPU为Core i7 860,内存为DDR3 1333 2GB×2,硬盘为1TB HDD硬盘,驱动程序为280.26WHQL。
GTX 460在该游戏中的性能列表
PhysX on | PhysX off | |
小帧 | 70 | 22 |
平均帧率 | 87 | 39 |
根据测试,在极端情况下,物理效果对游戏性能的影响还是相当明显的,帧数跌幅超过了50%。但需要说明的是,我们的测试场景相当极端,而这样的场景在游戏中并非时刻存在,绝大部分场景中PhysX对帧数的影响都比较小,再加上这类游戏并非激烈对战的FPS游戏,因此对帧数要求不算特别高。鉴于这种情况,我们建议使用GTX 460及以上显卡的用户将PhysX等级设置为高,可以享受完美的游戏效果。而低于这个显卡等级的话,建议使用中等或者低物理效果。A卡则不会出现PhysX选项,因此无需调节。总的来说,《爱丽丝:疯狂回归》中的物理效果应用是相当成功的。在打开PhysX后,整个游戏的氛围和游戏感受得到了大幅度加强。在战斗环境中,爆破感在大量破碎效果支撑下显得颇为令人难忘。在绝大部分场景中,PhysX物理加速对游戏性能的影响都不大,因此完全可以在全程开启物理加速的情况下感受爱丽丝为我们带来的魔幻瑰丽世界。