BOX2D越来越火了,基本上已经稳固了自己在游戏开发者心目中的地位。其实很早之前就在关注BOX2D了,原本在flash游戏中应用非常普遍,近两年移动平台的兴起才再IOS和Android中崭露头角。我个人觉得,愤怒的小鸟成功只是一个偶然,不信就去逛逛flash游戏网站,你会发现很多精致、有创意又耐玩的游戏。(不过Rovio对游戏事业的专注和热情是值得大家学习的)
目前我知道的Android平台使用BOX2D有三种方式,官方的JBOX2D,libgdx封装的JNI版BOX2D,还有微云SDK里的JNI版BOX2D。
1)JBOX2D。纯正、稳定、跨平台、官方支持,唯一的缺点是速度慢,这跟JAVA的虚拟机有关,大量的临时对象和数据运算不能像C/C++那样被及时free掉是主要原因。比起JNI版的确实速度略逊一筹,但也没有网上传言的那么夸张,现在的Android手机CPU动不动就1GHZ,内存动不动就几百M,跑JBOX2D还是绰绰有余的(勿信PC上的模拟器)。如果你的游戏跑起来卡,主要问题就在程序上,是不是时间步设置得太小了?是不是迭代设置得太多了?手机上的休闲游戏,每秒12~20帧足够了。还有就是图象是不是即时旋转的,不要相信Matrix效率有多高,不要动态地旋转图片,推荐预先生成0~90°的图片,精度不用那么高,每5°或10°生成一张,然后翻转+镜像贴出0~360°的图片,这样的速度比即时翻转快出n倍。
2)libgdx。Angle、LGame等很多开源引擎都选择了它封装的box2d,可见对它的可用性是充分肯定的。libgdx的作者估计内流满面,大家貌似只看上他的box2d部分了,其实libgdx整体都很优秀。libgdx box2d的JNI代码写得非常清晰,运行速度非常快,使用方法也很接近原生的JBOX2D,我就是看c++版的文档来开发JAVA的,差别不大,毫无鸭梨。不过据不少人反映,libgdx封装的box2d存在bug,我也遇到莫名其妙报错退出的问题,至今没找到原因,调试起来比较困难。
3)微云SDK(http://www.wiyun.com/web/wiengine,我依然不是枪手)。这个2D游戏框架目前很高调,对它了解不多,略微看了一下,BOX2D、LUA、粒子系统、XML都做了封装,甚至场景元素,地图图素都做了细致地封装,人性化程度可见一斑!不过它似乎忽略了一点,独立游戏人之所以做独立游戏人,因为他们什么都喜欢自己动手,封装得越细致就说明约束越大,自由发挥余地就越小。或许你把饭盛好,用勺子送到独立游戏人的嘴边,换回的却是一个“呸!”,呵呵开个玩笑,我也是独立游戏人。有点偏题了,回头说BOX2D,微云同样是JNI封装的C代码,粗略看了下文档以及JNI代码,不像是直接用的libgdx的,它再一次封装到了嘴边,框架结构让我匪夷所思,习惯了BOX2D的朋友可能要花点时间熟悉一下。
介绍就到这里,附件里附上Jbox2D、libgdx的box2d以及一篇c++的BOX2D教程,下篇文章或将介绍Android中使用box2d的例子。
分享到:
相关推荐
如果这些概念对你来说较为陌生,建议先阅读Chris Hecker和David Baraff的相关教程,尽管不必达到专家水平,但基本理解将大大助益于Box2D的运用。此外,Wikipedia也是获取物理和数学知识的优质资源,其内容经过专业...
Box2D是一个开源的2D物理引擎,广泛应用于游戏开发、模拟和教育领域。这个“Box2D中文手册”提供了一套详细的指南,帮助开发者更好地理解和使用Box2D引擎。以下将详细介绍Box2D的基本概念、核心功能以及如何在实际...
Box2D是一个用于模拟2D刚体物体的物理引擎,它以C++语言编写,并使用zlib许可。zlib许可允许自由使用和分发软件,但不强制要求修改后的代码必须开放源代码。Box2D的作者是Erin Catto,他在游戏开发领域因其贡献而受...
此外,具备C++编程基础是使用Box2D的前提条件,建议开发者有一定的C++开发经验,能够熟练进行编译、链接和调试操作。 Box2D中的核心概念包括刚体(Rigidbody)、形状(Shape)、约束(Constraint)和关节(Joint)...
对于Box2D的使用者,建议具备一定的物理学基础,包括对质量、力、扭矩和冲量的理解。此外,Chris Hecker和David Baraff的教程以及维基百科等资源提供了丰富的物理和数学知识,有助于加深对Box2D基本概念的认识。同时...
- **物理学基础**:使用Box2D前,建议对基本物理概念如质量、力、扭矩和冲量有所了解。Chris Hecker和David Baraff的教程是很好的学习资源,而Wikipedia则提供了经过整理的详尽物理和数学知识。 - **C++编程经验**:...
### Box2D中文教程知识点概览 #### 一、Box2D简介 - **Box2D** 是一款专为游戏开发而设计的2D物理引擎,主要用于模拟刚体的动态行为,使游戏中的物体运动更加真实可信。它可以极大增强游戏世界的互动性和沉浸感。 -...
- 使用Box2D之前,建议掌握一些基础的物理概念,例如质量(mass)、力(force)、扭矩(torque)和冲量(impulses)。如果对这些概念不太熟悉,可以通过阅读Chris Hecker和David Baraff的相关教程来加深理解。 - ...
- **物理知识**:在使用Box2D之前,建议熟悉基本的物理学概念,如质量、力、扭矩和冲量等。可以通过阅读Chris Hecker和David Baraff的相关教程来获得这些基础知识。 - **数学知识**:虽然不是强制性的,但具备一定的...
建议阅读Chris Hecker和David Baraff的相关教程,这些资源可以帮助理解Box2D的基本原理。 - **数学与物理知识**: 可以通过Wikipedia等途径学习,该网站上的内容经过整理,非常适合初学者。 - **C++编程经验**: Box2D...
- 使用Box2D进行开发之前,建议开发者具备一定的基础物理知识,包括但不限于质量、力、扭矩和冲量的概念。此外,对于Box2D内部工作原理的好奇心也是有益的。 - 推荐的学习资源包括Chris Hecker和David Baraff的...
Box2D 2.3.0 用户手册-中文版知识点总结 Box2D 是一种开放源代码的物理引擎,用于模拟2D刚体和碰撞检测。下面是根据 Box2D 2.3.0 用户手册-中文版生成的知识点总结: Chapter 1 导言 1.1 关于 Box2D * Box2D ...
如果这些概念对您来说较为陌生,建议先阅读 Chris Hecker 和 David Baraff 的相关教程,虽然不需要深入理解每一个细节,但这些基础知识将有助于您更好地掌握 Box2D 的使用方法。 此外,Wikipedia 也是一个非常好的...
对于初学者,Box2D并不适合作为首个C++项目,而是建议在掌握了基础的C++程序设计之后再进行尝试。 #### 知识点三:核心概念解析 - **形状(shape)**:Box2D中的基本几何对象,如圆形、多边形等,它们构成了物体的...