다음을 통해 공유


순위표를 사용하는 수동 계층

이 자습서에서는 순위표 서비스 내에서 일부 속성을 적용하여 플레이어를 위한 계층 시스템을 만드는 방법을 알아봅니다. 서비스 속성을 기반으로 수동 계층 시스템을 만드는 방법을 이해하려면 예제로 시작하겠습니다. 플레이어가 가능한 한 많은 점수를 획득할 수 있는 시간이 제한된 좀비 살인 게임이 있다고 상상해 보십시오. 다른 전략을 사용하여 더 많은 포인트를 획득할 수 있으며, 피해를 받지 않는 점도 있습니다.

이 예제에서 플레이어는 각 경기의 성과에 따라 경험 포인트를 획득합니다. "구주"의 순위를 가진 상위 플레이어를 식별하는 계층 시스템을 만들고자 하며, 나머지 플레이어들은 브론즈, 실버, 골드, 플래티넘, 다이아몬드와 같은 다양한 계급에 배포될 것입니다.

순위표 만들기

첫 번째 단계는 순위 플레이어에 대한 기본 요소를 포함하는 순위표 정의를 만드는 것입니다. 우리의 좀비 게임에 대 한, 우리는 여러 점수를 사용 하 여 거 야. 다음 예제에서는 C# SDK를 사용하여 순위표 정의를 만드는 방법을 보여줍니다.

public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 10000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Eliminations",
                SortDirection = LeaderboardSortDirection.Descending,
            },
            new LeaderboardColumn()
            {
                Name = "SkillPoints",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}

여기서는 세 가지 다른 점수로 정의된 순위표가 있습니다. 순위표를 만드는 방법 또는 동률을 깨는 방법에 대한 자세한 내용은 순위표로 더 많은 작업을 수행하는 가이드를 검사.

수동 계층화

순위표를 올바르게 만들면 이제 계층을 만드는 방법을 정의할 수 있습니다. 먼저 플레이어 모집단을 분할하는 방법을 정의해야 합니다. 일반적으로 순위가 높을수록 플레이어 수가 줄어듭니다. 이 개념을 염두에 두고 계층을 정의하는 방법은 다음과 같습니다.

  • 브론즈: 플레이어의 0-35%.
  • 실버: 플레이어의 35% - 60%.
  • 골드: 플레이어의 60% - 80%.
  • 플래티넘: 플레이어의 80% - 90%.
  • 다이아몬드: 플레이어의 90% - 99.5%.
  • 구주: 플레이어의 상위 0.05%.

이 프로세스는 계층 시스템에 대한 수동 접근 방식이므로 플레이어의 배포는 개발자가 적합하게 보는 방식으로 저장되어야 합니다.

데이터를 검색하기 위해 다음 예제를 사용합니다.

public static async Task<List<EntityLeaderboardEntry>> GetLeaderboard(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    GetEntityLeaderboardRequest getLbRequest = new GetEntityLeaderboardRequest()
    {
        LeaderboardName = leaderboardName,
        StartingPosition = 1,
        PageSize = 20,
        AuthenticationContext = context,
    };

    PlayFabResult<GetEntityLeaderboardResponse> lbResponse = await leaderboardsAPI.GetLeaderboardAsync(getLbRequest);
    
    return lbResponse.Result;
}

이 예제는 순위표에서 데이터를 검색하는 여러 방법 중 하나입니다. 응답의 Result 속성에서 순위표에 현재 있는 행 수를 알려주는 라는 EntryCount 속성을 찾습니다. 이 숫자는 순위표의 최대 행 수를 나타내는 와 다릅니다 SizeLimit .

플레이어의 계층을 결정하기 위해 순위표 내에서 해당 위치를 가져와 속성으로 EntryCount 나누어 정의된 계층 내에 맞는 위치를 확인합니다.

빠른 예제:

  • 최하위 플레이어: 10,000명 중 8500명 에 위치한 플레이어는 인구의 85% 이내이며 브론즈 계층에 속합니다.
  • 미들 플레이어: 10,000명 중 3500명 에 배치된 플레이어는 플레이어의 상위 35% 내에 있으며 골드 계층에 속합니다.
  • 탑 플레이어: 10,000명 중 50명 에 배치된 플레이어는 플레이어의 상위 0.5% 이내이며 "구주"가 됩니다.

결론

이 자습서에서는 다음 작업을 수행하는 방법을 알아보았습니다.

  • 순위표를 만듭니다.
  • 순위표에서 데이터를 쿼리하는 방법을 알아봅니다.
  • 백분위수에 따라 수동 계층 배포를 만드는 방법을 알아봅니다.
  • 플레이어의 위치 결과를 실제 계층에 매핑하는 방법을 알아봅니다.

참고 항목