Two calls
const platform = await Peerless.init();
if (platform.mode === "peerless") {
// Assets loaded, admission done, controls usable:
await Peerless.analytics.gameplayReady();
}
// After a completed round, level or match:
if (platform.mode === "peerless") await Peerless.analytics.roundCompleted();gameplayReady() starts visible-session heartbeats. Calling it again, or reloading within 30 minutes, reuses the same confirmed session. Both methods reject with PEERLESS_UNSUPPORTED outside PEERLESS; keep your standalone path working.
What counts as a play
A play is a launch the player engaged with. Opening a game page is not a play, even when a free game starts loading there: the session counts once the player clicks or tabs into the game. Your gameplayReady() report is kept and applied at that moment. See Free play and libraries.
Match state
Report match boundaries so PEERLESS can hold prompts (such as the guest sign-up offer) until a match ends:
await Peerless.sessions.reportState("match"); // a match started
await Peerless.sessions.reportState("lobby"); // back in the lobbyWhere the numbers appear
Creator studio's analytics show requested sessions, confirmed plays, players, completed rounds and active time. Sessions without SDK telemetry stay labeled as uninstrumented rather than guessed.