다음을 통해 공유


기본 통계 만들기

이 자습서에서는 새 통계 서비스를 사용하여 기본 통계를 만드는 방법을 보여 드립니다. 플레이어가 장거리 슛을 칠 때마다 추적하려는 슈팅 게임의 예로 시작해 보겠습니다.

통계 만들기

첫 번째 단계는 긴 샷을 추적하기 위한 기본 요소를 포함하는 통계 정의를 만드는 것입니다. 우리의 사수 게임의 경우, 우리는 긴 샷의 거리에 대한 하나의 열이 필요합니다. 다음 예제에서는 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,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}

이제 이 예제의 몇 가지 주요 요소를 설명해 보겠습니다.

  • AuthenticationContext: 이 매개 변수는 서비스에 대한 모든 요청 뒤에 있는 모든 인증을 처리합니다. 자세한 설명을 보려면 빠른 시작 통계 페이지를 검사 수 있습니다.
  • Name: 이 매개 변수는 통계 정의를 식별하는 데 도움이 됩니다. 정보를 검색하기 위해 다른 요청을 하는 데 사용되기 때문에 여기에서 관련 항목을 유지하는 것이 중요합니다.
  • EntityType: 이 매개 변수는 통계를 만들려는 엔터티의 형식을 지정합니다. 엔터티 프로그래밍 모델에서 자세히 알아볼 수 있습니다.
  • VersionConfiguration: 이 매개 변수를 사용하면 일정 기간 후에 다시 설정되는 통계에 대한 버전 관리 전략을 설정할 수 있습니다. 이 개념은 계절 통계에서 자세히 다룹니다.
  • Columns: 여기서는 통계의 열 수를 정의합니다. 이 예제에서는 긴 샷에 대해 하나의 열만 설정합니다. 또한 을 AggregationMethod Max로 정의합니다. 즉, 새 값이 이전 값보다 클 때마다 통계가 업데이트됩니다.
    • AggregationMethod 에는 다음과 같은 네 가지 가능한 값이 있습니다.
      • Max: 새 값이 이전 값보다 커야 합니다.
      • Min: 새 값이 이전 값보다 낮아야 합니다.
      • Last: 항상 최신 값으로 업데이트됩니다.
      • Sum: 이전 값과 새 값이 함께 추가됩니다.

모든 정보가 명확해지면 이제 예제를 실행하고 첫 번째 통계를 만들 준비가 되었습니다.

통계 정의 가져오기

이 통계에 데이터를 추가하기 전에 데이터가 올바르게 생성되었는지 확인하려고 합니다. 이 작업을 수행하려면 통계 정의를 검색하는 방법의 예를 제공합니다.

public static async Task GetStatisticDefinition(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    GetStatisticDefinitionRequest statDefReq = new GetStatisticDefinitionRequest()
    {
        Name = statName
    };

    PlayFabResult<GetStatisticDefinitionResponse> getStatDefResult = await statsAPI.GetStatisticDefinitionAsync(statDefReq)
}

통계 정의를 검색하려면 만든 통계의 이름을 지정합니다. 여러 통계 정의가 있는 경우 다음 예제를 사용하여 단일 요청으로 모든 통계 정의를 가져올 수 있습니다.

public static async Task GetStatisticDefinitions(PlayFabAuthenticationContext context)
{
     PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
     ListStatisticDefinitionsRequest request = new ListStatisticDefinitionsRequest();
     PlayFabResult<ListStatisticDefinitionsResponse> getStatDefsResult = await leaderboardsAPI.ListStatisticDefinitionsAsync(request);
           
}

통계 정의 삭제

통계 정의를 삭제하여 열을 더 추가하거나 일부 오류를 수정하려는 경우 다음과 같이 수정할 수 있습니다.


public static async Task DeleteStatisticDefinition(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    DeleteStatisticDefinitionRequest deleteStatDefRequest = new DeleteStatisticDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = statName,
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> statResponse = await statsAPI.DeleteStatisticDefinitionAsync(deleteStatDefRequest);    
}

통계에 데이터 추가

이제 슈팅 예제를 계속 진행하면서 통계 정의를 만들고, 검색하고, 필요한 경우 삭제하는 방법을 알아보세요. 다음 단계는 통계에 데이터 추가를 시작하는 것입니다.

이러한 통계는 엔터티 기반 통계이며, 이는 항목이 엔터티임을 의미합니다. 특정 예제에서는 title_player_account 엔터티 형식을 사용하므로 통계에서 플레이어의 정보를 추적합니다. 그러나 사용할 수 있는 다른 엔터티 형식도 있습니다. 사용 가능한 기본 제공 엔터티 형식에서 검사 수 있습니다.

이제 통계에 데이터를 추가하는 방법을 살펴보겠습니다.

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()},
            }
        }
    };

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

이제 이 예제의 몇 가지 주요 요소를 설명해 보겠습니다.

  • Entity: 이 매개 변수는 통계를 업데이트하려는 엔터티에 해당합니다.
  • Statistics: 이 매개 변수는 엔터티의 실제 통계 집합에 해당합니다.
  • StatisticUpdate: 이 매개 변수는 추가될 통계 값에 해당합니다.
    • Scores: 이 매개 변수는 한 엔터티에 추가할 수 있는 점수 목록에 해당합니다. 통계에는 둘 이상의 열이 있을 수 있습니다. 통계를 사용하여 더 많은 작업 수행에서 이러한 개념을 자세히 검사 수 있습니다.
    • Name: 이 매개 변수는 통계 정의를 만들 때 설정된 통계 이름에 해당합니다.

이러한 개념이 명확해지면 이제 통계에 데이터를 추가할 준비가 되었습니다.

통계에서 데이터 검색

요약해 보겠습니다. 이 시점에서 통계를 만들고, 모든 구성 세부 정보를 확인하고, 데이터를 추가하기 시작했습니다. 이제 일부 플레이어가 이미 게임을 사용하기 시작했다고 상상해 보겠습니다. 그 중 하나를 쿼리하려고 합니다. 다음 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.

public static async Task GetStatsForEntity(PlayFabAuthenticationContext context, string entityId)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

    GetStatisticsRequest request = new GetStatisticsRequest()
    {
        AuthenticationContext = context,
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
    };
    
    PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request);

    Console.WriteLine("Stats for entity: " + result.Result.Entity.ToString());
    foreach (KeyValuePair<string, PlayFab.LeaderboardsModels.EntityStatisticValue> statValuePair in result.Result.Statistics)
    {
        Console.WriteLine($"{statValuePair.Value.Name} : {string.Join('|', statValuePair.Value.Scores)}");
    }
}

여기서는 엔터티에 연결된 모든 통계를 쿼리한 다음 해당 값으로 이름을 인쇄합니다.

통계 값 삭제

우리의 통계는 예상대로 작동하고, 우리는 당신의 게임에 플레이어의 무리가있습니다. 그러나, 우리는 게임에서 몇 가지 특이한 행동을 알아 차리기 시작합니다. 그래서 우리는 새로 시작하고 통계의 데이터를 삭제하기로 결정했습니다. 다음 예제에서는 통계에서 데이터를 사용하는 방법을 확인할 수 있습니다.


 public static async Task DeleteStats(PlayFabAuthenticationContext context, string entityId, List<StatisticDelete> stats)
 {
     PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
     DeleteStatisticsRequest statsDelReq = new DeleteStatisticsRequest()
     {
         Entity = new PlayFab.LeaderboardsModels.EntityKey()
         {
            Id = entityId,
            Type = EntityType
         },
         Statistics = stats
     };
 
     PlayFabResult<DeleteStatisticsResponse> delStatsResult = await statsAPI.DeleteStatisticsAsync(statsDelReq);     
 }

이제 이 예제의 몇 가지 주요 요소를 설명해 보겠습니다.

  • Entity: 이 매개 변수는 삭제할 엔터티입니다.
  • List<StatisticDelete>: 이 매개 변수는 삭제하려는 통계의 이름 목록입니다.

결론

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

  • 통계 만들기
  • 통계 구성 확인
  • 통계 구성 삭제
  • 통계 채우기
  • 통계에서 항목을 삭제합니다.

참고 항목