다음을 통해 공유


통계를 사용하여 더 많은 작업 수행

이 자습서에서는 다중 열 통계 만들기 및 통계를 쿼리하는 여러 가지 방법과 같이 서비스에서 제공해야 하는 고급 기능을 다룹니다. 이러한 기능을 통해 통계 서비스가 수행할 수 있어야 하는 작업의 한계를 뛰어넘는 것을 목표로 합니다.

우리는 이러한 새로운 기능이 몇 가지 문제를 해결하는 데 어떻게 도움이 될 수 있는지의 예로 경쟁이 치열한 슈팅 게임을 사용하고 있습니다. 이 게임에는 플레이어가 장거리 슛을 할 수 있는 여러 무기가 있습니다. 우리는 장거리 샷의 거리뿐만 아니라 사용된 총알의 구경을 추적하려고합니다.

필수 조건

기본 통계 만들기의 단계를 완료합니다.

다중 열 통계 정의 만들기

이 예제로 시작하려면 이전보다 더 복잡한 통계 정의를 만들어야 합니다.

장거리 및 구경의 주요 측면을 매핑하기 위해 여러 열을 정의합니다. 다음 예제에서는 C# SDK를 사용하여 통계 정의를 만드는 방법을 보여줍니다.

public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Distance",
                AggregationMethod = StatisticAggregationMethod.Max,
            },
             new StatisticColumn()
            {
                Name = "Caliber",
                AggregationMethod = StatisticAggregationMethod.Min,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}

여기서 Columns 가장 중요한 구성 요소는 여러 정의를 StatisticColumn 허용하여 통계가 여러 값을 가질 수 있도록 하는 매개 변수입니다. 유일한 예외는 의 집계를 사용하는 경우입니다 Sum.

통계에 데이터 추가

이제 통계를 만들었으므로 데이터를 추가하겠습니다. 이 주제에 대한 이전 자습서와 기본 차이점은 이제 두 개의 다른 값을 추가해야 한다는 것입니다. 다음 예제에서는 C# SDK를 사용하여 통계에 데이터를 추가하는 방법을 보여줍니다.

public static async Task UpdateStatisticForPlayer(PlayFabAuthenticationContext context, string statName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticsRequest updateStatRequest = new UpdateStatisticsRequest()
    {
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
        AuthenticationContext = context,
        Statistics = new List<PlayFab.LeaderboardsModels.StatisticUpdate>() 
        {
            new PlayFab.LeaderboardsModels.StatisticUpdate() 
            {
                Name = statName,
                Scores = new List<string> { score.ToString(), score.ToString()},
            }
        }
    };

    PlayFabResult<UpdateStatisticsResponse> updateResult = await statsAPI.UpdateStatisticsAsync(updateStatRequest);
}

여기서 기본 지점은 Scores 추가될 통계 내의 매개 변수를 사용합니다. 코드 예제에서는 문자열인 두 개의 서로 다른 값을 볼 수 있지만 통계 내의 입력 정의일 뿐입니다. 이러한 값은 숫자로 처리됩니다. 점수 목록의 길이는 항상 통계 정의의 열 수와 일치해야 합니다.

통계에서 데이터 검색

이제 여러 엔터티를 쿼리하고 각 엔터티와 관련된 모든 통계를 가져오는 방법을 알아봅니다. 다음 예제에서는 C# SDK를 사용하여 통계에 데이터를 추가하는 방법을 보여줍니다.

public static async Task GetStatsForEntities(PlayFabAuthenticationContext context, string[] entityIds)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

    GetStatisticsForEntitiesRequest request = new GetStatisticsForEntitiesRequest()
    {
        AuthenticationContext = context,
        Entities = entityIds.Select(entity => new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entity,
            Type = EntityType
        }).ToList(),
    };

    PlayFabResult<GetStatisticsForEntitiesResponse> result = await statsAPI.GetStatisticsForEntitiesAsync(request);

    foreach (EntityStatistics entityStatistics in result.Result.EntitiesStatistics)
    {
        Console.WriteLine("Stats for entity: " + entityStatistics.EntityKey.ToString());
        foreach (var stat in entityStatistics.Statistics)
        {
            Console.WriteLine($"{stat.Name} : {string.Join('|', stat.Scores)}");
        }
    }

}

타이 브레이킹

다중 열 통계 정의가 있는 경우 동률 구분이 필요한 시나리오를 접할 수 있습니다. 이 메커니즘이 작동하는 방식은 열이 추가된 방식을 따르는 것입니다. 새 값이 들어올 때마다 시스템은 첫 번째 열에 대한 집계 조건을 충족하는지 확인합니다. 값이 같으면 두 번째 콜럼에 대한 조건을 확인합니다. 이 동작은 다음 열에 대해 계속됩니다.

예를 들어 다음 세 개의 열에 대한 통계를 사용할 수 있습니다.

  • 첫 번째 열에는 최소 집계가 있습니다.
  • 두 번째 열에는 최대 집계가 있습니다.
  • 세 번째 열에는 마지막 집계가 있습니다.

새 값이 들어오는 경우 첫 번째 열보다 낮아야 합니다. 그런 다음 두 번째 열보다 커야 합니다. 마지막으로 세 번째 열은 마지막 집계로 설정되므로 처음 두 개의 유효성 검사를 충족하는 경우 항상 업데이트됩니다.

결론

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

  • 다중 열 통계 만들기
  • 통계 쿼리
  • 타이 브레이킹 작동 방식을 이해합니다.

참고 항목