您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 开发者大会之x86架构上cocos2d-x的游戏开发与优化

2012-04-03 22:37 501 查看
本篇所有内容均转载于网易科技频道。

链接:

http://tech.163.com/12/0402/03/7U2A2PLQ000915BF.html#from=relevant

视频链接同上。


x86架构上cocos2d-x的游戏开发与优化

主持人:

欢迎大家来到今天下午的CocoaChina开发者大会暨Cocos2d-X技术研讨会的现场。欢迎下午第一位嘉宾来自intel软件工程孙卓识,他会给大家讲“X86架构上给予Cocos2d-X的游戏开发与优化”。

孙卓识:

大家下午好!

我很庆幸站在这样的台上跟各位交流,第一次站到这样的舞台上我需要简单的跟各位做一下背景介绍。我加入intel之前一直在游戏公司工作,开发过网游,在游戏开发方面稍微了解一点。大家看到,郭胜是我的同事在intel做游戏优化方面的工作,做了很多年,不过很可惜这次他没有来,由我跟大家讲这里面的内容。

第一部分,跟大家分享一下在过去一年里我们与Cocos2d-X合作的历史。

第二部分,讲一下在X86平台上如何应用Cocos2d-X游戏优化。

第三部分,我们的广告。

合作历史:2011年5月份,今天上午听陈总说,陈总是去年6月份开始联系王哲他们的,我偷笑说,幸好我们不是搞投资的,如果我们是搞投资的,陈总他们的机会就小了。去年5月份我们跟王哲正式的联系,过了三个月时间基本上完成了Cocos2d-X MeeGo的版本。过了两、三个月的时间,转到了AndroidX86的平台上,由于我们跟王哲有过第一次的配合,第二次的配合就比较顺畅了,很快添加了X86的支持。工作不是很复杂,一会儿我会讲到细节。

利用Cocos2dX86版本将捕鱼达人移植到了Android X86版本,支持之后又尝试了一下对捕鱼达人在Android X86,以及其他X86平台上的优化。

Android X86真的很简单,我们看一眼基本上就明白了,用Cocos2d-X开发AndroidX86的游戏有多么的简单,NDK使用r6b以上的版本,至于其他的都是一样的。只发布X86的NDK包,或者是其他的版本,把X86放在一起做。下面用一张图说明一下是什么样子(PPT)。这次时间有限,就简单讲一下Android X86。我们选择捕鱼达人进行优化,不是因为捕鱼达人在X86上面有什么样的性能问题,经过各种评测和验证,他们的优化做的还是不错的,我们只是想以一个真实游戏的例子来展示一下我们优化的方法和工具。在X86方面,在Android4.0版本上,大家看的可能不是很清楚,这是一个Android上的优化工具,它可以看到各种CPU、GPA、GMS等的性能指标,可以通过一些状态的开关做一些试验来对游戏的性能进行分析。下面可以看一下具体的分析,因为时间比较有限,我只能尽量的简单说明一下其中的方法。

表格上面是我们进行的各种试验的开关,下面是评测的FPS的数据。优化之后由正常的50帧变成了75帧,我们会出一个反馈报告给捕鱼达人团队。在CPU方面我们用什么样的工具、什么样的方法来改进游戏的性能。下面以Windows平台跟大家演示一下,如何分析与改进在CPU方面的性能。这个工具有些人开发过网游听过或者用过。通过这个工具可以进行评测,可以看到前两名消耗CPU是最厉害的。简单的说,我们发现了它的性能特点的两个函数,改写了新的算法,大概CPU的消耗从之前的30%左右降到了6%左右,这只是一个粗略的数据。另外一个反馈的方式是在增速率体现上,可以提升15%左右,就是说我们通过这个更改可以让游戏的增速率提升15%左右,这是一个相对的数值,绝对数值没有什么意义。

上面讲的是针对游戏部分的优化和改进,下面跟大家分享一下针对引擎部分的优化和改进。这是通过评测工具的结果,两个API各占8%左右,一共占了16%左右。通过我们的改进,优化后原来在16%左右的计算量经过优化降到了2.9%左右,增速率的提升可以到20%左右,这样的话大家就可以理解更改的效果。

所谓的优化我们到底做了什么工作?简单说,我们在引擎的代码的组循环里面的函数里面发现了尾数调用,调用的实现是通过程序可变的字节,一个编辑的算法,原来的算法是要先取所有的P,大家搞过开发的应该明白我在讲什么。也许有些人说,只要从头到尾编到最后一个就够了,我在台下我一定会问,你在讲什么,这么简单的问题难道我们不会吗?这么简单的问题你还在讲优化?

这个优化方案、优化的方法不见得大家不会,但是有一点很关键,你所知道那里会存在性能的瓶颈,定位显得很关键。开发游戏、对待优化工作的态度。之前我也是开发游戏的,早期在创业公司干过,大家知道那是什么样的情形,游戏要赶工,要赶项目周期,搞不好还有人要离职,你搞项目优化是笑话,我也知道是这样。游戏定位如果是相对比较高端高质量的话,或者说游戏引擎可以在优化方面适当的关注一下。为什么这样讲?因为我有这样的工作经历,就是因为在游戏引擎早期设计或者是在性能评测方面做的不够,导致游戏将近上线的时候做了大量优化工作,而且那个时候做优化工作的效果也不好,是很有限的。针对第一点的解决方案,工具很重要。

这个工具是分析GPA性能的工具(PPT),可以分析性能瓶颈的热点在哪里,具体哪个环节比较耗,还会分析CPU的使用情况及性能瓶颈。操作很简单,2011年的版本很简单。这个不需要源码,只要符号表就可以了,就可以方便的定位到具体的函数。支持Windows、Linux,支持IDE集成,30天免费试用,如果你感兴趣可以下载一个看一下好不好用。

intel图形性能分析器(GPA)。刚才给大家看的是其中一部分,还有其他部分的功能。刚才大家看的是系统分析器,在真机上跟主机相连可以看到CPU、GPA、接口的调用,根据实验状态分析性能瓶颈。这里有一个分析选择,如果经过分析游戏的性能瓶颈在GPA方面,可以用帧分析器来分析过程,更改时限,看一下改进的效果,另外一个如果是瓶颈方面可以用CPU分析器来分析。可以免费下载,而且可以支持Android X86,支持Android X86不是免费下载的。

刚才跟大家搞笑了一下说,下一步我们是广告。大家知道intel一直想进军移动领域方面,而且也努力了很多年,今天或者今年intel将有X86的手机上市,有联想、MOTO、中兴、欧洲,行业的竞争不仅是硬件的竞争,intel主要是以硬件为主,还有软件的竞争、应用的竞争、开发者的竞争。我们压力很大,我们也希望更多的开发者能够关注Android X86平台。由于Cocos2d-X在这方面有了支持,大家有不错的游戏也可以关注这方面,考虑一下在Android X86版本的游戏,一直到支持Android X86。具体的合作方式,大家在这方面有问题,可以负责商务的同事也在这里,大家可以找我的同事。

Ultrabook大家听的很多,我想从一个开发者的角度描述一下。它是更轻、更薄、更长的持续时间,更快的响应速度的设备,跟传统笔记本不一样的是它有触摸支持,有加速度计、GPS等感应器的支持,还有近场通信支持。有两个东西,大家可能会关心和感兴趣,它会有应用商店的支持,这样的模式大家就很容易理解。另外,大家关心的是按照公司的预期,Ultrabook的出货将会占到笔记本出货量的40%,具体的数据大家可以自己算一下。我们能做什么呢?可以回答一下,我们可以提供开发机支持、技术支持、应用工程师支持,比技术要更进一步,我们要共同的承担风险。我跟我的同事商量了一下,我们想通过这样的方法来表示一下我们的真诚,就是把我同事客户经理陈景伟,还有我的名字、邮箱、手机号都写在PPT上了,大家有兴趣可以跟我们联系。

我的内容就到这里。谢谢。

提问:

我刚才听你说把捕鱼达人移植到Android上是吗?也是使用Cocos2d吗?

孙卓识:

对。

提问:

之前我使用的时候发现每隔4秒有内存的增长你发现这个问题吗?

孙卓识:

Windows下不是产品级,只是试验的。我从王哲了解的信息是,Windows主要是开发,还没有发布。我现在手上没有这样的数据,你关心的话我可以试验一下,看在这方面有没有进展,看看是否合适把这些解决方案贡献出来。

提问:

刚才前面您提到了优化的问题,我想问一下,关于开发过程当中,优化的具体方法,比如说前面提到了优化的定位,能给一些建议吗?

孙卓识:

这个问题说实话稍微有点儿宽泛,能回答的问题很多,能不能精炼一下?

提问:

主要还是说设备。

孙卓识:

一般的优化不要盲目的优化,要有针对性的优化,要通过工具来查看你关心的CPU、内存或者是其他资源的使用情况,你发现这个使用情况对游戏的总体影响是比较关心,或者查看瓶颈,针对它做优化。优化方案有很多,时间有限,如果你感兴趣我们私下交流。

提问:

我想问一,针对优化,尤其是手机游戏,我们现在遇到很多问题,比如说有的场景不需要这么高帧率,有什么方法可以在这种场景的时候更省电呢?

孙卓识:

我刚才给大家看的工具里面,有一个性能指标,就是耗电量,你可以可能根据耗电量的情况,结合其他的性能指标做一些改进,再观察一下耗电量的变化。具体的省点,我理解有很多办法,有一个办法一定会省电,就是减少增速,在有一些地方不需要增速率很高。

提问:

是需要调整设计引擎的最大帧率?

孙卓识:

具体的游戏要根据具体的情况看。比如说纸牌游戏,也需要绚丽的动画,但是不需要那么高的速率。

提问:

如果我在游戏完成的时候需要有一些特效。

孙卓识:

这个在游戏中实现我想应该不是很复杂的事儿,或者说你肯定需要它什么时候需要增速率更高,这个你自己应该知道,这是很简单的方法。或者还可以想其他的方法,可以节省内存等等,办法有很多。

提问:

内存减少可以省电吗?

孙卓识:

这个我不确定,任何优化都需要拿数据来看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐