> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# リーダーボードにコンテキスト データを追加する

> 各 PlayFab リーダーボード行にカスタム メタデータを付与して、プレイヤーのスコアとランクとともに試合コンテキスト、デバイスの詳細、またはアンチチート シグナルを追跡します。

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

これまでのアーケード ゲームの例から、対戦性の高いシューティング ゲームに切り替えます。この例のゲームは大きな成功を収めていますが、課題に直面しています。武器の反動を消したりエイム アシストを強化したりする外部コンポーネントでゲームを「ハック」する人たちに関する苦情が多く寄せられています。そこで、ランク マッチで使用されるすべてのコンポーネントとネットワーク情報についてより多くの情報を追跡することが課せられました。

## リーダーボードを作成する

このシナリオへの対処方法を示すために、[リーダーボードでさらにできること](/services/playfab/community/leaderboards/doing-more-with-leaderboards)ページのリーダーボード定義を使用します。この定義から、リーダーボードに追加される各行にメタデータを追加する方法を確認します。

```C# theme={null}
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 の例を確認します:

```C# theme={null}
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` パラメーターを使用して、開発者にとって意味のある情報を追加します。今回の例では、これをアンチチート データを保存するために使用します。この例により、上位プレイヤーに関するすべての関連情報を追跡できるようになり、ゲームのモデレーターが誰を BAN するかについてより良い判断を下せるようになります。

## まとめ

このチュートリアルでは、次の操作の方法を学びました:

* 複数列のリーダーボードの作成。
* リーダーボードの各行にメタデータを追加。

## 関連項目

* [リーダーボードでさらにできること](/services/playfab/community/leaderboards/doing-more-with-leaderboards)
* [基本的なリーダーボードを作成する](/services/playfab/community/leaderboards/create-basic-leaderboard)
* [制限](/services/playfab/community/leaderboards/limits-leaderboards)
* [クォータ](/services/playfab/community/leaderboards/quota-leaderboards)
* [グループ リーダーボード](/services/playfab/community/leaderboards/group-leaderboards)
* [手動ティア](/services/playfab/community/leaderboards/manual-tiers)
* [統計によってプレイヤーをランキング付けする](/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [リーダーボードにコンテキスト データを追加する](/services/playfab/community/leaderboards/metadata-leaderboards)
* [API リファレンス](/services/playfab/community/leaderboards/api-reference)
* [リーダーボードと Cloudscript](/services/playfab/community/leaderboards/leaderboards-cloudscript)
* [Playstream を使用したリーダーボード](/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)
