次の方法で共有


統計でプレイヤーをランク付けする

このチュートリアルでは、ランキングと統計サービスの両方を一緒に使用する方法について説明します。 最終結果として、エンティティの統計が更新されると、対応するランキングに自動的に反映されます。 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);
}

ここで、以前に作成した他のランキング定義との主な違いを説明しましょう。 LinkedStatisticColumn というプロパティを持つ LeaderboardColumn オブジェクトに注目します。統計とランキングの間にリンクを作成できます。 マッピングを行うには、統計名とその統計内の列名を指定する必要があります。

これを行うと、統計サービスを使用してプレイヤーの進行状況を追跡できます。 次に、ランキング サービスはこの情報を使用して、リンクされたランキングに情報を入力します。

サービスには、必要に応じて統計とランキングのリンクを解除するメカニズムもあります。 開発者がこのアクションを実行する理由は、さまざまな構成のテストや、さまざまな統計のマッピングなど、複数考えられます。 次の例は、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);
}

この情報を使用すると、必要に応じてランキングから統計をリンクしたり、リンクを解除したりできます。 留意すべき重要な制約がいくつかあります:

  • ランキングは直接更新できません。自動メカニズムを利用するには、常に統計更新を経由する必要があります。
  • ランキングは、統計とは独立してバージョンを増やすことはできません。
  • リンク解除のプロセスを実行しない限り、ランキングは削除できません。

まとめ

このチュートリアルでは、統計情報に基づいたランキングを作成する方法と、サービスのリンクを解除する方法を説明しました。 その他の機能の詳細については、次のページを参照してください: