Cocos开发者会今日在北京国际会议中心正式举行,触控科技副总裁王哲在本次大会上发表了主题为《变革:以内容、生产为核心》的演讲,以下为演讲实录。
这次我演讲的主题是以内容、生产为核心,我们今天其实做渠道的机会也不是太多了,所以在座各位的创业者、各家公司,其实我也发现安静做产品,靠产品实力说话,在市场上能够获得最丰厚的回报。那么在演讲开始之前,我讲两个小的故事,可能很多人知道我在自己的书架上会收集各种语言的电子书,这次我上亚马逊看了一下,我收藏之外的英文书又有8本,国外书很贵要478美金,也就是两千多块钱,我想等下个月发工资我就可以买了,接着还发现有几本书是我买不了的,日本的书,目前为止这些书买下来两排的书架就满了,非常感谢这个社区大量的开发者很多人帮我们传播Cocos的技术,第二个故事是在主持大会的时候我们收到了一封邮件,是平顶山一位老师发过来的,不知道周老师的学生坐在哪里?周老师你好。我看到这封邮件的时候比较感动,我们每个人报名来大会只要一点就可以了,但是学校需要触控科技的公章才能证明我是带着学生来北京参加会议,所以公司内部加紧流程处理,我们非常感动有这样的支持者,在学校里面。
两个故事以后,是我每次大会一定讲的,今年开大会前一天刚好运气比较给力,我看了一下中日韩三个国家的TOP都是用Cocos开发的游戏,日本第一名是“怪物弹珠”,其实我在整理畅销版游戏的时候觉得挺心寒的,网易、腾讯、一直是这样的,新的创业者没有什么创业机会,所以我就整理了Cocos独立游戏,最后发现这些小成本制作的独立游戏,我们不跟大厂拼美术、核心玩法、创新,仍然有很好的机会,像火柴联盟安卓版的一年的收入就有几千万,制作人叫鬼人,他这个公司差不多十几个人,他也不需要扩张很大,仍然做自己很喜欢的游戏,光OS一个月流水就几千万,剩下的也是几个比较成功的游戏,万物生长这些都在苹果专门的独立游戏频道里面推荐,今天下午在原生游戏场我们特别邀请了卢先生还有几个人过来分享独立游戏制作的经验,也许对大家重新的创业和小成本高收益的方案有所帮助。
所以经常在开发觉得很难的时候,特别是在Cocos的框架里面我要加3D、VR,我要做编辑器的提升,这个时候觉得非常难,因为我只要把东西加进去,楼可能会塌,大家会抱怨不兼容,但是很难的时候我经常会想这个事情不光只是一个企业的事情,是一个社会责任,因为我们背后有十万的Cocos开发者,包含从写书的各位作者、出版社还有高校的老师和学生,以及榜首的游戏独立游戏,每当想到这些事情的时候我就会有很强的责任感坚持完善引擎。
最后过去的这一年时间里面,我计算了一下从去年的春季开发者大会到今年的,我们总共发了六个版本,3.1版今年在网站上下不到,测试流程已经完善了,平均速度两个月发一个版本,总的解决了六百多个所有代码解决问题,不算星期天一年365天,平均一天2个,大家最后表面上看到的能想象到的可能主要是关注主要的亮点功能以及核心功能上,但实际上大量的工作大家可以发现,在Bug FIX上,你可以感受到它的好处,但是不会明显的看到,还有REFINE上,今年面临很多挑战的时候我们需要有一些变革,我起的大会主题叫挑战与变革,H5市场是有机会的,VR市场是有机会的,所以我后面的内容会分成三块,一个是工具升级,商业服务,第三个是CocosVR。
首先讲引擎升级,在前面一年半左右的时间,我们一直投入对3D的研发,非常多人质疑说Cocos以2D的基础到底支持3D什么样的程度,我们现在以案例说明,2012年非常成功的游戏神仙道2016年 3D重制版。
最后一个是脚本内存的改进,我觉得之前的内存模型非常大的阻碍了更多的脚本程序员进入社区,因为在脚本里面需要对关注内存,这是一个非常匪夷所思的事情。这个改造我们今天的版本终于完成了。游戏基本上分为三个部分,第一个是核心战斗,独立游戏需要靠核心战斗的核心玩法有所创新才能胜出,第二个是UI,也就是大家对战系统的时候我需要强化开光,全部都是UI,UI会有一个专门的章节讲。
最后是工具的升级,引擎工具升级在于工具本身的升级,因为其实我们自己知道Cocos 产品是市面上负面评价非常高的产品,我们非常愧疚,所以我们今年其实推出了一个新的编辑器,Cocos Creator试图解决以前所有的问题,包括排版等等,这个编辑器是高度扩展的,我们自己开发每个功能的时候严格遵循编辑器的插件开放体系,每个功能都是一个插件,这个插件系统开放出来给开发者用,你可以自己定义自己的工作流。
再一个是大家呼声很高的,等一下王楠会演示这个功能,我们春节发布的内测版本是0.7第一个公测版本,今天我们想发布Creator1.0版本。也就是我经常在想如果让我重新做一次引擎我肯定会避免之前很多的设计,比如我一开始就用组件就用脚本驱动,我需要数据驱动,一开始就要把引擎的框架和编辑器紧密结合,模块按照功能去分的等等,所有的愿望其实我都付诸在Creator这个产品上面,下面有请王楠也是游戏策划给大家演示一下。
大家好,我是Cocos Creator的制作人王楠,今天我会用一个非常简单的游戏给大家展示工作流程。我没有击中敌人会被敌人反击,左边是我的比分,右边是敌人的比分,这次我就成功了,这个游戏可以一直不断的玩下去,大家可以看到,这个里面有UI的动态效果,还有比较细腻的攻击动画的表现,这些实际上都是用我们内置的UI功能和动画编辑器制作的,没有写一行代码在上面,我现在给大家看一下关于UI和动画的制作我下午在原生游戏和H5游戏的专场上会进行详细的介绍,我现在给大家展现一下组件化的工作流程当中我们如何为游戏添加一个新的功能,刚才不管是我打中敌人还是敌人打中我都没有明确的指示谁赢了,我们现在加一个文字我通过组件的形式为文字加入展示战斗结果的功能,我现在已经添加的文字,大家可以看到先把这个文字大小调大一点,我这边改了属性文字就会直接更新,然后有两种方式为文字添加组件,选择菜单选择我已经写好的脚本,或者从资源管理器里面直接把脚本文件拖上去,现在看一下拖上去的脚本做了什么事情,这个脚本里面非常简单,我声明了三个属性,显示标题的文字和失败时候的文字,可以看到脚本拖到节点上以后就会显示属性来,这些属性具体的赋值就可以和程序员没有任何关系了,我们拿到组件以后直接在编辑器里面修改了,也可以看到程序里面三个值都是空的,因为是默认值,最后内容和数据的决定权是在专业的内容生产者手上,我们现在就输入一下,游戏的名字就叫做达达,赢了就显示你赢了,我确认以后就需要把刚刚做的节点绑定到游戏的主逻辑上,把刚刚的文字节点拖到预留的文字属性上,现在我点击运行就可以看到游戏的标题,不管是赢了还是输了都会直接显示刚刚输入的文字,另外一个组件化提升开发效率的例子就是假如我现在希望降低游戏难度,以前我们在Cocos 里面这种游戏性的调整都是需要程序员改变的,现在由于已经把相关的这些参数设置全部暴露出了属性,我只要调整属性值就可以了,这边关系到我命中区域范围的属性,这里本来设置的0.1的大小,我觉得太难了,我调成0.25就是四分之一的大小,现在我们再试一下。可以看到现在进度条的有效判定区域变得非常大,我现在就能非常容易的命中了,也就是这个过程整个都不需要程序员进行参与,完全由策划自己调整就可以了,制作一些动作游戏尤其是手感要求非常高的时候非常关键,就需要你调完数值以后马上自己做测试,十秒钟一次的频率就能作出手感更好的游戏。
下面我们来看一下之前大家要求的很多原生平台的代码调试的功能,我现在打开的是(VSCode)这个IDE,我们找到我们游戏里面最关键的一个位置就是按下按钮以后判定的代码,我每次按下按钮进度条到底在什么数值我就在里面打一个断点,先把这个模拟器开起来,然后在IDE里面选择Cocos Creator的模式,开启调试,再回到模拟器,这个时候如果点击按钮,这里的断点就会生效,就用这个功能精确的定位到你需要的位置,我这里已经执行过获取进度条数值的操作以后,大家就可以在左上角变量栏里面看到这个数值,看看是否命中,查看当前坏境下的变量值,我们选择step into就可以进入到负责切换显示游戏结果文字的这部分逻辑,我们随时还可以点击跳回到这里,这就是原生平台调试的流程。
接下来我们再看一下外围平台,我们只要在这里选择是用原生平台的模拟器还是外部平台的浏览器就可以在你希望的平台上预览游戏。选择浏览器以后就可以在我们桌面的浏览器上面看到这个游戏,也可以随时的切换分辨率模拟,在手机平台上的视图,可以看到不管我怎么切换,这些UI都能自动适配,我在下午的专场会有比较详细的解释,平台的调试我们使用的是浏览器内部的开发工具,我们也是在同样的位置打一个断点开始玩,可以看到这里的调试流程其实跟刚才那个原生一样的,也可以单步调试,每一个变量都可以随时查看值。接下来我要展示一下Cocos Creator里面一次开发多平台发布的流程,我们选择项目里面的构建发布面板就可以打开发布的菜单,现在一切发布的流程也都是图形化的,我们看看发布平台里面现在支持的平台有外部的移动端和桌面端两个板块,Cocos 加速引擎、安卓、IOS,如果你的操作系统是Windows,有了原生工程以后你有两种选择,你可以点击编辑器,在里面自动的进行编辑,或者你可以打开原生的工程,用你们之前熟悉的方式IDE手动的完成编辑和打包的流程。编辑好了以后可以点击运行,稍等片刻就会有桌面的程序跳出来。这里有一个自己写的插件,负责Ecxel,我点击浏览文件就可以选择我要导的表格的文件,这里指定一个文件名,我点击就会在控制台里面输出说已经导成功了,这份文件会出现在我们项目文件夹下,这就是我们刚刚导入的文件,由于我之前已经预留好了这部分的代码,大家可以看到排行榜已经显示出来了,我随时看那边更新表格我只需要重新导入一次,数据就会更新非常方便,这只是我们插件系统能做的冰山一角,我会不断的把更多的API开放给大家,大家可以做各种场景的插件或者处理数据插件,都可以通过这种方式处理。
我今天的演示就到这里,谢谢大家。