跨平台游戏开发 : libGDX

作者:骤小雨
2016-08-25
8 16 7

简介

libGDX是一个开源,跨平台的2d/3d游戏开发框架。它使用Java作为开发语言,此外,libGDX也使用了大量的C语言用于处理基于C语言库的性能相关的任务和跨平台支持。该框架将其支持的所有目标平台抽象成了一个统一的应用程序接口(API),libGDX的亮点之一是你可以将你所开发的Native App(原生应用)直接在桌面端运行并进行调试,这使得你能够方便的使用JVM特性,例如Code Hot Swapping(代码热替换),它可以让你的代码在运行时期做到所见即所得的效果,因此,它能够大大减少你去实现不同idea的时间,甚至更快的找到并修复bug,其源代码托管在Github,目前最新版本为1.9.4.

官网:https://libgdx.badlogicgames.com/

特点

强兼容性

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

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

高效性

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

架构清晰

libGDX的主要构成如下所示

libgdx-jiagoutu

libGDX由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及libGDX内置工具类。

它提供了便于设计游戏的清晰架构

Image03

封装

libGDX对于物理引擎的封装也是让人惊讶的。 它足够疯狂的使用jni封装了box2d的c++版本,使得其运行效率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、Rokon等),几乎都在用libGDX。

工具

libGDX还拥有相当数量的开发工具。如Particle editor(粒子编辑器),Hiero bitmap font generator(文字生成工具),Texture packer(图片合并工具),Gdx Setup UI等。

网络

libGDX最初大部分用于单机游戏或者弱联网游戏,不过经过不断优化,现在libGDX提供了专门的网络模块。在Google推出实时联网虚拟现实游戏Ingress后,亦有部分国内公司推出了基于libGDX的网游。

第三方拓展工具

Spine

目前最强大的2D游戏骨骼动画制作软件,没有之一。其作者也是libGDX的核心贡献者。

4288-1472043991

Overlap2D

第三方UI编辑器,该编辑器由热心的使用者编写,已开源。

Image01


TexturePacker

第三方文理资源打包工具
Image04

PhysicsEditor

第三方物理属性编辑器

Image02

文档和社区

libGDX的文档数量已经相当完善了,官方的wiki已经有较为完整的基础介绍和一些示例。不过由于官方的示例都是英文的,可能对于部分开发者来说学习难度较大。另外libGDX拥有非常活跃的官方讨论社区

libGDX现在也有一定数量的中文教程和书籍,如奋斗小土豆丶,夜明的孤行灯,爆发的妞,#Testin杯#Mkey等一系列基础教程,也有罗杰儿翻译的官方书籍《Learning LibGDX Game Development- Second Edition》。

作品展示

到目前为止,已有相当数量的游戏基于libGDX开发,并且部分游戏都是非常著名的。

Ingress(Google play,AppStore)

Image05

Delver(Google play,AppStore,Steam)

ss_8528932167de6bb8063963d4636bc425e2e967ce.1920x1080

Alchemist's Awakening(Steam)

ss_b010a32e1872c80e5a5859d86b8cfac763536fd8.600x338

Gunslugs 2(Google play,AppStore,Steam)

ss_e8e363729dbab33360a385c15923aab53e0e4705.1920x1080

Halfway(Steam)

ss_7841656a7e5e3097f934a9440943fa29c55d2f08.600x338

Nubs' Adventure(Google play,AppStore,Steam)

ss_c613a4f578332d30a311d7db56bc8d6168d67e18.1920x1080

萌娘餐厅1,2(Google play,AppStore)

Image06

小小指挥官1,2(Google play,AppStore)

screen520x924

史诗塔防 - 元素(Google play,AppStore)

screen520x9241

S 士兵荣耀:现代战争(Google play,AppStore)

screen520x9242

还有很多这里就不一一列举了,另外,libGDX 官方有一个游戏画廊,上面展示的游戏都是用 libGDX 开发的。

近期点赞的会员

 分享这篇文章

骤小雨 

不忘初心,方的始终。 

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. tnl 2016-08-25

    嗯,libGDX 用起来相当舒服。

  2. Lanza 2016-08-26

    这是我接触的渲染框架中最容易用的一个了,尤其是多平台的支持,使得调试起来很方便。

  3. LT21 2016-08-27

    最早接触的就是libGDX~

  4. 纯洁的坏蛋 2016-10-16

    我已经无欲无求了,。。。一直不肯出ui编辑器

    • xhzr 2017-07-10

      @纯洁的坏蛋:坏蛋,哈哈

  5. ttwings 2016-11-24

    用起来很舒服。真心舒服。 如果java基础不错,那么绝对是种享受。 libgdx游戏引擎群里面,已经有一帮人,发布了游戏,赚到了钱。。

  6. kris 2018-06-06

    Java退休爱好者的福音!

您需要登录或者注册后才能发表评论

登录/注册