次の方法で共有


基本的な統計の作成

このチュートリアルでは、新しい統計サービスを使用して基本的な統計を作成する方法について説明します。 プレイヤーがロング ショットを打つたびに追跡するシューティング ゲームの例から始めましょう。

統計の作成

最初の手順では、ロング ショットを追跡するための主要な要素を含む統計定義を作成します。 シューティング ゲームでは、ロング ショットの距離に必要な列は 1 つだけです。 次の例は、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: ここでは、統計の列数を定義します。 この例では、ロング ショットに対して 1 つの列のみを設定します。 また、AggregationMethod を Max として定義します。つまり、新しい値が前の値より大きい場合にのみ統計が更新されます。
    • AggregationMethod には、次の 4 つ値を指定できます。
      • 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)
}

統計定義を取得するには、作成した統計の名前を指定します。 複数の統計定義がある場合は、次の例を使用して、1 つの要求ですべての統計定義を取得できます。

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: このパラメーターは、1 つのエンティティに追加できるスコアのリストに対応します。 統計には複数の列を含めることができることを覚えておいてください。 これらの概念の詳細については、「統計をさらに活用する」を参照してください
    • Name: このパラメーターは、統計定義の作成時に設定された統計名に対応します。

これらの概念が明確になったので、統計にデータを追加する準備が整いました。

統計からのデータの取得

簡単な要約を示します。 この時点で、統計を作成し、すべての構成の詳細を確認し、データの追加を開始しました。 ここで、一部のプレイヤーが既にゲームの使用を開始し、全員がすばらしいロング ショットを打ったとします。 そのうちの 1 つを照会します。 次の例では、このアクションを実行する方法を示します。

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>: このパラメーターは、削除する統計の名前のリストです。

まとめ

このチュートリアルでは、次の操作を行う方法について説明しました:

  • 統計の作成
  • 統計の構成を確認
  • 統計構成の削除
  • 統計の事前設定
  • 統計のエントリを削除。

関連項目