阅读更多
引用
作者 | 凌华彬、王哲
责编 | 徐威龙


在微信 6.6.1 版本中,给用户推送了“玩一个小游戏才是正经事”的首屏小游戏入口,一时间整个朋友圈都在跳一跳。相信很多游戏开发者心痒难耐,想一探究竟。今天就由我和王哲从技术角度给大家科普一下微信小游戏的开发知识,这一系列文章源自我们 Cocos Creator 引擎团队和微信团队合作过程的总结,目前,Cocos Creator v1.8 编辑器已第一时间支持一键发布微信小游戏版本。

今天这篇文章是介绍微信小游戏开发系列文章的第一篇。

一、小游戏生态特点

目前微信小游戏已发布 17 款首发游戏,包括六款棋牌类游戏,以及欢乐消消消、爱消除、坦克大战、保卫萝卜等休闲游戏。

从入口方面来说,微信小游戏目前的主要入口有下面几个:
  • 群或好友分享
  • 识别小游戏二维码
  • 微信聊天列表页面下拉后出现最近玩过的小游戏
  • 发现 - 小程序
  • 发现 - 游戏 - 我的小游戏

从技术角度来说,微信小游戏是微信小程序的基础上添加了游戏库 API。小游戏只能运行在小程序环境中,所以小游戏既不是原生游戏,也不完全等同于 HTML5 游戏。但实际上小游戏面向的就是 HTML5 游戏开发者,为了能够让 HTML5 游戏可以尽可能低成本得移植,小游戏尽可能复用了 WebGL、JavaScript 等源自浏览器的 HTML5 技术。可以说小游戏是使用 HTML5 技术搭建,具有原生体验的微信内游戏产品。

小游戏采用这样的模式有很多优点,最大的优点在于稳定和可控。相比于原生,微信可以将游戏闭环在微信内部;相比于纯 HTML5,则不用担心被游戏切广告切支付。

微信小游戏的运行时环境与曾出现过的其他 Runtime 形态相比有一个很大的好处是「兼容 HTML5 生态」。也就是说不论你用哪个游戏引擎开发的 HTML5 游戏,都可以很容易地移植到小游戏上面。这使得微信小游戏可以直接从巨大的 HTML5 生态中借力。

而在技术之外,微信给小游戏最强的加持就是社交传播了。利用好微信的社交生态来获取新用户,将在小游戏的设计中占据非常重要的地位。我们可以看到,第一批 16 款游戏中,除了跳一跳有闪屏入口之外,其他的小游戏入口都藏得比较深,所以流量来源并不是主要靠推荐榜来的,而是通过社交传播来的。这点和市面上多数导用户、洗用户、滚服合服的游戏设计思路是不同的。

微信开放的优质入口,庞大的用户基数,以及即点即玩、利于分享的特性将赋予小游戏极大的潜能。一切都看各位开发者如何把握机会,找到适合微信用户的游戏品类和形态。

二、API 之上:开发小游戏的必备知识点

之前提到,小游戏的开发主要复用了 HTML5 技术栈,所以开发过 HTML5 游戏的开发者上手会快很多,甚至很多 HTML5 游戏都可以很快移植到小游戏平台。具体来说,微信小游戏的开发技术分为三个部分。

1. 底层技术

首先是开发语言,微信小游戏只支持 JavaScript,当然可以编译为 JS 的 TypeScript 以及 CoffeeScript 都可以作为开发语言使用。

其次是小游戏所支持的游戏库 API,主要包含 HTML5 的 Canvas 2D API 和 WebGL 1.0 API,使用任何一种 API 都可以完成游戏最重要的渲染功能,不过不能够混用,除此之外,只有 WebGL 渲染模式可以支持 3D 渲染。

2. 中间件:游戏引擎

当然,直接使用 Canvas 2D 或 WebGL 来制作游戏是门槛很高,也非常费时费力的一件事,你肯定不希望一个小游戏项目拖上一年半载吧?所以使用 HTML5 游戏引擎其实是非常明智的选择,引擎封装出的高层接口可以大大降低开发者的开发门槛,缩短项目周期。目前国内的三家主流引擎 Cocos Creator、Egret、Laya 均已支持小游戏发布,Phaser.js、Three.js 等国外 HTML5 引擎虽然并没有支持直接发布,经过一些定制也是可以成功运行在小游戏环境中。

3. 微信 SDK

除此之外,微信小游戏还提供了丰富的微信内部 SDK 供开发者调用,使用这些接口可以完成用户登陆、转发、排行榜等常规的社交功能。

不过除了这些常规玩法以外,最让人欣喜的是通过转发小游戏,可以完成玩家在游戏中的组队或对战,加上小游戏即点即玩的特点,这种邀战的游戏体验可以说是天衣无缝。

欢乐坦克大战中邀请好友组队


好友通过点击转发链接直接进入游戏完成组队

这种群转发 + 即点即玩的机制可能带来非常有趣的社交玩法。

三、API 之下:理解小游戏的底层技术架构

开篇提到,小游戏既不是原生游戏,也不能等同于 HTML5 游戏,它的开发环境实际上跟两者都有非常密切的关系。与 HTML5 的关系就是它复用了 HTML5 的渲染接口,但与原生游戏又有什么关系呢?我们用一张图来解释:

小游戏的运行环境其实是微信的原生环境,游戏的 JavaScript 代码并不是通过浏览器来执行的,而是通过图中 JS VM 层独立的 JavaScript 引擎来执行的。 在 Android 平台使用 Google 的 v8 引擎,而在 iOS 上则使用苹果的 JavaScript Core 引擎。

当然 JS 引擎只负责解释执行 JS 逻辑,并没有支持渲染接口,那么渲染接口和诸多的微信功能接口又是怎么实现的呢?这就不得不提到脚本绑定技术,这种技术可以将某种原生语言的接口桥接到脚本接口上,当在脚本层调用接口时,会自动转发到原生层,调用原生接口。微信小游戏环境用的就是这样的技术,将 iOS / Android 原生平台实现的渲染、用户、网络、音视频等接口绑定为 JavaScript 接口。这也就是图中的微信原生层模块到小游戏层模块的原理。脚本绑定技术无法在这篇文章中深入探讨,如果大家有兴趣,可以去了解 Cocos Creator 的 JSB 绑定实现,这也是游戏引擎中唯一一家完全开源的绑定技术实现。

小游戏在有了这样一套框架之后,HTML5 游戏在移植过程中仍然是会遇到无数 API 兼容性问题,最简单的比如 document 对象不存在,Image 对象不存在。为了降低移植成本,微信团队提供了一个 Adapter 脚本,适配了一部分浏览器接口。

如上图所示,Adapter 部分提供了大部分 HTML5 游戏所依赖的浏览器接口,这张图也比较完整得描绘了微信小游戏中开发者可以使用的接口模块:
  • 浏览器渲染接口
  • 浏览器 Adapter
  • 微信服务 SDK
值得一提的是,Adapter 脚本已经不再继续维护了,所以额外的接口适配都需要开发者自己完成,而依赖于 DOM 接口的大多数功能都是无法适配到小游戏环境中的。

刚刚也提到推荐大家使用游戏引擎去开发小游戏,小游戏环境的基础之上,游戏引擎不仅封装了高层接口,还尽力抹平了浏览器与小游戏环境之间的差异。

从图中可以看到,如果不使用游戏引擎,开发者面对的是小游戏的底层 API,在使用了游戏引擎后,面对的是引擎的 API。

总结游戏引擎为开发者所做的工作,包含下面几个方面:

Framework:
高层 API 封装对于游戏开发更便利;
资源加载适配;
事件处理适配;
音频播放适配;
窗口适配;
输入框适配;
添加其他缺失的接口,比如增加 DOM Parser 用于解析 TileMap。

EDITOR:
优化程序-美术-策划的协同效率;
优秀的游戏编辑器可以大幅缩短开发周期。

GENERAL:
优秀的游戏引擎提供高设备兼容性,稳定的运行性能;
跨平台游戏引擎提供无缝发布 HTML5、小游戏、原生平台的强大能力。

高效率的编辑器带来开发成本的降低;低入门门槛降低了人力成本;高兼容性和稳定的性能降低维护成本;跨平台/渠道带来强大的流量获取能力。对于开发者来说,这些就是生存和盈利的保障!

四、上手调试小游戏

需要注意的是,在撰文的今天,微信公众平台目前尚没有开放开发者申请游戏类目的权限,所以还只能通过小游戏开发工具的 “体验小游戏” 功能来做技术层面的尝试。不过不用着急,微信团队应该很快就会开放游戏类目的申请。

1. 微信开发者工具介绍

下面这张图就是微信开发者工具在做小游戏开发时的基本布局:

微信开发者工具基本布局


其中上方是工具栏,包含最重要的编译、预览和配置详情;左侧是模拟器窗口用来展示游戏运行效果;右上方是代码编辑器,可以查看项目中的文件列表,编辑文本文件;右下是调试器窗口,使用方法和 Chrome Devtools 完全一致。

2. 微信小游戏配置和入口文件

在微信小游戏项目中,project.config.json 和 game.json 配置文件是大家首先需要添加的,其中 project.config.json 可以定义你的小游戏 appid、游戏名、配置等。而 game.json 主要用于指定游戏朝向和网络超时时间。

另外,小游戏不支持任何 html 文件,入口文件是 game.js,你需要启动的引擎和游戏脚本都应当在 game.js 中用 require 函数引入,require 函数的用法遵循 node.js 的 require 规范。

3. 编译和预览

微信开发者工具会自动监听脚本和配置的变动,发生变动时会自动更新,你也可以通过顶部的编译按钮触发重新编译。当你需要在手机上预览小游戏的效果时,需要点击预览按钮来生成二维码,扫码即可进入小游戏。生成二维码的过程实际上是在压缩和上传小游戏包到微信 CDN 上,所以会花费一些时间。

4. 详情配置

详情配置中包含一些重要的配置选项,包括:
  • 调试基础库:小游戏应该选择 game;
  • ES6 转 ES5:是否将 ES6 脚本转换为 ES5;
  • 代码上传时自动压缩:是否压缩脚本;
  • 不校验安全域名、TLS 版本以及 HTTPS 证书:当你在本地测试,或通过非正式域名测试时,需要开启这个选项才能够正常访问你的服务器。
五、市场展望

最后我们从市场上来看,其实小游戏青睐的 HTML5 技术栈蕴含着巨大的机遇,目前使用 JavaScript 支持跨平台的游戏引擎已经不少。以 Cocos Creator 为例,编写一套游戏代码,可以在编辑器中无缝发布 HTML5 手机页游、PC 页游、手机原生游戏、小游戏。我们可以简单计算一下,根据 12 月初伽马数据的行业报告,国内 2017 年手机原生游戏 1162 亿,PC 端游 648 亿,PC 页游 156 亿,所以按比例简单计算的话,手机页游的市场空间 = 1162 ÷ 648 x 156 = 每年 280 亿人民币。

如果进一步考虑 Flash 宣布 2020 年停更,市面大量 PC 页游都开始转用 HTML5 技术制作,而手机原生上也出现了大量的微端产品,那么如果不考虑此消彼长的制约, HTML5 技术可以支撑的游戏市场规模应该 = 280 亿 手机页游 + 156 亿 PC 页游 + 部分手机原生游戏 ≈ 每年 500 亿人民币。

500 亿人民币还只是计算国内的规模。根据国外 Newzoo 在年中的数据,中国游戏产业规模占全球 25%,那么 HTML5 技术理论上可以支撑的全球手机页游、手机原生、PC 页游市场容量上限可达每年 2000 亿人民币。

所以,掌握 HTML5 技术栈,掌握微信小游戏、QQ 厘米秀、Facebook Instant Games 等「手机页游」新平台上的社交游戏开发技术,洞悉这些社交平台上的用户特点、和提出针对性的游戏设计,对于想进入这个领域的游戏开发商而言,是近期迫在眉睫的事。

而且目前普遍的观点是,在资本的推动下,手机页游的时间窗口应该只有 1~1.5 年,这里面会有原生游戏大厂布局成功的,也会有新晋的研发商和发行商。而在游戏行业产生这样的风口,平均 5 年左右才能有一次。

引用
作者简介:

凌华彬,Cocos Creator 主程、Game Jamer、玩家,曾负责 Cocos2d-JS、热更新框架、JSB 框架,现在主要在负责小游戏发布流程、Cocos Creator 引擎新渲染器架构。

王哲,Cocos 引擎创始人、首席客服。
  • 大小: 26.5 KB
  • 大小: 65 KB
  • 大小: 79 KB
  • 大小: 55.5 KB
  • 大小: 56 KB
  • 大小: 70.8 KB
  • 大小: 59.9 KB
  • 大小: 71.5 KB
  • 大小: 68.1 KB
  • 大小: 73.4 KB
  • 大小: 73.6 KB
  • 大小: 131.3 KB
4
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 微信游戏小程序源码-合成大西瓜小游戏(合成版)源码 附带流量主功能

    这是一款云开发版的合成大西瓜小游戏微信小程序源码,微信游戏小程序源码。 该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果, 最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,...

  • 基础 | 微信「跳一跳」带火小游戏,开发者如何快速上手?

    今天就由 Panda 和王哲从技术角度给大家科普一下微信小游戏的开发知识,这一系列文章源自我们 Cocos Creator 引擎团队和微信团队合作过程的总结,目前,Cocos Creator v1.8 编辑器已第一时间支持...

  • Java开发-使用Java语言实现刷微信跳一跳小游戏的分数

    腾讯在2017年底推出一款在微信小程序跳一跳的游戏,这个游戏的玩法非常简单,手指长按屏幕“i”形小人,不断在各种方形道具上跳跃而获得分数,直到最终摔下去,然后在排行榜上和好友PK。这种无需下载、即点即玩的小...

  • 快速上手微信小程序(纯原生)基于微信开发者工具+云开发

    最近开发一个小程序。因为体量实在不大,两张表,几个接口。便打算写原生的代码。没有使用uniapp等框架。...你的小程序需要一个身份证: 微信公众平台 你的开发需要文档:开发文档这个功能参照开发文档写就可以了。...

  • 微信小游戏扑克24点源码

    微信和触电科技联合开发的扑克24点源码。 方便开发者迅速上手微信小游戏。 使用cocoscreator 可以直接打包成微信小游戏。并且直接在微信开发者工具中调试。

  • 基于微信小程序实现数独小游戏小程序源码分享

    小程序是一个易上手的东西, 对于新手来说,多看官方文档,可以初步做出比较完整的小程序,正是因为简单上手,功能实现简单,小程序是越来越火,商业价值也越来越大。 1. 微信web开发者工具:微信小程序官网 这是个...

  • 小游戏 合成大西瓜小游戏微信小程序源码

    这是一款云开发的合成大西瓜小游戏微信小程序源码,该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果,最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,简单的模式让小朋友们进入小...

  • python微信跳一跳_教你用Python来玩微信跳一跳

    原标题:教你用Python来玩微信跳一跳游戏模式2017年12月28日下午,微信发布了6.6.1版本,加入了「小游戏」功能,并提供了官方DEMO「跳一跳」。这是一个2.5D插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来...

  • 合成大西瓜小游戏微信小程序源码

    这是一款云开发的合成大西瓜小游戏微信小程序源码,该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果,最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,简单的模式让小朋友们进入小...

  • 微信小程序|使用小程序制作一个2048小游戏

    此文主要通过小程序实现2048游戏,游戏操作简单,容易上手。

  • 基于微信小程序实现谁是杀手小程序游戏小程序源码分享

    小程序是一个易上手的东西, 对于新手来说,多看官方文档,可以初步做出比较完整的小程序,正是因为简单上手,功能实现简单,小程序是越来越火,商业价值也越来越大。 1. 微信web开发者工具:微信小程序官网 这是个...

  • python 微信跳一跳_教你用Python来玩“微信跳一跳”瞬间千分……已开源

    2017年12月28日下午,微信发布了 6.6.1 版本,加入了「跳一跳」这款小游戏。>玩了几十局,最高也就70多分>有的好友可以玩到几百分到几千分>。。。>表示自己好笨>随即发了朋友圈>好友发来了这个...

  • 快速上手微信小程序:简介与开发技巧

    微信小程序是一种可以在微信平台上运行的应用程序。它不需要下载和安装,用户可以直接通过微信扫码或搜索进入使用。微信小程序具有轻量、快速、跨平台等特点,开发者可以使用HTML、CSS、JavaScript等前端技术进行...

  • 基于SSM+JSP+HTML的东风锻造有限公司重大停管理系统(Java毕业设计,附源码,数据库,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 ssm 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

  • 数据库系统课程设计报告-体育项目比赛管理系统设计与开发

    一、系统需求分析 1 (一)需求概述 1 (二)业务流分析 1 从运动员角度分析 1 (三)数据流分析 4 (四)数据字典 5 二、数据库概念结构设计 6 (一)实体分析 6 (二)属性分析 6 (三)联系分析 8 (四)概念模型分析(.PDM图) 9 三、数据库逻辑结构设计 9 (一)概念模型转化为逻辑模型 9 1.一对一关系的转化 9 2.一对多关系的转化 9 3.多对多关系的转化 10 (二)逻辑模型设计(.PDM图) 10 四、 数据库物理实现(一)表设计 10 (一)表设计 10 (二)创建表和完整性约束代码设计 11 五、数据库功能调试 15 (一)运动员管理模块 15 (二)负责人管理模块 16 (三)系统管理员管理模块 17 六、设计系统前台软件 21 (一)开发软件选择 21 (二)软件功能要求与设计 22 (三)软件功能实现 22 (四)系统测试 24 七、设计总结 27

  • 基于SSM+JSP的文物管理系统+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

  • 智慧园区整体解决方案-37PPT(46页).pptx

    智慧园区,作为现代化城市发展的新兴模式,正逐步改变着传统园区的运营与管理方式。它并非简单的信息化升级,而是跨越了行业壁垒,实现了数据共享与业务协同的复杂运行系统。在智慧园区的构建中,人们常常陷入一些误区,如认为智慧园区可以速成、与本部门无关或等同于传统信息化。然而,智慧园区的建设需要长期规划与多方参与,它不仅关乎技术层面的革新,更涉及到管理理念的转变。通过打破信息孤岛,智慧园区实现了各系统间的无缝对接,为园区的科学决策提供了有力支持。 智慧园区的核心价值在于其提供的全方位服务与管理能力。从基础设施的智能化改造,如全面光纤接入、4G/5G网络覆盖、Wi-Fi网络及物联网技术的运用,到园区综合管理平台的建设,智慧园区打造了一个高效、便捷、安全的运营环境。在这个平台上,园区管理方可以实时掌握运营动态,包括道路状况、游客数量、设施状态及自然环境等信息,从而实现事件的提前预警与自动调配。同时,智慧园区还为园区企业提供了丰富的服务,如项目申报、资质认定、入园车辆管理及统计分析等,极大地提升了企业的运营效率。此外,智慧园区还注重用户体验,通过信息发布系统、服务门户系统及各类智慧应用,如掌上营销、智慧停车、智能安防等,为园区员工、企业及访客提供了便捷、舒适的生活与工作体验。值得一提的是,智慧园区还充分利用大数据、云计算等先进技术,对园区的能耗数据进行采集、分析与管理,实现了绿色、节能的运营目标。 在智慧园区的建设过程中,还涌现出了许多创新的应用场景。例如,在环境监测方面,智慧园区通过集成各类传感器与监控系统,实现了对园区水质、空气质量的实时监测与预警;在交通管理方面,智慧园区利用物联网技术,对园区观光车、救援车辆等进行实时定位与调度,提高了交通效率与安全性;在公共服务方面,智慧园区通过构建统一的公共服务平台,为园区居民提供了包括平安社区、便民社区、智能家居在内的多元化服务。这些创新应用不仅提升了园区的智能化水平,还为园区的可持续发展奠定了坚实基础。同时,智慧园区的建设也促进了产业链的聚合与发展,通过搭建聚合产业链平台,实现了园区内企业间的资源共享与合作共赢。总的来说,智慧园区的建设不仅提升了园区的综合竞争力,还为城市的智慧化发展树立了典范。它以用户需求为导向,以技术创新为驱动,不断推动着园区向更加智慧、高效、绿色的方向发展。对于写方案的读者而言,智慧园区的成功案例与创新应用无疑提供了宝贵的借鉴与启示,值得深入探索与学习。

  • Java毕业设计-SpringBoot+Vue的基于SpringBoot的冬奥会科普平台(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

  • MATLAB设计的芯片字符识别(GUI界面设计).zip

    MATLAB设计的芯片字符识别(GUI界面设计)

Global site tag (gtag.js) - Google Analytics