次の方法で共有


季節統計

このチュートリアルでは、統計のバージョン管理の概念について説明します。 特定の統計の異なるバージョンを使用する場合が複数あります。 たとえば、ゲームにシーズンがある場合、新しいシーズンが始まると統計がリセットされる可能性が高くなります。

基本統計の作成」の例を続けます。 シューティング ゲームが本当に人気が出ていると想像してください。 そこで季節の概念が導入されます。 ゲームでは毎月、すべてのプレイヤー向けに新しいテーマ シーズンがリリースされます。 したがって、シーズンごとに独立した統計を保持したいと考えています。

バージョン管理のための統計定義の作成

前の例では、統計定義を作成するときに、バージョン管理の VersionConfiguration パラメーターの重要性についてのヒントがありました。 ここでは、その使い方と仕組みについて詳しく説明します。

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 = 12,
            ResetInterval = ResetInterval.Month,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Longshots",
                AggregationMethod = StatisticAggregationMethod.Max,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}

この例と基本統計の主な違いは VersionConfiguration パラメーターです。 このパラメーターを使用すると、同じ統計のいくつのバージョンをクエリできるかを指定する MaxQueryableVersions 設定を定義できます。 この場合は、12 バージョンをクエリするように設定します。 ResetInterval パラメーターは、リセット プロセスが発生する頻度を定義します。 このプロセスでは、以前と同じ構成で値のない統計が作成され、バージョン パラメーターが次のように変更されます: N = N + 1、統計定義の作成時には N = 0。

たとえば、バージョン パラメーターが 2 で、値が指定された統計があるとします。 ここで、その統計のバージョンを増やすと、バージョン パラメーターが 3 で値のない新しい統計が生成されます。 一方、以前の統計はクエリできるようにシステム内に残ります。

ResetInterval は複数の方法で機能します。 この例では月単位ですが、開発者のニーズに応じて変更できます。 この特定のケースでは、ランキングは設定された瞬間から毎月自動的にリセットされることを意味します。 以下のリセット戦略をサポートしています:

  • Day
  • Hour
  • Manual
  • Month
  • Week

統計の作成に関する API リファレンス

統計のバージョンをインクリメントする

この新しい構成では、異なるシーズンごとに同じ統計の複数のバージョンを作成できます。 しかし、問題のためにランキングを手動でリセットし、シーズンを最初からやり直す必要がある場合はどうなりますか? このような場合は、API を使用して手動でリセットを実行できます。 SDK を使用する例を次に示します:

public static async Task ResetStatistic(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    IncrementStatisticVersionRequest resetStatRequest = new IncrementStatisticVersionRequest()
    {
        AuthenticationContext = context,
        Name = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.IncrementStatisticVersionResponse> resetStatResponse = await statsAPI.IncrementStatisticVersionAsync(resetStatRequest);
}

これで、統計のバージョン管理に関するあらゆる課題に対処できるようになりました。 ここで重要な点の 1 つは、バージョンとして保持することにした統計定義の数は、サービス内のストレージを使用するため、計測されるということです。 詳細については、こちらをご覧ください:

まとめ

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

  • 適切なリセット戦略で統計を作成する
  • 統計のバージョンをインクリメントする

関連項目