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

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

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

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

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

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

Для начала использования API таблиц лидеров ваша игра должна сначала получить объект LeaderboardsClient . Это можно сделать, вызвав метод PlayGames.getLeadeboardsClient() и передав в него объект 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 мог получить идентификатор вызывающего пакета. Пример стандартного пользовательского интерфейса таблицы лидеров показан ниже.