Stats インターフェース

統計情報とデータをオンライン サービスにアップロードして、統計情報クエリを完了します。

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_Use_Largest, Id=0, ModifyMethod=Largest)
StatDefinitions=(Name=Stat_Use_Smallest, Id=1, ModifyMethod=Smallest)
StatDefinitions=(Name=Stat_Use_Set, Id=2, ModifyMethod=Set)
StatDefinitions=(Name=Stat_Use_Sum, Id=3, ModifyMethod=Sum)

Stat Definitions には次のフィールドが含まれます。

  • Name:統計情報の名前。

    • UpdateStatsQueryStats でそれぞれ統計情報の更新とクエリに使用される名前です。

  • Id:統計情報の ID。

    • プラットフォーム ポータル内の対応する設定済み統計情報 ID です。

  • ModifyMethod:統計情報の更新方法を示すメソッド。

    • StatsNull の実装でない場合、Modify Method はプラットフォーム ポータルで設定されます。

    • Modify Method は、定義済みのアンロック ルールをアチーブメントが満たしているかどうかの判断にタイトル管理のアチーブメントが使用される場合に、アチーブメント インターフェースによってすべての実装で使用されます。

アチーブメントをアンロックしてリーダーボードを統計情報で更新するには、「DefaultEngine.ini」ファイルのアチーブメントとリーダーボードの各コンフィグ セクションで、対応する統計情報を指定する必要があります。

このセクションには、次の操作に関するさまざまなコード サンプルが用意されています。

統計情報のクエリ

    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"};

    // See Note below Walkthrough for more information about this OnComplete call
    Stats->QueryStats(MoveTemp(Params)).OnComplete([](const UE::Online::TOnlineResult<FQueryStats>& Result)
    {
    if (Result.IsError())
        {
            const UE::Online::FOnlineError OnlineError = Result.GetErrorValue();
            // Process OnlineError
            return;
        }
        const UE::Online::FQueryStats::Result QueriedStats = Result.GetOkValue();
        // Process QueriedStats
    });

ウォークスルー

  1. デフォルトのオンライン サービスを使用します。これには、次のようにパラメータを指定することなく GetServices を呼び出します。

    UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
  2. デフォルトのオンライン サービスの Stats インターフェースにアクセスします。

    UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
  3. TargetAccountIdStatNames のクエリに必要なパラメータをインスタンス化します。

    UE::Online::FQueryStats::Params Params;
    Params.LocalAccountId = LocalAccountId;
    Params.TargetAccountId = TargetAccountId;
    Params.StatNames = {"StatA", "StatB"};
  4. エラーまたはクエリされた統計情報を処理することで、QueryStats.OnComplete コールバックを処理します。

    Stats->QueryStats(MoveTemp(Params)).OnComplete([](const UE::Online::TOnlineResult<FQueryStats>& Result)
    {
        if (Result.IsError())
        {
            const UE::Online::FOnlineError OnlineError = Result.GetErrorValue();
            // Process OnlineError
            return;
        }
        const UE::Online::FQueryStats::Result QueriedStats = Result.GetOkValue();
        // Process QueriedStats
    });

メンバー関数にバインドするには、常に UObject から派生したクラス、または TSharedFromThis から継承したクラスと次を優先的に使用します。

.OnComplete(this, &MyClass::OnQueryStatsComplete)

これによって CreateUObjectCreateThreadSafeSP、または 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();
        // Process OnlineError
        return;
    }

    UE::Online::FGetCachedStats::Result& CachedStatsData = CachedStats.GetOkValue();
    // Process CachedStatsData

ウォークスルー

  1. デフォルトのオンライン サービスを使用します。これには、次のようにパラメータを指定することなく GetServices を呼び出して、Stats インターフェースにアクセスします。

    UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
    UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
  2. Stats->GetCachedStats を使用して、Stats インターフェースを介してキャッシュ済みの統計情報を取得します。

    UE::Online::TOnlineResult<UE::Online::FGetCachedStats> CachedStats = Stats->GetCachedStats({});
  3. エラーまたはキャッシュ済みの統計情報データを処理することで、CachedStats を処理します。

    if (CachedStats.IsError())
    {
        UE::Online::FOnlineError OnlineError = CachedStats.GetErrorValue();
        // Process OnlineError
        return;
    
    }
    UE::Online::FGetCachedStats::Result& CachedStatsData = CachedStats.GetOkValue();
    // Process CachedStatsData

イベントのリッスン

イベントのリスニングは、同期および非同期の関数とは異なる方法で処理されます。OnStatsUpdated イベントの結果を処理するための FOnlineEventDelegateHandle が作成された後に、適切な破壊を確実にするために、シャットダウン コードで Unbind を呼び出す必要があります。

ウォークスルー

  1. クラス内で Stat インターフェースのためのイベント ハンドルを宣言します。

    UE::Online::FOnlineEventDelegateHandle StatEventHandle;
  2. init コード内でデフォルトのオンライン サービスを初期化して Stats インターフェースにアクセスし、イベントの発生時に統計情報を処理します。

    UE::Online::IOnlineServicesPtr OnlineServices = UE::Online::GetServices();
    UE::Online::IStatsPtr Stats = OnlineServices->GetStatsInterface();
    StatEventHandle = Stats->OnStatsUpdated().Add([](const UE::Online::FStatsUpdated& StatsUpdated)
    {
        // custom logic inside this lambda
    });
  3. シャットダウン コード内でイベント ハンドラのバインドを解除します。

    StatEventHandle.Unbind();

コンソール コマンドの実行

コンソール コマンドで非同期インターフェースを実行するための全般的なコマンドラインの構文については、「Online Services の概要」ドキュメントを参照してください。

QueryStats 関数を実行するには、次のコンソール コマンドを実行します。

OnlineServices Index=0 Stats QueryStats 0 0 ["StatA", "StatB"]

このコマンドは、ゼロ番目のローカル ユーザーを対象に、デフォルトのオンライン サービスで Stats インターフェースから QueryStats を呼び出します。上記のコマンドでは、デフォルトのオンライン サービスに対してこのユーザーの StatAStatB をクエリしています。

統計情報データのリセット

開発とテスティングの際には、現在のタイトルに提供されたすべてのプレイヤー統計情報を ResetStats 関数を使ってリセットできます。ポリシーはそれぞれのオンライン サービスで異なりますが、この関数がテスティング環境外でも機能するとは想定しないでください。ResetStats を使用するコードはシッピング ビルドから削除するか、コンパイル時のロジックを使って次のようにコードをマスクしてください。

#if !UE_BUILD_SHIPPING
// Code block with call to ResetStats
#endif

詳細情報

ヘッダ ファイル

必要に応じて「Stats.h」ヘッダ ファイルを直接参照してください。Stats インターフェースのヘッダ ファイル「Stats.h」は次の場所にあります。

UNREAL_ENGINE_ROOT\Engine\Plugins\Online\OnlineServices\Source\OnlineServicesInterface\Public\Online

UE のソース コードの入手方法については、「Unreal Engine のソース コードをダウンロードする」のドキュメントを参照してください。

関数パラメータおよび戻り型

関数パラメータおよび戻り型 (パラメータの渡し方、関数が戻す結果の処理など) については、「Online Services の概要」ページの「関数」セクションを参照してください。

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