2013-04-13 11:12:08
CocoaChina2013(春季)开发者大会在北京国家会议中心举行。本次大会以“//It’s A Circle”为主题,旨在通过提供权威指导,联合开发者、内容提供商、运营商、渠道发行商、运营商,打造良性生态发展环境。网易移动互联网频道为你全程直播报道。
Cocos2D-X联合创始人王哲
Cocos2D-X联合创始人王哲先生在会上与大家分享Cocos2D-X在2013年发布的主要新功能包括Plugin-X和CocosHub,据其介绍在最新发布的更新版本中加入数据化处理和资源管理功能。同时在支付方面重点使用支付宝,目前Cocoa社区是每一周发布一个版本,包括CocoStudio、CocoaHTML5等等几个功能。
据王哲介绍“Cocos Hub是类似资源的集散地,在这上面现在已经有了50几个产品,如果做一个编辑器、Game、或者Plugin第三方,可以把研发产品加到这里面,用户要找资源的时候,很容易查找。目前在ARPU上面,像编辑器等等,一般都是UI为主。接下来是Plugin,Cocos Hub实际上是类似的东西,就是资源集散地,容易分享和找到别人分享的代码。”
王哲表示“2013年Cocos社区基本上是以C++和Lua和Javascript为主,HTML5为辅。在C++上面把逻辑更新和绘图放到一个线程里面提高效率,重新设计了UI框架,Plugin-X和CocosHub功能已经可以使用。同时在社区上面有150多篇的Wiki,未来将继续增加并保持更新,目前已经推出相关技术指导教材,包括中文、韩文、日文和英文版本。
以下为Cocos2D-X联合创始人王哲演讲速记:
今天很高兴跟大家分享Cocos2D-X在2013年的新功能和发展规划。
首先是国外著名的媒体PocketGamer在三周前发布了手机游戏开发商的全球50强。很幸运的是,在这50强里面有12家公司正使用Cocos2D-X引擎开发他们的产品,这些大牌公司的名字大家都很熟悉了。值得一提的是有两家中国公司上榜,成都的数字天空和北京触控科技,正好这两家都是Cocos2D-X的用户。这是在国际上的情况。
在国内的情况,这上面(PPT)的十个游戏是苹果官方公布的AppStore中国区2012年全年最挣钱的游戏,下面是我在上周五搜索的中国区畅销榜前十名。以前我们说有多少Cocos2D-X游戏在榜单上的时候,有一个框把它们框出来,但是我发现今年没法画框了,因为实在太多了,我只能很抱歉地把不是用Cocos2D-X的游戏遮盖起来。大家可以看到,无论是去年全年的收入还是上周的收入,AppStore中国区最赚钱的10个游戏有7个是用Cocos2D-X开发的。而Android上面,找你妹、保卫萝卜这些大家很熟悉的游戏也都是用Cocos2D-X做的。我不太清楚Cocos2D-X在所有开发者当中比例是怎么样的。但是在最赚钱的游戏和最赚钱的公司里面,我们全球占有量差不多是24%,而中国是70%。
接着我讲一下技术。Cocos2D-X更多的时候给人的印象只是一个图形渲染引擎,也就是左边三个框表示的。首先有一个渲染层,接下来是动画,接着还有一些场景管理。但是实际上我们在早期的版本就已经有了物理库和音频库,在2.0版本开始,我们使用了kazmath做数学库。
在最后这个版本,也就是3月21日最近这次发布的时候,我们加入了SQLite3做数据库和数据持久化处理,以及资源管理功能,这个资源管理器是怎么工作的呢?它可以在加载资源的时候设定不同的目录优先级,比如我这个游戏设置的是先加载目录二,再加载目录一;而游戏安装解压所有资源都在目录一里面,第一次运行的时候先查一下目录二,发现是空的,然后再到目录一里面把我的图片和脚本资源加载出来。
第二次运行游戏的时候发现服务器上面有更新,就把这些更新下载到目录二里面,这时候运行起来就会发现,目录二里面有资源,我就把目录二的资源装进来就行了,这就是我们所要的在线更新功能。它可以绕开应用商店的上线审核周期。
如果你发现有严重Bug要立刻更新,或者周末要上线一个新副本,就不用一个一个发包去把所有的iOS和Android的渠道都发布覆盖到,而是直接在自己服务器上发布资源升级部分,让玩家自己来我们服务器下载,动态更新。这个是在最后一个版本里面我比较喜欢的资源管理的功能。而今年我们的发展重点是脚本化编程和编辑器支持。
说到脚本化,目前cocos2d-x提供了三套不同语言的API接口:C++, Lua和Javascript。目前我们看到有些流行成功的游戏是直接用cocos2d-x C++做出来的,比如忘仙、ZENONIA5等等大型RPG都是用C++做出来的。而Lua目前是比较流行的,像我叫MT、大掌门、开心水族箱还有找你妹,都是用Lua开发的。所以如果说C++最靠谱的话,那么Lua应该算是最流行,而Javascript是最有前景。
我们去年花了很多时间做研究和推广,但在今年3月之前,只有两家国外的公司采用Javascript绑定做出游戏发布,Kingdom Island和Bingo Blast,有的发到Android和iOS,也有直接跑HTML5在网页上。
但是在今年3月之后,有一个重量级的开发者加入Javascript绑定阵营,是Zynga的Matching with Friends,这个游戏用cocos2d-html5开发完毕已经在Facebook上线,如果你现在到Facebook去玩这个游戏,可以看到他是基于cocos2d-html5的,而且现在Zynga正把这个游戏采用cocos2d-x + javascript binding方案直接移植到iOS和Android上面。
对于这三个不同编程语言,我后来还是心里有点纠结,所以就到了Cocos2D-X的社区里面做了个调查,问问大家喜欢用哪个编程语言在cocos2d-x上开发。结果最后发现C++占51%仍然是占绝对的优势,大家还是比较喜欢这种传统的开发方式;Lua和Javascript各占20%左右,两者差不多半斤八两,还有人喜欢其他语言比如Objective-C, C#, ActionScript等。
在这种情况下,虽然Javascript前景非常看好,但是喜欢Lua的人也很多,因为很多公司从端游转过来做手游,所以我们今年还会继续增强在Lua方面的工作。今年的计划,从现在开始差不多往后半年内的计划,应该是以C++为核心,Lua和Javascript并重的路线。C++上面,我们打算重构UI框架,合并到一个设计良好的UI的系统里面去,其次就是多线程,拆分update和draw到不同线程里面,这是为了利用CPU的多核来做加速。当然现在cocos2d-x已经足够快了,比其他的引擎快5到10倍左右,这个是有测试数据的。
C++的这些功能最后都会绑到Lua和Javascript上面,但是这两种脚本语言又有各自的发展目标。在Lua上面,现在单元测试例已经覆盖了90%,剩下的10%是在扩展库里面的,比如说网络、数据库存储这些还没有绑,但是在未来一到两个月里面都会绑出来。接着使用LuaJIT替换Lua官方库,脚本执行效率会提高3到5倍,最后Lua还有自己的网络库需要集成。
在Javascript上面,我们最近做了一些努力,把所有OpenGL ES 2.0函数都绑到javascript上面,也就是你在网页上用html5调用WebGL做的游戏,可以直接放到cocos2d-x + javascript binding上面直接跑,因为所有的OpenGL ES 2.0函数都会绑到Javascript上面。
对于网络访问,目前我们打算先把XMLHttpRequest这个大家最熟悉的接口实现,这样在we b和native运行的时候就不会有区别,平滑移植。最后是做方便的命令行工具。
在最后发布的版本里面,我自己写了一个新建跨平台的工程的功能,一句命令行搞定。类似地,我们去做编译、打包、部署、运行、调试,集成第三方库,这些事情其实都可以用命令行脚本实现。我们正在用python脚本实现这些命令行工具
对于我们的远期目标,最终我们希望Cocos2D-X是这样的,在Native方面,我们会把C++的功能全部绑到Javascript上面;在浏览器里面,我们可以用cocos2d-html5直接把游戏跑在浏览器里面,最终实现手机上端游和页游两个形态的跨平台。
这个架构实际上目前就是Zynga Matching with Friends正在使用的架构。可以一次写完游戏,既享受到Native生态圈的好处,又可以享受到Web HTML5生态圈的好处
讲完技术之后再讲一下我们的社区,所谓“无社区,不开源”。我们之前一直被诟病说文档不全,所以这次我们在wiki系统上做了三点大的改进。
第一点改进是,我们在2013年1月1日之后,我们开始有人专门专职为cocos2d-x和cocos2d-html5写文档。三个月过去之后,我们有累计超过150篇的文档,而且都是保持更新的。左边这张图目录太长了,密密麻麻只能列出目录的一半。右边是Tag标签云,大家可以根据上面的关键字去查找这些文档,这些文档的保持都是社区一贯的风格,全部都是英文的。
第二点改进是,在cocos2d-x.org网站上注册的任何用户都可以修改Wiki,而且存盘之后就立刻可见,跟百度百科需要审核的方式是不一样的。
第三点改进是,每篇文档下面都可以添加评论。所以你发现文档不太满意的话可以自己动手修改,如果你懒得改那么就添加评论,负责文档的同事收到邮件通知之后就会过来更新WIki。在这些Wiki上,如我们前面所说,文档都是英文的,但是如果你想看中文的话,目前我知道eoe和泰然网正在组织资源把这些文档翻译成中文的。同时我们也欢迎其他开发者社区和开发者网站翻译这些文档到任意国家语言。如果有人想翻译了出一本书的话我们也可以介绍出版社。
谈到书,今年cocos2d-x教程将会出版至少7本,如果你比较重口味,不看英文不看中文,那么今年还有两本韩文、两本日文的cocos2d-x教程出版,另外还有两本英文教程在全世界出版。
社区里面除了教程书籍以外,另一个重要部分就是编辑器的支持,我重点给大家介绍两个编辑器,首先是骨骼动画编辑器Spine,他们在kickstarter上集资的时候,使用cocos2d-x的一家德国公司HandyGames直接投资了3500美金成为top backer要求他们立刻支持cocos2d-x,实际上Spine也支持cocos2d-html5和cocos2d-iphone。这是一个骨骼动画编辑器,大家可以到Esoteric Software网站去购买Spine。这是我在今年看到最酷的一款骨骼动画编辑器,非常专业。
另外一个比较好的工具是粒子效果编辑器Particle Designer 2,相比他们第一代产品,最大的改进就是可以编辑复合的粒子效果。这两个编辑器是我今年看到的cocos2d-x独立编辑器里面最酷的。
讲编辑器就离不开我们官方的CocosBuilder。在新版本里面他增加了一个CocosPlayer,这是一个像壳一样的东西,本质上是一个app,基于cocos2d-x + javascript binding实现,可以远程链接CocosBuilder,加载资源。
你把CocosPlayer安装在手机上,它可以跟CocosBuilder连接,加载图片和脚本运行起来。你只要在CocosBuilder里面点一下发布按钮,设计好的图片和脚本资源就直接被上传到这个APP里面,在APP里面就可以直接运行游戏了。
目前只要把这个资源和脚本上传到这个CocosPlayer里面就可以跑,今天下午Ricardo Quesada会在技术场给我们演示很酷的效果。
接下来到了我们发布新功能的环节,这是我最开心的,希望大家能喜欢。这次在技术方面和社区方面我们都发布了新功能,技术方面新的产品叫Plugin-X。我们在做捕鱼达人的时候发现有大量的第三方SDK需要集成,比如支付、广告、统计、各种社交分享,这时候我们就封了一个接口自己用。对于特别是支付,不同的支付有不同的接口,我们在游戏逻辑里希望调用同一个接口。
比如说我发一个包丢到论坛上,但不知道玩家这个手机是哪一个运营商的,甚至他没有运营商,他可能是一个安卓平板没有插SIM卡,这没有关系。比如说一个安卓的平板。这时候我们应该去获取IMSI号来判断运营商情况,如果是中国移动的就调用移动游戏基地的支付SDK,如果是联通的就是联通的支付,或者是电信的就调用电信爱游戏的。
我们就设计了这么一套东西,也就是说,虽然所有第三方的SDK全世界有上千个,但是商业模式是非常有限的,所有SDK的商业模式就是支付、广告、统计、分享四种,我们根据这几种商业模式设计出来了模板。
所有的SDK总能够找到他对应的一个或者是两个协议,游戏只要把这个Plugin-X集成进来,调用针对的协议,就可以实现对第三方SDK的调用,不用关注大量SDK的差异性。
不好意思我又忍不住贴代码了。以支付为例,首先就是加载Plugin,我们比如叫IAPChinaMobile,注册的时候插件自己报告给Plugin-X的名字,当然也有其他已注册的支付插件,比如IAPChinaTelecom、IAPChinaUnicom、IAPAlipay等等。我们调用代码的时候就不需要关注差异性了。
再比如这边是一个统计的插件,实际上不同统计SDK基本上都有这么一个超时判断的API,我第一次看到这个API的时候觉得很奇怪,但最后发现有两家不同公司的统计SDK上这个API的名字一模一样。所以其实大家能够提供的功能在这个统计上面其实都是类似的,有一个统计标准接口的话对于开发者比较方便。
Plugin-X整体的架构设计是这样的,如果你是平台商,那么只需要分别用Objective-C接入iOS的plugin protocol,用Java接入的Android的plugin protocol,而不用去关心plugin-x内部怎么转换语言,你只要把Android版本的SDK接到我们Java的API,接下来plugin-x会在这个之上做转换,最后游戏就直接调C++接口就可以了。也就是说,即使你没有使用cocos2d-x引擎,照样可以使用Plugin-X。就算是单平台游戏,也可以用plugin-x的Jav a和Objective-C接口。
实际plugin-x这个设计提供了5种不同编程语言的接口:C++、Java、Objective-C、Lua、Javascript等等,不管是哪一种编程语言,都可以调用这个通用的接口,这是目前我觉得比较好的设计。有没有无法把SDK集成进去的情况?假如说我这个SDK,比如数据统计不赚钱,是烧钱的,还需要夹带广告功能,这时候怎么办呢?我们可以在一个SDK上面封装出两套protocol。
另外比如说我有一种很创新的业务,这是目前商业模式、目前 protocol里面没有的,没有这个怎么做呢?那没有关系,我们可以使用反射,最后Java和Objective-C都是有反射机制的,我们反射到这个SDK上面。
如果说你这个创新型的业务最后很多人都喜欢很流行,那么我们就为它增加一个protocol。Plugin-X是我们用了将近两年的东西,这次开放给大家用。具体到功能插件,目前我们已经做好的重点是支付,包括国内三大运营商的短代支付、支付宝和网龙91豆,后面马上出来的就是社交分享,国外的有些公司已经基本上做好了打算分享出来。
Plugin-x在3月21日的版本里面还没有,但是已经集成到Cocos2D-X的仓库里面了,所以在4月底新的版本就会有。目前Cocos2d社区是每六周发布一个版本,每个联合发布版本包括cocos2d-x, cocos2d-iphone, cocos2d-html5, CocosBuilder这四份代码。
社区方面的新功能是CocosHub,这被设计为社区资源的集散地,在这上面现在已经有了50几个产品。如果你做一个编辑器,或者做一个开源游戏,或者有一个Plugin集成了第三方库,怎么能够让cocos2d开发者知道呢?我们把这个东西称之为Hub,你可以把自己的产品加到这里面,其他用户要找资源的时候,可以到Cocos Hub上面找。这里可以分平台找、分编程语言找。
在Hub分类上面,包括编辑器、UI控件、Plugin第三方插件、还有常规的扩展。主要的就是这些分类,如果后面有需要的话我们再继续增加。很多开源软件都有自己的插件频道,CocosHub实际上也是类似的东西,就是资源集散地,容易分享和找到别人分享的代码。
综上,Cocos2d-x社区在2013年,我们基本上是以C++为主,Lua和Javascript平行发展,为HTML5爆发做好准备。在C++上面,我们是把逻辑更新和绘图拆分到两个线程里面提高运行效率,还有打算重新设计UI框架;接着是这两个新的功能,Plugin-X和CocosHub是当前立刻就能应用的。最后在社区上面我们有150多篇的Wiki,还会继续再增加,会跟最新的版本保持同步。如果你想买书看的话,中文有7本,韩语2本、日语2本、英文2本。
最后,one more thing, 隆重为大家介绍CocoStudio,这是一个集成的编辑器。下面有请张晓龙为大家展示CocoStudio。我就讲到这里,谢谢大家!