Таблица лидеров
Обзор
Вы можете открыть таблицу лидеров или получить список игроков таблицы.
Для работы с таблицами лидеров используются методы:
gp.leaderboard.open
- открыть лидерборд +1-2 Requestgp.leaderboard.fetch
- получить список игроков лидерборда +1-2 Request
Открыть таблицу
+1-2 RequestЧтобы не реализовывать на своей стороне отображение таблицы рекордов, её можно просто открыть во внутриигровом оверлее:
- JavaScript
- Unity
gp.leaderboard.open();
GP_Leaderboard.Open();
По умолчанию выводится топ, отсортированный по очкам игрока, но все поля можно кастомизировать:
- JavaScript
- Unity
gp.leaderboard.open({
// Сортировка по полям слева направо
orderBy: ['level', 'gold'],
// Сортировка DESC — сначала большие значение, ASC — сначала маленькие
order: 'DESC',
// Количество игроков в списке
limit: 10,
// Включить список полей для отображения в таблице, помимо orderBy
includeFields: ['rank'],
// Вывести только нужные поля по очереди
displayFields: ['rank', 'level'],
/**
* Показывать ли текущего игрока в списке, если он не попал в топ
* none — не показывать
* first — показать первым
* last — показать последним
*/
withMe: 'first',
// Показать N ближайших игроков сверху и снизу, максимум 10
showNearest: 5,
});
GP_Leaderboard.Open(
// Сортировка по полям слева направо
orderBy = "score, gold",
// Сортировка DESC — сначала большие значение, ASC — сначала маленькие
order = "DESC",
// Количество игроков в списке
limit = 10,
// Показать N ближайших игроков сверху и снизу, максимум 10
showNearest = 5,
/**
* Показывать ли текущего игрока в списке, если он не попал в топ
* none — не показывать
* first — показать первым
* last — показать последним
*/
withMe = "none",
// Включить список полей для отображения в таблице, помимо orderBy
includeFields = "rank",
// Вывести только нужные поля по очереди
displayFields = "rank, level"
);
События оверлея лидербордов
- JavaScript
- Unity
// При открытии
gp.leaderboard.on('open', () => {});
// При закрытии
gp.leaderboard.on('close', () => {});
//Подписка на события
private void OnEnable()
{
GP_Leaderboard.OnLeaderboardOpen += OnOpen;
GP_Leaderboard.OnLeaderboardClose += OnClose;
}
//Отписка от событий
private void OnDisable()
{
GP_Leaderboard.OnLeaderboardOpen -= OnOpen;
GP_Leaderboard.OnLeaderboardClose -= OnClose;
}
// При открытии
private void OnOpen() => Debug.Log("LEADERBOARD: ON OPEN");
// При закрытии
private void OnClose() => Debug.Log("LEADERBOARD: ON CLOSE");
Получить таблицу
+1-2 RequestЕсли есть потребность отрисовывать список самому, то можно просто получить список игроков:
- JavaScript
- Unity
const result = await gp.leaderboard.fetch({
// Сортировка по полям слева направо
orderBy: ['level', 'gold'],
// Сортировка DESC — сначала большие значение, ASC — сначала маленькие
order: 'DESC',
// Количество игроков в списке
limit: 10,
// Включить список полей для отображения в таблице, помимо orderBy
includeFields: ['rank'],
/**
* Показывать ли текущего игрока в списке, если он не попал в топ
* none — не показывать
* first — показать первым
* last — показать последним
*/
withMe: 'first',
// Получить N ближайших игроков сверху и снизу, максимум 10
showNearest: 5,
});
// Результат получения
const { players, fields, topPlayers, abovePlayers, belowPlayers, player } = result;
//Подписка на событие
private void OnEnable()
{
GP_Leaderboard.OnFetchSuccess += OnFetchSuccess;
}
//Отписка от события
private void OnDisable()
{
GP_Leaderboard.OnFetchSuccess -= OnFetchSuccess;
}
GP_Leaderboard.Fetch(
//Тэг для метода обработки результата
tag = "Level",
// Сортировка по полям слева направо
orderBy = "score, gold",
// Сортировка DESC — сначала большие значение, ASC — сначала маленькие
order = "DESC",
// Количество игроков в списке
limit = 10,
// Получить N ближайших игроков сверху и снизу, максимум 10
showNearest = 5,
/**
* Показывать ли текущего игрока в списке, если он не попал в топ
* none — не показывать
* first — показать первым
* last — показать последним
*/
withMe = "none",
// Включить список полей для отображения в таблице, помимо orderBy
includeFields = "rank"
);
// Результат получения
private void OnFetchSuccess(string fetchTag, GP_Data data)
{
var players = data.GetList<LeaderboardFetchData>();
for (int i = 0; i < players.Count; i++)
{
ConsoleUI.Instance.Log("PLAYER: AVATAR: " + players[i].avatar);
ConsoleUI.Instance.Log("PLAYER: ID: " + players[i].id);
ConsoleUI.Instance.Log("PLAYER: SCORE: " + players[i].score);
ConsoleUI.Instance.Log("PLAYER: NAME: " + players[i].name);
ConsoleUI.Instance.Log("PLAYER: POSITION: " + players[i].position);
ConsoleUI.Instance.Log("PLAYER: GOLD: " + players[i].gold);
ConsoleUI.Instance.Log("PLAYER: LEVEL: " + players[i].level);
}
}
Ответ:
Свойство | Тип | Описание |
---|---|---|
players | LeaderboardPlayer[] | подготовленный к отрисовке топ игроков с учетом моего игрока и игроков перед и после игрока |
topPlayers | LeaderboardPlayer[] | список лидеров |
Если запрос включает withMe: 'first' | 'last'
или showNearest: >0
, то дополнительно возвращаются поля:
Свойство | Тип | Описание |
---|---|---|
player | LeaderboardPlayer | данные моего игрока с позицией |
abovePlayers | LeaderboardPlayer[] | список игроков перед моим игроком |
belowPlayers | LeaderboardPlayer[] | список игроков после моего игрока |
Подключение Яндекс лидерборда
Для работы с таблицами лидеров Яндекс Игр создайте в консоли разработчика лидерборд с техническим названием score
. Для этого:
- перейдите в приложения консоли Яндекс Игр
- выберите необходимую игру из списка
- откройте вкладку
Лидерборды
- создайте лидерборд с техническим названием 💡
score
- сохраните таблицу
score
- это название, которые вы будете использовать для взаимодействия в SDK. При сохранении игрока (см. метод sync) значение переменной score
автоматически сохраняется в лидерборд Яндекса.
Флажок Является ли основным лидербордом?
определяет, какой лидерборд будет отображаться на карточке игры. Такая таблица может быть только одна, и при создании новых таблиц с этим флажком он снимается со всех ранее созданных таблиц.
Типы
LeaderboardPlayer поля
Поле | Тип | Описание | Пример |
---|---|---|---|
id | number | Player ID | 163019491 |
name | string | Player name | Jhon Doe |
avatar | string | Player avatar | https://cdn.eponesh.com/static/images/652/5c6/6525c6c910494dadd428f12e-1024x1024.webp |
position | number | Player position in leaderboard | 1522 |
myVariable | string , number , boolean | Player custom variable | player.gold , player.score |
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!