指定された時間枠内のプレイヤーの進行状況を統計データサイクルを使用して追跡する
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services (AGS) で提供される統計データサービスを使用すると、さまざまなプレイヤー属性を追跡し、統計サイクルを使用して特定の時間枠内でそれらを追跡できます。サイクルが終了すると、進行状況がリセットされ、プレイヤーは再び競争を開始できます。たとえば、週間キル数を追跡したり、このシーズンにプレイヤーが収集した特定のアイテムの数を追跡したりできます。
さらに、統計サイクルを新しいリーダーボードなどの他のサービスと統合して、選択した統計データとそれが属するサイクルに基づいてプレイヤーをランク付けすることもできます。
目標
- 統計サイクルとその設定方法についての理解を提供する。
前提条件
以下が必要です:
- AGS 管理者ポータルへのアクセス。
- AGS 統計データ API ドキュメントへのアクセス。
- 統計サイクルに追加される統計コード設定。
統計サイクルの作成
ゲームにとって、プレイヤー間の競争を高めるために、特定の時間枠内でユーザー属性を永続的に追跡することは非常に重要です。以下のガイドに従って、AGS 管理者ポータルから統計サイクル設定を設定し、特定の時間枠のユーザー属性を追跡できます:
-
管理者ポータルのサイドバーで、Progression & Inventory > Statistics > Cycles に移動します。

-
Statistics Cycles ページで、+ Add Cycle ボタンをクリックします。Add New Cycle フォームが表示されます。
-
必要な情報を入力します:

- サイクルの Name。
- サイクルの Description。
- サイクルの Start Date と End Date。End Date はオプションであり、値が空の場合は無期限に実行されます。
- Cycle Configuration の Cycle Type。各 Cycle Type には、次のようにリセット時間の異なる設定があります:
-
Daily の場合、時間(UTC)の Reset Time を定義します。
-
Weekly の場合、Reset Day と時間(UTC)の Reset Time を定義します。
-
Monthly の場合、Reset Date と時間(UTC)の Reset Time を定義します。

-
Annually の場合、Reset Date と時間(UTC)の Reset Time を定義します。

-
Seasonal の場合、日数で Season Duration と時間(UTC)の Reset Time を定義します。

-
注記増分統計サイクルの場合、0 の代わりに初期値(リセット後)としてデフォルト値が使用されます。
-
Add をクリックして新しいサイクルを保存します。
サイクルへの stat code の追加
特定のサイクルに追加された Statcode を選択すると、新しいリーダーボードでサイクルを使用して時間ベースのリーダーボードを作成できます。
統計サイクルに stat code を追加するには、以下の手順に従います:
-
管理者ポータルのサイドバーで、Progression & Inventory > Statistics > Cycles に移動します。

-
サイクルリストから、更新するサイクルを見つけて、その ID をクリックして詳細ページを開きます。

-
サイクルの詳細ページで、Statcode List セクションまでスクロールします。次に、+ Stat Code ボタンをクリックします。Add Statcode フォームが表示されます。

-
フォームで、追加する stat code を検索して選択します。別の stat code を追加するには、+ Add More Statcode をクリックします。サイクルに必要な数だけ追加でき、オプションでこのサイクルの各 stat code の最小/最大値を設定できます。

- 統計サイクルの最小/最大値の範囲は、統計設定の最小/最大値の間である必要があります。
- 統計設定のデフォルト値は、統計サイクルの最小/最大値と統計設定の最小/最大値の間である必要があります。
- 統計サイクルの最小/最大の動作の詳細については、以下を参照してください。
-
Add をクリックします。新しい stat code が Statcode List に追加されます。
サイクルの最小値と最大値の上限動作
サイクルの最小値と最大値を設定すると、ユーザー統計データとユーザー統計サイクルの両方の更新の動作に影響します。この動作は、既存の統計設定で設定できます。
この設定を有効または無効にするには、以下の手順に従います:
- 管理者ポータルで、Game Management > Statistic > Configuration に移動します。
- 編集する既存の Statistic Configuration を選択します。設定が
INITステータスであり、最小/最大制限のあるサイクルに割り当てられていることを確認してください。 - Statistic Configuration ページで、Cap Cycle Override オプションを切り替えて動作を有効または無効にします。
Cap Cycle Override を有効にした場合
Cap Cycle Override がアクティブな場合、以下の動作が適用されます:
-
統計サイクルの最大値が統計設定の最大値よりも小さい場合:
- 増分更新:
- ユーザー統計データ:
- 統計設定に関連付けられた最小のサイクル最大値に達するまで増分できます。
- サイクルがリセットされると、ユーザー統計データは更新を続けることができます。
- 更新は統計設定の最大値を超えることはできません。
- ユーザー統計サイクル:
- サイクルの最大値に達するまで増分できます。
- 同じ統計設定に関連付けられた他のサイクルが先にサイクルの最大値に達した場合、更新は停止します。
- ユーザー統計データ:
- Min、Max、および Override 更新
- ユーザー統計データとユーザー統計サイクルの両方が最大制限に達するまで更新されます。
- 増分更新:
-
統計サイクルの最小値が統計設定の最小値よりも大きい場合
- 増分更新:
- ユーザー統計データ:
- 統計設定に関連付けられた最大のサイクル最小値に達するまで減分できます
- サイクルがリセットされると、ユーザー統計データは更新を続けることができます。
- 更新は統計設定の最小値を下回ることはできません。
- ユーザー統計サイクル:
- サイクルの最小値に達するまで減分できます。
- 同じ統計設定に関連付けられた他のサイクルが先にサイクルの最小値に達した場合、更新は停止します。
- ユーザー統計データ:
- Min、Max、および Override 更新:
- ユーザー統計データとユーザー統計サイクルの両方が最小制限に達するまで更新されます。
- 増分更新:
-
統計サイクルの最大値と最小値が統計設定の最大値と最小値と同じまたは等しい場合
- すべての更新戦略に適用:
- ユーザー統計データ: 設定の最大値と最小値に従います。
- ユーザー統計サイクル: サイクルの最大値と最小値に従います。
- すべての更新戦略に適用:
各更新戦略は、最小/最大制限を適用する際に異なる動作をします。
例を使用した更新戦略の説明
シナリオ: 最小/最大値が設定された複数のサイクルに関連付けられたユーザー統計データの更新。
- 統計設定
- 最小:
0 - デフォルト:
30 - 最大:
500
- 最小:
- 日次統計サイクル
- 最小:
15 - 最大:
150
- 最小:
- 週次統計サイクル
- 最小:
5 - 最大:
250
- 最小:
この設定を使用すると、更新戦略は次のように動作します:
増分更新
増分更新は、定義された最小/最大制限で統計データまたはサイクル値を上限します。増分がこれらの制限を超える場合、最も近い境界(最小値または最大値)で上限されます。この上限からの残りの値は、他の関連する統計データまたはサイクルに再分配されます。その結果、更新された値は元のリクエストではなく、調整された増分を反映します。

Min、Max、および Override
Min、Max、または Override 更新戦略を使用した更新リクエストがユーザー統計データをサイクルまたは統計設定の最小/最大制限を超えさせる場合、値は残りの値を再分配せずに上限されます。各ユーザー統計データまたはユーザー統計サイクルは、制限に達するまで独立して計算されます。
- Max 更新戦略

- Min 更新戦略

- Override 更新戦略

Cap Cycle Override を無効にした場合
Cap Cycle Override が無効の場合、各統計データとサイクルは、設定された最小/最大制限に基づいて独立して計算されます。サイクルまたは統計設定の制限間に依存関係はありません。
サイクルステータス
統計サイクル設定が正常に作成されると、サイクル設定に基づいていくつかのステータス状態のいずれかになります。機能をより適切に活用するには、ステータスを理解することが不可欠です。
| ステータス | 意味 |
|---|---|
| INIT | サイクルが開始されていない、および/またはこの設定に登録されているアクティブな統計設定がない |
| ACTIVE | サイクルが実行中、および/またはこの設定に登録されているアクティブな統計設定がある |
| STOPPED | サイクルが終了したか、Stop Cycle エンドポイントにアクセスして手動でトリガーされて停止した |
ゲームから統計サイクルを使用する
統計サイクルのリストを取得
名前空間で利用可能なすべての統計サイクルの詳細なリストを取得できます。
- Unreal
- Unity
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
EAccelByteCycle TheCycle = EAccelByteCycle::DAILY;
int32 Offset = 0; //Optional
int32 Limit = 20; //Optional
ApiClient->Statistic.GetListStatCycleConfigs(TheCycle,
THandler<FAccelByteModelsStatCycleConfigPagingResult>::CreateLambda([&](const FAccelByteModelsStatCycleConfigPagingResult& Response)
{
// Do something if GetListStatCycleConfigs is successful
})
, FErrorHandler::CreateLambda([&](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetListStatCycleConfigs has an error
})
, Offset
, Limit);
Statistic statistic = AccelByteSDK.GetClientRegistry().GetApi().GetStatistic();
StatisticCycleType type = StatisticCycleType.None;
StatisticCycleStatus status = StatisticCycleStatus.None;
int offset = 0; //Optional
int limit = 20; //Optional
statistic.GetListStatCycleConfigs(result =>
{
if (result.IsError)
{
// Do something if GetListStatCycleConfigs has an error
Debug.Log($"Error GetListStatCycleConfigs, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if GetListStatCycleConfigs is successful
}, type, status, offset, limit);
サイクル ID で統計サイクルを取得
名前空間内の特定の統計サイクルを取得することもできます。これにより、プレイヤーは特定の統計サイクルに集中できます。
- Unreal
- Unity
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
FString StatisticCycleId = "Your Cycle Id";
ApiClient->Statistic.GetStatCycleConfig(StatisticCycleId,
THandler<FAccelByteModelsStatCycleConfig>::CreateLambda([&](const FAccelByteModelsStatCycleConfig& Response)
{
// Do something if GetStatCycleConfig is successful
})
, FErrorHandler::CreateLambda([&](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetStatCycleConfig has an error
}));
Statistic statistic = AccelByteSDK.GetClientRegistry().GetApi().GetStatistic();
string cycleId = "Your Cycle Id";
statistic.GetStatCycleConfig(cycleId, result =>
{
if (result.IsError)
{
// Do something if GetStatCycleConfig has an error
Debug.Log($"Error GetStatCycleConfig, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if GetStatCycleConfig is successful
});
統計サイクルに関連するユーザー統計アイテムを取得
統計サイクル ID を使用してユーザー統計のリストを取得できます。これにより、プレイヤーはサイクルに関連付けられた統計アイテムのリストに集中できます。ユーザーに属するすべての統計データを取得するには、StatCodes を空にするか、StatCodes を削除します。
- Unreal
- Unity
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
FString StatisticCycleId = "Your Cycle Id";
int32 Offset = 0; //Optional
int32 Limit = 20; //Optional
TArray<FString> StatCodes = {"Your StatCode 1", "Your StatCode 2" }; //Optional
ApiClient->Statistic.GetUserStatCycleItems(StatisticCycleId,
THandler<FAccelByteModelsUserStatCycleItemPagingSlicedResult>::CreateLambda([&](const FAccelByteModelsUserStatCycleItemPagingSlicedResult& Response)
{
// Do something if GetUserStatCycleItems is successful
})
, FErrorHandler::CreateLambda([&](int32 ErrorCode, FString ErrorMessage)
{
// Do something if GetUserStatCycleItems has an error
})
, Offset
, Limit);
Statistic statistic = AccelByteSDK.GetClientRegistry().GetApi().GetStatistic();
string cycleId = "Your Cycle Id";
int offset = 0; //Optional
int limit = 20; //Optional
string[] statCodes = { "Your StatCode 1", "Your StatCode 2" }; //Optional
statistic.GetListUserStatCycleItem(cycleId, result =>
{
if (result.IsError)
{
// Do something if GetListUserStatCycleItem has an error
Debug.Log($"Error GetListUserStatCycleItem, Error Code: {result.Error.Code} Error Message: {result.Error.Message}");
return;
}
// Do something if GetListUserStatCycleItem is successful
}, offset, limit, statCodes);