> ## 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 排行榜列，以便在玩家分數和排名之外追蹤對戰內容、裝置詳細資料或反作弊訊號。

在本教學課程中，我們將說明如何在每次更新排行榜時新增內容相關資訊。遊戲工作室可能想要新增一些關於玩家在何種情境下取得分數的詳細資料，或者遊戲中可能有與該分數相關的功能。

現在我們要從先前的範例 (一款大型電玩遊戲) 切換到一款高度競技的射擊遊戲。在此範例中，
遊戲獲得了巨大成功，但正面臨一項挑戰。有太多投訴指出有人使用外部
元件「駭入」遊戲，消除武器後座力並增強瞄準輔助。因此，我們現在的任務是為排名對戰追蹤
所有使用元件的更多資訊以及網路資訊。

## 建立排行榜

為了示範如何處理此情境，我們將採用
[使用排行榜執行更多操作](/zh-TW/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` 參數來新增對開發人員有意義的資訊。在此案例中，我們用它來儲存反作弊資料。透過此範例，我們現在已能追蹤頂尖玩家的所有相關資訊，讓遊戲管理員
能更妥善地決定要封鎖哪些人。

## 結論

在本教學課程中，我們學到了如何執行下列作業：

* 建立多欄排行榜。
* 將中繼資料新增至排行榜的每一列。

## 另請參閱

* [使用排行榜執行更多操作](/zh-TW/services/playfab/community/leaderboards/doing-more-with-leaderboards)。
* [建立基本排行榜](/zh-TW/services/playfab/community/leaderboards/create-basic-leaderboard)。
* [限制 ](/zh-TW/services/playfab/community/leaderboards/limits-leaderboards)。
* [配額 ](/zh-TW/services/playfab/community/leaderboards/quota-leaderboards)。
* [群組排行榜](/zh-TW/services/playfab/community/leaderboards/group-leaderboards)。
* [手動層級](/zh-TW/services/playfab/community/leaderboards/manual-tiers)。
* [依統計資料為玩家排名](/zh-TW/services/playfab/community/leaderboards/leaderboards-linked-to-stats)
* [將內容相關資料新增至排行榜](/zh-TW/services/playfab/community/leaderboards/metadata-leaderboards)
* [API 參考](/zh-TW/services/playfab/community/leaderboards/api-reference)
* [排行榜與 Cloudscript](/zh-TW/services/playfab/community/leaderboards/leaderboards-cloudscript)。
* [排行榜與 Playstream](/zh-TW/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [排行榜 API 參考](/zh-TW/services/playfab/community/leaderboards/api-reference.md)
- [群組排行榜](/zh-TW/services/playfab/community/leaderboards/group-leaderboards.md)
- [季節性排行榜](/zh-TW/services/playfab/community/leaderboards/seasonal-leaderboards.md)
- [手動層級排行榜](/zh-TW/services/playfab/community/leaderboards/manual-tiers.md)
- [使用 Azure Functions 的排行榜](/zh-TW/services/playfab/community/leaderboards/leaderboards-cloudscript.md)
