Online Services の Stats インターフェース では統計情報とデータをオンライン サービスにアップロードし、統計情報クエリを実行します。また、Stats インターフェースの機能は、Online Services のアチーブメントやリーダーボードのインターフェースなど、ユーザー ゲームプレイの統計情報に依存する他のインターフェースによっても使用されます。
API の概要
次の表は、Stats インターフェースに含まれる関数の概要です。
関数 | 説明 |
---|---|
Update | |
UpdateStats |
統計情報をプラットフォームにアップロードします。 |
Query | |
QueryStats |
ユーザーの統計情報をクエリし、その結果をインターフェースにキャッシュします。 |
BatchQueryStats |
一連のユーザーの統計情報をクエリし、その結果をインターフェースにキャッシュします。 |
Get | |
GetCachedStats |
QueryStats または BatchQueryStats への呼び出し後に格納されたキャッシュ済みのユーザー統計情報を取得します。 |
Event Listening | |
OnStatsUpdated |
ユーザー統計情報の変更の結果として起動するイベント。 |
コンフィギュレーション
Stats インターフェースは、対応するプラットフォーム バックエンドまたは StatsNull
の実装を介して使用できます。Stats インターフェースを使用するには、最初に「DefaultEngine.ini
」ファイル内で Stats インターフェースを設定する必要があります。
DefaultEngine.ini
[OnlineServices.Stats]
+StatDefinitions=(Name=<STAT_NAME>, Id=<ID_NUMBER>, ModifyMethod=<METHOD>, DefaultValue="<TYPE>:<DEFAULT_VALUE>")
Stat Definitions には次のフィールドが含まれます。
Name
:統計情報の名前。UpdateStats
とQueryStats
でそれぞれ統計情報の更新とクエリに使用される名前です。
Id
:統計情報の ID。- プラットフォーム ポータル内の対応する設定済み統計情報 ID です。
ModifyMethod
:統計情報の更新方法を示すメソッド。StatsNull
の実装でない場合、Modify Method はプラットフォーム ポータルで設定されます。- Modify Method は、定義済みのアンロック ルールをアチーブメントが満たしているかどうかの判断にタイトル管理のアチーブメントが使用される場合に、Achievements インターフェースによってすべての実装で使用されます。
DefaultValue
:統計情報のタイプおよびデフォルト値。- これは統計情報の初期値を指定します。
アチーブメントをアンロックしてリーダーボードを統計情報で更新するには、「DefaultEngine.ini
」ファイルのアチーブメントとリーダーボードの各コンフィグ セクションで、対応する統計情報を指定する必要があります。
コンフィギュレーションの例
以下は、Online Services の Stats インターフェースのコンフィギュレーションの例です。
DefaultEngine.ini
[OnlineServices.Stats]
+StatDefinitions=(Name=Stat_Use_Largest, Id=0, ModifyMethod=Largest, DefaultValue="Int64:0")
+StatDefinitions=(Name=Stat_Use_Smallest, Id=1, ModifyMethod=Smallest, DefaultValue="Int64:999")
+StatDefinitions=(Name=Stat_Use_Set, Id=2, ModifyMethod=Set, DefaultValue="Int64:0")
+StatDefinitions=(Name=Stat_Use_Sum, Id=3, ModifyMethod=Sum, DefaultValue="Int64:0")
+StatDefinitions=(Name=Stat_Type_Bool, Id=4, ModifyMethod=Set, DefaultValue="Bool:True")
+StatDefinitions=(Name=Stat_Type_Double, Id=5, ModifyMethod=Smallest, DefaultValue="Double:9999.999")
例
このセクションには、次の操作に関するさまざまなコード サンプルが用意されています。
統計情報のクエリ
UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
UE::Online::FQueryStats::Params Params;
Params.LocalAccountId = LocalAccountId;
Params.TargetAccountId = TargetAccountId;
Params.StatNames = {"StatA", "StatB"};
// この OnComplete 呼び出しの詳細については、以下のウォークスルーの注記を参照してください
Stats->QueryStats(MoveTemp(Params)).OnComplete([](const UE::Online::TOnlineResult<FQueryStats>& Result)
{
if (Result.IsError())
{
const UE::Online::FOnlineError OnlineError = Result.GetErrorValue();
// OnlineError を処理する
return;
}
const UE::Online::FQueryStats::Result QueriedStats = Result.GetOkValue();
// QueriedStats を処理する
});
ウォークスルー
-
デフォルトのオンライン サービスを使用します。これには、次のように、パラメータを指定することなく
GetServices
を呼び出します。UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
-
デフォルトのオンライン サービスの Stats インターフェースにアクセスします。
UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
-
TargetAccountId
のStatNames
のクエリに必要なパラメータをインスタンス化します。UE::Online::FQueryStats::Params Params; Params.LocalAccountId = LocalAccountId; Params.TargetAccountId = TargetAccountId; Params.StatNames = {"StatA", "StatB"};
-
エラーまたはクエリされた統計情報を処理することで、
QueryStats.OnComplete
コールバックを処理します。Stats->QueryStats(MoveTemp(Params)).OnComplete([](const UE::Online::TOnlineResult<FQueryStats>& Result) { if (Result.IsError()) { const UE::Online::FOnlineError OnlineError = Result.GetErrorValue(); // OnlineError を処理する return; } const UE::Online::FQueryStats::Result QueriedStats = Result.GetOkValue(); // QueriedStats を処理する });
メンバー関数にバインドするには、常に UObject から派生したクラス、または TSharedFromThis
から継承したクラスと次を優先的に使用します。
.OnComplete(this, &MyClass::OnQueryStatsComplete)
これによって CreateUObject
、CreateThreadSafeSP
、または CreateSP
が自動的に選択されます。最も安全なデリゲート作成呼び出しが使用されます。詳細については、「Online Services の概要」ページの「コールバックの形式」セクションを参照してください。
キャッシュ済み統計情報の取得
UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
UE::Online::TOnlineResult<FGetCachedStats> CachedStats = Stats->GetCachedStats({});
if (CachedStats.IsError())
{
UE::Online::FOnlineError OnlineError = CachedStats.GetErrorValue();
// OnlineError を処理する
return;
}
UE::Online::FGetCachedStats::Result& CachedStatsData = CachedStats.GetOkValue();
// CachedStatsData を処理する
ウォークスルー
-
デフォルトのオンライン サービスを使用します。これには、次のように、パラメータを指定することなく
GetServices
を呼び出して Stats インターフェースにアクセスします。UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices(); UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
-
Stats->GetCachedStats
を使用して Stats インターフェースでキャッシュ済みの統計情報を取得します。UE::Online::TOnlineResult<UE::Online::FGetCachedStats> CachedStats = Stats->GetCachedStats({});
-
エラーまたはキャッシュ済みの統計情報データを処理することで、
CachedStats
を処理します。if (CachedStats.IsError()) { UE::Online::FOnlineError OnlineError = CachedStats.GetErrorValue(); // OnlineError を処理する return; } UE::Online::FGetCachedStats::Result& CachedStatsData = CachedStats.GetOkValue(); // CachedStatsData を処理する
イベントのリッスン
イベントのリッスンは、同期および非同期の関数とは異なる方法で処理されます。OnStatsUpdated
イベントの結果を処理するための FOnlineEventDelegateHandle
が作成された後に、適切な破壊を確実にするために、シャットダウン コードで Unbind
を呼び出す必要があります。
ウォークスルー
-
クラス内で Stat インターフェースのためのイベント ハンドルを宣言します。
UE::Online::FOnlineEventDelegateHandle StatEventHandle;
-
init コード内でデフォルトのオンライン サービスを初期化して Stats インターフェースにアクセスし、イベントの発生時に統計情報を処理します。
UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices(); UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface(); StatEventHandle = Stats->OnStatsUpdated().Add([](const UE::Online::FStatsUpdated& StatsUpdated) { // このラムダ内のカスタム ロジック });
-
シャットダウン コード内でイベント ハンドラのバインドを解除します。
StatEventHandle.Unbind();
コンソール コマンドの実行
コンソール コマンドで非同期インターフェースを実行するための全般的なコマンドラインの構文については、「Online Services の概要」ドキュメントを参照してください。
例
QueryStats
関数を実行するには、次のコンソール コマンドを実行します。
OnlineServices Index=0 Stats QueryStats 0 0 ["StatA", "StatB"]
このコマンドは、ゼロ番目のローカル ユーザーを対象に、デフォルトのオンライン サービスで Stats インターフェースから QueryStats
を呼び出します。上記のコマンドでは、デフォルトのオンライン サービスに対してこのユーザーの StatA
と StatB
をクエリしています。
統計情報データのリセット
開発とテスティングの際には、現在のタイトルに提供されたすべてのプレイヤー統計情報を ResetStats
関数を使ってリセットできます。ポリシーはそれぞれのオンライン サービスで異なりますが、この関数がテスティング環境外でも機能するとは想定しないでください。ResetStats
を使用するコードはシッピング ビルドから削除するか、コンパイル時のロジックを使って次のようにコードをマスクしてください。
#if !UE_BUILD_SHIPPING
// ResetStats への呼び出しを含むコード ブロック
#endif
詳細情報
ヘッダ ファイル
必要に応じて、「Stats.h
」ヘッダ ファイルを直接参照してください。Stats インターフェースのヘッダ ファイル「Stats.h
」は、次の場所にあります。
UNREAL_ENGINE_ROOT\Engine\Plugins\Online\OnlineServices\Source\OnlineServicesInterface\Public\Online
UE のソース コードの入手方法については、「Unreal Engine のソース コードをダウンロードする」のドキュメントを参照してください。
関数パラメータおよび戻り型
関数パラメータおよび戻り型 (パラメータの渡し方、関数が戻す結果の処理など) については、「Online Services の概要」ページの「関数」セクションを参照してください。