Общая таблица лидеров
Создавайте автоматические таблицы лидеров по полям игрока. Вы можете создать таблицу по любому существующему чиловому полю игрока.
Обзор
Общие таблицы лидеров создаются автоматически при из запросе из SDK по нужным полям.
Для работы с таблицами лидеров используются методы:
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]
Желаем вам успехов!