触控科技近日发布了Cocos2d-x3.0RC版本,主打开放、原生、创新路线。作为全球三大游戏引擎之一,Cocos2d-x吸引了国内外一批优秀的开发者和游戏作品,包括《放开那三国》、《刀塔传奇》、《BadLand》、《勇者斗恶龙》、《Dragon City》、《Line Play》等。新版本的Cocos2d-x引擎在跨平台游戏开发、打造完整的工具链、包含完整开发流程方面,做了更进一步的尝试。为了更全面地了解Cocos2d-x 3.0的性能特性,《程序员》日前对触控科技副总裁、Cocos2d-x游戏引擎作者王哲进行了专访。
Cocos2d-x 3.0的性能优化
《程序员》:较之上一个版本,Cocos2d-x 3.0在哪些方面做了改进?
王哲:在Cocos2d-x 3.0中,我们着重改进一些很基础的工作,从之前发布的Alpha版本来看,大家最关心的主要围绕以下三点:性能、兼容性(尤其是Android手机的兼容性)、CPU和内存消耗。在性能方面,我们优化最好的是自动技术、当一个游戏场景大出手机屏幕很多时,引擎会自动帮你把屏幕之外的东西给剔除掉,这使大场景游戏的流畅度有2~8倍的提升。另一个是模拟合并,从技术支持的反馈来看,有50%的开发者不懂得如何使用这个功能,而在3.0中,该功能可以自己判断是否开启,并且性能已非常接近与手动调试。在提升兼容性方面,我们测试了200款Android机型,较之2.2版本的85.71%,3.0版本的兼容性达到了90.71%,而在国外,一些引擎的兼容性只能达到三分之一左右。至于CPU和内存消耗,3.0比2.2版本的启动时间缩短了25%,CPU的平均占用率也降低了36%。
《程序员》:除了性能上的优化外,在具体的功能上你们做了哪些工作?
王哲:我们首先从新的渲染器着手。Cocos2d-x的核心结构就是场景结构树,它由一个根节点延伸出许多子节点。(如图1所示)

如果根节点向右移动200个像素,它的子节点也会跟着旋转200个像素。这种设计的局限性在于,由于Draw节点和Visit节点非常紧密,要访问某个节点就必须先画这个节点,由此造成批量渲染功能难以实现。而且如果想跨平台,就需要所有节点都支持新平台。我们建立了一个新的组件,它里面有一个渲染队列,每个节点都会发布它的渲染指令,这样,我们就可以分解Draw命令,Visit访问节点,实现批量渲染,并且所有OpenGL都会集中在渲染器里,因此,实现跨平台非常容易。
第二是新的API,Cocos2d-x的代码中会看到一些Sprite C的用法,但它和C++是不同的语言,于是,我们将它改成了更符合C++程序员使用习惯的方式。例如,我们把2.0中使用的CCSprite改成了Sprite,用不同的命名空间来为Sprite命名。
《程序员》:有哪些修改和功能是来自开发者的反馈?
王哲:Critical Bug肯定是最先要解决的,此外还有平台不兼容,以及3.0中的XCode最新版本,有些开发者直接编译时挂掉了,这些问题肯定要优先解决。其他的还包括易用性,比如开发环境、Custom Draw以及Coding IDE等,这些功能都是大量开发者反馈需要的,所以我们就做出来了。
《程序员》:Cocos3d-x与Unity 3D引擎的主要区别是什么?
王哲:2D引擎发展到现在,表面上看其实都差不多,3D引擎也类似,最后拼得还是性能、效率,以及是否能用它做出比较炫的画面效果。Cocos3d-x发展到今天,至少做出了像《捕鱼达人3》这样比较炫酷的游戏,有这样一款产品来验证它。可以说,在稳定性、高性能这些方面,我们已经做的很好了,但在易用性上,说实话,差距还是挺大的,毕竟编辑器这些是Unity 3D的优势,但框架方面我们做得更好。
《程序员》:在技术实践中,有哪些团队对Cocos2d-x引擎的理解和操作堪称范例?
王哲:确实有一些,比如像《忘仙》和《君王2》,他们改掉了一些东西,比如在TextureCache里增加警戒线,达到某个警戒线就触发一个回调,在回调里面释放掉一些资源,通过这种方式来保证它的内存不会爆,不过这对于一般休闲类游戏的作用不大,我没有添加这个功能主要是不想增加引擎的复杂度。另一个是《刀塔传奇》,他们的技术人员很有意思,他们如果直接用Flash Dragon Bone格式导出,引擎可以直接解析。但他们觉得不爽,就自己写了一个Flash插件,把Flash里的骨骼动画导出到2DX里解析出来。所以,这款游戏里的动作打斗场景都是他们自己做的一套。
增强培训,与开发者共赢
《程序员》:你们与开发者通过怎样的方式进行交流?
王哲:我们的Issue System是开放的,开发者认为哪里不好,可以直接提交任务,我们每天都会有人去查看,如果某个问题提出的人多的话,我们会马上分配开发团队去做,这是一种很好的交流方式。此外,CocoaChina上有几万个帖子,我们也长期有专人维护,对二手手游账号买卖开发者提出的问题进行统计,针对高频问题我们会马上修改。
《程序员》:除了外语教材外,你们在海外推广和对海外用户的技术支持方面还有哪些举措?
王哲:在推广方面我们做的不多,只会定期公布一些用Ccocos2d-x引擎开发的热门游戏的名单。在对海外用户的支持方面,目前,Cocos2d-x的教材已包含:中、日、韩、英、西五种语言。在接触方面,应该还是跟日韩的开发者接触多一点(因为游戏风格和地理位置与中国都比较接近),比如2013年11月在韩国举办的开发者沙龙等。此外,日本有一个自发Cocos2d-x学习社区叫“知友会”,他们会定期组织一些活动。2013年12月我和林顺在参加了他们组织的线下沙龙并做分享。另外,他们还会帮我们把社区里的文档翻译成日语,以便更好地帮助本土开发者。
《程序员》:目前,你们已经与一些高校合作,使Cocos2d-x的开发作为学分课程,那么,课程的设置及合作模式是什么样的?
王哲:整个课程设置的核心围绕着Cocos系列工具,包括Cocos2d-x和CocoStudio等。但在前期调研时发现,很多学生不仅想学习知识,还非常关注行业动态、开发流程,甚至游戏运营等问题。基于此,我们共设置了9门课程,从游戏的开发概论、行业数据分析、游戏策划、美术,一直到游戏运营。每个部分按单元来划分,每个单元32个课时。另外,我们还与学校合作,建立了实训基地,让学生可以实际体验游戏开发的全过程,如果有人想创业,我们也会提供技术和资金上的支持。最后,在师资方面,目前大部分课程是由触控的工程师负责授课。我们正在加强对高校的老师的培训,帮助他们掌握最新的开发知识。

王哲:Cocos2d-x 3.0引擎带来了什么?相关推荐

  1. Cocos 引擎创始人王哲:选择和努力一样重要

    王哲有两年没写程序了.写了十几年代码的高手突然不敲代码了,这个选择让他很是痛苦过一段时间.但在程序员王哲变成 CEO 王哲的过程里,这种痛苦是不可避免的. 等他渐渐发现自己"对外工作越来越多 ...

  2. 区块链时代游戏什么样,有哪些改变?Cocos引擎创始人王哲是这么看的

    7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Cocos引擎创始人王哲表 ...

  3. 半数以上国产手游曾使用他开源的引擎:Cocos和王哲的故事 | 二叉树视频

    2007 年,苹果发布 iPhone,从此开启了移动互联网时代,人们想用智能手机玩游戏,然而传统的游戏引擎最开始瞧不起新平台,不愿意开发适配版本,时代在呼唤新的游戏引擎. 在这样的背景下,一批生而移动 ...

  4. 王哲iWeb峰会演讲:Cocos引擎不玩概念,厚积薄发助创业者把握H5游戏浪潮

    大家好,我是Cocos引擎创始人王哲.今年我对外的title改叫「首席客服」了,就是为了时刻提醒自己服务好在座的各位开发者.大家有问题可以随时在引擎论坛上找到我. 按照以前iWeb峰会的经验,在座有很 ...

  5. 开发者该如何抓住微信小游戏的风口?听Cocos创始人王哲详解(上篇)

    在微信小游戏真正爆发之前,你该做好这些基础知识储备. 微信小游戏在2017年12月28日正式上线.相对于传统的H5游戏,小游戏的优势十分明显,拥有微信庞大的用户量以及更好的兼容性,在天生适合微信社交生 ...

  6. 图文并茂使用CocosBuilder制作Cocos2D游戏 分享0

    图文并茂使用CocosBuilder制作Cocos2D游戏  分享0 目 录 The Game 设置工程 创建动画类型的主界面 本文由Zynga 工程师原创,翻译:Iven,张作宸,Butterfly ...

  7. Goby 2.0 | 引擎大升级 · DIY 指纹时代

    历时四月,全新引擎升级 Goby 2.0!久等了,福利抽奖放在最后,希望不辜负大家的等待.本次更新带来了重磅功能,支持自定义指纹(半自动化添加指纹及完全自定义指纹规则),让方便快捷与灵活自由相辅相成, ...

  8. 王哲在Facebook高管午餐会的访谈实录

    上周ChinaJoy期间,Facebook于周二(7月26日)邀请国内各家游戏合作伙伴,共聚高管午餐会.会上Facebook高管讲解了公司对游戏业务的重视.新产品和新平台战略.同时,Cocos引擎创始 ...

  9. 王哲在腾讯 GAD《论道》栏目组的视频访谈

    10 月 21 日 Cocos 「深圳站」开发者沙龙期间,王哲有幸受邀参与 GAD -腾讯游戏开发者平台<论道>栏目组的视频采访. 以下为访谈的剪辑视频. 友情提示:音量较小,请适当调整 ...

最新文章

  1. 腾讯AR开放平台今日正式开放,提供识别、追踪、展现等多项能力
  2. ST17H26 SDK中宏定义注意事项
  3. 计算机软件可分为哪三类,系统总线是什么_系统总线分为哪三类
  4. APF filter到底支持多复杂的条件
  5. python 谷歌地图api_《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档...
  6. 怎么学ui设计入门?怎样才能少走弯路?
  7. pythoninit作用_简介Python中的__init__的作用
  8. mysql可以登陆sqlyog1862_MySQL错误号码1862:your password has expired
  9. Uva_11235_Frequent values
  10. 社交系统ThinkSNS+版本的 SPA(H5)安装教程
  11. 6.2 API : RandomForestClassifier与RandomForestRegressor
  12. 详解BetterZip对压缩包注释的一些相关小功能
  13. 垃圾分类小程序 — 微信小程序源码分享
  14. dlna android电视,DLNA推送安卓手机投屏电视
  15. 在 Windows 10 中如何查看系统的激活状态?
  16. 一个屌丝程序猿的人生(四十三)
  17. 智能车浅谈——硬件篇
  18. 基于 Transformer 模型的电影评论情感分类
  19. 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料
  20. UiPress – 现代WordPress仪表板主题

热门文章

  1. 机器学习基础-多元线性回归-02
  2. 11函数的应用(函数名=变量)
  3. mysql ---- innodb-1- 体系结构、文件、表
  4. Java计算两个程序运行时间
  5. Sql Group by 使用
  6. [转]Listview的onItemClickListener无法响应的解决方法
  7. 使用sphinx搜索子域名过程中需注意的问题
  8. 使用jrtplib打包发送h264数据,关使用vlc|mplayer播放
  9. 33 | 关于 Linux 网络,你必须知道这些(上)
  10. apache站点优化——长连接