리더보드란?
리더보드(Leaderboard)는 게임 내에서 플레이어의 점수나 순위 등을 표시하는 시스템입니다. 일반적으로 게임의 점수판이나 랭킹 화면에서 볼 수 있으며, 특정 목표나 성취도에 따라 플레이어가 다른 유저와 비교하여 어떤 위치에 있는지를 보여줍니다. 이는 게임 플레이의 몰입도를 높이고 플레이어가 목표 달성 후 보상을 얻거나 순위를 올리기 위해 계속해서 게임을 즐기게 하는 중요한 요소입니다.
리더보드 사용처 및 장점
- 경쟁과 성취감 제공
리더보드는 경쟁을 자극하여 플레이어가 더 높은 점수를 얻기 위해 노력하게 만들고, 게임의 반복성을 높여줍니다. 성취감을 통해 플레이어는 더 오래 게임에 몰입하게 되고, 이는 게임의 유저의 전반적인 플레이 시간을 향상시키는 데 큰 도움을 줍니다. - 게임 지속성 유지
일정한 목표나 순위가 존재할 때, 플레이어는 더 높은 순위를 위해 지속해서 게임을 플레이하게 됩니다. 이로 인해 자연스럽게 게임의 플레이 시간이이 늘어나며, 유저 이탈률을 줄이는 데도 도움을 줍니다. - 수익화 연계
일부 게임에서는 리더보드 상위권에 위치한 플레이어에게 특별한 보상을 제공하여 순위를 위해 게임 내 아이템 구매를 유도할 수 있습니다. 이러한 방식으로 리더보드는 수익 창출의 도구로도 활용됩니다.
UGS 리더보드 사용 방법
1. 리더보드 기능 설정
1. UGS와 Unity 프로젝트 연동
- Unity에서 새로운 프로젝트를 생성하거나 기존 프로젝트를 사용합니다.
- Unity Dashboard에 로그인하여 UGS 설정을 진행하고 프로젝트를 연결합니다.
2. 리더보드 활성화
- Unity Dashboard로 이동하여 좌측 메뉴에서 Leaderboards 기능을 찾아 활성화합니다.
- 새 리더보드를 생성하고 가이드에 따라 설정해줍니다.
2. Unity에서 리더보드 기능 구현하기
1. UGS 패키지 설치
Unity 에디터에서 Package Manager를 열고 UGS의 Leaderboards 패키지를 검색하여 설치합니다.
2. 코드 작성 - 내 점수 등록
using Unity.Services.Leaderboards;
async void SubmitScore(int score)
{
try
{
await LeaderboardsService.Instance.AddPlayerScoreAsync("리더보드_이름", score);
Debug.Log("점수가 성공적으로 제출되었습니다.");
}
catch (Exception e)
{
Debug.LogError("점수 제출 오류: " + e.Message);
}
}
3. 코드 작성 - 상위 n등 이름 및 점수 확인
private async void GetTopNPlayers(int topN)
{
try
{
var topScores = await LeaderboardsService.Instance.GetScoresAsync("test_Leaderboard", new GetScoresOptions
{
Limit = topN
});
if (topScores != null && topScores.Results.Count > 0)
{
for (int i = 0; i < topScores.Results.Count; i++)
{
var score = topScores.Results[i];
Debug.Log($"순위 {i + 1}: 유저 ID = {score.PlayerId}, 점수 = {score.Score}");
}
}
else
{
Debug.Log("리더보드에 데이터가 없습니다.");
}
}
catch (Exception e)
{
Debug.LogError($"리더보드 데이터를 가져오는 중 오류가 발생했습니다: {e.Message}");
}
}
4. 코드 작성 - 내 점수 확인
private async void GetMyScore()
{
// 현재 유저의 점수를 가져옵니다.
var myScore = await LeaderboardsService.Instance.GetPlayerScoreAsync("리더보드_이름");
if (myScore != null)
{
Debug.Log($"내 점수: {myScore.Score}");
}
else
{
Debug.Log("내 점수를 찾을 수 없습니다.");
}
}
5. 코드 작성 - 내 등수 확인
private async void GetMyRank()
{
var MyRank = await LeaderboardsService.Instance.GetPlayerScoreAsync("리더보드_이름");
if (MyRank != null)
{
Debug.Log($"내 등수: {MyRank.Rank +1}");
}
else
{
Debug.Log("등수를 찾을 수 없습니다.");
}
}
6. 코드 작성 - 상대 정보 확인
public async void GetInfoByPlayerIds()
{
// 다른 플레이어 id
var otherPlayerIds = new List<string> { "플레이어 아이디1", "플레이어 아이디2" };
try
{
// 다른 플레이어의 정보를 조회합니다.
var scoresResponse = await LeaderboardsService.Instance.GetScoresByPlayerIdsAsync("test_Leaderboard", otherPlayerIds);
if (scoresResponse != null)
{
// 플레이어 ID, 랭크, 점수, 티어 출력
Debug.Log(JsonConvert.SerializeObject(scoresResponse));
}
else
{
Debug.Log("플레이어를 찾을 수 없습니다.");
}
}
catch (Exception e)
{
Debug.LogError($"정보 조회 중 오류 발생: {e.Message}");
}
}
마무리
UGS의 Leaderboards 기능을 통해 리더보드 시스템을 간단하게 구현할 수 있습니다. 리더보드를 통해 플레이어의 몰입도를 높이고 게임의 플레이시간을 높이는 효과를 기대할 수 있습니다.
https://docs.unity.com/ugs/en-us/manual/leaderboards/manual/sdk-documentation
'Unity > Unity Cloud(UGS)' 카테고리의 다른 글
[Unity] UGS - Asset Manager (1) | 2024.10.26 |
---|---|
[Unity] UGS - Cloud Code (0) | 2024.10.25 |
[Unity] UGS - Cloud Save (0) | 2024.10.24 |
[Unity] UGS - Remote Config (0) | 2024.10.23 |
[Unity] UGS - Player Authentication (0) | 2024.10.15 |