Unity/Unity Cloud(UGS)

[Unity] UGS - Leaderboards

달시_Dalsi 2024. 10. 27. 01:19

 

리더보드란?

리더보드(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

 

SDK documentation

CommunityLeaderboardsTutorialsSDK documentation English日本語 (日本)한국어(대한민국)中文(中国) English日本語 (日本)한국어(대한민국)中文(中国) SDK documentation#The Leaderboards SDK documentation describes how to use

docs.unity.com

 

'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