【Android LibGDX游戏引擎开发教程】第01期:LibGDX的详细介绍
来源:互联网 发布:ios多线程编程运用 编辑:程序博客网 时间:2024/05/21 10:06
博主在大学里学的专业就是软件开发与游戏设计,所以对于游戏这个行业一直都有着浓厚的兴趣,却因为
阴差阳错,又或许是缘分不够吧。一直都没有真正的进入到这个行业里来,但对于游戏的热爱却从来都没有消减过,
业余时间也总是想着开发一款属于自己的游戏,希望有兴趣的同学可以一起合作。
最开始研究过一段时间的AndEngine游戏引擎,但是它的性能让我实在是不敢恭维,而且还有一些bug待完善。
思前想后,查阅了一番资料决定还是先从LibGDX游戏引擎开始讲起吧,今后也会陆续讲解Cocos2d-x、Unity3d等这
些出色的游戏引擎的开发和设计。
那么从今天开始,博主将与大家一起学习LibGDX游戏引擎的开发,博主依然会以实战为主,理论加实践的教学
方式,总结自己在操作的过程中遇到的一些困难,跟大家共同分享、学习和交流,这样可以让读者们少走一些弯路。
希望大家多多支持!
好的,话不多说,让我们进入正题吧!
一、游戏展示
让我们先来看看LibGDX引擎都开发过哪些优秀的游戏:
二、LibGDX简介
LibGDX是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License,
Version 2.0协议,对商业使用和非商业使用均免费。代码托管于Github中。最新版本为0.9.8,本教程中使用的是
0.9.8版本。
三、LibGDX优点
其实LibGDX的优势是相当明显的,主要是体现在以下几个方面:
1、极强兼容性
LibGDX兼容Windows、Linux、Max OS X、Java Applet、Javascript/WebGL与Android(1.5版本+)平台。对于
Android平台的支持在Android阵营和相关市场日益扩大的情况下libgdx的使用者越来越多。另外,基于MonoTouch,可
以实现IOS兼容,注意MonoTouch是收费的。同时极强的兼容性为调试和开发提供了便利。你可以使用Android上面
同样的代码在桌面PC上面编写,测试,调试你的应用(也就是说,你可以不需要打开Android模拟器,就可以调试用
Libgdx引擎写的游戏应用)。它剥离了常见的Windows之间/ Linux应用程序和一个Android应用程序的区别。一般的开
发过程是尽可能的在停留桌面PC上,同时周期性的检查你的当前代码是否仍然能在Android运行。
2、高效性
LibGDX主要是用Java写的,其中也掺杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操 作,比如物理引擎或者音频处理。作为用户,你只需要关注Java的封装就可以了,它已经把所有的本地代码封 装好了。相比于其他android游戏引擎,libgdx的效率优势十分明显。
3、架构清晰
LibGDX的主要构成如下图所示:
LibGDX由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。
它提供了很清晰的架构用于设计游戏,如下图所示:
4、Box2D的封装
LibGDX对于物理引擎的封装也是让人惊讶的。 它足够疯狂的使用jni封装了box2d的c++版本,使得其运行效 率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、 Rokon等),几乎都在用LibGDX。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考 虑LibGDX。
5、丰富的工具
LibGDX还拥有相当数量的开发工具。如果Particle editor(粒子编辑器),Hiero bitmap font generator(文字生成
工具),Texture packer(图片合并工具),TWL布局编辑器,Gdx Setup UI。
四、LibGDX的不足
1、效率差异
LibGDX也并不是十全十美的,它致力于提供一个统一的架构用于游戏开发工作,以保证在所有平台上相同行为。
可悲的是这个崇高的目标难以达到。最大的不同点在于Android设备通常比桌面PC要慢得多。这意味着有时高负荷的
代码在PC上面运行的极快,但在Android运行的就像蜗牛在爬。必须清楚很多能做的和不能做的规则,开发者应该遵
守这些规则,为了保证即使在低端Android,应用都拥有良好的运行效果。
2、图像资源问题
LibGDX以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖
Android的Bitmap加载处理图像,不过只支持png、jpg、bmp三种图片格式。其次在使用OpenGL 1.x时要求在游戏中
使用的图片宽与高皆为2的整数次幂,否则会产生一个Gdx异常并禁止加载行为(texture widthandheight must
bepowers of two),2.0则不需要。
- 【Android LibGDX游戏引擎开发教程】第01期:LibGDX的详细介绍
- 【Android LibGDX游戏引擎开发教程】第01期:LibGDX的详细介绍
- 【Android LibGDX游戏引擎开发教程】第04期:各个模块的详细介绍
- 【Android LibGDX游戏引擎开发教程】第02期:LibGDX环境的搭建
- 【Android LibGDX游戏引擎开发教程】第03期:示例代码详细讲解
- 【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)
- 【Android LibGDX游戏引擎开发教程】第08期:中文字体的显示和绘制(下)
- 【Android LibGDX游戏引擎开发教程】第09期:动画类的使用
- 【Android LibGDX游戏引擎开发教程】第05期:图形图像的绘制(上)基础类的使用和详解
- 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用
- libgdx游戏引擎教程
- libgdx游戏引擎教程
- Android开发_libgdx游戏引擎教程 性能优良的游戏引擎—libgdx (五)
- Android游戏引擎libgdx使用教程1:搭建libgdx环境
- Android游戏开发引擎libGDX系列教程(一) -- 初识libGDX
- libgdx游戏引擎教程(三)libgdx粒子系统的使用
- libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx
- libgdx游戏引擎教程 性能优良的游戏引擎—libgdx
- 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建
- C语言一个双向链表的实现
- c++学习之类型转换
- 状态压缩动态规划
- POJ2773-Happy 2006
- 【Android LibGDX游戏引擎开发教程】第01期:LibGDX的详细介绍
- ASP.NET MVC4自定义分页
- Exchange 2007 中的电子邮件地址策略和接受域
- [HDU 4252] A Famous City[单调队列]
- 2013 - ECJTU 暑期训练赛第七场-problem-G
- 在for循环中使用数组
- hdu 1394 Minimum Inversion Number
- hdu 4474 数位搜索
- UVA 11044 (13.08.07)