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

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

Last updated on July 15, 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 内の任意の場所に表示できます。すべてのユーザー統計データを一覧表示するほか、Stat Code を指定して特定の統計データを表示したり、管理者ポータルで事前に設定したタグで絞り込んで表示したりすることもできます。

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 内の任意の場所に簡単に表示できます。保有しているすべてのグローバル統計データを表示するほか、Stat Code を指定して特定の統計データを選択することもできます。

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

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

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