リーダーボード とは、インゲーム統計でランク付けされたプレイヤーのリストです。リーダーボードにより、プレイヤー同士やフレンド、さらには世界を舞台としたゲーム内でのスコア競争を促進できます。ゲームには、スコアを獲得できる複数のモードを備えることができます。これらのモードには、それぞれ独自のリーダーボード (複数可) を含めることができます。
リーダーボードでは、以下の順でエントリをランク付けできます。
- 昇順:低いスコアが高いスコアよりも高くランキングされます。
- フォートナイトの Wins リーダーボードは降順で表示されます。より多くの勝利を獲得することを目的としているためです。
- 降順:高いスコアが低いスコアよりも高くランキングされます。
- レースゲームのラップタイム リーダーボードは昇順で表示されます。より速いラップタイムの達成を目的としているためです。
オンライン サービス Leaderboards (リーダーボード) インターフェース では、ゲーム内からリーダーボードを表示して更新するための、デベロッパー向けツールが提供されます。ゲームでサポートされるそれぞれのリーダーボードには、そのゲームをプレイしたことのあるすべてのユーザー アカウントのエントリが含まれる可能性があるため、リーダーボード データは非常に大きくなる場合があります。このだめ、リーダーボード インターフェースではデータをチャンクに分けて取得します。Leaderboards インターフェースが実装されたゲームでは、リーダーボードのチャンクを、次の「関数」セクションで紹介するさまざまな方法でリクエストできます。詳細については、「リーダーボード エントリを読み取る」セクションを参照してください。
API の概要
関数
次は、Leaderboards インターフェースによって提供される関数の概要を示した表です。
関数 | 説明 |
---|---|
ReadEntriesForUsers |
特定のユーザーのリーダーボード エントリを読み取ります。 |
ReadEntriesAroundRank |
指定したランク インデックスの周辺のリーダーボード エントリを読み取ります。 |
ReadEntriesAroundUser |
指定したユーザーの周辺のリーダーボード エントリを読み取ります。 |
プライマリ構造体
Leaderboards インターフェースの機能は、主に FLeaderboardEntry
構造体を介して伝達されます。
メンバー | 型 | 説明 |
---|---|---|
AccountId |
FAccountId |
このリーダーボード エントリのアカウント ID。 |
Rank |
int32 |
このリーダーボードにおけるこのアカウントのランク。 |
Score |
int64 |
このリーダーボードにおけるこのアカウントのスコア。 |
コンフィギュレーション
統計情報を使ってリーダーボード スコアを更新するには、「DefaultEngine.ini
」などのエンジン コンフィギュレーション ファイルで Leaderboards インターフェースを設定する必要があります。Leaderboards インターフェースは、Stats インターフェース と連動してリーダーボード ランキングの統計をトラックします。
一般的な構文
DefaultEngine.ini
[OnlineServices.Leaderboards]
bIsTitleManaged=true
!LeaderboardDefinitions=ClearDefinitions
+LeaderboardDefinitions=(Name=<StatName0>, Id=<Id0>, UpdateMethod=[KeepBest | Force], OrderMethod=[Ascending | Descending])
+LeaderboardDefinitions=(Name=<StatName1>, Id=<Id1>, UpdateMethod=[KeepBest | Force], OrderMethod=[Ascending | Descending])
...
統計情報の変化に基づいてリーダーボードを更新するには、bIsTitleManaged
フラグを true
に設定します。このフラグでは、オンライン サービス Stats インターフェースの FStatsUpdated
イベントをリッスンして、統計情報の変化に応じてリーダーボードを自動的に更新するようクライアントを設定します。bIsTitleManaged
フラグのデフォルト値は false
です。このフラグを true
に設定しないと、リーダーボードは、「DefaultEngine.ini
」のリーダーボード定義で設定された統計の変化に基づいて自動的に更新されません。
次の リーダーボード定義 の表では、エンジン コンフィギュレーション ファイルにリーダーボード定義を加えるための構文について説明します。
リーダーボード定義
フィールド | 型 | 説明 |
---|---|---|
Name |
String |
ランキングを判断する統計情報の名前。stats インターフェースで設定された統計情報と同じ名前である必要があります。 |
Id |
int |
このリーダーボードに関連付ける ID 番号。これは、stats インターフェースの stats ID に関連するものではありません。 |
UpdateMethod |
KeepBest または Force |
このリーダーボードの更新に使用されるメソッド。KeepBest ではこの統計で達成された最高値を維持し、Force では、プレイヤーのランキングへの影響にかかわらず、リーダーボード エントリを最新の統計値に更新します。 |
OrderMethod |
Ascending または Descending |
低い統計値と高い統計値のいずれが高くランキングされるのかを定義します。昇順では低い統計値が高くランキングされて、降順では高い統計値が高くランキングされます。 |
コンフィギュレーション例
「Total Game Points」というタイトルの単一のリーダーボードを含むシンプルなゲームがあり、このリーダーボードは stats インターフェースで設定された同じ名前の統計情報によってトラックされているとします。
DefaultEngine.ini
[OnlineServices.Stats]
!StatDefinitions=ClearDefinitions
+StatDefinitions=(Name=Total_Game_Points, Id=0, ModifyMethod=Sum)
[OnlineServices.Leaderboards]
bIsTitleManaged=true
!LeaderboardDefinitions=ClearDefinitions
+LeaderboardDefinitions=(Name=Total_Game_Points, Id=0, UpdateMethod=KeepBest, OrderMethod=Descending)
このコンフィギュレーションではリーダーボードが次のようになっています。
- 各プレイヤーの
Total_Game_Points
統計情報のベスト スコアを維持します。 - 降順で並べられています (合計ポイント数が高いほど望ましいため)。
リーダーボード エントリを読み取る
Leaderboards インターフェースでは、リーダーボード エントリを 3 つの異なる方法 (視点) で読み取ることができます。リーダーボード エントリは次の 3 つの方法で読み取ることができます。
以下のセクションでは、先述の「コンフィギュレーション例」で設定した「Total Game Points」リーダーボードを使って、それぞれのメソッドで得られる結果を紹介します。
特定のユーザー
特定のユーザーのリーダーボード エントリを取得するには、ReadEntriesForUsers
関数を使用します。この関数では、クエリの対象となるランクを持つユーザーのユーザー ID リストを受け取ります。
例
次のように「Total Game Points」というタイトルのリーダーボードがあり、以下のパラメータを含む ReadEntriesForUsers
を呼び出すとします。
UE::Online::FReadEntriesForUsers::Params Params;
Params.LocalAccountId = "LLV54WB-3C678QQ";
Params.AccountIds = {"9P8H4GQ-HNO5GA4", "3CN9H8E-VNO3G3C", "OHB8RA2-OHSEBSE"};
Params.BoardName = TEXT("Total Game Points");
この呼び出しが成功すると、返された TOnlineResult
内で「retrieved (取得済み」とマークされたカラムにアクセスできるようになります。
Total Game Points | |||
---|---|---|---|
Account ID (アカウント ID) | Rank (ランク) | Score (スコア) | Retrieved? (取得済み?) |
3CN9H8E-VNO3G3C | 1 | 1,901 | Y |
LLV54WB-3C678QQ | 2 | 151 | |
OHB8RA2-OHSEBSE | 3 | 17 | Y |
9P8H4GQ-HNO5GA4 | 4 | 3 | Y |
9HQGQER-ILASDFH | 5 | 1 |
特定のランキング周辺
特定のリーダーボード ランキング周辺のリーダーボード エントリを取得するには、ReadEntriesAroundRank
関数を使用します。この関数は次の要素を受け取ります。
- リーダーボード エントリの読み取りを開始するランク。
- 読み取るエントリ数の制限。
例
次のように「Total Game Points」というタイトルのリーダーボードがあり、以下のパラメータを含む ReadEntriesAroundRank
を呼び出すとします。
UE::Online::FReadEntriesAroundRank::Params Params;
Params.LocalAccountId = "LLV54WB-3C678QQ";
Params.Rank = 2;
Params.Limit = 2;
Params.BoardName = TEXT("Total Game Points");
この呼び出しが成功すると、返された TOnlineResult
内で「retrieved (取得済み」とマークされたカラムにアクセスできるようになります。
Total Game Points | |||
---|---|---|---|
Account ID (アカウント ID) | Rank (ランク) | Score (スコア) | Retrieved? (取得済み?) |
3CN9H8E-VNO3G3C | 1 | 1,901 | |
LLV54WB-3C678QQ | 2 | 151 | |
OHB8RA2-OHSEBSE | 3 | 17 | Y |
9P8H4GQ-HNO5GA4 | 4 | 3 | Y |
9HQGQER-ILASDFH | 5 | 1 |
プログラミングの観点では、リーダーボードのトップ ランクは 1 ではなく 0 になります。このため、3 位にあるエントリを取得するには、Params.Rank = 2
が設定された ReadEntriesAroundRank
を呼び出す必要があります。
指定されたユーザー周辺
特定のユーザー周辺のリーダーボード エントリを取得するには、ReadEntriesAroundUser
関数を使用します。この関数は次の要素を受け取ります。
- エントリを読み取る範囲の中心になるユーザー。
- エントリの読み取りを開始する位置を示すオフセット。
- 読み取る合計エントリ数の制限。
オフセットはこの制限を超えることができます。この場合、指定したユーザーは、返されるリーダーボード エントリの配列には含まれません。リーダーボード エントリを複数のページに分けて表示するように整理する場合に便利です。
例
次のように「Total Game Points」というタイトルのリーダーボードがあり、以下のパラメータを含む ReadEntriesAroundUser
を呼び出すとします。
UE::Online::FReadEntriesAroundUser::Params Params;
Params.LocalAccountId = "LLV54WB-3C678QQ";
Params.Offset = -1;
Params.Limit = 3;
Params.BoardName = TEXT("Total Game Points");
この呼び出しが成功すると、返された TOnlineResult
内で「retrieved (取得済み」とマークされたカラムにアクセスできるようになります。
Total Game Points | |||
---|---|---|---|
Account ID (アカウント ID) | Rank (ランク) | Score (スコア) | Retrieved? (取得済み?) |
3CN9H8E-VNO3G3C | 1 | 1,901 | Y |
LLV54WB-3C678QQ | 2 | 151 | Y |
OHB8RA2-OHSEBSE | 3 | 17 | Y |
9P8H4GQ-HNO5GA4 | 4 | 3 | |
9HQGQER-ILASDFH | 5 | 1 |
詳細情報
ヘッダ ファイル
詳細については、必要に応じて「Leaderboards.h
」ヘッダ ファイルを直接確認してください。Leaderboards インターフェースのヘッダ ファイル「Leaderboards.h
」は次のディレクトリに格納されています。
UNREAL_ENGINE_ROOT\Engine\Plugins\Online\OnlineServices\Source\OnlineServicesInterface\Public\Online
UE のソース コードの入手方法については、「Unreal Engine のソース コードをダウンロードする」を参照してください。
関数パラメータおよび戻り型
関数のパラメータと戻り型、およびパラメータの渡し方や関数が戻ったときの結果の処理などについては、「Online Services の概要」ページの「関数」セクションを参照してください。