天天看点

libGDX介绍

简介  libGdx [1] 是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License, Version 2.0 [2] 协议,对商业使用和非商业使用均免费。代码托管于Google Code中 [3] 。

编辑本段特点

  开源的游戏框架并不少见,但是libgdx的优势是相当明显的,主要是体现在以下几个方面

极强兼容性

  libgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。对于Android平台的支持在目前Android阵营和相关市场日益扩大的情况下libgdx的使用者越来越多。   同时极强的兼容性为调试和开发提供了便利。你可以使用Android上面同样的代码在桌面PC上面编写,测试,调试你的应用(也就是说,你可以不需要打开Android模拟器,就可以调试用Libgdx引擎写的游戏应用),把剥离了常见的Windows之间/ Linux应用程序和一个Android应用程序的区别。一般的开发过程是尽可能的在停留桌面PC上,同时周期性的检查你的当前代码是否仍然能在Android运行。

高效性

  Libgdx为了一个游戏开发框架,它主要是用Java写的,其中也参杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java端就可以了,它已经把所有的本地代码封装好了。相比于其他android游戏引擎,libgdx的效率优势十分明显。

架构清晰

  libgdx的主要构成如下所示   

libGDX介绍

  架构

Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要类库所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。   它提供了很清晰的架构用于设计游戏   

libGDX介绍

  模块和设计

物理引擎(Box2D)的封装

  Libgdx对于物理引擎 [4] 的封装也是让人惊讶的。 它足够疯狂的使用jni封装了box2d的c++端,使得其运行效率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、Rokon等),几乎都在用libgdx。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考虑Libgdx。

丰富的工具

  Libgdx还拥有相当数量的开发工具。如果Particle editor [5] (粒子编辑器),Hiero bitmap font generator [6] (文字生成工具),Texture packer [7] (图片合并工具),TWL布局编辑器。

编辑本段不足

效率差异

  Libgdx也并不是十全十美的,它致力于提供一个统一的架构用于游戏开发工作,以保证在所有平台上相同的行为。可悲的是这个崇高的目标难以达到。最大的不同点在于桌面PC和Android设备在于Android设备通常比桌面PC要慢得多。这意味着你的应用在PC上面运行的极快,但在Android运行的就像蜗牛在爬。必须清楚很多能做的和不能做的规则,开发者应该遵守这些规则,为了保证即使在低端Android,应用都拥有良好的运行效果。

图像资源问题

  Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,不过目前只支持png、jpg、bmp三种图片格式。其次Libgdx要求在游戏中使用的图片宽与高皆为2的整数次幂,否则会产生一个Gdx异常并禁止加载行为(texture width and height must be powers of two)。

文档和参考资料

  Libgdx的文档数量比较少,官方的wiki [8] 仅有少量基础介绍和一些示例,所以学习难度可能较大。但是相关社区 [9] 和其他使用者有一些文章和讨论可以参考,博客园中夜明的孤行灯 [10] 有过一系列的入门文章,另外现在在安卓巴士 [11] 的实用教程板块也出现了名为“Mkey libgdx系列教程”的Libgdx入门教程 [12] 。

继续阅读