将上下文数据添加到统计信息

在本教程中,我们将介绍如何在统计信息更新时添加上下文信息。 在某些情况下,仅保存统计信息是不够的。 游戏工作室可以添加一些有关玩家如何执行特定作的详细信息,或者游戏中可能存在与统计信息相关的功能。

我们将继续我们的竞争射击游戏。 在此示例中,游戏取得了巨大的成功,但面临着一个挑战。 关于人们使用外部组件“黑客攻击”游戏的抱怨太多了,这些组件可以消除武器上的后退力,并改善目标辅助。 因此,现在我们负责跟踪有关游戏中使用的所有组件和网络信息的详细信息。

创建统计信息

为了演示如何处理此方案,我们将从“ 使用统计信息执行更多作 ”页获取统计信息定义。 从此定义中,我们将了解如何将元数据添加到添加到统计信息的每一行。

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

在本教程中,从此示例中获取的重要元素是统计信息的结构。 可以看到,它具有多个允许多个值的列。 但重点在于如何向每一行添加上下文信息。

向每个统计信息添加元数据

我们想知道玩家是否有任何影响游戏玩法的未经授权的硬件,或者任何其他可能提高玩家性能的恶意软件。 反作弊系统能够获取所有这些信息。 我们只需要为长镜头统计信息附加此信息。

若要执行此作,我们将使用 UpdateStatistics API。 在这里,我们可以检查 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()},
                Metadata = "Anticheat data"
            }
        }
    };

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

此处可以看到main概念是 , 内StatisticUpdate参数的Metadata用法,它指的是将从值本身更新一部分的上下文数据。 在这里,我们可以添加对开发人员有意义的任何信息,在本例中为反作弊数据。

通过这些示例,我们现在能够跟踪来自顶级玩家的所有相关信息,使游戏审查者能够更好地决定禁止谁。

结论

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

  • 创建多列统计信息。
  • 将元数据添加到统计信息。

另请参阅