- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为嘛没有android游戏引擎
随着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的?对不起,我的程序只支持Nexus One。”“什么,你竟然会用摩托罗拉?有没有搞错?我的游戏是为三星定制的!” 可您能够想象,以上对话存在于现实的Android程序或游戏开发中吗?如果不能想象,那么放弃某些机型这条游戏引擎开发之路就是走不通的。实际上,虽然Android程序员可以拥有庞大的Android阵营支持,但无论你是专做摩托罗拉,搞得HTC统统罢工,还是专做Nexus One(或者传说中的Nexus Two),搞得三星不买账,都会造成相当巨大的损失。而假如我们不追求速度,一味要求跑全机型呢?那么,在引擎设计上,就必须尽可能减少对OpenGL ES API的依赖,仅使用所有机型共同支持的那部分,以求最大限度的避免不兼容代码出现,就算——这段代码能提升100%的程序效率也不例外。 这样做的代价显而易见,势必会导致引擎速度在绝大多数环境下都无法达到峰值(因为你的程序并没有100%发挥OpenGL性能),也就是我们通常所见的“低效”问题产生。而仅仅如此,也
文档评论(0)