季节性统计信息

在本教程中,我们将介绍统计信息的版本控制概念。 在多种情况下,我们希望具有不同版本的给定统计信息。 例如,如果游戏有赛季,则很可能在新赛季开始时重置统计信息。

我们继续学习 创建基本统计信息中的示例。 想象一下,我们的射击游戏越来越受欢迎。 因此,引入了季节的概念。 每个月,游戏都会为所有玩家基础发布一个新的主题赛季。 因此,我们希望保持每个赛季的独立统计数据。

为版本控制创建统计信息定义

在上一个示例中,创建统计定义时,有一个提示,提示参数对于版本控制的重要性 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);
}

与基本统计信息相比,此示例中的main差异是 VersionConfiguration 参数。 此参数允许我们定义一个 MaxQueryableVersions 设置,该设置指定我们可以查询的相同统计信息的多少个版本。 在本例中,我们将其设置为查询 12 个版本。 参数 ResetInterval 定义重置过程发生的频率。 此过程涉及创建一个统计信息,其配置与之前相同,但没有任何值,并且版本参数将更改如下:N = N + 1,在创建统计信息定义时 N = 0。

例如,让我们有一个统计信息,其中 version 参数等于 2,具有给定值。 现在,我们增加了该统计信息的版本,结果将是一个版本参数等于 3 且没有任何值的新统计信息。 同时,以前的统计信息保留在系统中进行查询。

可以 ResetInterval 采用多种方式工作。 在此示例中,它是每月一次,但可以根据开发人员的需求对其进行更改。 在此特定情况下,这意味着排行榜将从配置的那一刻起每月自动重置。 我们支持以下重置策略:

  • 小时
  • 手动

创建统计信息的 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);
}

现在,我们设置为处理有关统计信息的版本控制的任何挑战。 此处的一个重要方面是,我们决定保留为版本的统计信息定义的数量将是计量,因为它们使用服务中的存储。 在此处查看有关此内容的详细信息:

结论

在本教程中,我们学习了如何执行以下作:

  • 使用正确的重置策略创建统计信息
  • 递增统计信息的版本

另请参阅