Android 게임의 리더보드

이 가이드에서는 Android 애플리케이션에서 리더보드 API를 사용하여 시각적 리더보드를 만들고 플레이어의 점수를 기록하며 이전 게임 세션의 플레이어 점수와 점수를 비교하는 방법을 보여줍니다. API는 com.google.android.gms.gamescom.google.android.gms.games.leaderboards 패키지에서 찾을 수 있습니다.

시작하기 전에

아직 검토하지 않았다면 리더보드 게임 개념을 검토하는 것이 좋습니다.

리더보드 API를 사용하여 코딩을 시작하기 전에 다음을 진행합니다.

리더보드 클라이언트 가져오기

리더보드 API를 사용하려면 먼저 게임에서 LeaderboardsClient 객체를 가져와야 합니다. 이렇게 하려면 Games.getLeadeboardsClient() 메서드를 호출하고 현재 플레이어의 활동 및 GoogleSignInAccount를 전달하면 됩니다. 플레이어 계정 정보를 검색하는 방법을 알아보려면 Android 게임에서 로그인을 참고하세요.

플레이어 점수 업데이트

플레이어의 점수가 변경(예: 플레이어가 게임을 완료했을 때)되면 LeaderboardsClient.submitScore()를 호출하고 리더보드 ID 및 원시 점수 값을 전달하여 리더보드의 점수를 업데이트할 수 있습니다.

다음 코드 스니펫은 앱에서 플레이어의 점수를 업데이트할 수 있는 방법을 보여줍니다.

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

게임에서 리소스 ID별로 리더보드를 참조할 수 있도록 strings.xml 파일에 리더보드 ID를 정의하는 것이 좋습니다. 플레이어 점수를 업데이트하고 로드하기 위해 호출을 실행한 경우 API 할당량을 초과하지 않도록 관련 권장사항도 따라야 합니다.

리더보드 표시

리더보드를 표시하려면 Intent를 가져올 LeaderboardsClient.getLeaderboardIntent()를 호출하여 기본 리더보드 사용자 인터페이스를 생성합니다. 그러면 게임이 startActivityForResult를 호출하여 UI를 불러올 수 있게 됩니다.

다음 코드 스니펫은 앱에서 플레이어의 점수를 업데이트할 수 있는 방법을 보여줍니다. 코드 스니펫에서 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);
        }
      });
}

결과가 반환되지 않더라도 API가 호출 패키지의 ID를 가져올 수 있도록 startActivityForResult를 사용해야 합니다. 기본 리더보드 UI의 예가 아래에 나와 있습니다.