> ## 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 リーダーボードの上に手動のティア システムを構築し、プレイヤーを Bronze、Silver、Gold、Platinum、Diamond、Savior のティアにランク付けする方法を学びます。

# リーダーボードを使用した手動ティア

このチュートリアルでは、リーダーボード サービスのいくつかのプロパティを応用して、プレイヤー用のティア システムを作成する方法を学びます。サービスのプロパティに基づいて手動のティア システムを作成する方法を理解するために、例から始めます。プレイヤーが限られた時間内でできるだけ多くのポイントを稼ぐ、ゾンビ討伐ゲームがあると想像してください。より多くのポイントを得るためにさまざまな戦略を取ることができ、ダメージを一切受けなかった場合のポイントもあります。

この例では、プレイヤーは各試合でのパフォーマンスに基づいて経験値を獲得します。トップ プレイヤーを「Saviors」というランクで識別するティア システムを作成し、残りのプレイヤーは Bronze、Silver、Gold、Platinum、Diamond といった異なるランクに振り分けます。

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

最初の手順は、プレイヤーをランキング付けするための主要な要素を含むリーダーボード定義を作成することです。今回のゾンビ ゲームでは、複数のスコアを使用します。以下の例では、C# SDK を使用してリーダーボード定義を作成する方法を示します。

```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 = 10000,
        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 = "SkillPoints",
                SortDirection = LeaderboardSortDirection.Descending,
            }
            new LeaderboardColumn()
            {
                Name = "Deaths",
                SortDirection = LeaderboardSortDirection.Ascending,
            }         
        }
    };

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

ここでは 3 つの異なるスコアを使用したリーダーボードを定義しました。リーダーボードの作成方法やタイブレークの仕組みの詳細については、次のガイドを参照してください: [リーダーボードでさらにできること](/services/playfab/community/leaderboards/doing-more-with-leaderboards)。

## 手動ティア分け

リーダーボードが適切に作成できたので、ティアを作成する方法を定義していきます。まず、プレイヤーの人数をどのように分けたいかを定義する必要があります。通常、ランクが高いほどプレイヤー数は少なくなります。その考え方を踏まえて、次のようにティアを定義します。

* Bronze: プレイヤーの 0 ～ 35%。
* Silver: プレイヤーの 35% ～ 60%。
* Gold: プレイヤーの 60% ～ 80%。
* Platinum: プレイヤーの 80% ～ 90%。
* Diamond: プレイヤーの 90% ～ 99.5%。
* Saviors: プレイヤーの上位 0.05%。

このプロセスはティア システムに対する手動のアプローチであるため、プレイヤーの分布は開発者が適切と考える方法で保存する必要があります。

データを取得するために、次の例を使用します:

```C# theme={null}
public static async Task<List<EntityLeaderboardEntry>> GetLeaderboard(PlayFabAuthenticationContext context, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    GetEntityLeaderboardRequest getLbRequest = new GetEntityLeaderboardRequest()
    {
        LeaderboardName = leaderboardName,
        StartingPosition = 1,
        PageSize = 20,
        AuthenticationContext = context,
    };

    PlayFabResult<GetEntityLeaderboardResponse> lbResponse = await leaderboardsAPI.GetLeaderboardAsync(getLbRequest);
    
    return lbResponse.Result;
}
```

この例は、リーダーボードからデータを取得する複数の方法の 1 つです。応答の Result プロパティには `EntryCount` というプロパティがあり、リーダーボードに現在いくつの行があるかを示します。この数値は、リーダーボードの最大行数を表す `SizeLimit` とは異なります。

プレイヤーのティアを判定するには、リーダーボード内での位置を `EntryCount` プロパティで割り、定義したティアのどこに該当するかを確認します。

簡単な例:

* 下位のプレイヤー: 10,000 人中 8500 位のプレイヤーは全体の 85% 以内に入り、Bronze ティアに該当します。
* 中位のプレイヤー: 10,000 人中 3500 位のプレイヤーは上位 35% 以内に入り、Gold ティアに該当します。
* 上位のプレイヤー: 10,000 人中 50 位のプレイヤーは上位 0.5% 以内に入り、「Savior」になります。

## まとめ

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

* リーダーボードの作成。
* リーダーボードからデータをクエリする方法。
* パーセンタイルに基づいて手動ティア分布を作成する方法。
* プレイヤーの位置の結果を実際のティアにマッピングする方法。

## 関連項目

* [リーダーボードでさらにできること](/services/playfab/community/leaderboards/doing-more-with-leaderboards)
* [基本的なリーダーボードを作成する](/services/playfab/community/leaderboards/create-basic-leaderboard)
* [グループ リーダーボード](/services/playfab/community/leaderboards/group-leaderboards)
* [制限](/services/playfab/community/leaderboards/limits-leaderboards)
* [クォータ](/services/playfab/community/leaderboards/quota-leaderboards)
* [統計によってプレイヤーをランキング付けする](/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)


## Related topics

- [リーダーボードでさらにできること](/ja-jp/services/playfab/community/leaderboards/doing-more-with-leaderboards.md)
- [統計によってプレイヤーをランキング付けする](/ja-jp/services/playfab/community/leaderboards/leaderboards-linked-to-stats.md)
- [グループ リーダーボード](/ja-jp/services/playfab/community/leaderboards/group-leaderboards.md)
- [シーズナル リーダーボード](/ja-jp/services/playfab/community/leaderboards/seasonal-leaderboards.md)
- [リーダーボードの制限](/ja-jp/services/playfab/community/leaderboards/limits-leaderboards.md)
