随着Android平台的不断发展,近期Android开发者数量呈现出上升势头,就连以往较为冷门的游戏开发领域也涌现出不少生力军。然而,全新的问题正摆在了初学者面前,很多他们从未遇过的问题开始浮上台面。
“找了好久也没看见合适的引擎,看来Android真的不适合游戏开发”、“我试过几个游戏引擎,感觉都不是很好,效率低、BUG不可控”,“怎么中国就没人能做个向Cocos2d那样的引擎呢?看来还得等老外做好才能跟进啊。”这并不是虚妄之谈,而是一些刚刚接触Android游戏开发者的真实意见。应该说,在有些网友的心目中,支持Android的游戏引擎虽然并不算少,却没有一款好用的游戏引擎。或者说,这些网友的疑问在于,世上怎么就没有一款能像 iPhone下的Cocos2d-iPhone那样好用又免费的Android游戏引擎存在呢?
实事求的讲,用Android进行游戏开发,确实还存在不少问题,目前大多数Android游戏引擎的功能,也确实不尽人意(至少不能直接拖拽出游戏来……)。但是,又有多少人真正考虑过,为什么会出现这种现象,为什么会出现这种问题?难道真是Android性能不够,程序员水平不够吗?
其实,真正影响到Android游戏引擎开发的问题,远没有表面上看到的那么复杂,仔细说来,也无非是个“多平台兼容”的问题。
没错,在Android游戏开发的道路上,性能不是问题,兼容才是问题,程序不是问题,环境才是问题,开发出多么优秀的游戏引擎都不是问题,怎么才能让这款游戏引擎在任何情况下都显得优秀才是问题。
当我们进行单一手机品牌下的游戏引擎开发时——比如iPhone,只要兼容iPhone系列就已足够,甚至更进一步,仅仅专注iPhone4也不打紧,毕竟现今用iPhone者大多“不怕雷劈”,去年的市场宠儿iPhone3应该早被他们弃如敝屣的换成了iPhone4。应该说,iPhone游戏引擎乃至游戏的制作团队,可以将全部精力与时间都投入到效率与功能的完善上,而完全不必理会所谓的平台兼容问题。
可当你为Android平台设计游戏引擎,开发Android游戏时,事情恐怕就没有那么简单。
我们都知道,在OpenGL对于Linux来说,是一种非常高效的图形编程接口,而Android内核又基于Linux开发,如果想要提高基于Linux 开游戏引擎的性能,那么使用针对手机环境的OpenGL ES无疑会是最好的选择。(当然,也有某些人出于种种原因使用Android2D)
然而,相较于iPhone平台,Android平台并不固定于某款或某几款智能手机之上,由于众多厂商的参与,使他在拥有相当庞杂的手机机型的同时,也面临着非常庞杂的多机型兼容挑战,虽然Dalvik虚拟机足够强大,强大到足以抹杀大部分的环境差异。可惜的是,我们视为手机游戏引擎性能保证的 OpenGL ES,却并不在此列,毕竟无论你的软件平台再怎么强大,却始终也无法跨越硬件的藩篱。即便OpenGL一直标榜自己独立于硬件,可假如硬件对OpenGL 的支持不足,那么OpenGL也依旧无法满功率的运算起来(某些古老Android机型,甚至还存在着浮点运算屏障|||……)。这意味着,如果 Android引擎一味去追求最佳效率,就必须要放弃引擎在某些机型上的运行可能性。否则,某些平台上的“良方”,就会立即变成另外一些平台上的“毒药”。
——我知道有网友做过Cocos2d-iPhone的Android移植,假如能看到这里,大约可以会心一笑吧?
而如果我们不管不顾,一味要让Android在某些平台达到最佳性能,而放弃另外一些平台呢?这样做的代价,就是您必须同持有某些Android机型的用户说拜拜。
“什么,你是使用HTC的?对不起,我的程序只支持Next One。”
“什么,你竟然会用摩托罗拉?有没有搞错?我的游戏是为三星定制的!”
可您能够想象,以上对话存在于现实的Android程序或游戏开发中吗?
如果不能想象,那么放弃某些机型这条游戏引擎开发之路就是走不通的。实际上,虽然Android程序员可以拥有庞大的Android阵营支持,但无论你是专做摩托罗拉,搞得HTC统统罢-工,还是专做Next One(或者传说中的Next Two),搞得三星不买账,都会造成相当巨大的损失。
而假如我们不追求速度,一味要求跑全机型呢?那么,在引擎设计上,就必须尽可能减少对OpenGL ES API的依赖,仅使用所有机型共同支持的那部分,以求最大限度的避免不兼容代码出现,就算——这段代码能提升100%的程序效率也不例外。
这样做的代价显而易见,势必会导致引擎速度在绝大多数环境下都无法达到峰值(因为你的程序并没有100%发挥OpenGL性能),也就是我们通常所见的“低效”问题产生。
而仅仅如此,也还不是最糟糕的情况,真正最糟的情况是,你的引擎跑在某款对OpenGL极不友好的手机环境中(大多数Android手机为了系统的稳定性,对于OpenGL性能存在有某种程度的限制,这种限制其实比较普遍,仅仅是程度不同罢了),一名用户气愤的告诉你,你的烂游戏在他手里连10FPS都跑不到,而你却只能眼泪汪汪的看着手中数款机器跑出了50FPS以上的佳绩。
jME-Android的难产,以及Rokon的夭折,除了各自遇到的困境以外,恐怕始终和Android这让人又爱又恨的OpenGL机能割舍不开。
为什么会产生这种原因?难道是Google的设计出了问题吗?其实,归结产生这种问题的症结,并不是软件或硬件的设计问题,而在于Android那无限近似于白送的系统授权政策。
Google“量化宽松”的Android营销策略,固然能快速占领市场,建立Android智能机霸主地位;但是,却也必然会造成分支平台过多,付出广大Android手机厂商容易向中低端用户群靠拢的代价(系统授权近乎零成本,导致中等收益即可满足高盈利需求);而中低端用户的消费能力,又反过来限制了手机厂商的手机成本价格;在这近似于“沃洛波罗斯轮回”的怪圈影响下,想要制作出一款即能够100%发挥OpenGL ES性能,又可兼容所有Android机型,极少甚至永不出现“BUG”的游戏引擎,几乎是和让中国队去赢得世界杯冠军同样困难——至少,在最近一年内是看不到的。因为位置最低的那块木板,一定会决定位置最高那块木板的命运,短板效应的悲剧,几乎无可避免的成了阻碍Android游戏引擎开发的拦路虎。
可是,如果Google干掉这头“拦路老虎”,也就是改变Android的授权策略,强制厂商向高端机迈进呢?此刻,假如那样做,又极可能因为突然抬高的生产成本,引发Android阵营崩溃,让本来欣欣向荣的Android横死街头——所谓“鱼与熊掌不可兼得”,大概就是这种情况了。
我们又有什么办法彻底解决这种兼容性问题吗?难道我们就只能在这种兼容困局中消磨生命吗?答案,其实是有的,而且非常简单,那就是——等待。
没错,在目前这种情况下,即便您有多么的不高兴,即便您对Android游戏引擎现状有多么的不满意,即便您嗲声嗲气地高叫:“兼容什么的最讨厌了!”。也务必请您保持耐心,静候围绕Android这个“木桶”的“木板们”逐渐长大,以及成长中的Anroid游戏引擎逐渐完善,虽然“各机型完美兼容”的结果未必就会出现,但随着Android软硬件的不断发展,“各机型近乎完美兼容”的时候,毕竟还是离我们越来越近了。
我们都知道,老故事中说出“早知道第七张饼才吃饱,就不该吃那前六张饼了”的人是个傻瓜蛋,可那些说出“吃了一张饼都没饱,后面六张饼也不必吃了”的家伙,却也未见得就是个聪明人。
毕竟有些事情,不是急出来,扯出来,而是干出来,闯出来的。
分享到:
相关推荐
Android OpenGL 游戏引擎 Android OpenGL 游戏引擎 Android OpenGL 游戏引擎 Android OpenGL 游戏引擎
AndroidGameEngine Android游戏引擎 Android游戏引擎 AndroidGameEngine Android游戏引擎 Android游戏引擎 AndroidGameEngine Android游戏引擎 Android游戏引擎
android 下的游戏引擎demo工程源码
Android游戏引擎源码下载,整体的完整架构,适合所有游戏开发者
android游戏开发引擎Cocos2D
这一篇对于8款开源的android游戏引擎的介绍文档。
Android游戏引擎 里面是个eclipse工程 倒入之后进行相关配置 即可调试运行 游戏逻辑采用lua 编写lua代码即可作游戏 游戏函数调用请查看源代码 hyperbolic类 顺便一提 lua代码支持中文 英文差的朋友别担心哦 有不懂的...
android 游戏引擎 rokon 源代码
Android简单游戏引擎Android简单游戏引擎Android简单游戏引擎
Android 游戏开源引擎,关注Android 游戏开发的童鞋有福啦。
Android 2D游戏引擎AndEngine快速入门教程
android 游戏引擎Rokon实例教程
Android下八款开源游戏引擎.
android 游戏引擎 jbox2d 物理引擎 android 游戏引擎 jbox2d 物理引擎
每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java...
LTLite Engine 是一个基于OpenGL ES的轻量级2D/3D游戏引擎,用C/C++实现, Android游戏开发者可以在windows下用cygwin+NDK+SDK环境,采用C++/C代码编写出的游戏运行效率高,引擎包含2D/3D的库,既可以单独使用2D库也...
最新android游戏引擎jpct-ae
Android开源游戏引擎Angle的源代码, 自我感觉还不错, 类库结构简单, 适合学习。
最新android游戏引擎andEngine 源码 级及丰富的示例,nicolasgramlichAndEngineExample.rar。源码和实例都整合到一起了。非常不错