微信游戏开发总监:疯狂数据背后,小游戏有怎样的架构能力?

文/ 龙之心 2018-01-15 21:28:22

1月15日消息,微信公开课今日在广州举办。会上,微信游戏开发总监麻华锋发表了题为“小游戏接口开放能力解析”的演讲。

此前,微信刚刚宣布了小游戏DAU破亿,累计使用用户达到3.1亿的成绩。在这些疯狂的数据背后,小游戏背后的技术问题成为了从业者关心的对象,其中就包括它的架构能力。

麻华锋分享的这则演讲就从技术角度出发,解析小游戏背后的架构能力。 

以下为演讲实录:

大家下午好!刚过去的12月28日,微信小游戏上线。我们强调玩法,让用户PK起来非常有乐趣。在疯狂数据的背后,这么有魔力的背后,我们来揭开小游戏背后的架构能力。 

WechatIMG4495.jpeg

首先看一下什么是小游戏,小游戏与我们传统所知道的H5游戏什么不同?从架构来看,小游戏是直接把系统原生能力通过JavaScriptBinding的方式注入到JavaScriptcore与V8引擎中,提供与H5对齐的canvans与webgl的js接口,也可以称作为runtime方式,同时又提供了微信社交能力、文件系统等平台能力。 

我们会强化社交能力,在小游戏植入很多的社交能力,像群分享。往上层来看,H5游戏开发者依赖的是游戏引擎,传统游戏引擎比较多。小游戏这块目前也有一些商家引擎做适配,像layabox、cocos,与Egret,他们配合我们做引擎适配,这样可以帮助开发者尽快适应小游戏的开发。

WechatIMG4501.jpeg

H5游戏和小游戏之间的区别是什么?小游戏是在H5游戏的基础上增加微信社交能力、文件系统、工具链,我们去掉一些对游戏开发不是那么重要的,像Dom、Bom、Css、Eval。 

小程序和小游戏的区别

WechatIMG4502.jpeg

小程序与小游戏之间有什么区别?在座很多都是小程序开发者。小游戏作为小程序的子类目,它继承小程序的所有开发接口和能力,它同时完善渲染、文件系统,它又去掉多页面、Wxss、WXML。如果你有H5游戏的开发经验,你做小游戏是很容易的。如果你同时又具备小程序的开发经验,那就是信手拈来。 

在上线的四款游戏当中,有三款是微信团队探讨社交能力。星途第一个Demo是用了三个星期时间,而且这些同学是完全没有游戏开发经验的,小游戏开发是非常简单。

小游戏的分享转发能力

小游戏对外提供分享转发能力,我们提供两种:一种是在游戏内,叫主动转发。主动转发是你转发的时候,可以在游戏页面直接呼起转发群。第二种叫被动转发,是第二个菜单里面的相关信息,你需要设计、监听转发的事件。同时你还可以设置是不是可以禁止二次转发,二次转发,大家会觉得为什么要限制二次转发。

如果你想跟大家分享这款小游戏,其实你不需要设置二次转发。设置二次转发是你分享到群里面,你分享群里面的相关信息。如果你想获得群里面的相关信息,你就要禁止二次转发。同时我们还提供二维码的能力,大家通过二维码分享到群里都可以。

WechatIMG4504.jpeg

好友互动,刚才提到我们提供分享转发的能力。在好友互动这里,你可以自定义分享的内容。以星途为例,大家一起来PK,它是带来禁止转发的。你查看动态消息,不会出来一个转发。这个消息有两点,第一个是很大的图片,大家分享图片的时候有两种方式。第一种是选择本地图片,第二种是选择动态图片,如果标题过长的话,我们会截取,这样可以快速上传转发。

像斗地主,之前在微信平台也上线H5游戏。H5游戏数据比小游戏的数据来看,流失率增加了一倍,因此小游戏会更加吸引客户的注意力。大家在开发的过程中,要利用好目前的开发能力。大家在前期可以多了解一下这些相关的点如何使用,在技术上做好准备。

WechatIMG4508.jpeg

排行榜,我们提供两种能力,一种是获得好友的排行榜,一个是群排行榜。在技术上,我们做了数据托管。开发者没办法获取用户的好友数据,我们在技术上做了隔离,通过子域和主域,排行榜是在子域里面进行展示。排行榜的模拟非常大,就拿跳一跳小游戏来讲,有时候玩了之后,再看一下好友排行榜又忍不住会再玩一回。

排行榜的时限上面,因为用户度非常广,你玩的游戏,有几十个好友玩就已经很不错了。但是玩小游戏的话,可能有几百个好友在玩。大家在做的过程中要多关心一些可以找哪些方式、更轻便、更流畅的进行体验。

文件系统,最近大家咨询比较多,游戏包是4兆,而不是10兆。低于4兆是基于用户体验来讲的,一个游戏包如果非常大的话,不利于即下即玩,游戏包很大的话,下载需要很久,这样体验就会打折扣。游戏包低于4兆,这样可以实现即下即玩。在iOS上面,下载4兆只需要3秒,安卓大概是5秒。从加载、下载在5秒内可以实现游戏包的下载。

游戏包的代码是4兆,有时候是动态更新,核心代码加载这是禁止的,大家开发的时候,我建议大家好好利用这4兆,把核心代码放到这4兆里面。

在这个过程中,大家会问我的游戏很大,我的游戏有很多关口,很多数据。我们还提供50兆可支配的空间,大家可以把你们的核心数据放到50兆里面,这50兆是完全由开发者支配的。这样二次加载的时候,可以从这里面取得数据,减免用户重复性通过网络下载。我们还有一个临时的200兆,200兆建议大家慎用。临时200兆是小游戏共享的空间,它只是在当前生命周期内有效,如果关闭小游戏、小程序,当前这个就会被释放。建议大家更好地运用4兆、50兆可利用空间。

WechatIMG4509.jpeg

针对目前的文件系统,我们提供像二进制的能力,包括文本二进制能力。同时文件系统还增加单个文件的增加、删除、读写、目录管理。这是为了满足开发者能够灵活的管理你的文件、数据。

WechatIMG4510.jpeg

工具链:小游戏会提供整个开发工具,这个开发工具,像开发、调试、测试、一键发布等能力。做过小程序的人都清楚,小游戏是小程序的小类目,大家开发的时候只要选择这个子目录就可以。很多开发者懂ES6,但是ES6可能不支持其他的格式,所以我们提供了转换工具。前面讲到蓝牙,4兆的适配小游戏,大家可以一键同步维系小游戏的开发。

WechatIMG4511.jpeg

我们提供调试工具,大家可以在手机上进行调试,里面有内存、日志,大家都可以很清晰的查看到。未来,我们将提供远程断面调试。同时我们支持一个云测试。作为一个小游戏开发者,如果要买几十部手机来做测试,这对开发者的困难是很大的。现在我们建设云测试平台,目前这个名类正在规划中,未来也会向大家开放。

WechatIMG4515.jpeg

运维辅助支持工具:我们同步对外提供用于辅助工具。我的小游戏上线的时候,大家可以选择不同的版本,当天日期内,有什么用户出现错误。同时我们提供运维报警,如果今天的数据暴涨,我们可以看一下是什么原因暴涨的。

WechatIMG4520.jpeg

在开发小游戏当中,我的用户留存是怎样的?针对这些问题,我们还会同步提供数据助手,数据助手可以帮助开发者第一时间了解你的游戏开发数据。不像传统游戏一样,还要关注运维。现在我们会提供一站式的服务,帮助开发者提供各种辅助工具,减少他们运维知识方面的投入,他们可以更多聚焦在产品打磨上。

我挑出一些大家比较关注的问题:

WechatIMG4524.jpeg

第一个是多线程。小游戏相比小程序提供一个多线程,为了让小游戏运营更流畅,我们可以使用多线程来解决这个问题。

第二、离线访问就是断网络之后,你可以继续在网,这对用户体验提升非常大。

第三、GC回收,你有一些场景图片原理非常占用内存空间,我们需要开发者场景切换,主动释放一些内存,主动进行垃圾回收。

第四、后台运行,今天大家谈小游戏推出之后使用很爽,使用完之后还可以再继续玩。

第五、离屏渲染,一方面它可以帮助我们做一些游戏内的合程效果,同时它也会带来一些新的消耗。离屏渲染会额外开通一个缓冲区,它跟主屏之间有产品切换,这导致GP性能的消耗,这可以根据你的灵活使用来设定。

第六、代码包增量更新,我们只是把你改变的数据进行部署。

未来我们会提供分包下载,如果开发一个中度游戏,4兆根本不够,4兆会改变代码包的词性代码,如何满足做中度游戏的基础能力?后续我们会提供游戏代码包的增量,就是分包下载,这个能力也请大家后续关注。

WechatIMG4525.jpeg

这些是小游戏具备的能力,还有更多更详细的接口能力,大家参考目前我们已经发布的开发者文档。在开发者文档里面有很详细的描述。今天由于时间有限,很多技术点都没有一一展开跟大家详细讲,如果大家有技术上的疑虑、技术上的交流,大家可以登陆微信公众开放平台,里面有一个开发者社区,在这里面进行交流,我们每天都会在里面搜集大家的反馈,定期给大家进行回复和交流,更多的能力尽情期待。

我今天的分享完毕,谢谢大家。

Alex Matveev
2022-06-06 16:27:13
不合规
审核中
@苏某某: 她在音乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想
乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想,没有系统了解过此类音乐的她怎么会喜欢上 呢?后来听完《美少女战士》原声带后才发现,“原来我在那么小的时候
评论全部加载完了~