在周六的 Cocos 区块链游戏开发者大会上,我和 INB 资本的合伙人尹健辉一起演讲和演示了基于 Cocos 引擎开发的区块链游戏的编译、发布、运行在 Cocos 公链上的整个过程,以及游戏道具脱离游戏后在链上存储、交易、然后从链上回到游戏里,把武器挂件装备上去、以及把炸弹消耗掉的整个过程。
由于这部分演讲是用对话形式开展的,速记稿也比较凌乱毕竟太多技术干货了,所以我打算直接用这篇长文,完整阐释我们做了什么、计划做什么、以及为什么要做这些事情的整个思路逻辑。这篇文章真的很长,请耐心看完。
一、为什么我们要着手区块链游戏的研究
在和健辉一起演示区块链之前,我的个人演讲的部分,解释了为什么 Cocos 要在今天开始着手研究区块链游戏的方向。我自己讲了大概 30~40 分钟,其实核心是围绕这张图来展开的:
目前手机原生游戏领域的多数从业者,都是 2012~2014 年才进入这个领域的。但是我们 2010 年就开始做 Cocos2d-x 了,在 2010 年 12 月 1 日发布了第一个版本 Cocos2d-x 0.7.0。当时我周围的人都很不理解,为什么不做端游呢?为什么不做页游呢?当时国内的市场环境,手游上就 iOS AppStore 可以达到每月 50 万的最高月流水,还不够端游月流水的一个零头;安卓上则完全没有任何游戏变现模式,没有内购计费没有广告变现,那么你们在瞎折腾啥呢?
后来的历史,大家也都一起经历过了。这是 3 月 12 日上周一我做区块链游戏大会的 PPT 时,截取的几个国家游戏畅销榜排名,Cocos 游戏仍然占据了大多数。Cocos 引擎被喷了这么多年,事实证明,在中国市场上,仍然是市场占有率最高的手游引擎。网易的几款 3D 游戏,我们内部称为「Cocos+」,就是在 Cocos 的基础上,网易自研构造了整个 3D 引擎叠加上去。我半开玩笑地和网易的朋友说,你们大概用了 20% 的 Cocos 吧,那么就调成 20% 透明度?于是就有了下面这张图。网易的技术路线,也说明了 Cocos 在 3D 的潜力,只要我们假以时日和研发投入,希望 Cocos 引擎也能做到像《楚留香》那样级别的 3D 能力,而且不是属于某家游戏公司的,而是属于全行业的。
但是原生手游领域,在 2017 年开始就已经进入我称为「生态稳定」的状态了。「生态稳定」是中性词,说难听点是「生态凋零」,大厂占据了绝对优势地位,这个领域即使越来越赚钱,也和大多数中小 CP 和创业者没有任何关系,基金和风险投资也不再愿意投资 CP 了。在 2017 年大家看不到太多机会之后,很多人离开了游戏行业,改行去做 O2O、直播、大数据、人工智能等新兴领域了。但还是有很多和我一样,就是热爱游戏行业,一辈子只认做游戏的朋友仍在坚守。直到 2017 年 12 月 28 日微信发布小游戏,2018 年 3 月 15 日 Facebook 宣布开放 Instant Games 平台,都把 HTML5 小游戏推向了风口浪尖,大家才看到新的机会。之前有提前做 HTML5 技术布局的游戏公司,都从中获得了很大的增益。Cocos 引擎也在微信和 Facebook 首发小游戏里得到了新一轮的爆发,占据了绝对优势的市场份额。
微信小游戏在上周已经可以注册和调试了,并要求大家准备各种资质材料,相信距离完全开放、可自由发布已经不远了。Facebook Instant Games 则在发布的当天就立刻完全开放,而在平台开放后仅仅过了 7 小时,就有一家国内游戏公司用 Cocos 引擎发布上去 8 款游戏。
所以,现在回头来看,我们在 2012 年开始布局和探索 HTML5 游戏开发技术,和大家介绍用 JavaScript 语言开发游戏,是完全正确的。
今天对于 Cocos 开始探索区块链游戏的各种技术,社区论坛里有不少质疑和嘲笑的声音。但是回顾前面几年的历史,我在 2012 年开始介绍用 JavaScript 来开发原生游戏,用 JSB (JavaScript Bindings)技术打包到原生平台、而且还可以发布到 HTML5 环境的时候,当时有多少人反对、嘲笑、觉得我们不务正业呢?甚至到我们在 2016 年 3 月推出 Cocos Creator,以 JavaScript 为第一优先的开发语言时,仍然有至少 50%~60% 的开发者跳出来骂。当时很多人喷的是,Cocos 团队不务正业,我只关心我的 C++ 和 Lua,我不需要 JavaScript。今天小游戏的机会来了,你还能那么确信 Cocos 团队在几年前投入 HTML5 技术研发是不务正业吗?
我们每次在一个技术爆发、未到成熟的时候,就立刻提前布局一些新技术的研发投入,其实就是为了在老技术老平台「生态稳定」的时候,可以给诸位开发者提供「多一些选择」。回到第一张图,原生手游领域我们 2010 年开始研究,2012 年爆发;这时候我们不等原生手游发展到生态稳定的阶段,就立刻投入 HTML5 技术的研发,即使被人喷、被人认为不务正业;6 年后 HTML5 小游戏爆发证明了我们的技术前瞻性,但同时也我们不会等到 HTML5 进入生态稳定,就需要立刻布局新的技术平台了。从目前的情况来看,区块链游戏的确是一种很有潜力的新技术,值得我们去研究。
很多开发者看到这里就会问了,OK,你说服我了,我也支持 Cocos 研究新技术,但是已有的原生和 H5 引擎是否会受影响?我在这里统一答复:不受影响。因为我甚至不太想把区块链研发团队建在厦门,和引擎团队放在一起。主要原因是厦门基本就没有区块链技术高手。目前可演示的 Cocos 区块链项目几个研发人员在成都,我最终会在北京和成都中间做出一个选择,毕竟这两个城市人才比较多,目前暂时倾向于成都。但同时,厦门的 Cocos Creator / Cocos2d-x 引擎团队在春节后也大举招人。这里顺便打个广告,对自己的引擎开发技术有自信,希望一起做一个全球一流引擎、一起做一家伟大公司的朋友,可以在微信上、或者通过微信公众号联系我,我们招2D/3D/编辑器技术高手,工作地点厦门。
在周六的会上,我也展示了 Cocos Creator 2.0 的性能飙升,我们只是用了在 3D 研发上得到的部分成果,一个 2D/3D 通用的渲染器,把 Cocos 原来的底层换掉,然后就得到了这样的性能提高。Creator 2.0 目前已经出到 Alpha-5 版本了,而且这次拉了腾讯互娱的大神们进来趟坑。填完坑之后,应该在 4~5 月份,就可以发至少 beta 甚至 RC 版给大家用了。
会上我也演示了 Cocos 3D 目前的工作流,以及一款可以部分客户端 2D、部分客户端 3D 的麻将游戏。我们希望通过这种技术方案,让开发者们可以平滑过渡到 3D 方案上,甚至因为是 H5/热更新的缘故,可以做灰度发布和 A/B test。具体演示过程大家可以去看这周稍后放出的会议录像。
好了,讲完了我们为什么要进入区块链游戏领域的逻辑,以及让大家放心我们对原生/H5的投入,和 Creator 2.0 版本即将带给大家性能上质的飞跃。
下面进入区块链的内容了。
二、区块链黑话翻译
几个月前,我刚开始看区块链相关资料的时候,也是极度懵逼的。后来发现,链圈自己发明了很多行业术语,或者说「黑话」,其实和手游圈一样的。外行人看手游圈,我们也是一堆黑话比如:SDK、API、次留、七留、人均阿普(ARPU)、付费阿普(ARPPU)、LTV、CPA、CPI、CPC、填充率、CPM 和 eCPM 还讲的是完全不同的东西……。类似地,搞清楚链圈的这些术语之后就容易理解多了。
所以在我和健辉一起完成演讲之前,我坚持要求把很多链圈的行业术语「翻译」成了游戏圈的术语,当然还有一些无法翻译的,我只能在这里简单科普一下,链圈的极客们就不用看了,主要给游戏圈的 Cocos 开发者们看的:
游戏运行在区块链环境上 —— 目前阶段,一般指的是游戏接入了区块链 SDK,在金币内购和道具生成/交易/兑换的时候通过区块链 SDK 调用任一区块链节点提供的API。最理想状态是游戏绝大多数逻辑、甚至全部逻辑都由智能合约构成,完全在智能合约虚拟机中执行。
区块链虚拟机、智能合约虚拟机 —— 区块链 SDK 上绑了 JavaScript 、 Lua 脚本或 Solidity 脚本的执行环境。JSVM、Lua VM 的确是翻译成虚拟机没错。比较有意思的是,现在的区块链系统中,通常是数个节点共同执行并见证一份智能合约。
区块链浏览器 —— 这个模糊的命名是被我吐槽最久的。其实它不是一个架设在区块链上的网页浏览器,而只是网站上登录后,类似「我的账户」里面可以看到「我的交易记录」以及每次交易记录区块描述的这么一堆网页。这应该是直译 Block Chain Expoloer 的锅。区块链浏览器通常还带有合约浏览、共识过程监督、出块记录、理事会等功能,这就看具体的设计了。
Token —— Token 是一种权益证明,并不是区块链特有,例如Q币也算是一种 token,在中心化系统中也可以发行和流通。从技术上来说,区块链和 token 是可以完全分开的。区块链系统中的权益证明,能通过加密算法和分布式账本标明资产的唯一性、确定真伪、并通过共识算法进行流通。一般 token 会被通俗理解为数字币。比特币、以太币、以及在以太坊上用各种智能合约生成的数字币都叫 TToken。实际上 token 也可以用来证明你拥有某种游戏道具,比如屠龙刀、裁决的拥有权,这就是虚拟资产的持有证明了,而不是纯粹的币.
TPS —— Trade Per Second,每秒能交易多少次,这是区块链主要性能指标。比特币大概 7 TPS,以太坊 25 TPS,而石墨烯技术的链理论上可以达到 10 万~100 万 TPS 的峰值吞吐性能。
石墨烯技术和 DPOS 共识方案 —— 咱们行业多数游戏都是专制独裁式的。我游戏厂商今天要做个运营活动、发个道具,直接由游戏厂商说了算;比特币则类似全员民主投票制,稳,但是效率真是太低了;而所谓的石墨烯技术和 DPOS 共识就是类似咱们国家的民主集中制,大家先投票选出几个代表,然后由这些代表负责后续的日常投票就行了。这种方法在民主的低效和专制独裁的风险之间,取得了一个很好的平衡。Cocos 链就是采用这种技术的,否则每秒不到 30 次交易的那些公链,怎么可能支撑商业化游戏的运营呢。
更多的链圈黑话,大家自己去网上搜索学习吧。我就不多写了。
正式开始之前,我得强调一下,我们是链圈的,不是币圈的。区块链底层技术可以拿来讨论,发币炒币这种事情就不用讨论了。我本人连股票都不炒的,比特币和以太坊钱包都还没开。花那个时间不如撸代码和打游戏有意思。
有媒体或开发者用「区块链引擎」来描述发布会后的 Cocos。这样的解读是不对的,游戏引擎就是游戏引擎,我们只是可以让开发者能更方便地接入区块链 SDK 而已。这和引擎提供广告、提供统计等服务的本质是一样的,甚至和引擎支持微信小游戏平台、支持 Facebook Instant Games 平台都是类似的。Unity 的 70% 收入来自于他们自家广告平台,人家也不会称自己是「广告引擎」嘛。正确表述是,「今天 Cocos 让游戏可以通过引擎快速接入我们的区块链 SDK 了」。
Cocos 区块链项目的名字叫 Project BCX,BCX 的全称是 Block Chain Expedition。BCX 在我们内部一般读为 /biks/。Expedition —— 让我们去远征吧,很可能是像 HTML5 技术一样,三到五年的一趟远征,最后带回来给开发者多一种新平台的选择。
三、区块链游戏的四阶段发展路线设想,以及我们的对应实现方案
首先,我们认为区块链游戏的发展,会分为四个阶段:
第一阶段:使用 token 作为游戏金币的结算
这一阶段的区块链游戏使用 token 作为游戏金币产出的结算。 一些项目的数字币基于以太坊的 ERC20 标准进行制作,基于 ERC20 协议发行的 token 很容易交换和兼容可用于不同的项目和平台, Token 的持有人可以完全控制资产并且跟踪到任何地址任何数量,其流通路径可在区块链浏览器中查询。 Candy.one 的游戏平台是这一阶段的代表。会前宣传说我们会演示 Cocos 游戏接入 Candy.one 平台,其实我们在现场根本就没有演示,因为这一阶段是在是太容易了。对于引擎而言,就和接入一个微信支付宝 SDK 一样简单。
真的是很简单。我们一款已经开发好的 H5 游戏,加入 Libs 里面两个混淆过的 JS 文件,调用这个区块链 SDK 的 API,构建,搞定。什么区块链容器、区块链虚拟机,我们游戏圈的人不用理会这些概念,就是接入一个 SDK,2 天时间搞定。
这个阶段会遇到的局限是:token 是同质化的,只能用来表达积分、金币这样的纯粹一些数字,无法表达不同的道具。比如说,你在游戏里打出了第一个钻石、然后第二个钻石,就可以记录为你有 2 个钻石,这个叫「同质化」;但是如果你有了第一只以太猫、第二只以太猫,两只猫的毛色、眼睛、形态都不一样,这样你就无法在链上记录说你有「以太猫x2」了,第一只和第二只以太猫需要分开记录,这叫「非同质化」。所以我们需要立刻进入第二阶段。
第二阶段:游戏金币和道具的去中介化、去代理交易
以太坊的 ERC721 Token,就是一种「非同质」 token 的标准范例。而之前大火的「以太猫」,就是非同质 token 的代表性应用。所以,不论是游戏中的道具、装备、玩家账号,你手里有把风之力、有把蛋刀、或者裁决、,都可以用非同质 token 来表达。这个 token 代表了你对这件道具的所有权,可以脱离游戏去买卖交易。
该阶段解决了玩家之间道具脱离游戏在链上交易、甚至是不同游戏里交易的问题。由于这个过程是去中介的,理论上到达该阶段之后,玩家就不需要像 5173、交易猫这样的道具交易平台了。你不再需要把账号密码给到一个交易平台上的代理人,那个代理人起到平台信誉担保的作用,一边收了买家的钱,把钱给到你,然后再一边把装备和账号给到买家,中间赚取差价。
我们的 Project BCX 正处于这个阶段,会稍微往前一点儿有个第三阶段的雏形。周六我和 INB 资本合伙人尹健辉在演示中,重点演示了我们已实现该阶段的功能。
健辉在这个地方有个很特别的设计是,交易的「原子化」实现。虽然「付钱」和「得到道具」是两件事情、属于两笔不同的记账,但是 Project BCX 里面的规则是把这两笔记账绑定绑定到一起,成为一个「原子」,如果你付了钱没有得到道具,或者得到了道具但是付款失败,这次交易的「原子」就会整体失败、整个回撤。而区块链的去中介去代理化,就是说只有你自己能对自己的道具和金币进行操作,在原子化交易规则之下和去中心挂化挂单、撮合系统的帮助之下,你在链上的交易里,再也不需要有道具交易平台那些代理人的帮助了。
但第二阶段的缺点是,游戏运行规则仍然是在链之外的。虽然道具的产量、流通是透明的,但产出规则仍然是可以被游戏厂商暗箱操作的。今天做个运营活动,明天出个新boss,结果玩家花了大量时间、或投入大量充值购买的装备道具被快速贬值。玩家和游戏厂商的价值严重背离了。我们不少游戏人,天天想着怎么洗用户,用户又不傻,很快就跑到王者荣耀、吃鸡游戏、TapTap 等「不会被洗」的地方去了。
第三阶段:关键规则上链运行
如何才能保证我作为玩家不会被反复洗呢?不会说得到一件橙装之后,下个月的运营活动里就被快速贬值呢?我们设想了第三阶段应该实现的功能,就是比如高级道具的掉落、金币产出规则等上链运行,游戏运营方将这些关键规则在区块链上以智能合约的形式实现,在区块链浏览器的支持下,规则对玩家是公开、透明的。
之前有提到,Project BCX 稍微有了第三阶段的雏形。我们设想并实现了一个很有趣的功能,称之为「铁匠铺」。铁匠铺应该是一个由游戏运营方、游戏玩家代表共同成立的治理委员会,关键规则在治理委员会讨论投票通过后,所有关键道具都只能通过铁匠铺来生成。未经过委员会讨论通过的情况下,游戏运营方是无法单方面生成各种道具装备的。
所以:
铁匠铺是具有道具、装备制作权限的账号和一组合约
铁匠铺是独立于游戏的道具产出点
铁匠铺的道具,具有限量性或唯一性
铁匠铺由游戏厂商、玩家、玩家公会等构成的治理委员会管理
其实进一步想,这么设计之下,游戏的运营和收入方式会有很大的改动,游戏本身也会变得有趣:比如说在同样的三国世界观下,我们可以在《三国志》里面获得一把青龙偃月刀,记录到链上,然后到《真三国无双》里面割草,接着到《街机三国》里面把曹操砍了。这些游戏一开始可能是同家游戏厂商做的不同游戏,但最后有可能演变成不同游戏厂商做的不同游戏,但都接入同样的链、同样的世界观、同样的道具产出和交易规则、被一个世界观治理委员会管理。多家不同游戏厂商和玩家一起讨论、制定、公开青龙偃月刀的产出规则,而游戏运营的收入,就不能通过「洗用户」来维系了,而可能是通过提供区块链记账的算力来收取交易手续费。表面上看因为不能洗大R而短期收入降低了,但是游戏的生命周期则可能拉得很长,游戏厂商的关注点不应该是付费点设计和运营活动了,而是专注于有趣好玩的游戏内容生产,回归游戏的本质。
其实这一点我们还没完全思考得特别清晰,但直觉上这是一个正确的方向,让玩家和游戏运营方的利益一致化,实现游戏的长期运营和收入。如果我们今天不想做出一些改变,只是靠不停滚服洗玩家的话,最后玩家即使不玩你区块链游戏和铁匠铺规则,也会跑去玩那些大厂的公平竞技游戏了。
我和健辉在周六的演示里,演示了「只有铁匠铺账号才能创建道具」的功能,但对于游戏运营方和玩家、和玩家公会如何成立一个治理委员会来决定这些道具产出规则,则没有想得太明白,毕竟这已经不是技术的范畴了。
第四阶段:游戏整体上链运行
这个阶段的脑洞就比较大了。我们设想,行业的最终形态可能是游戏整体上链运行,游戏的全部逻辑代码都在链环境中执行,并由去中心化的区块链网络承载和存储数据,在这个场景下需要可信、高效、无延迟的运行容器与轻量级的节点,用于游戏的运行。但是,哈哈,目前业界尚无决定性的技术方案,大家各种链的性能和算力显然都扛不住啊。也许某天会有哪个顶尖聪明的程序员提出解决方案,这只能等了。
四、Project BCX 希望解决的问题,和技术特点
总体来讲,我们在区块链游戏方向的探索,希望能解决以下技术问题:
1、合适的区块容量和出块时间。容量太大么出块时间慢,容量太小么,怎么记录各种道具的一大堆数据。石墨烯方案的最大区块大小为 2M /块,对于记录游戏道具,这显然不够用。我们具体定多少呢,还在测,反正中间找到个平衡点。另外,我们也已经做了一些改进;
2、提供自定义数据结构存储。你这游戏是把风之力,那个游戏是把屠龙刀,每个游戏记录自家道具的数据结构肯定是不一样的,我们也不应该强求大家一样。所以块里面应该能支持自定义数据结构的存储;
3、提供带有区块链操作接口的多平台游戏运行环境。这句话翻译过来就是,区块链 SDK 应该能跨 iOS, Android, H5…… 这句基本是废话,本来就应该如此;
4、提供用户道具交易的 token 交换原子操作。这点上面已经讲解过了,因为没有中间代理商了,必须一手交钱一手交货,两个行为合并为一个原子。我们已经实现该功能;
5、去中介交易的实现和一个道具交易市场的范例。恩,这点我们也已经做完了;
6、提供完整的钱包和区块链浏览器。同上,开发完了,会上有演示;
7、支持同质和非同质 token 的跨链承兑网关。同质和非同质,前面已经讲解过了。什么叫「跨链承兑网关」呢?你看,Cocos 最早就是靠跨手机平台起家的,然后有 AnySDK 和 SDKBOX 帮助大家快速跨各种支付 SDK 广告 SDK。到了区块链游戏的时代,必然是各种公链各种币满天飞,这时候就需要引擎能帮助开发者能把游戏快速接入各种链各种币,反正多一种币的支付,就多一群玩家,玩家可不能因为他只有 a 币没有 b 币而流失;
8、二级资产的发行和交易能力。Project BCX 的设计是,CP 可以在 Cocos 公链上发行自己的二级数字币,游戏厂商或者我们前面提到的铁匠铺管委会,可以自由交易这些数字资产;
9、高速合约虚拟机。这个是和快速共识设计配套的,我们需要能快速地执行合约代码,不然玩家多了肯定扛不住。速度越快,可以上链的游戏内容就越多,对玩家利益就越有保障。
五、篇末
谢谢各位有耐心看到这里。我很久没有写过这么长的文章了,还得尽量通俗不晦涩。整体而言,Cocos 在区块链上的研究,是直奔「让玩家和游戏厂商利益一致化」「游戏厂商能专注生产好玩有趣的内容,而不是天天盘算怎么设计付费坑怎么洗用户」而去的。我前面也说过,大家天天洗用户洗大 R 的结果,就是玩家干脆跑到腾讯网易做的 MOBA、吃鸡等公平竞技游戏里去了,而这种公平竞技游戏,都需要高 DAU 堆起来的。在手机游戏流量红利结束之后,想要有 DAU 支撑,你要么得有超级流量平台、最好还是超级社交平台,要么得有大笔市场费用做投放买流量,这两件事情和大多数游戏公司已经没什么关系了。今天的 H5 小游戏,或者叫「手机页游」固然开放了新的流量获取方式,但可能两三年之后又会进入「生态稳定」的阶段,大家又必须去找新的突破口和新流量来源。今天 Cocos 投入区块链技术的研究,和我们早在 2010 年开始手游原生平台,2012 年开始 HTML5 技术一样,未雨绸缪,希望在手机页游/小游戏的流量红利结束之后,能给各位开发者提供多一种可选的方案。
最后我再强调一下,我们对区块链领域的投入研究,是和早几年的 Cocos VR 一样放在体外,并不影响 Cocos 作为游戏引擎本身的研发投入。引擎团队今年仍然在融资和扩张。应用了我们部分 3D 研发成果的 Cocos2d-x 4.0 将在 Q3 发布,将实现渲染多通道支持、2D 材质系统和 2D 光照,而且实现了下一步可适配 iOS Metal 的渲染架构;而性能大幅提升的 Cocos Creator v2.0 目前已经进展到 alpha-5 版本,计划在 Q2 发布,敬请期待。
不论是在手机原生,还是 H5 小游戏,或者在未来可能存在机会的区块链游戏上,『让游戏开发更简单』,既是对各位开发者的承诺,也是我们始终不变的愿景。