相關閱讀 |
>>> 小城故事吳儂軟語溫婉人心的力量 >>> | 簡體 傳統 |
主持人:
下面有请IM2.0高级技术经理王植萌,他演讲的题目是“Cocos2d-X与三国群殴传”。
王植萌:
尊敬的各位来宾、各位朋友大家好!我是王植萌,来自IM2.0互联集团,我今天跟大家分享的题目是“Cocos2d-X与三国群殴传”。今天我主要跟大家分享两部分内容:第一、三国群殴传简介;第二,三国群殴传项目分享。
ios三国群殴传的成绩:ios三国群殴传上市快一年了,排名中国区收费游戏总榜36位,现排名中国区收费游戏策略游戏榜第4位,最高排名中国收费游戏总榜第1位。Android三国群殴传上市五个月,Android市场的排名不断地攀升,现在排名Android市场动作类射击类游戏第8位,排名机锋市场动作类游戏第10位。
三国群殴传的启示正确的们在正确的位置上才能事半功倍——欠扁
我们在Android版正式开发之前,也利用将近两周的时间对Android上可以运行的游戏框架进行了调研,从调研结构来看就选择了Cocos2d-X,我们在调研中觉得常用的接口比较稳定,可以满足要求。我们在调研过程中,也做了HTML5版相类似的试验,只不过是在Android上进行的。MIT许可协议无协议风险,可以根据需要休假框架。接口与Cocos2d和ios应用程序生命周期有对应关系,便于移植。王哲和张小明,我一开始加入了Cocos2d-X的QQ群,他们给我非常多的支持,每当我遇到问题的时候,王大会让我复线一下,只要能复线他就会帮我解决,尽管他非常的忙。QQ群的讨论氛围非常好,不能所有问题都靠王大、小明他们来解决,我们在QQ群里面很多人的段位也非常高,我们经过互相讨论也能够解决一些技术难题。
正是因为Cocos2d-X出现在三国群殴传引擎的位置上,所以我们移植工作就显得效率提高了很多。差不多四个月完成了三国群殴传从ios版到Android版的移植工作,但是代码移植工作只用了30%的时间,另外有20%的时间用于代码重构,还有20%的时间开发了一个动画精灵模块,把原先动画表现形式做了优化。还有就是对游戏本身的优化,这个我在后面会详细的说明。还有10%的进行了附加功能点的开发,比如说分享功能、精彩活动。
开发要点:游戏数据管理、内存管理、地图、动画、游戏模块、多媒体、分享、性能优化。时间有限,我重点讲一下内存管理、动画、性能优化这几部分。成就管理和ios版几乎没有什么区别,而且比ios版简单一些,因为没有游戏中心这个东西,游戏状态管理也和ios版没有区别,都是通过MD5加密,防止用户篡改游戏加密等等。关卡这部分几乎也是一样的。在内存管理这部分,首先是由两个大部分,一是如何防止发生内存泄漏;二是解决内存泄漏的方法。我们在开发的时候,由于这个框架本身把OC里面所有的特性都涵盖了,所以我觉得要按照OC的开发规范去做,这样能够防止内存泄漏发生,如果发生了内存泄漏的话,我们做的方法是把开发放到visualstudio封装win32调试接口,明确提示并定位内存泄漏位置。框架内检查代码逻辑缺陷,可以根据指针地址,一直跟到发生泄漏为止。
地图,由于Android手机性能差别比较大,有些手机没有图形加速,也没有GPU,所以为了考虑这些手机也能够流畅的运行三国群殴传,我们把地图主要分了三大类,低端机使用单张地图背景色深16位;中端机大于320×480,比较早期的高分辨机型归为第二类,这几款机型的内存有问题,一旦元素比较多是容易发生崩溃的。层次感地图,色深16位;大于320、480分辨率(高端机),层次感地图,色深32位。
动画和粒子效果:动画编辑的改进,ios版改进之后的游戏打造是73.2mb,我们当时分析这个游戏包作为Android游戏来讲有点儿太大了,所以我们当时的初衷想缩小游戏资源,使图片资源能够更多的复用。我们的改进首先利用一个工具,首先是理念上的改变,iPhone版的三国群殴传没有module这个模块,就是由很多的frame组成了action。在Android版先组成了很多frame再组成action,这样的话程序员不用参与动画制作了,因为我在接触iPhone版源码的时候发现一个素材后面跟着一大堆的数字,这些数字分别代表它是什么,这些东西是什么级别的,它朝哪个方向做的是哪个动作的第几帧,每一个图还得根据不同的位置做不同的偏移量,这就等于是美术工作者和程序员共同完成了一个动画的制作。经过了我们的代码封装,使动画完全由美术工作者自己完成,而不需要程序员的参与。这样还有一个优点,我们实现了资源文件的压缩,压缩率大概达到了46%。
动画设计:我们动画最开始的时候,存到手机上的图片是PPT上左边上面的样子,是不同的Module,组成了不同的Frame,再组合在一起形成了action。大家可以看一下,拿这个弓箭手为例,他是属于320和480分辨率的资源图,就是把所有的frame都贴到了一个图上,大小是319倍。改进后的Android版的实现,就是把所有的frame拆分开变成了不同的module分成三张图,加起来只有172K,节约资源是46%。所以,我要提一点,Android三国群殴传是移植,但是并不是简单的复制,它也有自己的创新在里面。
游戏模块和iPhone版几乎没有什么区别,如果细心的玩家会体会到大地图的拖拽和iPhone版的感觉不太一样,iPhone版使用的是开源的控件,而Android版没有开源控件,所以Android版是我们自己实现的。
多媒体和分享采用agg格式16bit双声道压缩音频比iPhone的caf格式音频缩小80%。为了克服一下我们这个是单机游戏,存在传播渠道比较单一的问题,所以我们加入了新浪微博、人人、腾讯微博的分享,使用的是腾讯微博和人人、微博的JavasSDK。
性能的优化,经过优化之后的三国群殴传可以广泛的运用在各种320×480分辨率以上的机型上,我们在G3上可以大家每秒15帧,在G6上可以达到25帧,在G7上就可以达到30帧以上了,优化的重点第一是针对CCSprite BatchNode的组件,相关素材的刷新都放到一起。CCSprite BatchNode这个组建性能并不高,后来都去掉了,性能有了很大的提升。还有游戏的前后台切换的问题,切换前后台重新执行onSurfaceCreate()方法优化后还是偏慢,只能尽可能提高效率,框架能否考虑在后台保留这个,虽然这不是Google提倡做的。
开发中的经验。对开发人员的要求较高,这个人得懂点儿C、C++、Android、ios,所有OC的特性都要继承了过来,也需要ios的开发知识。我是从Android开发转过来的开发人员,一开始还是使用eclipse+ndk+cdt的开发模式,发现内存泄漏都很马上,后来转到Win32上面开发以后效率才有了明显的提高。还有就是对于低端手机的支持,这个做的还不是很好,最多像G3、三国群殴传这样的,最多维持在15帧左右的样子,但是从游戏玩儿家反馈的数据来看,低端玩儿家并不是占很大的比例,所以可以适当的考虑对低端玩儿家的照顾,但不用过分。尽量不要使用比较敏感的计费权限,尤其是互联网、短信的权限,像我在看一些Android市场的回复的时候,很多玩儿家留言说,为什么要短信权限,作为单机游戏要短信权限干什么,是不是你们的游戏要从后台给我发短信,是不是要扣钱。其实不是,我们只是为了满足新浪微博的一键注册功能,但是这样造成了很多误会。
游戏包尽量不要过大,如果过大的话,个别机型的安装会有问题,比如说有一次人人网的一个负责游戏市场的人就跟我说,他自己的手机安装不上,后来我专门找到跟他吃了一顿饭,才帮他用我的方法安装上,确实是有问题的。
前面说的内容都只是技术上的提高,其实游戏的成功点可能技术上只占了不大的一部分。这个游戏其实主要还是属于设计上的成功,三国群殴传体现出IM2.0公司的灵魂,创新、开放、多元、极致,体现出这么一种追求。像钟涛和泽一在技术上的把关,还有大勇和小小,在我看来就属于游戏艺术家级别一样的人物,还有不得不提的姗姗,恰到好处的游戏难度,三国群殴传的难度很多玩儿家经过努力可以三星过关的,但是它又不是特别的容易,所以在难度设计上三国群殴传做的很好,可以勾着玩儿家不停地想玩儿。三国群殴传Android上线五个月以来没有经过任何的宣传,但是它的激活量已经超过了180万,我们对这个成绩是表示满意的。
一些建议:Cocos2d-X平台的一些希望,作为Android平台来说比其他平台更开放,Cocos2d-X在仅仅的追随Cocos2d的同时,能不能在Android上设计一些更有色,集成性更高的接口。能够更好的解放一些游戏的设计人员,像大勇、小小,他们都属于游戏艺术家这个级别的了,如果能够让他们的开发更方便一些,更少的去考虑代码开发上面的问题,更多的去把精力放在游戏创意上,我觉得这样的话可能会设计出更多更好的游戏。注意对Android重大升级版本的快速兼容,在兼容问题上,Cocos2d-X要反应的更快一些,这样游戏的反应就更快了,就跟上了。对主流机型和主流衍生平台的兼容,这个有点儿困难,比如说我们在测试的时候对三星i9000、9108都进行了测试,但是没有对9100进行测试,但是没想到i9100音质这个模块就出了问题,造成了很多的崩溃,玩儿家就说9100不能玩儿,就给他半颗星走人了。希望进一步提高平台的稳定性和运行效率。
希望和祝福:无论是三国群殴传还是Cocos2d-X,都是手机游戏风行的时代给大家带来的机遇,所以还希望无论是平台还是游戏都能够把握这种瞬息万变的时代基于,再接再励创造更多的辉煌。Cocos2d-X这一年来的发展既在我的意料之外,也是情理之中的。因为就像刚才那位演讲者说的,他确实是做的太好了,我由衷的祝愿Cocos2d-X越来越好。
我其实也是一个普通Cocos2d-X的开发者,其实是非常巧合的机遇才有机会来接触游戏这个领域,而且一开始接触就接触到三国群殴传这么好的游戏,接触到Cocos2d-X这么优秀的平台,这对我来说也是很幸运的事情。另外,我今天带来了两个游戏主人公欠扁的玩偶,我准备了两个小问题,没有什么技术含量,希望大家能够回答这个问题,得到我们非常可爱的玩偶。
1、2012年iPower出品三国系列游戏叫什么名字?
提问:
怎么把动画的帧拆解成一个一个组件?
王植萌:
我们选择了一个动画编辑器具备这样的功能,把一张图片加载进来之后可以圈出不同的module,在另一个模板上生成frame,再组成action,生成资源文件,原始加上资源文件一块儿做成一个动画模块。
提问:
在Android移植的时候用到CCsprit,你能说一下原因吗?为什么用CCsprit效率反而提高了?
王植萌:
就是在美国薇薇把一个数据重新写到一个文件里,在重新写到另一个文件之前把它重新进行加密。
提问:
把每个数据写成MD5是什么效用,我们知道它是不能反向的,它起什么作用呢?
王植萌:
我们做这个可以进行解密的,没有问题,我们可以把它读出来。我说的可能不是特别明白,我们这个地方做了加密,不仅仅是MD5的加密,加密之后是有办法把它解密出来的。
姚康 2013-08-31 21:57:02
稱謂:
内容: