主页(http://www.zhonghuagame.com):想开发微信小游戏,先看看腾讯是如何制定规则的
想开发微信小游戏,先看看腾讯是如何制定规则的
2018-01-12 19:44 来源:CSDN 游戏 /微信 /腾讯
原标题:想开发微信小游戏,先看看腾讯是如何制定规则的
作者 | 凌华彬、王哲
责编 | 徐威龙
一、前言
在第一篇文章《微信小游戏开发上手》中,我们给大家介绍了上手微信小游戏开发所需要的知识,以及小游戏的开发环境和工具。学会如何开发小游戏固然重要,但是更重要的是,什么样的游戏更适合小游戏环境和它的用户。
我们都知道小游戏是运行在微信内部的游戏环境中的,那么微信用户也就是小游戏的潜在用户,这些用户在使用微信时,会被什么样的游戏所吸引?会分享什么样的游戏?什么样的游戏能融入用户的社交过程?这些在今天都没有最佳的答案,开发者们都在探索,也正是广大小游戏开发者的机会所在。但毫无疑问的是,制作这样的爆款游戏一定需要完美理解各种微信社交/系统 SDK 接口的能力,并将其发挥到极致。
今天我们会更详细分析小游戏环境给大家开放的各种 SDK 接口,以及这些接口可以承载什么样的游戏体验。当然,微信小游戏官方文档中,对这些接口都有很详细的使用介绍,我们不会重复这些具体的 API 调用细节,会更多侧重在这些接口所提供的功能和潜力上。最后,我们还会给出一个 Cocos Creator 制作小游戏的案例。
注:小游戏官方文档地址:https://mp.weixin.qq.com/debug/wxagame/dev/document/render/canvas/Canvas.html?t=201816
二、小游戏提供的接口能力
微信 SDK 接口通用规则
微信的 SDK 接口大多有非常接近的使用方式和命名规则,下面是我们总结出来的一些经验:
wx.getSystemInfo({
success: function(res) {
// res 一般是一个包含调用结果的对象
console.log('This phone is '+ res.brand + ' '+ res.model);
},
fail: function(res) {
// 通过 res.errMsg 可以获取错误信息
console.warn(res.errMsg);
},
complete: function() {
console.log('API call completed');
}
})
getXXX & setXXX:获取和设置接口,比较反常理的是,很多这样的接口也是异步的,需要仔细阅读 API 文档。
接下来我们来看具体的接口,先看大家最关注的三大接口:用户、转发和支付接口。
用户接口
用户接口方面,开发者最应该关注的就是用户的登录了,登录接口的使用示例如下:
wx.login({
success: function(res) {
// res.code 为用户的登录凭证
if(res.code) {
// 游戏服务器处理用户登录
} else{
// 失败处理
console.log('获取用户登录态失败!'+ res.errMsg);
}
},
fail: function(res) {
// 失败处理
console.log('用户登录失败!'+ res.errMsg);
}
});
按前文所说,要做到好的用户体验,所有异步接口的 fail 都应该被处理,Login 更是如此,如果 Login 失败,游戏很难进行下去,除非是纯单机游戏。至于失败的处理,我们建议重新尝试,或者引导用户关闭小游戏再次尝试。
是用户的登录凭证,通过它可以在开发者服务器后台换取 openid 和 session_key 等信息,部分 API 可能包含用户的敏感数据,这些敏感数据需要传递 session_key 才可以获取,否则只能获得很有限的基本数据。具体信息请参考用户登录态签名文档,目前需要登录态签名来获取敏感数据的 API 为:
用户登录态签名文档:https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/http-signature.html
除此之外,部分 API 调用需要用户的授权方能使用,如果没有申请过授权,第一次调用时会自动申请,流程如下:
也可以在调用 API 之前做预授权:
授权的详细范例和需要授权的 API 列表请参考微信官方文档中的用户授权章节,地址:https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/open-ability/authorize.html。
转发接口
在第一篇文章中,我们提到小游戏最大的开创性能力,可能就是从转发入口点击直接进入游戏的超快捷体验。从技术角度来说,小游戏中的转发分为被动转发和主动转发(主被动是针对游戏开发者来说):
被动转发
使用 wx.showShareMenu 在右上角 ”…” 按钮的弹出菜单中显示转发选项,这样用户游戏中的任何时候,都可以发起转发。可以通过 wx.hideShareMenu 来去掉转发选项。
wx.showShareMenu:https://mp.weixin.qq.com/debug/wxagame/dev/document/share/wx.showShareMenu.html
wx.hideShareMenu:https://mp.weixin.qq.com/debug/wxagame/dev/document/share/wx.hideShareMenu.html
wx.onShareAppMessage:https://mp.weixin.qq.com/debug/wxagame/dev/document/share/wx.onShareAppMessage.html
同时,开发者可以监听 wx.onShareAppMessage 来监听用户转发行为,并准备适宜的转发内容。具体来说开发者可以在回调函数的返回值中定制转发内容:
1. title:标题,不传则默认使用当前小游戏的昵称;
2. imageUrl:转发显示图片的链接;
3. query:游戏参数,遵循 key1=val1&key2=val2 格式的查询字符串,从这条转发消息进入后,可通过 wx.onLaunch 或 wx.onShow 获取这些启动参数。
用户点击右上角菜单按钮发起转发
主动转发
所谓主动转发是指开发者在游戏交互中主动替用户发起转发请求,一般是玩家在游戏中点击某个分享按钮后,开发者通过调用 wx.shareAppMessage 直接调起转发窗口。
wx.shareAppMessage:https://mp.weixin.qq.com/debug/wxagame/dev/document/share/wx.shareAppMessage.html
用户点击按钮自动调起转发页面