跳转到内容

Leaderboards

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() 告诉你是否能用上面这些方法。