FRVR.leaderboards 是一个支持多榜单的分数存储。一个游戏可以有任意数量的榜(按模式、按时间窗、按难度)。
await FRVR.leaderboards.postScore('endless_mode', 42000);
分数被接受后 resolve。如果想绕过默认的「比上次更好才上传」检查,使用 缓存策略。
const entry = await FRVR.leaderboards.getLeaderboardEntry('endless_mode', playerId);
// { playerId, score, rank, name, photo }
const entries = await FRVR.leaderboards.getLeaderboardEntries(
'endless_mode',
friendIds,
);
const board = await FRVR.leaderboards.getLeaderboard('endless_mode', 50, 0);
// { leaderboardId, entries: [{ playerId, score, rank, … }], total, … }
用来回答「我哪些好友处于 30–50k 分段」:
const entries = await FRVR.leaderboards.getTimelineEntries({
id: 'endless_mode',
interval: 'weekly', // 或 'all_time'、'daily'……
minScore: 30000,
maxScore: 50000,
limit: 100,
});
通常这些由 FRVR 后台定义,但你也可以在运行时创建:
await FRVR.leaderboards.create('endless_mode', {
title: 'Endless Mode',
refreshInterval: 'weekly',
});
每次读写都接受一个可选的 ScoreCachePolicy。默认值已经合理 —— 只有在你做特殊事情(比如实时刷新一个排名大厅)时才需要覆盖。
if (!FRVR.leaderboards.isSupported()) hideLeaderboardUI();
部分渠道会路由到平台自己的排行榜(Google Play Games、Game Center),不会暴露完整的 FRVR API。isSupported() 告诉你是否能用上面这些方法。