更新时间:2024-10-08 13:19
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外,尚没有游戏支持。
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计算就能达到很好的物理模拟效果。
针对爆炸效果等大计算量的物理模拟,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。
Havok行为引擎。它可以让游戏中的虚拟人物学会新的行为、动作、战术。在一些采用havok的游戏中,就像《光晕3》和《半条命2》,友好的虚拟人物会转身面向玩家,会和玩家产生互动。敌人则不仅会冲过来开火,他们也会寻找 掩护,在《彩虹6号:盾牌行动》之类的战术游戏中,敌人甚至拥有包抄、迂回等战术。集成在寒霜引擎中的Havok Behavior更为强大,例如会看到虚拟人物弓腰通过,攀爬,或者跳过障碍,遇到爆炸物选择躲避或是捡起来扔回去。
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%的建筑都可以被破坏掉。
Havok人工智能引擎。在2009年游戏开发者大会上,Havok展示了Havok引擎家族的新成员:Havok人工智能引擎。
Havok AI可以帮助游戏开发者更好的进行游戏中人工智能的开发,借助Havok AI SDK开发者可以更容易的设计出更出色、聪明的游戏角色。比如这套工具就包含自动路径搜索功能,可以让游戏角色迅速、动态的自主进行路径规划。在GDC2009上就展示了一段,士兵躲避着炮火自动搜索安全路径穿过道路的片段,给与会者留下了很深的印象。此外,它还包括各种通用件的组合、网络化的智能集成等。
比较著名的Havok引擎游戏包括:《阿拉玛王国:惩罚》、《战地3》、《极品飞车:亡命狂飙》《星际争霸2》、《暗黑破坏神3》、《战地:叛逆连队2》、《上古卷轴4》、《马克思·佩恩2:马克思的堕落》、《光晕3》、《半条命2》、《细胞分裂》、《生化危机5》、《F.E.A.R》 、《孤岛惊魂2》、《辐射3》、《阿凡达》、《求生之路》、《正当防卫》、《波斯王子:遗忘之沙》、《孢子》、《争分夺秒》、《红色派系:游击战》、《失落的星球2》《现代战争4:决胜时刻》等。
在全平台上,共有353种游戏使用Havok引擎。超过了PhysX的309种。Havok仍然是物理模拟引擎界的领军者。
其中PC平台的Havok游戏共163个。
下面为全平台Havok引擎游戏列表:
3ds MAX、Adobe Atmosphere、Virtools等。
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(行为),动作等在内的都有涉及。