다음을 통해 공유


순위표에 컨텍스트 데이터 추가

이 자습서에서는 순위표가 업데이트 될 때마다 컨텍스트 정보를 추가하는 방법을 설명합니다. 게임 스튜디오는 플레이어가 점수를 획득한 컨텍스트에 대한 몇 가지 세부 정보를 추가하거나 게임 내에 지정된 점수와 관련된 기능이 있을 수 있습니다.

이제 아케이드 게임이 있었던 이전 예제에서 경쟁이 치열한 슈팅 게임으로 전환하겠습니다. 이 예제에서 게임은 엄청난 성공을 거두었지만 어려움을 겪고 있습니다. 무기의 반동을 제거하고 목표 지원을 개선하는 외부 구성 요소로 게임을 "해킹"하는 사람들에 대한 불만이 너무 많습니다. 이제 사용된 모든 구성 요소에 대한 자세한 정보와 순위가 매겨진 일치 항목에 대한 네트워크 정보를 추적해야 합니다.

순위표 만들기

이 시나리오를 처리하는 방법을 보여 주려면 순위표로 더 많은 작업을 수행 페이지에서 순위표 정의를 사용합니다. 이 정의에서 순위표에 추가된 모든 행에 메타데이터를 추가하는 방법을 살펴보겠습니다.

public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 1000,
        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 = "Assists",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

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

각 행에 메타데이터 추가

플레이어에게 게임 플레이에 영향을 주는 권한이 없는 하드웨어 또는 플레이어의 성능을 향상시킬 수 있는 기타 악성 소프트웨어가 있는지 알고 싶습니다. 치트 방지 시스템은 이 모든 정보를 얻을 수 있지만 플레이어가 엄청나게 많기 때문에 높은 점수와 외부 구성 요소의 메타데이터를 플래그 확인에 집중할 것입니다.

이 작업을 수행하려면 UpdateLeaderboard API를 사용합니다. 여기서는 SDK 예제를 검사 수 있습니다.

public static async Task UpdateLeaderboardForPlayer(PlayFabAuthenticationContext context, string leaderboardName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateLeaderboardEntriesRequest updateLeaderboardRequest = new UpdateLeaderboardEntriesRequest()
    {
        Entries = new List<LeaderboardEntryUpdate>()
        {
            new LeaderboardEntryUpdate()
            {
                EntityId = entityId,
                Scores = new List<string> { score.ToString(), (score + 1).ToString(), (score + 2).ToString() },
                Metadata = "AntiCheat Data",
            }
        },
        AuthenticationContext = context,
        LeaderboardName = leaderboardName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> updateResult = await leaderboardsAPI.UpdateLeaderboardEntriesAsync(updateLeaderboardRequest);
}

여기서는 내에서 매개 변수를 MetadataLeaderboardEntryUpdate 사용하여 개발자에게 의미 있는 정보를 추가합니다. 이 경우 이를 사용하여 치트 방지 데이터를 저장합니다. 이 예제를 통해 이제 최고의 플레이어의 모든 관련 정보를 추적할 수 있으므로 게임 중재자가 누가 금지해야 할지 더 나은 결정을 내릴 수 있습니다.

결론

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

  • 다중 열 순위표를 만듭니다.
  • 순위표의 각 행에 메타데이터를 추가합니다.

참고 항목