《libGDX移动游戏开发从入门到精通》一1.1 libGDX介绍

  1. 云栖社区>
  2. 博客>
  3. 正文

《libGDX移动游戏开发从入门到精通》一1.1 libGDX介绍

异步社区 2017-05-02 15:19:00 浏览3459
展开阅读全文

本节书摘来异步社区《libGDX移动游戏开发从入门到精通》一书中的第1章,第1.1节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 libGDX介绍

在本节中,主要简单介绍一下libGDX这个游戏引擎,包括其特点、配套的开发工具等,让读者对libGDX这个游戏引擎有一个的感性的认识。

1.1.1 libGDX的特点

libGDX是一个跨平台的2D/3D游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache LicenseVersion 2.0协议,对商业使用和非商业使用均免费,代码托管于Github中,最新版本为1.5.4。开源的游戏框架并不少见,但是libGDX的优势是相当明显的,主要是体现在以下几个方面:

1.强兼容性
libGDX兼容多种平台系统(Windows、Linux、Max OS X、Java Applet、Javascript/WebGL),包括移动系统Android(1.5版本+)和iOS。在Android阵营和相关市场日益扩大的情况下,对于Android平台的支持使libGDX的使用者越来越多。另外,基于RoboVM可以实现iOS兼容。

极强的兼容性为调试和开发提供了便利。你可以使用Android上面同样的代码在桌面PC上面编写、测试、调试你的应用(也就是说,你不需要打开Android模拟器,就可以调试用libGDX引擎写的游戏应用)。它剥离了常见的Windows之间/ Linux应用程序和一个Android应用程序的区别。一般的开发过程是尽可能地停留在桌面PC上,同时周期性地检查你的当前代码是否仍然能在Android上运行。

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

3.架构清晰
libGDX的主要构成,如图1.1所示。


1_1

libGDX由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们对应了libGDX中的常用函数、接口、音频操作、输入/输出、文件操作,2D/3D渲染及libGDX绘图相关运算、网络模块。

它提供了便于设计游戏的清晰架构,如图1.2所示。


1_2

4.封装
libGDX对于物理引擎的封装也是让人惊讶的。它使用jni封装了box2d的C++版本,使得其运行效率比其他同级的物理引擎如jbox2d更快。现在流行的几个包含物理引擎的Android游戏引擎(如Andengine、Rokon等),几乎都在用libGDX所封装的物理引擎。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考虑libGDX。

1.1.2 libGDX中的工具

libGDX具有较为完善的配套的开发工具,如粒子编辑器(Particle editor)、文字生成工具(Hiero bitmap font generator)、图片合并工具(Texture packer)等。这些所涉及的工具都会在以后的章节中陆续介绍。现在主要是贴出其软件界面,让大家先对其有一个直观的印象。

1.粒子编辑器(Particle editor)
粒子编辑器一个很明显的作用就是可以给游戏的画面添加更炫丽的效果。无论是大型游戏还是中小型游戏,基本都会有“每日登录”这一模块,而这一模块中,就经常使用到粒子效果,如图1.3所示。


1_3

2.文字生成工具(Hiero bitmap font generator)
借助Hiero bitmap font generator,可以生成游戏中需要用到的字体文件。在显示游戏中的文字信息时,通常需要用到该字体文件。文字生成工具如图1.4所示。


1_4


3.图片合并工具(Texture packer)
Texture packer的主要作用是将若干张小图合并为一张大图。这样在方便资源管理的同时,也尽可能地降低了GPU内存的浪费,如图1.5所示。


1_5

1.1.3 libGDX的历史

2009年中期,项目开始,初始名称为AFX。

2010年3月6日,项目开源,代码托管在Google Code上。

2012年5月,市场占有率超过1.24%,超过了当时的Unity、AndEngine、Cocos2D、Corona和Marmelade。

2012年,Google Ingress使用了libGDX项目。

2013年,添加3D API支持。

2014年4月20日,1.0正式版发布。

此后libGDX版本的更新比较频繁,截止到2015年3月24日。libGDX已经更新到了1.5.4版本。libGDX的作者之一Mario Zechner,也是《Beginning Android Games》一书的作者之一。

1.1.4 我的libGDX版本
这本书主要围绕libGDX 0.9.8来编写。与0.9.8版本相比,libGDX1.x具有以下特点。

1.更新了基于Gradle项目的安装,不需要更多的jars,支持所有平台的简单打包。

2.移除了对OpenGL ES 1.x的支持,支持OpenGL ES 3.0。

3.移除了大量Android后端的集群,要求最低Android版本是Android 2.2。

4.Box2D转移到了扩展中。

5.大幅度的改进了Scene2D,比如viewport enhancement。

6.更新了libGDX repo、网站和wiki,移除了旧的setup UI。

7.移除了音频和图像扩展和demo都放在了仓库中。

可以看出与0.9.8版本相比,使用libGDX 1.x开发起来将会更加简便。但是其最致命的缺点是移除了对OpenGL低版本的支持而不是选择兼容OpenGL低版本,这就导致市面上相当一部分使用OpenGL1.x手机的用户将无法运行使用libGDX1.x开发出来的游戏。而这一部分用户的丢失所带来的收益上的巨大损失是很多游戏开发商所无法接受的。所以,大部分的游戏开发商还是选择libGDX 0.9.8来进行游戏开发。这也是本书选择libGDX 0.9.8来进行讲解的主要原因。与libGDX 0.9.8相比,libGDX 1.x的主要API的改动较小,它们之间的大部分内容都是类似的。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注