`
wangxiaohigh
  • 浏览: 1496435 次
文章分类
社区版块
存档分类
最新评论

Android与JavaSE游戏引擎LGame-0.3.1版正式发布

 
阅读更多
2011-07-03 LGame-0.3.1-Update:

下载地址(内含源码、jar以及九种不同类型的游戏示例)http://loon-simple.googlecode.com/files/LGame-0.3.1.7z

1、自0.3.1版起,JavaSE与Android版图像渲染部分均转为OpenGL(ES)实现,在大多数支持GLES硬件渲染的Android机型中,框架性能至少会有20%-50%不等的提升。但是,在少数仅支持GLES软件渲染的机型中,性能将会出现20%-50%不等的下降(含模拟器 -﹏-||| )……

2、为不破坏原有框架结构,并充分发挥OpenGL性能,在保留原有LImage,LFont,LColor,LGraphics等绘图类的基础上,渲染方式做如下两点变动:


2.1、原有基础游戏画布由LGraphics转为GLEx,该类为OpenGL(ES),JavaSE,JavaME的常用渲染API集成,即便用户完全不了解OpenGL渲染机制,同样可以延续LGraphics的使用方法。另外,此类虽然不再允许直接渲染Android的Bitmap以及JavaSE的Image,却可以像旧版的LGraphics一样直接渲染LImage,而新增的专用纹理类LTexture,同样也可以经由LPixmap,LImage,Bitmap,Image转换生成。

2.2 为适应OpenGL色彩机制,旧版原有的LColor类不被允许直接使用于GLEx之上,而只允许使用新增的GLColor类。但是,该类API部分实际上与原有的LColor如出一辙(其内部就是将色彩分量除以255转为OpenGL使用的浮点数值罢了|||)。最后,旧有的LFont依旧在GLEx类中通用,其它部分与旧版没有任何区别。

3、统一封装了Android版与JavaSE版的人机交互设备接口,所有键盘事件一律封装为LKey类,所有鼠标事件一律封装为LTouch类,不久后会发布的WP7版以此为例。


4、为避免框架过快膨胀,自0.3.1版起LGame核心jar不再内置open JDK的geom包,这将导致Android版LGraphics类功能略有减少,但鉴于核心渲染类已经转为GLEx,因此对旧版用户造成的影响可以说非常微小。此外,由于LGame自动生成图像形状依赖此包,所以它并没有被遗弃,而是转移到了physics扩展包中。

5、为尽可能压缩框架体积,此版框架结构略有变动,原有的map包下形状组件一律被放入旧版的geom包下,原有的window包被更名为component,原有window包及其子包中类一律被放入此包,并新增task、input、opengl、particle四个组件包及相关类。


6、修正了所有已发现的旧版BUG,并微调了框架显示方式,以尽可能适应绝大多数机型的运行需求。

关于使用OpenGLES的几点注意事项:


1、OpenGLES对于Android系统而言绝非万灵丹,即便代码优化的多么完善,也并不意味着在所有Android手机上都一定可以跑出同样理想的速度与效果。事实上,OpenGLES的高效只体现在能够支持硬件渲染的那一部分手机机型上,而对于仅支持软件渲染的机器则【彻底】无能为力。对这部分手机而言,GLES的渲染速度甚至不如Canvas绘图来得高效。


说到目前Android手机中最为普及的GLES软件渲染实现,则首推Google提供的Android Pixelflinger(当前最高版本1.4),假如您通过真机的OpenGLES取GL_RENDERER参数时“仅仅”看到了“Android Pixelflinger”字样出现的话,就意味着这台机器必定与GLES开发无缘,请换一部手机,或者改回Canvas开发吧(当然也可以做两个版本,让用户自行选择)。实际上,在HTC的部分低端机型、LG的部分低端机型、Archos的部分低端机型,以及一切使用了国内某星早期解决方案的机型中,全部可以看到Android Pixelflinger“单独出现”,如果谁在这批低端手机中选择GLES进行游戏开发,则无异选择了让马车拉着火车跑一样恐怖。

再者,不同厂商提供的GLES硬件渲染其实也存在着不同程度的效果差异(别以为所有厂商都完完整整的遵循OpenGL规范干活),小弟在这里推荐http://www.glbenchmark.com这个比较权威的网站进行相关查询,其中提供有绝大多数常见智能机的GL,EGL参数列表,并且附带有各种机型真机的FPS测试数据。要知道“失之毫厘,谬以千里”,如果手机本身的OpenGL性能就是dog shit,那么跑在shit上的东西多半也会成为shit。


2、使用OpenGLES进行游戏编程,在大多数情况下意味着您必需放弃模拟器的使用,而仅能以真机或者PC版框架进行开发。因为Android模拟器默认基于Android Pixelflinger,软件渲染GLES本就不快的速度,到了模拟器上更会气得您将电脑砸掉。


3、为照顾旧版的Canvas实现,现阶段改版只完成了LGame渲染内核的OpenGL化,也就是基本延续旧版API,仅变动函数的具体实现代码。然而,由于OpenGL与Canvas在运行机制上存在有一定差异,就渲染效率而言这显然并非最优选择,故此未来还有相当巨大的优化空间。(举个例子,在任意机型中以Canvas显示一幅1024x1024的Bitmap图像虽然都会很慢,但绝不至于将FPS压到个位数。然而,在某些机型中如果以GLES加载一副此尺寸的纹理,就很可能瞬间让FPS低于10,但让同样的机器同时跑数张512x512的纹理,速度却依旧在50-60晃荡,这就是差异的体现。题外话,0.3.2将改进的重点之一就是“自动合并小图为统一纹理,自动分解大图为合理的纹理数量”)

4、旧版的Canvas实现并没有彻底废止,只会作为一个特殊版本不再更新版本号(也就是无论怎么改,版本号都是0.3),假如您使用GLES实现开发的并不顺利,也可以选择换回旧版,它依旧提供BUG修正与开发支持……


PS:本次改版并没有影响到原有程序的代码结构,所以原有示例也全部可以在新版通用,比如不久前发布的SRPG示例(新版中运行画面如下图)。


另外,此次改版又额外增加了一项ACT游戏示例(其实,是用很早以前博文中发布的同类示例修改而成……),鉴于有不少网友询问声效播放的问题,所以用此例子来演示一下(新版中运行画面如下图)





下载地址(内含源码、jar以及九种不同类型的游戏示例)http://loon-simple.googlecode.com/files/LGame-0.3.1.7z



——————————————————————————————

除Android版之外,LGame的WP7与iPhone版也在开发当中,WP7版直接使用XNA封装,移植起来异常省事,加上语法基本一致,年底发布毫无问题;而iPhone版是做C/C++迁移(实在无法忍受objective-c的语法|||),等于将原有代码重构一次,预计到明年年初才能完成。

另外还有两个准备中的平台,一个是HTML5,考虑到WebGL技术的未来发展,对网页游戏引擎的需求应该会越来越大,复杂度也会越来越高,此时出手正是时机;另外一个就是JavaFx,这玩意自2.0版重构以后的发展方向还是未知数,如果Oracle发力或许还有得玩,个人对它持悲观态度,看Java的面子准备瞧瞧再说……

PS:好久没上线,发现CSDN博客系统改版,有点不会用,小弟文章效果有问题的话万望海涵,手生的关系……



分享到:
评论

相关推荐

    LGame-0.3.7z 国内著名Android游戏引擎最新版

    在"JavaSE"目录中,我们可以找到与Java标准版相关的源代码和库,这表明LGame引擎充分利用了Java的跨平台特性,使得游戏可以在多种设备上运行。Java的面向对象编程和丰富的类库为游戏开发带来了极大的便利,同时,...

    LGame-0.2.8.zip_Java 8_LGame_android lgame.src_eclipse LGAME src

    《LGame:构建Android与J2SE游戏引擎的利器》 LGame,作为一个开源的游戏引擎,专注于为Android和Java 2 Standard Edition (J2SE) 平台提供强大的开发支持。其版本号为0.2.8,是开发者们利用Java 8语言特性构建游戏...

    javase-2.2-API文档-中文版.zip

    包含翻译后的API文档:javase-2.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.google.zxing:javase:2.2; 标签:google、zxing、javase、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器...

    Android飞机游戏(基于LGame引擎)

    《Android飞机游戏:深入探索LGame引擎开发》 在Android平台上开发游戏,开发者们常常会寻找高效的工具和框架来加速开发进程,LGame引擎便是其中之一。本项目——"Android飞机游戏(基于LGame引擎)",是利用LGame...

    LGame游戏引擎0.32

    - **跨平台支持**:LGame基于Java语言,可以轻松实现JavaSE(Java标准版)和Android平台的游戏开发,具备良好的跨平台兼容性。 - **高效性能**:利用Java的JNI(Java Native Interface)技术调用底层C/C++代码,...

    javase-3.3.3-API文档-中文版.zip

    包含翻译后的API文档:javase-3.3.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.google.zxing:javase:3.3.3; 标签:google、zxing、javase、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用...

    javase-3.3.3-API文档-中英对照版.zip

    包含翻译后的API文档:javase-3.3.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.google.zxing:javase:3.3.3; 标签:google、zxing、javase、中英对照文档、jar包、java; 使用方法:解压翻译后...

    javase课程设计--魂斗罗.zip

    此外,游戏项目往往需要一定的数据存储功能,如保存玩家的最高分数,或是游戏进度的保存与加载。这可能需要使用到Java的文件IO操作,或者利用数据库系统进行数据持久化。 在开发这样一个项目时,测试工作是不可或缺...

    一维码二维码所需资源包javase-3.2.1 zxing-core-3.2.1.jar

    这两个资源包,`javase-3.2.1.jar` 和 `zxing-core-3.2.1.jar`,是开发Java应用程序时用于生成和解析一维码与二维码的关键组件。 `javase-3.2.1.jar` 是一个针对Java Standard Edition(Java SE)平台的特定版本库...

    javase-zxing-3.4.1.jar

    zxing二维码解析过程中,解决BufferedImageLuminanceSource 报错,解决 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;错误的问题。zxing-master-3.4.1 版本编译而来,已经亲自测试验证。

    JavaSE回顾小项目--坦克大战

    此外,通过Socket编程,游戏还可以实现网络对战功能,让玩家可以与远程的对手进行实时对抗,这涉及到TCP/IP协议的运用以及网络数据的序列化和反序列化。 项目的源代码中,TankWar2.5.jar包含了已经编译好的可执行...

    javase-2.2-API文档-中英对照版.zip

    包含翻译后的API文档:javase-2.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.google.zxing:javase:2.2; 标签:google、zxing、javase、中英对照文档、jar包、java; 使用方法:解压翻译后的API...

    linux快速安装jdk1.8方式及环境变量配置

    jdk下载地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html **注:安装之前先查看一下系统有没有已经安装的版本 查看当前系统jdk的版本:java -version 如果有先卸载,查看jdk目录文件yum ...

    Android游戏源码 基于LGame引擎 横屏跳跃类游戏

    这个资源提供了一个基于LGame引擎的横屏跳跃类游戏源码——"JumperGLES",这为学习Android游戏开发或者对LGame引擎感兴趣的开发者提供了宝贵的学习材料。 首先,我们来了解一下LGame引擎。LGame是一款轻量级的游戏...

    JavaSE结课项目----即时通讯

    JavaSE是Java标准版的简称,它是Java编程的基础,涵盖了面向对象编程、异常处理、集合框架、多线程、输入/输出以及网络编程等核心概念。在这个“JavaSE结课项目——即时通讯”中,我们将深入探讨如何利用JavaSE技术...

    JavaSE_Android精华版.chm

    JavaSE_Android精华版-----中文文档API,JavaSE_Android精华版-----中文文档API

    JavaSE 常见面试题-线程篇.xmind

    JavaSE 常见面试题-线程篇

    JavaSE基础营销课程-日期API大纲.xmind

    JavaSE基础营销课程-日期API大纲.xmind

    JavaSE小项目---客户管理系统

    在本JavaSE小项目——客户管理系统中,我们聚焦于实现一个基础的数据库操作模拟,主要功能包括对客户信息的添加、删除、修改和查询。这个系统以控制台(黑窗口)为界面,采用对象数组来存储和管理数据,提供了一个...

    JavaSE进阶-02-数组.pdf

    JavaSE进阶课程中,数组是一个重要的概念,它在编程中起到了存储一组相同类型数据的作用。数组被设计成一种引用数据类型,意味着它在内存中占据连续的空间,并且可以存储基本类型(如int、float)或引用类型(如对象...

Global site tag (gtag.js) - Google Analytics