按统计信息对玩家进行排名

在本教程中,我们将了解如何同时使用排行榜和统计信息服务。 最终结果是,在实体上更新统计信息时,会自动反映在相应的排行榜上。 有关 Azure PlayFab 统计信息的详细信息,请参阅 统计信息概述

让我们从使用这两种服务的射击游戏的示例开始。 在这里,我们将利用 创建基本统计信息 的教程,并继续假设我们已经为游戏创建了统计信息。 现在,我们希望在玩家每次在比赛中命中时跟踪长射。 我们将有一个统计数据,记录球员的最佳远射和排行榜,最好的球员击中长枪。

创建链接到统计信息的排行榜

第一步是创建一个排行榜定义,该定义可将统计信息服务跟踪的信息作为输入。 以下示例演示如何使用 C# SDK 创建排行榜定义。


public static async Task CreateStatLinkedLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName, string statName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        EntityType = EntityType,
        Name = leaderboardName,
        SizeLimit = 1000,
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Distance",
                SortDirection = LeaderboardSortDirection.Descending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Distance",
                }
            },
            new LeaderboardColumn()
            {
                Name = "Caliber of the bullet",
                SortDirection = LeaderboardSortDirection.Ascending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Caliber",
                }
            }
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}

现在,我们来解释与之前创建的其他排行榜定义的main差异。 请注意 对象 LeaderboardColumn ,该对象具有名为 的属性 LinkedStatisticColumn,该属性允许我们在统计信息和排行榜之间创建链接。 我们需要在该统计信息中指定统计信息名称和列名才能进行映射。

通过执行此操作,我们将通过统计信息服务跟踪玩家的进度。 然后,排行榜服务使用此信息并填充链接的排行榜。

该服务还具有一种机制,可根据需要取消统计信息与排行榜的链接。 开发人员想要执行此操作的原因可能有多种,例如测试不同的配置或映射不同的统计信息。 以下示例演示如何使用 C# SDK 取消统计信息与排行榜的链接。

public static async Task UnlinkLeaderboard(PlayFabAuthenticationContext context, string statName, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);

    UnlinkLeaderboardFromStatisticRequest unlinkLbRequest = new UnlinkLeaderboardFromStatisticRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        StatisticName = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> lbResponse = await leaderboardsAPI.UnlinkLeaderboardFromStatisticAsync(unlinkLbRequest);
}

使用此信息,我们随时可以链接和取消链接排行榜中的统计信息。 需要记住一些重要的约束:

  • 排行榜不能直接更新,它应始终通过统计信息更新来利用自动机制。
  • 排行榜不能独立于统计信息递增其版本。
  • 除非我们完成取消链接过程,否则无法删除排行榜。

结论

在本教程中,我们学习了如何创建由统计信息提供支持的排行榜,以及如何取消链接服务。 有关其他功能的详细信息,请参阅以下页面: