一、为什么我们要着手区块链游戏的研究
在和健辉一起演示区块链之前,我的个人演讲的部分,解释了为什么Cocos要在今天开始着手研究区块链游戏的方向。我自己讲了大概30~40分钟,其实核心是围绕这张图来展开的:
后来的历史,大家也都一起经历过了。这是3月12日上周一我做区块链游戏大会的PPT时,截取的几个国家游戏畅销榜排名,Cocos游戏仍然占据了大多数。Cocos引擎被喷了这么多年,事实证明,在中国市场上,仍然是市场占有率最高的手游引擎。网易的几款3D游戏,我们内部称为「Cocos+」,就是在Cocos的基础上,网易自研构造了整个3D引擎叠加上去。我半开玩笑地和网易的朋友说,你们大概用了20%的Cocos吧,那么就调成20%透明度?于是就有了下面这张图。网易的技术路线,也说明了Cocos在3D的潜力,只要我们假以时日和研发投入,希望Cocos引擎也能做到像《楚留香》那样级别的3D能力,而且不是属于某家游戏公司的,而是属于全行业的。
所以,现在回头来看,我们在2012年开始布局和探索HTML5游戏开发技术,和大家介绍用JavaScript语言开发游戏,是完全正确的。
今天对于Cocos开始探索区块链游戏的各种技术,社区论坛里有不少质疑和嘲笑的声音。但是回顾前面几年的历史,我在2012年开始介绍用JavaScript来开发原生游戏,用JSB(JavaScriptBindings)技术打包到原生平台、而且还可以发布到HTML5环境的时候,当时有多少人反对、嘲笑、觉得我们不务正业呢?甚至到我们在2016年3月推出CocosCreator,以JavaScript为第一优先的开发语言时,仍然有至少50%~60%的开发者跳出来骂。当时很多人喷的是,Cocos团队不务正业,我只关心我的C++和Lua,我不需要JavaScript。今天小游戏的机会来了,你还能那么确信Cocos团队在几年前投入HTML5技术研发是不务正业吗?
我们每次在一个技术爆发、未到成熟的时候,就立刻提前布局一些新技术的研发投入,其实就是为了在老技术老平台「生态稳定」的时候,可以给诸位开发者提供「多一些选择」。回到第一张图,原生手游领域我们2010年开始研究,2012年爆发;这时候我们不等原生手游发展到生态稳定的阶段,就立刻投入HTML5技术的研发,即使被人喷、被人认为不务正业;6年后HTML5小游戏爆发证明了我们的技术前瞻性,但同时也我们不会等到HTML5进入生态稳定,就需要立刻布局新的技术平台了。从目前的情况来看,区块链游戏的确是一种很有潜力的新技术,值得我们去研究。
在周六的会上,我也展示了CocosCreator2.0的性能飙升,我们只是用了在3D研发上得到的部分成果,一个2D/3D通用的渲染器,把Cocos原来的底层换掉,然后就得到了这样的性能提高。Creator2.0目前已经出到Alpha-5版本了,而且这次拉了腾讯互娱的大神们进来趟坑。填完坑之后,应该在4~5月份,就可以发至少beta甚至RC版给大家用了。
会上我也演示了Cocos3D目前的工作流,以及一款可以部分客户端2D、部分客户端3D的麻将游戏。我们希望通过这种技术方案,让开发者们可以平滑过渡到3D方案上,甚至因为是H5/热更新的缘故,可以做灰度发布和A/Btest。具体演示过程大家可以去看这周稍后放出的会议录像。
好了,讲完了我们为什么要进入区块链游戏领域的逻辑,以及让大家放心我们对原生/H5的投入,和Creator2.0版本即将带给大家性能上质的飞跃。
下面进入区块链的内容了。
二、区块链黑话翻译
所以在我和健辉一起完成演讲之前,我坚持要求把很多链圈的行业术语「翻译」成了游戏圈的术语,当然还有一些无法翻译的,我只能在这里简单科普一下,链圈的极客们就不用看了,主要给游戏圈的Cocos开发者们看的:
游戏运行在区块链环境上——目前阶段,一般指的是游戏接入了区块链SDK,在金币内购和道具生成/交易/兑换的时候通过区块链SDK调用任一区块链节点提供的API。最理想状态是游戏绝大多数逻辑、甚至全部逻辑都由智能合约构成,完全在智能合约虚拟机中执行。
区块链虚拟机、智能合约虚拟机——区块链SDK上绑了JavaScript、Lua脚本或Solidity脚本的执行环境。JSVM、LuaVM的确是翻译成虚拟机没错。比较有意思的是,现在的区块链系统中,通常是数个节点共同执行并见证一份智能合约。
Token——Token是一种权益证明,并不是区块链特有,例如Q币也算是一种token,在中心化系统中也可以发行和流通。从技术上来说,区块链和token是可以完全分开的。区块链系统中的权益证明,能通过加密算法和分布式账本标明资产的唯一性、确定真伪、并通过共识算法进行流通。一般token会被通俗理解为数字币。比特币、以太币、以及在以太坊上用各种智能合约生成的数字币都叫TToken。实际上token也可以用来证明你拥有某种游戏道具,比如屠龙刀、裁决的拥有权,这就是虚拟资产的持有证明了,而不是纯粹的币。
TPS——TradePerSecond,每秒能交易多少次,这是区块链主要性能指标。比特币大概7TPS,以太坊25TPS,而石墨烯技术的链理论上可以达到10万~100万TPS的峰值吞吐性能。
石墨烯技术和DPOS共识方案——咱们行业多数游戏都是专制独裁式的。我游戏厂商今天要做个运营活动、发个道具,直接由游戏厂商说了算;比特币则类似全员民主投票制,稳,但是效率真是太低了;而所谓的石墨烯技术和DPOS共识就是类似咱们国家的民主集中制,大家先投票选出几个代表,然后由这些代表负责后续的日常投票就行了。这种方法在民主的低效和专制独裁的风险之间,取得了一个很好的平衡。Cocos链就是采用这种技术的,否则每秒不到30次交易的那些公链,怎么可能支撑商业化游戏的运营呢。
更多的链圈黑话,大家自己去网上搜索学习吧。我就不多写了。
Cocos区块链项目的名字叫ProjectBCX,BCX的全称是BlockChainExpedition。BCX在我们内部一般读为/biks/。Expedition——让我们去远征吧,很可能是像HTML5技术一样,三到五年的一趟远征,最后带回来给开发者多一种新平台的选择。
三、区块链游戏的四阶段发展路线设想,以及我们的对应实现方案
首先,我们认为区块链游戏的发展,会分为四个阶段:
第一阶段:使用token作为游戏金币的结算
这个阶段会遇到的局限是:token是同质化的,只能用来表达积分、金币这样的纯粹一些数字,无法表达不同的道具。比如说,你在游戏里打出了第一个钻石、然后第二个钻石,就可以记录为你有2个钻石,这个叫「同质化」;但是如果你有了第一只以太猫、第二只以太猫,两只猫的毛色、眼睛、形态都不一样,这样你就无法在链上记录说你有「以太猫x2」了,第一只和第二只以太猫需要分开记录,这叫「非同质化」。所以我们需要立刻进入第二阶段。
第二阶段:游戏金币和道具的去中介化、去代理交易
以太坊的ERC721Token,就是一种「非同质」token的标准范例。而之前大火的「以太猫」,就是非同质token的代表性应用。所以,不论是游戏中的道具、装备、玩家账号,你手里有把风之力、有把蛋刀、或者裁决、,都可以用非同质token来表达。这个token代表了你对这件道具的所有权,可以脱离游戏去买卖交易。
该阶段解决了玩家之间道具脱离游戏在链上交易、甚至是不同游戏里交易的问题。由于这个过程是去中介的,理论上到达该阶段之后,玩家就不需要像5173、交易猫这样的道具交易平台了。你不再需要把账号密码给到一个交易平台上的代理人,那个代理人起到平台信誉担保的作用,一边收了买家的钱,把钱给到你,然后再一边把装备和账号给到买家,中间赚取差价。
我们的ProjectBCX正处于这个阶段,会稍微往前一点儿有个第三阶段的雏形。周六我和INB资本合伙人尹健辉在演示中,重点演示了我们已实现该阶段的功能。
健辉在这个地方有个很特别的设计是,交易的「原子化」实现。虽然「付钱」和「得到道具」是两件事情、属于两笔不同的记账,但是ProjectBCX里面的规则是把这两笔记账绑定绑定到一起,成为一个「原子」,如果你付了钱没有得到道具,或者得到了道具但是付款失败,这次交易的「原子」就会整体失败、整个回撤。而区块链的去中介去代理化,就是说只有你自己能对自己的道具和金币进行操作,在原子化交易规则之下和去中心挂化挂单、撮合系统的帮助之下,你在链上的交易里,再也不需要有道具交易平台那些代理人的帮助了。
第三阶段:关键规则上链运行
如何才能保证我作为玩家不会被反复洗呢?不会说得到一件橙装之后,下个月的运营活动里就被快速贬值呢?我们设想了第三阶段应该实现的功能,就是比如高级道具的掉落、金币产出规则等上链运行,游戏运营方将这些关键规则在区块链上以智能合约的形式实现,在区块链浏览器的支持下,规则对玩家是公开、透明的。
之前有提到,ProjectBCX稍微有了第三阶段的雏形。我们设想并实现了一个很有趣的功能,称之为「铁匠铺」。铁匠铺应该是一个由游戏运营方、游戏玩家代表共同成立的治理委员会,关键规则在治理委员会讨论投票通过后,所有关键道具都只能通过铁匠铺来生成。未经过委员会讨论通过的情况下,游戏运营方是无法单方面生成各种道具装备的。
所以:
铁匠铺是具有道具、装备制作权限的账号和一组合约
铁匠铺是独立于游戏的道具产出点
铁匠铺的道具,具有限量性或唯一性
铁匠铺由游戏厂商、玩家、玩家公会等构成的治理委员会管理
其实这一点我们还没完全思考得特别清晰,但直觉上这是一个正确的方向,让玩家和游戏运营方的利益一致化,实现游戏的长期运营和收入。如果我们今天不想做出一些改变,只是靠不停滚服洗玩家的话,最后玩家即使不玩你区块链游戏和铁匠铺规则,也会跑去玩那些大厂的公平竞技游戏了。
我和健辉在周六的演示里,演示了「只有铁匠铺账号才能创建道具」的功能,但对于游戏运营方和玩家、和玩家公会如何成立一个治理委员会来决定这些道具产出规则,则没有想得太明白,毕竟这已经不是技术的范畴了。
第四阶段:游戏整体上链运行
这个阶段的脑洞就比较大了。我们设想,行业的最终形态可能是游戏整体上链运行,游戏的全部逻辑代码都在链环境中执行,并由去中心化的区块链网络承载和存储数据,在这个场景下需要可信、高效、无延迟的运行容器与轻量级的节点,用于游戏的运行。但是,哈哈,目前业界尚无决定性的技术方案,大家各种链的性能和算力显然都扛不住啊。也许某天会有哪个顶尖聪明的程序员提出解决方案,这只能等了。
四、ProjectBCX希望解决的问题,和技术特点
总体来讲,我们在区块链游戏方向的探索,希望能解决以下技术问题:
2、提供自定义数据结构存储。你这游戏是把风之力,那个游戏是把屠龙刀,每个游戏记录自家道具的数据结构肯定是不一样的,我们也不应该强求大家一样。所以块里面应该能支持自定义数据结构的存储;
3、提供带有区块链操作接口的多平台游戏运行环境。这句话翻译过来就是,区块链SDK应该能跨iOS,Android,H5……这句基本是废话,本来就应该如此;
4、提供用户道具交易的token交换原子操作。这点上面已经讲解过了,因为没有中间代理商了,必须一手交钱一手交货,两个行为合并为一个原子。我们已经实现该功能;
5、去中介交易的实现和一个道具交易市场的范例。恩,这点我们也已经做完了;
6、提供完整的钱包和区块链浏览器。同上,开发完了,会上有演示;
8、二级资产的发行和交易能力。ProjectBCX的设计是,CP可以在Cocos公链上发行自己的二级数字币,游戏厂商或者我们前面提到的铁匠铺管委会,可以自由交易这些数字资产;
9、高速合约虚拟机。这个是和快速共识设计配套的,我们需要能快速地执行合约代码,不然玩家多了肯定扛不住。速度越快,可以上链的游戏内容就越多,对玩家利益就越有保障。
五、篇末
最后我再强调一下,我们对区块链领域的投入研究,是和早几年的CocosVR一样放在体外,并不影响Cocos作为游戏引擎本身的研发投入。引擎团队今年仍然在融资和扩张。应用了我们部分3D研发成果的Cocos2d-x4.0将在Q3发布,将实现渲染多通道支持、2D材质系统和2D光照,而且实现了下一步可适配iOSMetal的渲染架构;而性能大幅提升的CocosCreatorv2.0目前已经进展到alpha-5版本,计划在Q2发布,敬请期待。
不论是在手机原生,还是H5小游戏,或者在未来可能存在机会的区块链游戏上,『让游戏开发更简单』,既是对各位开发者的承诺,也是我们始终不变的愿景。