游戏开发框架libGdx
2015-08-13 11:25
169 查看
1简介编辑
libGdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License, Version 2.0[1] 协议,对商业使用和非商业使用均免费。代码托管于Github中。最新版本为1.5.3。
2特点编辑
开源的游戏框架并不少见,但是libgdx的优势是相当明显的,主要是体现在以下几个方面
强兼容性
libgdx兼容多种平台系统(Windows、Linux、Max OS X、Java Applet、Javascript/WebGL),包括移动系统Android(1.5版本+)和iOS。对于Android平台的支持在Android阵营和相关市场日益扩大的情况下libgdx的使用者越来越多。另外,基于RoboVM可以实现iOS兼容[2] 。同时极强的兼容性为调试和开发提供了便利。你可以使用Android上面同样的代码在桌面PC上面编写,测试,调试你的应用(也就是说,你可以不需要打开Android模拟器,就可以调试用Libgdx引擎写的游戏应用)。它剥离了常见的Windows之间/ Linux应用程序和一个Android应用程序的区别。一般的开发过程是尽可能的在停留桌面PC上,同时周期性的检查你的当前代码是否仍然能在Android运行。
高效性
Libgdx主要是用Java写的,其中也掺杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java的封装就可以了,它已经把所有的本地代码封装好了。相比于其他android游戏引擎,libgdx的效率优势十分明显。
架构清晰
libgdx的主要构成如下所示Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。
它提供了便于设计游戏的清晰架构
模块和设计
封装
Libgdx对于物理引擎[3] 的封装也是让人惊讶的。它足够疯狂的使用jni封装了box2d的c++版本,使得其运行效率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、Rokon等),几乎都在用libgdx。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考虑Libgdx。
工具
Libgdx还拥有相当数量的开发工具。如Particle editor[4] (粒子编辑器),Hierobitmap font generator[5] (文字生成工具),Texture
packer[6] (图片合并工具),TWL布局编辑器,Gdx
Setup UI等。
网络
Libgdx最初大部分用于单机游戏或者弱联网游戏,不过经过不断优化,现在Libgdx提供了专门的网络模块。在Google推出实时联网虚拟现实游戏Ingress后,亦有部分国内公司推出了基于Libgdx的网游,比如《无双逐鹿》等。
UI编辑器
Libgdx现在有第三方的UI编辑器Overlap2D[7] ,该编辑器由热心的使用者编写。
参考资料
Libgdx的文档数量已经相当完善了,官方的wiki[8] 已经有较为完整的基础介绍和一些示例。另外,还有对于官方最新wiki的中文翻译[9] 。不过由于官方的示例都是英文的,可能对于部分开发者来说学习难度较大。当然更多的细节可以在相关社区和其他使用者的文章和讨论中找到答案,博客园中夜明的孤行灯[10] 有过一系列的入门文章(现已迁移到对应的独立博客[11] 中),这个系列的文章基于0.9.2版本,和最新版本有一些细节上的差异,但是仍不失为国内最完整和全面的教材。
另外在安卓巴士的实用教程板块也有“Mkey libgdx系列教程”的Libgdx入门教程[12] ,该系列文章虽然没有系统性的介绍,但是对于开发中的诸多细节给出了解决方案,适合对于libgdx有一定了解的开发人员参考。
0.98版本大幅修改了很多细节。奋斗小土豆丶[13] 有一系列针对0.98版本的教程,比较适合从低级版本升级而来的用户和初学者参考,也是目前最新版本的教程。
相关文章推荐
- hdu 5108 求最大素因子
- Socket中listen/accept函数的区别
- Http连网传递参数出现乱码
- 高效使用Ubuntu技能攻略
- ANDROID嵌入式应用Unity3D视图(画廊3D模型)
- Android 知识梳理
- 程序分配堆栈全局区
- 商务部
- android 进程和线程管理
- scp命令
- android 4.4 js调用webview activity方法记载
- fragmentTransaction与fragment生命周期
- SQL之EXPLAIN语法
- AFNetWorking用法及缓存处理
- 字符串常用工具类
- #define与typedef
- 到底有没有招人的诚意,前辈教你判断
- IoC(Inversion of Control,控制反转)模式
- PL/SQL Developer记住用户名和密码
- jQuery插件的开发