Havok,全称为Havok Game Dynamics
SDK,译作Havok游戏动力开发包。一般称为Havok,是一个用于物理(
动力学)效应模拟的
游戏引擎,为电子游戏所设计,注重在游戏中对于
真实世界的模拟。使用撞击监测功能的Havok引擎可以让更多真实世界的情况以最大的拟真度反映在游戏中。它包含
PhysX、
FX及其他一系列著名的
物理模拟与运算引擎,被广泛地应用于游戏、软件和电影当中。
简介
人们经常说到的,与
PhysX相提并论的Havok物理模拟引擎,只是Havok引擎中的一部分而已。
Havok成立于1998年,总部位于
爱尔兰首都
都柏林。2000年在
游戏开发者大会上发布了Havok 1.0 。2.0版本在2003年的游戏开发者大会上发布;4.5版本在2007年3月释出,最新版本为5.5 ,
引擎基于C/
C++语言而成。2007年9月,
Intel宣布收购Havok,之后不久,
Intel宣布Havok引擎
开放源代码并允许游戏开发人员免费使用。
Havok专注于游戏的
仿真技术。其包含的Havok Physics物理引擎是物理模拟计算引擎界的领军者,世界三大
物理引擎之首。(排名第二的是
nVIDIA PhysX,第三的是
Bullet)。
自2000年Havok 1.0版本发布以来,采用Havok引擎开发的游戏(全平台)已超过280种。由于Havok的
开放性以及不依赖特定硬件支持的特点,很多游戏大作都采用Havok引擎。例如:《
黑暗之魂》、《
恶魔之魂》、《
只狼:影逝二度》、《
艾尔登法环》、《
血源诅咒》、《
疯狂的麦克斯》、《
星际争霸2》、《
暗黑破坏神3》、《
激战2》、《
战地:叛逆连队2》、《
失落的星球2》、《
半条命2》(
半条命虽然使用
source做的,但是source是基于
havok引擎的)、《
细胞分裂》、《
生化危机5》、《
孤岛惊魂2》、《
辐射3》、《
求生之路》、《
正当防卫》、《
波斯王子:遗忘之沙》、《
争分夺秒》、《
星球大战:原力释放2》、《
闪点行动2:龙之崛起》、《
帝国时代3》、《
黑道圣徒4》、《
热血无赖》、《
现代战争4:决战时刻》等。这与PhysX游戏都是较为冷门的情况大不相同。
Havok是微软公司旗下产业,但是仍然与
AMD等公司保持良好的合作关系;Havok引擎是AMD”
开放物理计划“的核心成员之一(另两个成员是
Bullet和
Pixelux DMM),计划中可以利用AMD
Radeon HD4000系列以上的显卡进行物理加速计算。不过这项计划尚在开发中,除了几个演示
DEMO外,尚没有游戏支持。
组成
Physics
Havok
物理引擎。业界领先的实时碰撞计算和
物理仿真解决方案,提供快速高效率的物理模拟计算。被200多个游戏所采用,且Havok Physics引擎可以运行在
Windows、
Linux、
MAC、
Xbox 360、
PlayStation 3等全平台上。Havok Physics是整个Havok引擎的基础。
Havok Physics物理引擎是业界功能最全面的物理仿真解决方案,它可以应用在诸如实时碰撞计算、
动力学约束求解、车辆综合解决方案等领域。
Havok Physics基于CPU计算,尤其是在Intel收购Havok之后,Havok特别针对
多核多线程CPU进行优化。多线程CPU的普及以及Havok Physics引擎本身的高效率特点,使得Havok仅仅依靠CPU计算就能达到很好的
物理模拟效果。
FX
针对爆炸效果等
大计算量的物理模拟,Havok曾经推出过Havok FX引擎。Havok FX引擎也是一种物理模拟计算解决方案,由
CPU+
GPU联合计算完成。GPU负责爆炸等大计算量的物理模拟。Nvidia与
ATI都曾经与Havok就Havok FX进行过深入的合作。但是Intel收购Havok后,由于Intel本身不能生产独立的GPU,Havok FX发展就陷入停滞,虽然Intel官方没有宣布Havok FX引擎下马,但实际上Havok FX已经被Intel雪藏。
这也就意味着,
ATI显卡虽然理论上支持Havok FX物理加速,但是由于Havok引擎中GPU计算部分已经停滞发展,所以ATI显卡的Havok物理加速只是有枪无弹,缺少游戏支持。这也是后来
AMD启动“
开放物理计划”的原因之一。
动作引擎
Havok动作引擎。是一种高效灵活的动作
开发工具。在全平台上提供经过优化的回放和实时融合特性,并能与Havok Physics引擎合作,提高游戏的可玩性。
Havok动作引擎的特点包括:高效动画压缩和解压;运动混合;根据速度、方向和重量提供动作控制; 动作
缓和曲线支持等。
如果没有Havok Animation,游戏中车轮不会转动,两腿不会迈开,士兵也不会换弹匣或者蹲、站、跳、卧倒、侧倾。最新版的动作引擎带来流畅的动作,在使用
寒霜引擎的ruby demo中,仅ruby脸部就有上百个可动部件,这是前所未有的。值得一提的是很多好莱坞电影大片也是使用Havok Animation。
Behavior
Havok行为引擎。它可以让游戏中的
虚拟人物学会新的行为、动作、战术。在一些采用havok的游戏中,就像《
光晕3》和《
半条命2》,友好的虚拟人物会转身面向玩家,会和玩家产生互动。敌人则不仅会冲过来开火,他们也会寻找 掩护,在《
彩虹6号:盾牌行动》之类的战术游戏中,敌人甚至拥有包抄、迂回等战术。集成在
寒霜引擎中的Havok Behavior更为强大,例如会看到虚拟人物弓腰通过,攀爬,或者跳过障碍,遇到
爆炸物选择躲避或是捡起来扔回去。
Cloth
Havok布料模拟引擎。Havok Cloth不是说这个引擎只能模拟布匹的物理特性,而是能模拟一切柔性物体。如衣服,裙子,斗篷,外套、头发、尾巴、旗帜、横幅、窗帘、植物等等。
Havok Cloth的基本特性包括基于物理的布料模拟、多线程与平台优化、拉伸/阻尼/弯曲等布料行为属性、基于人物模型的布料创建工具等等。
加入AMD
开放物理计划的Havok引擎,就是这个Havok Cloth引擎。AMD曾经展示过一个由
HD4870X2组建的,基于
ATI Stream和
OpenCL,运用Havok Cloth引擎的演示视频。
刚体破坏
Havok刚体破坏引擎。这是一种高效的
跨平台的刚体破坏仿真引擎。Havok刚体破坏引擎采用Collision Detection碰撞
检测系统,这将有别于以往传统游戏中的hitbox系统。适合造成动态破坏。
带来前所未有的高范围破坏,可完全毁坏游戏内的所有物体(载具、建筑、桥梁、树木.....)和部分地形,可以削去飞行中飞机的翅膀或者其他地方,也可以炸坏房屋一角,这一切都不是
程序编辑好的,不是调用破坏后的模型和贴图,可以决定破坏什么部位。
《
战地:叛逆连队2》使用
寒霜引擎渲染,寒霜引擎中集成了内部版本的Havok Destruction 2.0版本。这使得游戏中高达99%的建筑都可以被破坏掉。
AI
Havok
人工智能引擎。在2009年
游戏开发者大会上,Havok展示了Havok引擎家族的新成员:Havok人工智能引擎。
Havok AI可以帮助
游戏开发者更好的进行游戏中人工智能的开发,借助Havok AI SDK开发者可以更容易的设计出更出色、聪明的游戏角色。比如这套工具就包含自动路径
搜索功能,可以让游戏角色迅速、动态的自主进行
路径规划。在
GDC2009上就展示了一段,士兵躲避着炮火自动搜索安全路径穿过道路的片段,给与会者留下了很深的印象。此外,它还包括各种
通用件的组合、
网络化的智能集成等。
引擎
游戏
在全平台上,共有353种游戏使用Havok引擎。超过了PhysX的309种。Havok仍然是物理模拟引擎界的领军者。
其中PC平台的Havok游戏共163个。
软件
影视作品
对比
Nvidia显卡用户应该会有印象,只要打开PhysX模式,游戏就会卡,特别是最早的《
幽灵行动3:尖峰战士2》的物理岛关卡,不管是不是在做什么大事,就算呆着不动也卡,这是因为
physx是以
API实现的,是一个外部插件,不能和
游戏引擎结合起来,需要不断的检测有没有触发每一个条件,这需要大量的
浮点运算,所以
浮点运算能力强的显卡运算起来只是费劲,
CPU模式打开它就只有个位数的帧了.而且physx只能执行
nv官方提供的几 套算法,自由度不高.
而havok是一套功能丰富的游戏开发组件,开发者可以根据需要把其中几项功能封装到自己引擎的底层,由于是CPU运算X86
指令集,还能执行很多开发者自己发明的代码,
工作模式是引擎内部的触发式,所以有些情况下会看到《
战地:叛逆连队2》里面炮弹击中墙了几毫秒,墙才碎有延迟.如果不断的同时击碎什么东西,就不会有延迟了,因为游戏会自动切换到一个触发频率高的模式.有些havok游戏默认就工作在这个模式。
大多数游戏用的都是havok的同一套
刚体力学模拟破坏系统,布料/头发的柔体力学模拟&
气动方面的
流体力学模拟插件都没发挥出来。
在破坏的精度上,havok和
physx是一样的,都可以精确到未来10年也发挥不出来的级别,不过两者在实际应用中发挥出的功力都不行.实现方法都是将一个物体划分为若干个碰撞模块,每个模块可以分别被从这个物体的整体上击碎下来,然后这个碎块还继续带有
碰撞检测属性. 一般游戏里会设置他们几十秒后自动消失,而《
战地:叛逆连队2》里几乎立刻没了。
理论能达到的程度就是对着一个模型人开一枪,可以射出一个有空腔的洞,而不是将模型人击碎成几块,或者在屏幕上消失.这需要模型人由几十万个碰撞检测模块组成。
最重要的就算
physx这种靠api实现的算法,在不同api的硬件上无法实现,不适合制作
多人游戏,总不能N卡可以看到一堵墙碎成粉末,但是A卡用户只是看到墙体凭空消失。
同样是havok,版本也千差万别,而physx不同版本区别不大,而且havok不光是
物理模拟,是一整套游戏开发组件,包括
AI(行为),动作等在内的都有涉及。