挑战是锦标赛的小弟:你挑一个或多个特定对手,发给他们一份 payload(种子、关卡、初始配置)。他们玩,你比分。最适合「来打破我的纪录」式邀请。
const challengeId = await FRVR.challenges.create(
{ title: '⚡ 打破我的 42k!', endTime: Date.now() + 24 * 3600e3, image: '/challenge.png' },
{ seed: 12345, mode: 'blitz' }, // payload —— 双方都能拿到
);
返回挑战 ID;若用户在渠道原生对话框里选了「锦标赛」而不是创建挑战,则返回 undefined。
如果你已经有 context ID(比如来自之前的对局)或已知的 FRVR 玩家 ID:
const challengeId = await FRVR.challenges.challengeByContextId(contextId, config, payload);
const challengeId = await FRVR.challenges.challengeByPlayerId(playerId, config, payload);
知道玩家最近联系人的渠道可以列出来:
const candidates = await FRVR.challenges.getPossibleOpponents();
// [{ id, name, photo, last_played_at }, …]
在 Facebook 上常见(过去 90 天活跃的好友);沙箱化的渠道里通常为空。
当玩家是通过挑战邀请进来时(先看入口),取出来:
const challenge = await FRVR.challenges.getCurrentChallenge();
if (challenge) game.startWithPayload(challenge.payload);