メインコンテンツまでスキップ

プレイヤーとゲーム全体のグローバル統計データを追跡する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

この記事では、ゲームとプレイヤーのグローバル統計データを追跡するための統計設定の方法について説明します。

目標

  • 統計設定の概要を提供する
  • ユーザー統計データとグローバル統計データの設定方法を説明する
  • AccelByte SDK を使用した統計データの使用方法(複数更新機能の活用方法を含む)を説明する

前提条件

以下へのアクセスが必要です:

  • AccelByte 管理者ポータル
  • AccelByte Unreal または Unity SDK
  • 参考用の AccelByte 統計データ API ドキュメント

ユーザーおよびグローバル統計設定の作成

ゲームにとって、ユーザーの進行状況を一貫して追跡するための永続的な統計追跡機能を持つことは非常に重要です。

管理者ポータルで統計設定を作成するには、以下の手順に従ってください:

  1. 管理者ポータルのサイドバーで、Progression & Inventory > Statistics > Configurations に移動します。

  2. Statistic Configuration ページで、Add Configuration ボタンをクリックします。Add New Configuration フォームが表示されます。

    add new configuration

  3. 必要な情報を入力します:

    • 許可された形式を使用して Stat Code を入力し、将来的に統計データを識別しやすくするために統計データの Name も入力します。作成した統計データに関する追加情報を提供するために、オプションの Description を入力することもできます。

    • サーバー側の追加検証のために、オプションの Min. ValueMax. Value を入力して、ユーザーが許可された数値を超えないようにします。また、各ユーザーの統計データの開始番号または値を決定するために、必須の Default Value を追加する必要があります。

  4. 統計機能を完全に活用するために設定できる追加の設定もあります。以下のフォームを参照してください。

    creating a user statistic

    • Incrementtrue に設定することで、統計値が減少しないようにすることができます。この機能は、ユーザーが特定のゲームメカニクスを自分の利益のために利用しないようにするための追加のサーバー側検証を提供します。

    • すべての貢献ユーザーからの統計データの グローバル 累積値を追跡するには、Set as Globaltrue に設定してください。これにより、システムは個々のユーザー統計データだけでなく、グローバル統計データに貢献するすべてのユーザーからの累積統計データも追跡します。

    • Set By フィールドを Server に設定することで、ゲームサーバーのみが統計データを更新できるようにする検証を追加することもできます。これにより、ユーザーはゲームクライアントから直接統計データを更新することが拒否されます。これは、チートやゲームクライアントの改ざんを防ぐ良い方法でもあります。

    • ゲームから統計データをグループ化して整理しやすくするために、統計データの tags をオプションで設定できます。

Game SDK または Extend SDK を使用した統計データの使用

管理者ポータルで統計データが設定されたら、このセクションで説明されている例を参照して、SDK を使用して統計データを使用できます。

サーバー主導型の統計データ管理は、こちらのガイドに従って行うこともできます。

統計データの更新

この更新機能はゲームクライアントから直接呼び出すことができ、ゲームサーバーを利用しないシングルプレイヤーやピアツーピアマルチプレイヤーなどの非競争的なジャンルに適しています。

以下の表に示すように、いくつかの更新戦略がサポートされています:

更新戦略使用方法実装例
OVERRIDE更新により、統計データの既存の値が最新の値に置き換えられますELO や MMR など、独自の計算がある場合に適しています。最新の値を渡して、サービスに保存させることができます。
INCREMENT更新により、新しい値が正(+)か負(-)かに応じて、既存の値に新しい値が加算または減算されますバトルで獲得した経験値を追跡するのに適しています。この方法では、ポイントを直接渡すことができ、サービスが増分を処理します。
MAX値が既存の値よりも高い場合にのみ統計データを更新しますキル数やダメージ量などの最高/最高スコアを追跡するのに適しています。スコアが既存のスコアよりも低い場合、サービスは更新を無視します。
MIN値が既存の値よりも低い場合にのみ統計データを更新します。最高のレースラップや最速ラウンドなどの最小スコアを追跡するのに適しています。スコアが既存のスコアよりも高い場合、サービスは更新を無視します。

単一ユーザー統計データの更新

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString AdditionalKey = " Your additional key";
FString StatCode = " Your stat code ";

FAccelByteModelsPublicUpdateUserStatItem UserStatItem{};
UserStatItem.UpdateStrategy = EAccelByteStatisticUpdateStrategy::OVERRIDE;
UserStatItem.Value = 100.0f;

ApiClient->Statistic.UpdateUserStatItemsValue(StatCode
, AdditionalKey
, UserStatItem
, THandler<FAccelByteModelsUpdateUserStatItemValueResponse>::CreateLambda([](FAccelByteModelsUpdateUserStatItemValueResponse Result)
{
// Do something if UpdateUserStatItemsValue is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if UpdateUserStatItemsValue has an error
}));

1人のユーザーの複数の統計データを更新

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString AdditionalKey = " Your additional key";

FAccelByteModelsUpdateUserStatItemWithStatCode UserStatItem1{};
UserStatItem.StatCode = " Your 1st stat code ";
UserStatItem.UpdateStrategy = EAccelByteStatisticUpdateStrategy::OVERRIDE;
UserStatItem.Value = 100.0f;

FAccelByteModelsUpdateUserStatItemWithStatCode UserStatItem2{};
UserStatItem.StatCode = " Your 2nd stat code ";
UserStatItem.UpdateStrategy = EAccelByteStatisticUpdateStrategy::INCREMENT;
UserStatItem.Value = 50.0f;

TArray<FAccelByteModelsUpdateUserStatItemWithStatCode> BulkUpdateUserStatItems = { UserStatItem1, UserStatItem2 };

ApiClient->Statistic.BulkUpdateUserStatItemsValue(AdditionalKey
, BulkUpdateUserStatItems
, THandler<TArray<FAccelByteModelsUpdateUserStatItemsResponse>>::CreateLambda([](TArray<FAccelByteModelsUpdateUserStatItemsResponse> Result)
{
// Do something if BulkUpdateUserStatItemsValue is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if BulkUpdateUserStatItemsValue has an error
}));

ユーザー統計データの取得

ユーザー統計データの取得は簡単で、ユーザープロファイルの一部として、またはゲーム UI 内の任意の場所にユーザー統計データを表示できます。すべてのユーザー統計データをリストするか、statcodes によっていくつかの統計データを表示するか、または管理者ポータルで事前に設定したタグによって統計データを表示することもできます。

SDK 機能を使用するには、以下のスニペットを参照してください

現在のユーザーと他のユーザーの統計データを取得

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString UserId = "Player User Id";
TArray<FString> StatCodes = { "Stat Code 1", "Stat Code 2" };
TArray<FString> Tags = { "Tag 1", "Tag 2", "Tag 3" };
int32 Offset = 0;
int32 Limit = 20;

ApiClient->Statistic.GetUserStatItems(UserId
, StatCodes
, Tags
, THandler<FAccelByteModelsUserStatItemPagingSlicedResult>::CreateLambda([](FAccelByteModelsUserStatItemPagingSlicedResult Result)
{
// Do something if GetUserStatItems is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetUserStatItems has an error
})
, Offset
, Limit);

グローバル統計データの取得

ユーザー統計データと同様に、ゲーム UI 内の任意の場所にグローバル統計データを簡単に表示することもできます。所有しているすべてのグローバル統計データを表示するか、statcode を使用して特定の統計データを選択することができます。

SDK 機能を使用するには、以下のスニペットを参照してください。

Statcode を使用してグローバル統計データを取得

FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();

FString StatCode = "Your Global Statistic Code";

ApiClient->Statistic.GetGlobalStatItemsByStatCode(StatCode
, THandler<FAccelByteModelsGlobalStatItemValueResponse>::CreateLambda([](FAccelByteModelsGlobalStatItemValueResponse Result)
{
// Do something if GetGlobalStatItemsByStatCode is successful
})
, FErrorHandler::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetGlobalStatItemsByStatCode has an error
}));