# 擂台赛组件-开发指南
# 功能说明
擂台赛组件是小游戏官方提供的赛事玩法互动组件。游戏内,擂主邀请好友参与擂台挑战,获胜方可领取擂台赛奖励;游戏外,以「服务通知」和「聊天工具」的社交形式增加回流触达。
# 玩法介绍
擂台赛玩法C端体验路径:跳一跳-单局超过200分发起「有奖擂台赛」
# 1. 发起擂台赛
● 用户在游戏内,完成游戏对局,产生 结算分数,用户可 向朋友发起擂台赛;
● 擂主发起后不可再次参与,分数不可更改。每个成功发起的擂台赛,有效时间 6 小时;
● 擂台赛发起入口、条件,由开发者自定义并控制。
# 2. 参与擂台赛
● 朋友可以通过分享链接,进入游戏,向擂主发起挑战;
● 参与玩家在赛事有效期内可多次尝试。
# 奖励规则
每个擂台赛配置4个礼包,守擂/挑战成功后,可领取对应奖励。
# 1. 擂主
● 守擂成功:任意用户参与擂台赛 且 在擂台赛举办期间未超过发起者的分数,视为发起者本次守擂成功;
● 奖励领取:每个擂台赛,擂主至少守擂成功一次,所有奖励领取时,可按10%概率抽取1次「擂主-稀有奖品」,并按成功次数获得「擂主-必中奖品」;
# 2. 参与者
● 挑战成功:参与擂台赛并超过擂主设定的目标分数后,视为本擂台赛挑战成功;
● 奖励领取:每个擂台赛挑战成功,挑战者将固定获得「挑战者-必中奖品」,并有10%的概率抽取「挑战者-稀有奖品」;
# 用户触达
组件支持以社交形式增加回流触达。群聊场景将以聊天工具卡片形式分享:聊天工具模式下,可在卡片实时展示挑战成功人数,并在用户参与/挑战成功/擂台赛结束时,通过群内消息形式下发全局通知。
# 如何接入擂台赛组件
开发者可参考以下方法,快捷完成接入。
# 1. 完成游戏玩法ID设置
● 用于上报用户当局游戏结果,结果支持 数值、时间格式、枚举格式。
● 游戏玩法生效后,除枚举值新增/修改名称外,不支持更改。
# 2. 配置奖励礼包
● 礼包类型:擂台赛礼包 礼包接入文档
● 建议每个礼包内只包含一个道具。多个道具情况下,采用首个道具icon与名称为c端展示。建议上传透明底的icon图。
● 需要提供 4 个 礼包 id。建议擂主与挑战者 在相同场景(保底、抽奖)奖励相同。
○ 礼包1:擂主 守擂成功 保底奖励(每日领取上限50次)
○ 礼包2:擂主 守擂成功 稀有奖励(每日领取上限5次)
○ 礼包3:参与者 挑战成功 保底奖励(每日领取上限50次)
○ 礼包4:参与者 挑战成功 稀有奖励(每日领取上限5次)
# 3. 开发接入实现
版本要求:从基础库 3.11.0 开始支持
支持平台:Android 微信 8.0.62 及以上版本、iOS 微信 8.0.62 及以上版本
# 3.1 接入前准备
擂台赛组件的分享和动态消息功能依赖于聊天工具模式。聊天工具
聊天工具的分享功能要求小游戏具备有效的登录态。为确保用户分享擂台赛时游戏已建立登录态,需要在擂台赛开始前调用 wx.login 接口完成登录流程。
# 3.2 发起擂台赛
擂台赛功能基于 wx.getRankManager() API 实现,通过该接口返回的类方法进行相关操作。
# 3.2.1 上报擂主分数
发起擂台赛前,需要先上报玩家发起擂台赛的基准分数。使用 update 方法进行分数上报。
// 获取排行榜管理器实例
const rankManager = wx.getRankManager();
// 上报用户分数
rankManager.update({
scoreKey: 'score_key', // 在MP配置的scoreKey
score: 100, // 具体分数值
success: res => {
console.log('分数上报成功', res);
},
fail: err => {
console.error('分数上报失败', err);
},
});
# 3.2.2 创建擂台赛
分数上报成功后,使用 createChallenge 方法发起擂台赛。
// 发起擂台赛
wx.getRankManager().createChallenge({
scoreKey: 'score_key',
success: res => {
console.log('擂台赛创建成功', res);
},
fail: err => {
console.error('擂台赛创建失败', err);
},
});
注意事项:
一次
update上报的分数只能创建一个擂台赛。针对同一次上报多次调用
createChallenge将返回已创建的擂台赛。
# 3.3 加入擂台赛
# 3.3.1 监听挑战开始事件
用户从他人分享的擂台赛卡片进入小游戏,小游戏会在 onShow 时弹起加入擂台赛半屏。用户点击半屏上的“立即挑战”按钮,擂台赛挑战开始。
通过 rankManager.onChallengeStart(callback) 监听onChallengeStart事件,在onChallengeStart事件的回调中处理挑战开始逻辑。
// 监听擂台赛开始事件
wx.getRankManager().onChallengeStart((challengeInfo) => {
// 处理挑战开始逻辑
console.log('擂台赛开始', challengeInfo.scoreKey);
});
# 3.3.2 中途操作
擂台赛进行过程中,支持以下操作:
● 中途上报分数。擂台赛的最终分数将取中途上报分数和最终上报分数中最高的一次。
// 游戏过程中上报中间分数
wx.getRankManager().middleUpdate({
scoreKey: 'score_key',
score: gameState.score, // 当前分数
success: res => {
console.log('中途分数上报成功', res);
},
fail: err => {
console.error('中途分数上报失败', err);
},
});
● 中途退出挑战。中途退出的擂台赛,本次挑战为0分。
// 中途退出擂台赛
wx.getRankManager().abort({
success: (res) => {
console.log('擂台赛退出成功', res);
},
fail: (err) => {
console.error('擂台赛退出失败', err);
},
});
# 3.4 结束擂台赛
在擂台赛进行过程中调用 update 方法上报最终分数,系统将自动结束擂台赛并拉起结束界面。
// 结束擂台赛并上报最终分数
wx.getRankManager().update({
scoreKey: 'score_key',
score: 150, // 最终分数
success: res => {
console.log('擂台赛结束', res);
},
fail: err => {
console.error('擂台赛结束异常', err);
},
});
# 3.5 奖励领取
挑战者战胜擂主,或者擂主守擂成功时,可以在擂台赛组件结果页领取道具奖励。