Таблицы лидеров в играх для Android

В этом руководстве показано, как использовать API таблиц лидеров в приложении Android для создания визуальных таблиц лидеров, записи результатов игрока и сравнения этих результатов с результатами игрока в предыдущих игровых сессиях. API можно найти в пакетах com.google.android.gms.games и com.google.android.gms.games.leaderboards .

Прежде чем начать

Если вы еще этого не сделали, вам может быть полезно повторить основные принципы игры с таблицами лидеров .

Прежде чем начать программировать с использованием API таблиц лидеров:

Загрузите клиент для таблиц лидеров.

Для начала использования API таблиц лидеров ваша игра должна сначала получить объект LeaderboardsClient . Это можно сделать, вызвав метод PlayGames.getLeaderboardsClient() и передав в него объект Activity.

Обновить счет игрока

Когда счет игрока изменяется (например, когда игрок завершает игру), ваша игра может обновить его счет в таблице лидеров, вызвав метод LeaderboardsClient.submitScore() и передав в него идентификатор таблицы лидеров и исходное значение счета.

Следующий фрагмент кода показывает, как ваше приложение может обновлять счет игрока:

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

Рекомендуется указывать идентификатор таблицы лидеров в файле strings.xml , чтобы игра могла ссылаться на таблицы лидеров по идентификатору ресурса. При выполнении запросов на обновление и загрузку результатов игроков также обязательно соблюдайте эти рекомендации , чтобы избежать превышения квоты API.

Отобразить таблицу лидеров

Для отображения таблицы лидеров вызовите LeaderboardsClient.getLeaderboardIntent() , чтобы получить Intent и создать стандартный пользовательский интерфейс таблицы лидеров. Затем ваша игра может отобразить этот интерфейс, вызвав startActivityForResult .

Приведенный ниже фрагмент кода показывает, как ваше приложение может обновлять счет игрока. В фрагменте кода RC_LEADERBOARD_UI — это произвольное целое число, обозначающее код запроса.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Необходимо использовать startActivityForResult даже если он не возвращает результата. Это позволяет API получить идентификатор вызывающего пакета. На следующем рисунке показан пример стандартного пользовательского интерфейса таблицы лидеров.

Пример стандартного пользовательского интерфейса таблицы лидеров.
Пример стандартного пользовательского интерфейса таблицы лидеров.