2024年6月4日发(作者:殳绮烟)
第7章 游戏开发的核心——
Box2D物理引擎
汽车引擎是汽车的心脏,其决定了汽车的性能和稳定性,是人们在购车时最关注的。而游戏
中物理引擎就如汽车的引擎一样,占据了非常重要的位置。一款好的物理引擎可以非常真实地模
拟现实世界,使得游戏更加逼真,提供更好的娱乐体验。
7.1 物理引擎很重要
经过前面章节的学习,读者可能对物理引擎已经有所了解,但那是远远不够的。本节将为读
者简单介绍物理引擎的一些基本概念。
7.1.1 什么是物理引擎
物理引擎通过给物体赋予真实的物理属性来模拟物体的运动,包括碰撞、移动、旋转等。并
不是所有的游戏都必须使用独立的物理引擎,一些简单游戏的物理功能可以通过自行开发碰撞检
测及实现力学公式来实现对刚体及质点的模拟,就像前面的某些案例。
当游戏需要实现比较复杂的刚体碰撞、滚动或者弹跳时,通过全部自行编程的方式实现就非
常困难,成本也很高。遇到这种情况时就可以使用独立的物理引擎来模拟物体的运动,使用物理
引擎不仅可以得到更加真实的结果,对于开发人员来说也比自行开发要耗时短、效率高。
一款好的物理引擎不仅会帮助实现碰撞检测、力学公式模拟,而且还会提供很多机械结构的
实现,如滑轮、齿轮、铰链等。这些主要是通过关节来实现的,详细内容在后续部分进行介绍。
更高级的物理引擎不但可以提供刚体的模拟,甚至还可以提供软件及流体的模拟,这些都能帮助
游戏大大提升真实感和吸引力。
7.1.2 常见的物理引擎
市面上存在的物理引擎数量是很多的,著名的物理引擎有Havok、Bullet、PhysX、ODE及
Box2D等。其中ODE、Bullet、Box2D是开源的物理引擎,而PhysX的前身是Novodex,当被
Ageia收购之后改名为PhysX,是一款可以免费用于非商业用途的引擎,商业用途及源代码需要
付费,Havok在许可方面也是如此。上述几种物理引擎的基本信息如表7-1所列。
表7-1
物理引擎名称
持有公司/人员
是否开源
是否支持C/C++
最新版本
文档情况
知名物理引擎的基本信息
Havok PhysX Bullet Box2D ODE
Intel Nvidia AMD Erin Catto
否
是
5.5
详细
否
是
是
是
是
是
2.3
尚可
Russell Smith
是
是
2.1
一般
9.13.1220 2.82
详细 尚可
7.1 物理引擎很重要
提示
三大3D物理引擎为Havok、PhysX和Bullet。另外2008年2月4日,NVIDIA
成功收购AGEIA,支援CUDA技术的显卡,就可以启动硬件PhysX加速。
y
Havok
Havok成立于1998年,总部位于都柏林。在2000年游戏开发者大会上发布了Havok 1.0,最
新版本为Havok 5.5,该引擎基于C/C++。2007年9月,Intel宣布成功收购Havok。之后,Intel
宣布Havok引擎开放源代码,并允许游戏开发人员免费用于非商业用途。
因为Havok全面为多线程与多平台优化,所以Havok对各种先进的游戏平台提供了全面的支
持,其中包括XBOX360数字游戏娱乐系统、PlayStation3娱乐系统、Windows系列、iOS,以及
Mac OS与Linux等顶尖的平台。另外2011年3月6日,Intel宣布Havok引擎开始支持Android
平台。
由于Havok的开放性和不依赖于特定硬件的特点,很多大型游戏均使用Havok引擎。其中著
名的有“星际争霸2”、“暗黑破坏神3”等,效果分别如图7-1和图7-2所示。
▲
▲
图7-1 星级争霸2 图7-2 暗黑破坏神3
y
PhysX
PhysX不仅可以由CPU计算,而且其程序本身在设计上可以使用独立的浮点处理器来计算(如
PhysX技术可利用GPU的处理能力来执行复杂的物理特效计算)。正是由于这个原因,其可以非
常轻松地完成像流体力学那样计算量非常大的物理模拟计算。该引擎可以在Windows、Linux、
XBOX360、Playstation3,以及Mac等多种平台上运行。
“无知之地2”以及“地铁:最后光芒”等流行游戏均采用PhysX技术。该技术可为游戏带来
充满动感的爆炸、撞击破坏效果、基于粒子的流体效果及逼真的动画,令游戏场景仿真度极高,
给玩家身临其境的感觉。脍炙人口的游戏“雪域危机”和“虚幻竞技场3”采用的就是PhysX引
擎,其运行效果如图7-3和图7-4所示。
▲
▲
图7-3 雪域危机 图7-4 虚幻竞技场3
287
2024年6月4日发(作者:殳绮烟)
第7章 游戏开发的核心——
Box2D物理引擎
汽车引擎是汽车的心脏,其决定了汽车的性能和稳定性,是人们在购车时最关注的。而游戏
中物理引擎就如汽车的引擎一样,占据了非常重要的位置。一款好的物理引擎可以非常真实地模
拟现实世界,使得游戏更加逼真,提供更好的娱乐体验。
7.1 物理引擎很重要
经过前面章节的学习,读者可能对物理引擎已经有所了解,但那是远远不够的。本节将为读
者简单介绍物理引擎的一些基本概念。
7.1.1 什么是物理引擎
物理引擎通过给物体赋予真实的物理属性来模拟物体的运动,包括碰撞、移动、旋转等。并
不是所有的游戏都必须使用独立的物理引擎,一些简单游戏的物理功能可以通过自行开发碰撞检
测及实现力学公式来实现对刚体及质点的模拟,就像前面的某些案例。
当游戏需要实现比较复杂的刚体碰撞、滚动或者弹跳时,通过全部自行编程的方式实现就非
常困难,成本也很高。遇到这种情况时就可以使用独立的物理引擎来模拟物体的运动,使用物理
引擎不仅可以得到更加真实的结果,对于开发人员来说也比自行开发要耗时短、效率高。
一款好的物理引擎不仅会帮助实现碰撞检测、力学公式模拟,而且还会提供很多机械结构的
实现,如滑轮、齿轮、铰链等。这些主要是通过关节来实现的,详细内容在后续部分进行介绍。
更高级的物理引擎不但可以提供刚体的模拟,甚至还可以提供软件及流体的模拟,这些都能帮助
游戏大大提升真实感和吸引力。
7.1.2 常见的物理引擎
市面上存在的物理引擎数量是很多的,著名的物理引擎有Havok、Bullet、PhysX、ODE及
Box2D等。其中ODE、Bullet、Box2D是开源的物理引擎,而PhysX的前身是Novodex,当被
Ageia收购之后改名为PhysX,是一款可以免费用于非商业用途的引擎,商业用途及源代码需要
付费,Havok在许可方面也是如此。上述几种物理引擎的基本信息如表7-1所列。
表7-1
物理引擎名称
持有公司/人员
是否开源
是否支持C/C++
最新版本
文档情况
知名物理引擎的基本信息
Havok PhysX Bullet Box2D ODE
Intel Nvidia AMD Erin Catto
否
是
5.5
详细
否
是
是
是
是
是
2.3
尚可
Russell Smith
是
是
2.1
一般
9.13.1220 2.82
详细 尚可
7.1 物理引擎很重要
提示
三大3D物理引擎为Havok、PhysX和Bullet。另外2008年2月4日,NVIDIA
成功收购AGEIA,支援CUDA技术的显卡,就可以启动硬件PhysX加速。
y
Havok
Havok成立于1998年,总部位于都柏林。在2000年游戏开发者大会上发布了Havok 1.0,最
新版本为Havok 5.5,该引擎基于C/C++。2007年9月,Intel宣布成功收购Havok。之后,Intel
宣布Havok引擎开放源代码,并允许游戏开发人员免费用于非商业用途。
因为Havok全面为多线程与多平台优化,所以Havok对各种先进的游戏平台提供了全面的支
持,其中包括XBOX360数字游戏娱乐系统、PlayStation3娱乐系统、Windows系列、iOS,以及
Mac OS与Linux等顶尖的平台。另外2011年3月6日,Intel宣布Havok引擎开始支持Android
平台。
由于Havok的开放性和不依赖于特定硬件的特点,很多大型游戏均使用Havok引擎。其中著
名的有“星际争霸2”、“暗黑破坏神3”等,效果分别如图7-1和图7-2所示。
▲
▲
图7-1 星级争霸2 图7-2 暗黑破坏神3
y
PhysX
PhysX不仅可以由CPU计算,而且其程序本身在设计上可以使用独立的浮点处理器来计算(如
PhysX技术可利用GPU的处理能力来执行复杂的物理特效计算)。正是由于这个原因,其可以非
常轻松地完成像流体力学那样计算量非常大的物理模拟计算。该引擎可以在Windows、Linux、
XBOX360、Playstation3,以及Mac等多种平台上运行。
“无知之地2”以及“地铁:最后光芒”等流行游戏均采用PhysX技术。该技术可为游戏带来
充满动感的爆炸、撞击破坏效果、基于粒子的流体效果及逼真的动画,令游戏场景仿真度极高,
给玩家身临其境的感觉。脍炙人口的游戏“雪域危机”和“虚幻竞技场3”采用的就是PhysX引
擎,其运行效果如图7-3和图7-4所示。
▲
▲
图7-3 雪域危机 图7-4 虚幻竞技场3
287