从页游到手游,运用Cocos2d-x与CocoStudio移植经

从页游到手游,运用Cocos2d-x与CocoStudio移植经2014 CocoaChina开发者大会策划运营分会场:从页游到手游,运用Cocos2d-x与CocoStudio移植经

              

本场演讲嘉宾是上海都玩技术总监戴宇航 戴宇航:大家好,我是上海都玩的戴宇航。刚才有人提到过我们公司,我们公司的全称叫江苏易乐,现在合并成上海都玩。今天是策划和运营分会场,

本场演讲嘉宾是上海都玩技术总监戴宇航

 

戴宇航:大家好,我是上海都玩的戴宇航。刚才有人提到过我们公司,我们公司的全称叫江苏易乐,现在合并成上海都玩。今天是策划和运营分会场,但其实我是技术,做开发的,这一次好像没有技术分会场,所以我就被安排到这儿了,我不知道在场有多少人是做技术的开发人员,我从主会场过来,从我的角度来说,主会场分享的一些东西还是很令人激动的,触控做了很多事情,会给我们带来非常大的帮助。
   
首先简单介绍一下我们公司,我们公司是一直专注于做ARPG 网络游戏的互联网公司,之前主要做页游,我们产品在很多页游平台上能够搜到,现在我们也开始做手游,大家都再说今年是ARPG年,重度手游年,所以我们也开始做ARPG的重度手游,把武尊这款产品移植到手机上。
   
从页游到手游移植过程当中的一些经验跟大家分享一下,页游转手游的市场趋势大家已经都很清楚,也不用我多重复,不知道在场有多少做过页游,想从页游转手游,或者已经转到手游的,但不论你是从端游转手游,还是从页游转手游,首先面临一个技术选型的问题,Flash AIR做页游的人大家都觉得很亲切,用FLASH家的编辑器,Flash AIR做休闲游戏和卡牌游戏比较好,但是做重度游戏不太适合用AIR去做。Uinty3D我没有怎么用过,至于它好不好用,应该是仁者见仁,智者见智。Cocos 2d-x这个等一会儿会重点讲,有的公司会选择自研引擎,但是对于公司的技术团队和技术积累要求比较高,如果没有这方面的积累,想去开发一款自研引擎还是比较困难的。
   
为什么我们选择Cocos 2d-x?在市场上有这几款游戏用Cocos 2d-x移植成功的,选择Cocos 2d-x的原因就是因为它可以让开发的过程变得更快,一是开发上手快,二是开发周期快,再加上Cocos最近出了Cocostudio,有这一套工具链的支持,所以说开发的过程会更加方便一点。
   
在页游转手游的移植开发过程当中比较常见的问题有这么几个,一是跨平台发布,这一点用Cocos 2d-x不存在问题,引擎帮助我们封装好跨平台的部分,不论是C++,还是OC通讯都没有什么问题。二是界面编辑,之前很多人说它没有界面编辑,触摸器也比较难用,但是现在也不是问题了,因为有了Cocostudio。三是多分辨率的适配,它的UI比较复杂,不同尺寸的分辨率下表现效果不是很好,但是我们可以通过用编辑器去解决这个问题。四是版本更新。
   
我先简单介绍一下我们在使用编辑器去做界面,现在看到的是游戏的主界面,这款界面首先遇到的问题就是说在不同的屏幕分辨率下,怎么让这些按纽排到相应的位置,我们把不同区域的按纽组成一个组,左上角和右上角都有一个组,把几个组排列好以后,当我们游戏启动的时候,要根据屏幕的实际可见区域去算一下可见区域的左上角、右下角这些点的实际位置,然后把这些组放到对应的位置上去,不管屏幕尺寸怎么变,这些UI都是在它该出现的地方。还有一种办法就是有一些界面布局比较固定的,我们可以看到这上面有一个白色的框,根据计算的话,设备上的分辨率,只有ipad和iphone5s这两款设备的长宽比最极端,一个是最扁,一个是最方,只要界面元素在这个白线区域范围之内,都可以把区域显示出来,所以这种界面直接布局在中间,然后再加上一张标准大小的背景图,基本就解决了这个问题。
   
还有一种是游戏类的功能二级界面,把二级界面直接用一张960×640的画布给布局好,在游戏启动的时候我们去检测游戏的实际可见区域,通过计算缩放把这张画画正好放在可见区域范围内,完整的显示出来,然后我们只要控制它这个界面是定位在左边、右边或者中间,这样界面内部的所有布局都在编辑器里面做好,我们只要关心它的功能就可以。
   
游戏的客户端设计方面,武尊项目开始的时候选择C++语言去开发,但是C++语言,Cocos 2d-x提供比较好的第三方集成,都基本满足游戏开发的大部分需求,我们通过C++去解析它的标签,加上Cocostudio的空间库,实现了副文本的排列和显示。我们还用第三方面SDK接口,统一调用游戏的接口,这样大部分渠道的接入需求都会通过这个接口,不需要改变任何游戏的代码。Socket要有一个独立的网络层,我们在手游上做了资源的动态下载,武尊的初始安装包大概是60M,这对于休闲游戏或者卡牌游戏来说是大了,但是对重度游戏来说并不算大,我们还有100多兆素材放在CDN服务器上,在游戏过程当中如果碰到需要加载的素材,就会自动向服务器请求,也是要有wifi的状态下,读和写都是放在独立工作当中去进行的。
   
内存控制也是很重要的环节,很多时候我们会遇到几十个甚至上百个玩家同名的情况,玩家的衣服、武器、特效都不太相同,需要加载大量的贴图,内存肯定会一路飙升,在考虑到我们有动态下载,素材种类还会在游戏过程当中不断增多,所以我们对内存比较敏感,我们没有采用Cocos引擎,我们自己选了一个动画渲染的流程,所有动画都是用贴图实现,保证每张贴图都是最少的引用次数,确实使用了一张贴图,我才有一次引用,这样就能控制,当贴图都不再使用的时候,我就把它释放掉了,当我需要这个贴图的时候,我去加载贴图,很快就能被加载回来,这样游戏内的内存比较可控,因为我只要关心当前场景有多少张贴图在用就可以了,不需要涉及到Cocos本身的引用数据去管理。
   
对于网络游戏来说版本更新也是大家讨论比较多的问题,C++就是一种硬编码,带来很多不变。C++代码哪怕只改动一行,你都得重新发一个包,我们一直想方设法要规避这个问题,用Cocostudio以后,UI编辑器导出的是图片素材,加上UI空间库的LUA绑定,可以去实现一部分游戏功能,这些素材通过自动更新去下载到设备当中。同样我们服务器端也大量用了LUA脚本,脚本修改可以做跟进,这样服务器端了LUA和客户端LUA结合起来,就能减少强制更新或者服务器维护的次数。但是既然游戏主体是Cocos 2d-x编写的,就无法避免强制更新的麻烦,可能有些团队自己做了基于Cocostudio引擎的LUA绑定的加强或者JS绑定的版本,但是如果是自己对引擎本身修改太多,按照触控引擎一个月发布一次版本的这种节奏,每次发布的版本都是一个很忧人的事情。
   
3.0版本的LUA,甚至可以用quick-Cocos 2d-x去做开发,这些都是可以很好的去解决这些问题,如果我的客户端全部用LUA去写,这个游戏安装包稳定的话我可以很久不去更新,有什么改动,直接把一大堆LUA更新到设备上,把这个游戏的版本都换了。LUA在效率方面做好优化的话,是非常有好处的。
   
最后再简单介绍一下我们的产品武尊,现在正在内测状态,下个月开始公测,是由触控科技发行的,如果大家有兴趣可以关注一下我们的产品。希望在2014年重度手游年,我们的产品也能在市场上占据一席之地,同时我们公司在今年来说是非常重视手游方面开发,也很希望有手游方面的人才能加入我们公司,如果有意向的可以和我取得一些联系。今天分享就到这里,谢谢大家。
   
主持人:谢谢大家的参与,本会场今天下午的演讲已经全部结束了,大家现在可以有序退场,谢谢。

你可能感兴趣的:(从页游到手游,运用Cocos2d-x与CocoStudio移植经)