리더보드는 열성 팬(공개 리더보드에서 최고 순위를 차지하려고 노력하는 플레이어)과 좀 더 일반적인 플레이어(친구들의 게임 진행 상황과 내 진행 상황을 비교하는 데 관심 있는 플레이어)를 모두 포함하여 플레이어 간에 경쟁을 유도하는 흥미로운 방법이 될 수 있습니다.
플랫폼의 리더보드를 구현하는 방법은 클라이언트 구현을 참고하세요.
리더보드 이해
리더보드를 만들면 Google Play 게임 서비스가 대부분의 몇 가지 예를 살펴보겠습니다. 일반적인 과정은 다음과 같습니다.
- 게임이 끝나면(또는 결정된 적절한 때에) 게임은 플레이어의 점수를 게임에 생성한 하나 이상의 리더보드에 제출합니다.
- Google Play 게임즈 서비스에서는 이 점수가 플레이어의 현재 점수보다 높은지 확인합니다. 리더보드 입력값입니다. 사용할 수 있는 경우 Google Play 게임즈 서비스는 새 점수로 해당하는 리더보드를 업데이트합니다.
- Google Play 게임즈 서비스는 게임 클라이언트로 점수 보고서를 다시 전송합니다. 이 보고서는 이 점수가 새로운 일간 또는 주간, 전체 기간 최고점수인지 클라이언트에 알려줍니다. Google Play 게임 서비스는 클라이언트에게 현재 일일 주간 또는 역대 최고점수일 수도 있습니다.
- 플레이어의 리더보드 결과를 가져오려면 기간(일간, 주간, 전체 기간)을 요청하고 사용자가 소셜 또는 공개 리더보드를 확인하려고 하는지 지정하면 됩니다. 게임 서비스는 그런 다음 결과를 클라이언트로 다시 보냅니다.
- 보고할 점수가 많은 경우 게임 서비스에서는 최고 리더보드 점수에 해당하는 데이터만 다시 반환합니다. 원시 데이터를 가져와 플레이어 점수에 인접한 점수에 대한 점수 데이터를 가져옵니다.
여러 개의 리더보드
게임에는 여러 개의 리더보드를 만들 수 있으며 최대 70개까지 가능합니다. 예를 들어 여러 단계 게임은 단계마다 다른 리더보드를 제공할 수 있고, 레이싱 게임에는 트랙마다 별도의 리더보드가 있을 수 있습니다.
리더보드 기간
Play 게임즈 SDK가 일간, 주간, 전체 기간 버전을 자동으로 생성 확인할 수 있습니다. 각 포드에 대한 개별 포드를 별도로 만들 수 있습니다.
일간 리더보드는 일 년 내내 UTC-7(태평양 표준시 자정)에 재설정됩니다.
주간 리더보드는 일간 리더보드(UTC-7)와 동일한 시간대로 토요일에서 일요일로 넘어가는 자정에 재설정됩니다.
공개 및 소셜 리더보드
Play 게임즈 SDK는 각 리더보드의 두 가지 다른 버전을 플레이어에게 표시할 수 있습니다.
소셜 리더보드는 사용자 서클에서 게임플레이 활동을 사용자와 공유하기로 결정한 사람들(또는 더 정확하게는 사용자가 애플리케이션과 공유하도록 선택한 서클의 회원)로 구성된 리더보드입니다.
공개 리더보드는 게임플레이 활동을 공개적으로 공유하기로 선택한 플레이어로 구성된 리더보드입니다. 플레이어가 게임플레이 활동을 공개적으로 공유하도록 선택하지 않으면 이 리더보드에 표시되지 않습니다.
리더보드 표시
모바일 클라이언트 라이브러리에서 라이브러리는 리더보드의 모든 형식 지정과 표시를 처리합니다. 플레이어에게 특정 리더보드를 표시할지, 또는 플레이어가 선택할 수 있는 모든 리더보드 목록을 표시할지 지정할 수 있습니다.
클라이언트 라이브러리에서 직접 데이터에 액세스하여 자체 리더보드 버전을 구현할 수도 있습니다.
속성
리더보드를 만들고 관리하려면 다음 리더보드 속성을 숙지하는 것이 좋습니다.
기본사항
다음 기본 요소는 모든 리더보드에 해당됩니다.
- ID는 Google Play Console에서 자동으로 생성됩니다 이 고유 ID를 사용해 게임 클라이언트의 리더보드를 참조하게 됩니다.
- 이름: 리더보드의 간략한 이름입니다(예: '최고점수' 또는 '레벨 3' 등). 최대 100자(영문 기준)까지 가능합니다.
- 아이콘: 리더보드에 연결되는 정사각형 아이콘입니다. 리더보드 아이콘을 만들 때 권장사항은 아래 아이콘 가이드라인 섹션을 참고하세요.
- 목록 순서: 플레이어가 게임과 연결된 리더보드를 볼 때 리더보드가 표시되는 순서입니다.
- 한도: 리더보드에 허용되는 점수의 하한 및 상한을 정의하는 값입니다(선택사항). 이를 통해 명백히 허위인 점수 제출을 삭제할 수 있습니다.
Players.hide
를 사용하여 허위 점수를 제출했다고 생각하는 플레이어를 앱의 모든 리더보드에서 숨길 수도 있습니다.
정렬
리더보드는 다음 두 가지 정렬 유형 중 한 가지로 정렬할 수 있습니다.
- 점수가 높을수록 좋은 리더보드가 기본값입니다. 이는 일반적으로 플레이어가 포인트를 획득하는 대부분의 게임에서 볼 수 있습니다.
- 점수가 낮을수록 좋은 리더보드는 점수가 낮을수록 좋은 경우에 가끔 사용됩니다. 이러한 리더보드 유형의 가장 일반적인 예는 레이싱 게임으로, 점수가 플레이어가 레이스를 완료한 시간을 나타냅니다.
점수 표시 방식
모든 점수는 리더보드에 제출되고 게임 서비스에서는 이를 다양한 형식으로 사용자에게 표시할 수 있습니다. 형식:
숫자 리더보드는 점수를 숫자로 표시합니다. 정수 또는 고정 소수점 이하 자릿수가 있는 실수로 표시할 수 있습니다. 점수를 정수로 제출하면 소수점이 지정된 위치에 삽입됩니다. 예를 들어 점수
314159
는 지정된 소수점 위치에 따라3.14159
또는3141.59
,314159
로 표시됩니다.시간 리더보드는 시/분/초/100분의 1초 형식으로 점수를 표시합니다. 점수를 밀리초로 제출해야 하므로
66032
는1:06.03
으로 해석됩니다.통화 리더보드는 점수를 통화 형식으로 표시합니다. 점수를 기본 통화 단위의 1/1,000,000번째로 제출합니다. 예를 들어 통화를 USD로 지정했다고 가정하면 점수 19,950,000은
$19.95
로 해석됩니다.
숫자 리더보드는 맞춤 단위도 지원합니다. 예를 들어 게임에서 최고점수를 미터 단위로 측정하는 경우 '미터'를 리더보드의 기본 단위로 지정할 수 있습니다.
번역 및 점수 표시 방식
모바일 클라이언트 라이브러리가 게임 서비스에서 리더보드 데이터를 요청하면 점수를 표시할 언어와 지역을 지정합니다. REST API를 사용하면 언어 기반 언어도 지정할 수 있습니다. 게임 서비스가 형식이 지정된 리더보드 점수를 반환 선택할 수 있습니다. 이러한 형식의 점수는 리더보드에 번역을 추가했는지 여부와 관계없이 표시됩니다.
숫자 리더보드의 경우 숫자 형식은 언어마다 다르게 표시됩니다.
예를 들어 미국은 12,345.78
, 프랑스는 12 345,78
입니다. 맞춤 단위를 사용하고 게임에 번역을 추가한 경우 추가한 모든 언어의 번역된 단위를 제공해야 합니다. 그러면 서비스에서 이와 같이 번역된 단위를 적절한 시점에 표시합니다.
선택한 언어에 따라 다른 버전의 단위 이름을 제공해야 할 수도 있습니다. 영어의 경우 한 항목에 한 버전이 필요하고 그 외 항목에 또 다른 버전이 필요합니다(예: 'meter', 'meters'). 반면 폴란드어의 경우 한 단위, 몇 개의 단위, 여러 단위, 그 외 모든 단위의 버전을 제공해야 합니다. 복수형 규칙에 관해 자세히 알아보려면 수량 문자열(복수형) 페이지를 참고하세요.
시간 리더보드의 경우 시간 형식이 플레이어의 언어를 기반으로 표시됩니다. 몇 분의 1초를 사용하거나 시간(hour) 값이 3자리를 초과하는 경우 주로 눈에 띄게 표시됩니다(예: 미국의 경우 4,815:16:23.42
, 독일의 경우 4.815:16:23,42
).
통화 리더보드의 경우 플레이어의 언어에 따라 통화 형식이 표시됩니다. 그러나 통화 단위를 변경할 수는 없습니다. 예를 들어 USD로 통화를 지정하면 게임에서는 미국의 경우 $19.95
, 프랑스의 경우 19,95 $
를 표시합니다. 그러나 게임이 미국에서는 달러로, 프랑스에서는 유로로 표시하도록 지정할 수는 없습니다.
아이콘 가이드라인
아이콘은 512 x 512 PNG 또는 JPEG 파일로 만들어야 합니다. 아이콘은 대부분의 게임 클라이언트에서 축소되므로 세부내용이 너무 많은 아이콘을 만들지 않는 것이 좋습니다. 알파 채널을 사용해 아이콘을 제출하면 투명도가 유지됩니다. 리더보드 아이콘은 Android 기기에서 어두운 회색 배경에 표시되므로 이러한 상황에서 효과적인 아이콘을 선택합니다.
모든 언어에서 동일한 아이콘이 사용되므로 아이콘에 텍스트나 현지화된 콘텐츠를 포함하지 않는 것이 좋습니다.
리더보드 만들기
이 섹션에서는 새 게임이나 기존 게임의 리더보드를 만드는 방법을 설명합니다.
새 게임의 리더보드 만들기
게시되지 않은 새 게임의 리더보드를 만들려면 다음으로 이동하세요. 해당 게임의 Google Play Console 항목을 열고 성장 > Play 게임즈 서비스 > 설정 및 관리 > 리더보드를 클릭한 다음 리더보드 만들기 버튼
그런 다음 해당 리더보드에 필요한 정보를 입력합니다.
초안으로 저장을 클릭하면 리더보드가 '초안' 상태로 제공됩니다. 게임을 게시하면 게임의 모든 리더보드가 게임과 함께 게시됩니다.
게시된 게임의 리더보드 만들기
이미 게시된 게임의 리더보드를 추가로 만들려면 위와 동일한 단계를 따릅니다. 업데이트된 버전의 게임 테스트에 관한 자세한 내용은 게임 변경사항 게시를 참고하세요.
리더보드를 테스트하고 만족하면 새 리더보드로 게임을 다시 게시할 수 있고 그러면 전 세계에 공개됩니다.
리더보드 수정
이미 만든 리더보드를 수정하려면 앱의 왼쪽 상단에 있는 리더보드 리더보드 탭으로 이동합니다. 이때 리더보드를 처음 만들 때 사용한 것과 동일한 양식이 표시되므로 원하는 대로 필드를 수정할 수 있습니다.
리더보드 수정을 완료하면 초안으로 저장 버튼을 클릭합니다. 새로 수정된 리더보드는 '초안' 상태가 되므로 테스트할 수 있습니다.
제대로 작동한다면 리더보드 양식 상단의 상자에서 변경사항 게시를 선택합니다. 그러면 업데이트된 모든 리더보드와 함께 게임을 다시 공개적으로 게시할 수 있습니다.
수정 실행취소
새로 수정한 리더보드가 만족스럽지 않아 이전 버전으로 돌아가려면 리더보드 양식 상단의 상자에서 되돌리기를 선택하기만 하면 됩니다. 리더보드가 이미 게시된 버전으로 되돌아갑니다.
리더보드 삭제
'초안' 상태이거나 게시된 리더보드는 삭제할 수 있습니다. Google Play Console에서 리더보드를 삭제하려면 리더보드를 삭제하고 양식 상단의 리더보드 삭제를 클릭합니다.
또는 Players.hide
를 호출하여 플레이어의 리더보드를 앱에서 숨길 수 있습니다.
리더보드 재설정
초안 리더보드의 플레이어 진행 상황 데이터만 재설정할 수 있습니다.
- Google Play Console에서 리더보드를 재설정하려면 진행 상황 재설정을 양식 상단에 표시됩니다.
- 프로그래매틱 방식으로 리더보드 데이터를 재설정하려면 Management API
Scores
메서드를 호출합니다.
리더보드 번역 추가
게임과 연결된 리더보드의 자체 번역을 지정할 수 있습니다. 이렇게 하기 전에 먼저 게임에 번역 추가에 설명된 단계를 완료해야 합니다. 또한 게임의 리더보드를 하나 이상 만들어야 합니다.
리더보드에 자체 번역을 추가하려면 리더보드 탭을 열고 기존 리더보드를 선택합니다. 리더보드 세부정보 페이지에서 이전에 게임 세부정보 탭에 추가한 언어의 탭을 클릭합니다. 해당 언어의 리더보드 세부정보 페이지에서 해당 리더보드의 번역으로 양식을 수정합니다. 저장을 클릭하여 번역된 리더보드 세부정보를 저장합니다.
리더보드 점수 숨기기
Google Play 게임즈 서비스는 조작된 것으로 의심되는 점수를 확인하고 자동으로 숨깁니다. 이 기능은 Android 게임에서만 사용할 수 있습니다.
조작 방지 기능은 Android 게임용으로 만드는 새 리더보드에 기본적으로 사용 설정되지만 기존 리더보드에서는 사용 중지됩니다. 이미 게시된 기존 리더보드에 조작 방지를 사용 설정하려면 다음 단계를 따르세요.
- Google Play Console에서 게임 서비스 탭을 열고 선택합니다.
- 리더보드 탭을 열고 조작 방지를 사용 설정할 리더보드 인스턴스를 선택합니다.
- 리더보드 조작 방지 사용 설정 옵션을 사용으로 설정합니다.
- 저장하고 계속하기를 클릭합니다.
- 게임을 게시합니다.
Google Play Console에서 리더보드에 조작 방지가 사용 설정되면 기능이 적용되는 데 최대 24시간이 걸릴 수 있습니다. 조작 방지를 사용 설정하기 전에 제출한 점수는 소급하여 숨겨지지 않습니다.
경우에 따라 조작 방지 기능을 사용 중지해야 할 수도 있습니다. 게임이 Android 외에도 웹에서 실행되고 이러한 플랫폼 간에 리더보드를 공유하는 경우를 예로 들 수 있습니다.
클라이언트 구현
플랫폼의 리더보드를 구현하는 방법은 다음 리소스를 참고하세요.