LibGDX简介

本系列笔记参考官方文档和《Learning LibGDX Game Development second edition》。

LibGDX是一个跨平台2D/3D游戏开发框架。由Java和C/C++编写而成,使用LibGDX需要熟悉Java语言,使用JVM的高级特性能够使编码更加方便。LibGDX支持桌面平台(Windows,Linux,Mac),移动平台(Android2.2+,IOS),Web平台(HTML5,使用JavaScript和WebGL)。

LibGDX适用场景

值得注意的是,LibGDX是一个框架而不是一个游戏引擎。游戏引擎通常包含完整的场景、代码编辑器和一组API,需要使用引擎定义的工作流进行开发。而框架则是更底层的一种开发方式,我们可以集成自己的编辑器按照自己的想法开发,有必要时还可以调用底层OpenGL函数,也就是说,开发者的自由度更高,但是需要做的也更多。

对于一般的低龄向益智游戏,LibGDX功能上是绰绰有余的,比如贪吃蛇、坦克大战、棋牌、连连看这种,这类游戏开发也非常简单,相比直接用GDI之类的绘图库,LibGDX提供的组件绘制层次、动画系统、音乐音效、输入设备管理等模块能节省我们不少工作量。

当我们的游戏设计比较复杂,我们使用LibGDX时,一般是基于它再进行一层封装,否则是开发不出来的。比如做2D像素RPG,首选肯定是RPGMaker,但这东西局限性太大且难扩展,当我们的设计RPGMaker无法满足时,我们再考虑基于类似LibGDX这种框架作为引擎核心写个加强版的“RPGMaker”,主要工作量就会集中在RPG游戏特有的逻辑层组件(角色build、物品和背包系统、技能系统、合成系统等等)以及场景编辑器,再用这个“RPGMaker”去开发RPG游戏。

LibGDX和Unity对比

和Unity相比,LibGDX最显而易见的劣势就是缺场景编辑器,还是以RPG游戏为例,Unity能把NPC、可交互物体、UI直接摆到地图上,直接运行看效果,LibGDX就不行,必须借助类似Tiled编辑器这种工具,画好场景底图,再给可交互物体留出初始化的槽位,UI也是编码的形式(设计成拖拽式的还需要额外工作),非常不直观,从开发到大框架差不多能运行测试,没有一定技术积累,用LibGDX的效率比Unity可能会差十倍以上。

而LibGDX的劣势其实也是优势,没有场景编辑器可以自己写,没热更新可以自己想办法集成Groovy,Scene2DUI太垃圾那就自己写一套,而Unity本身集成度就高,扩展起来比LinGDX麻烦很多,不是说Unity自带的垃圾,我们的设计是千变万化的,它不一定最符合我们的需求。比如说当RPG游戏涉及开放世界、自由度、模组和可扩展性这些问题,Unity就显得力不从心了,市面上的这类游戏也大多是定制引擎。Unity并不是面向程序员的,而是面向整个游戏团队的,很多操作都不符合程序员的思维,工程结构很容易背离软件工程的准则而变得一团乱。

另一个优势是LibGDX完全开源,可以免费使用。Unity大部分不开源,仅限于个人免费使用,且产生的收入超过一定额度时要给Unity交钱。

LibGDX特性介绍

官网

LibGDX环境搭建

LibGDX提供了创建工程目录的工具,我们直接使用这个工具创建工程就行了。开发包下载

下载后得到gdx-setup.jar

运行这个jar包,得到项目创建界面,我们简单配置一下,如下图所示。我们在这里配置项目名,部署平台等内容。

点击Advance,这里可以单独配置Maven仓库镜像和IDE的配置文件,但实际上我们无需在这里做些画蛇添足的配置,一般我们都把Maven镜像配置到~/.m2/settings.xml中,Gradle工程也能直接导入这三个主流IDE。

点击Generate即可,gradle等都会自动下载。不过这要等上一阵子,主要是下载gradle比较慢,第二次创建项目就不会再下载了。Maven包走镜像或是本地缓存,一般比较快。创建成功后,如图所示。

我们按照上图提示导出集成开发环境即可。

可以观察到,对应平台有自己的模块,除此之外还有一个core模块,查看build.gradle,我们会发现实际上特点平台的模块都是依编译赖于core模块的。

运行自动生成的项目(desktop)

我们运行一下desktop里的项目,我们的运行环境是Ubuntu14.04。在desktop模块的Main函数上,右键Run即可。但是desktop模块里缺少资源文件夹(也就是图片等)。Android模块里有这个文件夹,我们可以调整idea的Run Configuration->working directory指向Android/assets文件夹。

或者把资源拷贝到工程默认的working directory也可以。

再次点击Run就可以正常运行了。点击Run后,idea会自动调用Gradle构建项目。结果如图:

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap