Java游戏引擎libgdx的简介

1 前言

最近想做点小应用,但界面方面是非常不在行,自然想借助游戏引擎来处理这部分工作。本打算在flex中找一个比较好的,但找到pushbutton的时候发现官方主页留下的只有goodbye的页面,留言的意思就是现在大家都去玩mobile了,他们放弃了这个引擎的开发。看到这里心一凉,感觉还是做mobile的应用更有前途,香港虚拟主机,之后又去找了一下android开发的图像引擎,反复比较后感觉libgdx貌似不错,今天研究了一天感觉非常棒,相信借助它能做出不错的应用。

2 什么是libgdx

这个类库是由badlogic开发,封装了opengl es和box2d的引擎,能够让应用在windows、linux、android上运行。另外值得称道的是作者对这个类库维护的非常频繁,相信后期发展会更快。还有一个不得不提的,这个作者就是开发Rokon的人,但目前他全力在做libgdx,Rokon已经两年没更新了。

作者自称这是一个框架,而不是一个引擎,因为他只封装了底层的东西,上层有些组件还需要自己开发。但我个人感觉封装的程度挺好的,常用的都有了,整个框架非常简洁,源码很容易读。

官方地址:

3 学习之旅3.1 环境搭建

由于是纯java环境,搭建起来和普通工程一样,官方给的介绍也是无比详细,这里不再赘述。project setup地址:

3.2 其他准备工作

千万别忽略这一部分,这些工作对日后的学习开发非常有帮助。

注:以下安装是libgdx0.9.3版本的时候需要这么弄,目前0.9.8版本直接去下载libgdx的工程,这些工具包都附带了,比之前方便多了。

1. (重要)下载libgdx的源码及其相关test、demo,由于是开源的,可以轻松获取到这些宝贵资源,源码清晰易读。svn地址:,git地址:https://github.com/oxygene/libgdx.git

2. (重要)下载gdx的依赖工程tablelayout,svn地址:

3. TiledMap地图编辑工具,主页地址:

4. Texture Pack GUI纹理打包生成工具,主页地址:

5. Hiero字库编辑工具,下载地址:?name=hiero.jar&can=2&q=

6. 如果是想在android上开发,还需要下载eclipse的adt插件和android sdk。

3.3 基本概念

由于自己之前从来没做过类似的东西,有些东西没有多少概念,对学习速度造成了不小的影响,花了一整天才做出个能控制人物走动的demo…

texture(纹理):一个图片从原始格式解码并上传到GPU就被称为纹理。为了绘制texture,常常使用几何来描述,通过几何对应的顶点来描述纹理。比如要描述一个矩形,可以通过描述每个顶点来描述矩形。要绘图时,首先要绑定纹理,然后传递一个几何描述给OpenGL进行绘制。而绘图的大小和位置由几何描述和OpenGL的viewport的设置共同决定。(摘自:)

actor(表演者):这个东西的概念和flash中的元件是很类似的,就是一个对象,可以对其定义属性方法,做一些特定的控制。

stage(舞台):就是让actor进行活动的地方,这里面主要包含三个元素,一是actor,当然舞台上可以有很多actor,二是Camera,他可以将舞台的画面放缩、旋转,三是SpriteBatch,这个不太好形容,他就是把要绘制的内容批量送给GPU来绘制,并同时收集下一个画面要绘制的信息。

各元素的关系:最上层的容器是Application,它就是控制整个应用是在android还是windows上运行的;第二层的Game是用来管理多个Screen的代理类,可以保持一个是显示的,其他隐藏;场景下有着若干舞台,舞台之中是演员。舞台中一个actor又可以包括多个actor,这个actor就是group,下图这个意思没画出来。

应用的生命周期:

3.4功能简析

这个系统设计真的很容易看懂,从类库角度大概说一下。要深入学习的话,应该把opengl和box2d的原理再仔细看看。

assets:资源管理的类,主要负责加载相关工作。

audio:音频管理类,主要有Music和Sound,区别是Music是按流方式加载,适合大文件,Sound是直接全部加载,适合反复播放。

files:文件操作封装的工具类。

graphics:主要是对opengl的封装,实现了绘图相关的工作,比如Texture、Camera、Color、Mesh、TiledMap、NinePatch。

input:界面输入的事件,其中对于android有手势事件,比如长按、拖拽。

math:主要是图形计算,比如矩阵、向量、矩形之类的操作。

physics.box2d:box2d的封装类,还没仔细看,能实现物理效果,比如重力、反弹(box2d就是物理引擎,这是必然的功能…)。

scene2d:这个是二维图像控制的核心类,Actor、Stage、Interpolator(插值,用于控制动画播放速度)等重要的控制都在这里面。主要有三个功能,一是Action动画,控制Actor来移动、旋转、缩放之类的,二是Interpolator来控制动画播放,可以加速、减速,三是ui组件,但目前实现的比较少,有常见的Button、Image、CheckBox、Label、ScrollPane等。

3.5 第一个demo

对整体东西有了了解,当然要动手做个demo才能有更好的理解。我做了一个特别简单的demo,就是点击小人前后位置,小人可以在地图上前后行走。由于附件限制大小,所以把libs下的gdx.jar和gdx-backend-jogl.jar给去掉了,需要运行请自行添加。

注意,附件在博客的最下面,找不到就对当前页面搜索“基于libgdx的demo”。

3.6 让demo以applet运行

由于眼下要做的一个东西是必须放到网页中的,自然要研究一下如何以applet方式运行。官方给了一篇介绍(见参考资料4)比较详细,但是自己动手做的时候发现了一些问题,简单补充一下。

击败不等于击倒,跌倒了,爬起来,想一想,为什么跌倒了,

Java游戏引擎libgdx的简介

相关文章:

你感兴趣的文章:

标签云: