排行榜是一个现成的排名系统:带回合的榜单,以及按名次和按积分的奖励。 分数、名次和奖励都由服务器计算。你在后台设置榜单,游戏负责提交结果并显示排名。
玩家看到什么
- 以标签页呈现的榜单:每个都有一张卡片,显示玩家的分数、名次和本回合结束倒计时。
- 排名靠前的玩家,玩家自己会被高亮,前三名有奖牌。
- 弹窗中的名次奖励和积分奖励;积分奖励可以当场领取。
- 上一回合奖励的弹窗:回合结束时自动出现,带“领取”按钮。
- 如果游戏有赚取积分的模式,卡片上会有**“开始”按钮**。
- 有奖励待领取时,标签页上的徽标。
排行榜
12 450
320
每周!
赛季
2
我的分数12 840
排名#7
2天 04:13 后结束
奖励
开始
34
ShadowFox25 120
2Mira22 980
3KnightOwl19 400
4Pixel_Pete15 210
5Luna14 030
6Arrow13 115
7你12 840
8Grizzly11 900
1每个启用的排行榜都是一个标签页;徽标表示有奖励待领取。
2玩家卡片:分数、排名和本轮结束倒计时。
3名次和分数奖励从这里打开;“开始”进入游戏模式。
4前三名有奖牌,玩家在列表中高亮显示。
榜单的结构
- 回合。 榜单按周期重复(例如每周),按计划运行,或作为一串回合运行。
- 分数的计算方式。 所有结果之和、最好成绩、最快时间或最后一次的值。
- 名次奖励:回合结束时按名次区间发放:第 1 名、第 2 至 3 名、第 4 至 10 名等等。
- 积分奖励:回合内的里程碑:“本周赚到 1000 积分”。
积分从哪里来
积分来自榜单上设置的来源:
- 游戏提交的结果(
ClientScore)。游戏发送一个数字,例如一局跑酷的分数。⚠ 请为这个来源设置限制:单次提交上限、每日上限和两次提交之间的间隔。没有这个来源,榜单根本不接收游戏发来的任何数字。 - 服务器自己统计的事件,例如购买或完成的任务。这些无法在游戏中伪造。
步骤 01把排行榜加入项目
告诉 AI 编程助手:“加一个按最高分排名的每周排行榜”。它会安装现成的系统,并让游戏提交结果。后台中至少启用一个榜单后,标签页才会对玩家显示。
步骤 02设置榜单
打开后台,选择你的项目,进入 实时运营 → v2 → 排行榜。
- 点击添加排行榜,设置它的 ID,例如
weekly_score。 - 选择回合计划和分数的计算方式。
- 添加积分来源。如果积分由游戏提交,就使用带限制的
ClientScore。 - 设置名次奖励,如果需要,再设置积分奖励。
- 点击保存。
页面上的 AI 按钮会打开助手:用文字描述榜单,它会提出修改,你检查后保存。
步骤 03测试并发布
在测试版中提交几次结果,观察名次的变化。设置通过单独的操作发送到正式应用,请看发布与链接。
开发者须知
排行榜通过 @idosgames/core 中的 client.leaderboard 工作。
// 提交结果:服务器应用计分规则和限制
const sub = await client.leaderboard.submitScore('weekly_score', 150)
if (!sub.ok) return showError(sub.error)
sub.data.NewScore // 计算后的分数
// 有多个榜单的界面:一次请求获取排名列表和玩家进度
const overview = await client.leaderboard.getOverviewBatch(['weekly_score', 'season_pvp'])
// 领取所有待领奖励:名次奖励和积分奖励
await client.leaderboard.claimAllRewardsBatch(['weekly_score', 'season_pvp'])- SDK 会直接拒绝零或负数的分数,不发送请求。
- 新分数请从响应中的
NewScore读取:在“最好成绩”规则下,较差的结果不会改变分数。 - 好友排名是
getFriendsLeaderboard(leaderboardID)。
每个字段都在技能 leaderboard-system 中有说明,由 SDK 的 MCP 服务器提供。
常见问题
玩家能从游戏里发送一个超大的分数作弊吗?
只要榜单设置正确就不能。榜单只通过 ClientScore 来源接收游戏发来的数字,而这个来源有限制:单次提交上限、每日上限和两次提交之间的间隔。
一个游戏可以有多少个排行榜?
可以有多个。每个启用的榜单都是排行榜界面中一个独立的标签页,有自己的回合和奖励。
有好友排行榜吗?
有。SDK 会返回按玩家好友筛选后的同一个榜单。