Таблицы лидеров

Рейтинги результатов с автоматическим сбросом, архивом прошлых периодов и серверной защитой от читов.

Комментарии в коде и имена API оставлены на английском, чтобы совпадать с SDK.

На этой странице

Создание таблицы лидеров#

Создавайте таблицы лидеров на странице Таблицы лидеров вашего проекта и используйте их слаг в коде.

ПараметрВарианты
СлагИдентификатор из строчных букв для кода, например coins.
СортировкаDESC (сначала наибольший) или ASC (сначала наименьший, например время заезда).
Учёт результатаBEST хранит лучший результат каждого игрока; LATEST всегда заменяет его новым.
СбросNONE, DAILY, WEEKLY или MONTHLY.
Минимальный / максимальный результатМинимальный и максимальный допустимый результат (необязательно).
Пауза между отправкамиМинимум секунд между двумя отправками одного игрока (необязательно).

Отправка результата#

Имя игрока берётся из аккаунта, поэтому клиент не может отправить результат за другого игрока.

C#
var submit = await Majacloud.Leaderboards.SubmitScoreAsync("coins", 340);
if (submit.Ok && submit.Value.Accepted)
    Debug.Log("New rank #" + submit.Value.Entry.Rank);

Чтение рейтинга#

Для лучших записей вход не нужен; собственное место игрока и записи рядом с ним доступны только вошедшему игроку.

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", limit: 10);
var me = await Majacloud.Leaderboards.GetMyRankAsync("coins");
var around = await Majacloud.Leaderboards.GetAroundMeAsync("coins", radius: 3);

if (me.Ok && me.Value.Entry != null) Debug.Log("You are #" + me.Value.Entry.Rank + " of " + me.Value.Total);

Сбросы и прошлые периоды#

Ежедневные, еженедельные (с понедельника) и ежемесячные таблицы лидеров сбрасываются в 00:00 UTC. Завершённый период архивируется; прочитать его можно, указав период previous:

C#
var yesterday = await Majacloud.Leaderboards.GetTopAsync("coins", 10, 0, MajacloudLeaderboardPeriod.Previous);
Сколько прошлых периодов хранится и сколько записей возвращает таблица лидеров, зависит от тарифа (см. Лимиты).

Защита от читов#

  • Результаты меньше минимума или больше максимума отклоняются с ошибкой validation.
  • Отправка чаще, чем позволяет пауза, возвращает rate_limited.
  • Клиенты могут отправлять результаты только за вошедшего игрока.
  • В соревновательных играх пусть результат определяет ваш сервер и отправляет его с секретным ключом.

Отправка с сервера#

С секретным ключом передайте player_id и результат. Игрок должен существовать.

JavaScript
// Node.js with secretKey: submit after your server validated the match
await admin.server.submitScore('coins', 'player_3f9c…', 980);

Поиск по названиям страниц, заголовкам и тексту.

↑↓ навигация ↵ открыть Esc закрыть