Leaderboards インターフェース

ゲーム内でリーダーボードを表示して更新します。

リーダーボード とは、インゲーム統計でランク付けされたプレイヤーのリストです。リーダーボードにより、プレイヤー同士やフレンド、さらには世界を舞台としたゲーム内でのスコア競争を促進できます。ゲームには、スコアを獲得できる複数のモードを備えることができます。これらのモードには、それぞれ独自のリーダーボード (複数可) を含めることができます。

リーダーボードでは、以下の順でエントリをランク付けできます。

  • 昇順:低いスコアが高いスコアよりも高くランキングされます。

    • フォートナイトの 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 の概要」ページの「関数」セクションを参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル