次の方法で共有


ランキングにコンテキスト データを追加する

このチュートリアルでは、ランキングが更新されるたびにコンテキスト情報を追加する方法について説明します。 ゲーム スタジオは、プレイヤーがスコアを達成したコンテキストに関する詳細を追加したい場合や、その特定のスコアに関連する機能がゲーム内に存在する可能性があります。

ここでは、アーケード ゲームを使用していた前の例から、非常に競争力のあるシューティング ゲームに切り替えます。 この例では、ゲームは大きな成功を収めていますが、課題に直面しています。 武器の反動を除去し、エイム アシストを改善する外部コンポーネントを使用してゲームを "ハッキング" するユーザーに関する苦情が多すぎます。 ここでは、ランク付けされた一致で使用されるすべてのコンポーネントとネットワーク情報に関する詳細情報を追跡する作業を行います。

ランキングの作成

このシナリオに対処する方法を示すために、ランキングの定義を ランキング ページから取得します。 この定義から、ランキングに追加されたすべての行にメタデータを追加する方法について説明します。

public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        SizeLimit = 1000,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Eliminations",
                SortDirection = LeaderboardSortDirection.Descending,
            },
            new LeaderboardColumn()
            {
                Name = "Assists",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

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

各行へのメタデータの追加

プレイヤーがゲームプレイに影響を与える不正なハードウェアや、プレイヤーのパフォーマンスを向上させる可能性のあるその他の悪意のあるソフトウェアを所有しているかどうかを確認したいと考えています。 チート対策システムでは、この情報をすべて取得できますが、膨大な数のプレイヤーが存在するため、フラグチェックのハイ スコアと外部コンポーネントからのメタデータに焦点を当てます。

このアクションを実行するには、UpdateLeaderboard API を使用します。 ここでは、SDK の例をチェックできます。

public static async Task UpdateLeaderboardForPlayer(PlayFabAuthenticationContext context, string leaderboardName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateLeaderboardEntriesRequest updateLeaderboardRequest = new UpdateLeaderboardEntriesRequest()
    {
        Entries = new List<LeaderboardEntryUpdate>()
        {
            new LeaderboardEntryUpdate()
            {
                EntityId = entityId,
                Scores = new List<string> { score.ToString(), (score + 1).ToString(), (score + 2).ToString() },
                Metadata = "AntiCheat Data",
            }
        },
        AuthenticationContext = context,
        LeaderboardName = leaderboardName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> updateResult = await leaderboardsAPI.UpdateLeaderboardEntriesAsync(updateLeaderboardRequest);
}

ここでは、LeaderboardEntryUpdate 内で Metadata パラメーターを使用して、開発者にとって意味のある情報を追加します。 この場合は、チート対策データを格納するために使用します。 この例では、トップ プレイヤーからのすべての関連情報を追跡する機能が追加され、ゲーム モデレーターは誰を禁止するかをより適切に決定できるようになりました。

まとめ

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

  • 複数列のランキングを作成します。
  • ランキングの各行にメタデータを追加します。

関連項目