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

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

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

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

Прежде чем вы начнете писать код с использованием API-интерфейсов списков лидеров:

Получите клиент списка лидеров

Чтобы начать использовать API списков лидеров, ваша игра должна сначала получить объект LeaderboardsClient . Вы можете сделать это, вызвав метод Games.getLeadeboardsClient() и передав активность и GoogleSignInAccount для текущего игрока. Чтобы узнать, как получить информацию об учетной записи игрока, см. раздел «Вход в игры для Android» .

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

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

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

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(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() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

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

,

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

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

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

Прежде чем вы начнете писать код с использованием API-интерфейсов списков лидеров:

Получите клиент списка лидеров

Чтобы начать использовать API списков лидеров, ваша игра должна сначала получить объект LeaderboardsClient . Вы можете сделать это, вызвав метод Games.getLeadeboardsClient() и передав активность и GoogleSignInAccount для текущего игрока. Чтобы узнать, как получить информацию об учетной записи игрока, см. раздел «Вход в игры для Android» .

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

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

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

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(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() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

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