統計とリーダーボード
まず、PlayFab でゲーム内のプレイヤーに対して定義されるすべての統計は、リーダーボードの一部であることに注意することが重要です。したがって、統計を定義することは、リーダーボードを定義することでもあります。 統計は必ずしもプレイヤーに表示されるとは限りませんが、そこには存在します。統計を使用して、定義したスコアに基づくプレイヤーのリストを取得できます。すべてのスコアの上位、下位、現在のプレイヤーを中心とするもの、またはユーザーのフレンド リストに含まれるものなどを見つけられます。 ゲーム内の多くの統計は ライフタイム 値を意図しています。つまり、プレイヤーは継続的にスコアを更新し、各プレイヤーが自分のパーソナル ベストを更新するまで古い値が残ります。しかし、プレイヤー体験によっては、時折リーダーボードを「消去」できることが重要です。 これは、ユーザーが特定の期間の最上位プレイヤーになろうとするインセンティブになったり、しばらくアクティブではなかったプレイヤーを単にランキングから削除したりするために使用できます。 このチュートリアルで説明するように、PlayFab の統計は、事前に決められた間隔でリセットするように構成できます。 これは、上記のシナリオだけでなく、最近のスコアの明確なリーダーボードを必要とするタイトルにも役立ちます。たとえば、プレイヤーに同程度のスキル レベルの相手に招待を送信させたい、ゲーム チャレンジのようなものに使用できます。 リセット期間を設定することで、たとえば GetLeaderboardAroundPlayer の呼び出しで返されるプレイヤーは、最近ゲームをプレイし、ローカル プレイヤーと同様のスコアを持つプレイヤーになります。 また、統計を手動操作としてリセットすることもできます。これは、リリース前のテストやアルファ/ベータ プレイのデータをクリアするための便利なシステムです。 これは最悪の場合のシナリオでも役立ちます。たとえば、ゲーム コードにバグが導入されて制御不能なスコアが発生した場合などです。いずれの場合も、リーダーボードを クリーン に消去できる能力が必要です。これによりプレイヤーは、リーダーボードに載る公正なチャンスがあると感じられます。以下で示すように、統計のリセットはそれらの値を削除するわけではありません。リセット時に、PlayFab の統計はバージョン管理され、新しいバージョンが権威となり、以前のバージョンは後で分析するために保持されます (そして古いスコアに基づいてプレイヤーに報酬を与えることができます)。
リセット可能な統計の構成
統計のリセット期間は、Admin API セットまたは Game Manager を使用して構成されます。その後、Game Manager、Server API、Client API を介して更新およびクエリできます (ただし、クライアントから統計を投稿するには、Game Manager の Settings -> API Features タブで allow client to post statistics オプションを設定する必要があります)。 これに対応する API メソッドを説明しますが、ここで定義されているパラメーターは Game Manager 自体で使用されるものと同じです。 統計をセットアップするには、AdminCreatePlayerStatisticDefinition メソッドを使用でき、後で変更するには UpdatePlayerStatisticDefinition メソッドを使用できます。
いずれの場合も、パラメーターは 2 つだけです:
StatisticName- プレイヤー統計の文字列識別子。VersionChangeInterval- 統計を自動的にリセットするタイミングを定義する期間。
VersionChangeInterval はこの機能のキーであり、hourly、daily、weekly、または monthly として定義できます。また、定期的なリセットを行いたくないと後で判断した場合は、never に設定することもできます。
以下の例では、CreatePlayerStatisticDefinition メソッドを呼び出して、日次リセットで統計 Headshots をセットアップしています。つまり、ゲーム内のこの統計のリーダーボードは毎日 00:00 UTC にリセットされます。
PlayerStatisticDefinition で、以下を含みます:
- 統計の文字列 ID (
StatisticName)。 - 統計がリセットされた回数 (
CurrentVersion)。 - 統計がリセットされる時期を定義する期間 (
VersionChangeInterval)。
- Never: 時間ベースの統計のバージョン管理を停止します。
- Hour: 毎 時間 の始まり (XX:00 UTC) に統計をバージョン管理します。
- Day: 毎 日 の午前 0 時 (00:00 UTC) に統計をバージョン管理します。
- Week: 毎週月曜日の午前 0 時 (00:00 UTC) に統計をバージョン管理します。
- Month: 毎月 1 日の午前 0 時 (00:00 UTC) に統計をバージョン管理します。
既存の統計
ゲーム内で定義されているすべての統計は、リセット統計としてセットアップされているかどうかにかかわらず、定義をクエリできます。 これは重要です。統計は UpdatePlayerStatistics 呼び出しを使用して作成できるためです。リセット期間 (VersionChangeInterval) なしで作成された統計には最初からリセット期間がないため、統計構成のクエリではこのパラメーターが Never に設定されて返されます。
上記の例を使用すると、タイトルにも UpdatePlayerStatistics を使用して作成された FlagsCaptured という統計 (または Game Manager でプレイヤーに対して直接作成された) があり、数週間が経過していれば、以下の呼び出しに示すように表示されます。
Headshots という統計にはリセット間隔が定義されており、CurrentVersion は統計が 2 回リセットされたことを示します。
一方、FlagsCaptured には VersionChangeInterval がありません。これが、CurrentVersion が 0 である理由でもあります (バージョン管理されたことがないため)。
UpdatePlayerStatistics (または PlayFab Game Manager) を介して作成された統計は、上記の通り UpdatePlayerStatisticDefinition を使用して依然としてリセット期間を持つように定義できます。
これが実行されると、CreatePlayerStatisticDefinition を使用して最初から定義されたかのように、その間隔でリセットされます。
統計の手動リセット
ゲーム バグにより統計に対する不正が可能だった状況や、単にリリース前ゲームプレイからのスコアを削除するためにリセットする必要がある場合、統計を Game Manager で、またはIncrementPlayerStatisticVersion 呼び出しを介して強制的にリセットできます。
これにより、指定した現在の統計が即座にリセットされ、ゲームのリーダーボードがクリアされ、新しい値を報告するためのブランク スレートが提供されます。
この例では、この呼び出しは以下のようになります。
Headshots 統計がさらに 1 回インクリメントされ、アクティブになったバージョンに関する情報が返されます。
PlayerStatisticVersion 情報が返され、統計の ID (StatisticName)、バージョン番号、権威あるバージョンになった時刻 (ActivationTime)、ArchivalStatus (現在のバージョンでは常に NotScheduled) が含まれます。
ただし、VersionChangeInterval も持つ統計の場合、手動でリセットしても次のスケジュールされたリセット時間は変更 されません。統計が日次でリセットするようにスケジュールされていて、23:30 UTC に手動でリセットされた場合でも、UTC の午前 0 時に 再度 リセットされます。
リセットが発生するとき
前述のとおり、リセット間隔が発生すると統計はバージョン管理され、新しいバージョンがすぐに利用可能になり、その統計の古いバージョンは後の取得のためにアーカイブされます。 リセット間隔が発生する (または手動リセットが実行される) と、統計がバージョン管理され、古いバージョンへの書き込みは最大 10 分間受け入れられます。それを過ぎると、統計は ロック され、それ以降の更新ができなくなります。 有効期限が切れると、統計はアーカイブ プロセスに入り、後でタイトルから取得できるようになります。 統計のアーカイブ プロセスの段階は次のとおりです:- NotScheduled - 統計のアーカイブが開始されていない (通常、現在アクティブな統計バージョンのみ)。
- Scheduled - アーカイブ プロセスがスケジュールされていますが、まだ進行していません。
- InProgress - 統計がアーカイブにバックアップされています。
- Failed - 予期しない失敗が発生しました (この場合は、サポート フォーラム にお問い合わせください)。
- Complete - このバージョンの統計はアーカイブされています。
GetPlayerStatisticVersions を使用してクエリできます。これにより、前の手動リセットの例で示したように、各バージョンの情報が返されます。
言い換えれば、この呼び出しは以下のようになります。
IncrementPlayerStatisticVersion から返される値に加えて、レスポンスには現在のアクティブ バージョンより前の各バージョンについて有効期限切れの時刻 (DeactivationTime)、およびアーカイブ プロセスが完了した後に古いリーダーボードの完全な記録を含む CSV をダウンロードするための URL (ArchiveDownloadUrl) も含まれます。
統計バージョンの読み取りと書き込み
最後に、Server および Client API 側では、これらの呼び出しは PlayFab の元のユーザーおよびキャラクター統計の呼び出しとよく似ています。 違いは、バージョンがリクエストまたはレスポンスの一部になったことです。 統計を取得する際、現在の統計バージョンの値とバージョン番号自体が返されます。 以下の例は、Headshots 統計の呼び出しと、返されたデータを示しています。
Server リクエスト
Server レスポンス
Client リクエスト
Client レスポンス
Update 呼び出しはオプションのバージョンを受け取り、ゲームプレイ中にバージョンがインクリメントされた可能性がある場合に、どのバージョンを更新するかをタイトルが制御できるようにします。
この例では、タイトルがまだ可能な間に 以前 のバージョンに書き込む場合、以下に示すように Version 2 に書き込まれることになります。
Server リクエスト
Server レスポンス
Client リクエスト
Client レスポンス
リソース
完全性のため、このセクションでは上記で説明したすべての列挙型、クラス、API メソッドを、簡単な説明とともにリスト化します。ベース列挙型
-
Interval - 統計 (リーダーボード) がリセットされる周期:
- Never
- Hour
- Day
- Week
- Month
-
StatisticVersionArchivalStatus - ダウンロード可能なアーカイブにバージョンのプレイヤー統計値を保存するプロセスのステータス:
- NotScheduled
- Scheduled
- InProgress
- Failed
- Complete
ベース クラスとそのメンバー
-
PlayerStatisticDefinition
- StatisticName (string) - 統計の一意の名前。
- CurrentVersion (string) - 統計のアクティブな現在のバージョン。統計がリセットされるたびにインクリメントされます。
- VersionChangeInterval (Interval) - 全プレイヤーの統計値がリセットされる間隔。
-
PlayerStatisticVersion
- StatisticName (string) - バージョンがアクティブになったときの統計の名前。
- Version (string) - 統計のバージョン (文字列としてエンコードされた 16 進数)。
- ScheduledVersionChangeIntervalTime (DateTime) - 構成された ResetInterval に基づいて統計バージョンがアクティブになる予定だった時刻。
- CreatedTime (DateTime) - 統計バージョンがアクティブになった時刻。
- ArchivalStatus (StatisticVersionArchivalStatus) - このバージョンのプレイヤー統計値をダウンロード可能なアーカイブに保存するプロセスのステータス (構成されている場合)。
- ResetInterval (Interval) - バージョンがアクティブになるようトリガーしたリセット間隔 (構成されている場合)。
-
StatisticValue
- StatisticName (string) - 統計の一意の名前。
- Value (Int32) - プレイヤーの統計値。
- Version (string) - プレイヤーの既存の統計値については、ロード時の統計のバージョン。
-
StatisticUpdate
- StatisticName (string) - 統計の一意の名前。
- Version (string) - プレイヤーの統計値の更新については、更新される統計のバージョン。
- Value (Int32) - プレイヤーの統計値。
Admin API メソッド
-
CreatePlayerStatisticDefinition
-
CreatePlayerStatisticDefinitionRequest
- Name (string) - 最小長 1、最大長 128 - 統計の一意の名前。
- (VersionChangeInterval) (Interval) - 全プレイヤーの統計値がリセットされる間隔 (リセットは次の間隔境界から始まります)。
-
CreatePlayerStatisticDefinitionResult
- Statistic (PlayerStatisticDefinition) - 作成された統計の定義。
-
CreatePlayerStatisticDefinitionRequest
-
UpdatePlayerStatisticDefinition
-
UpdatePlayerStatisticDefinitionRequest
- StatisticName (string) - 統計の一意の名前。
- VersionChangeInterval (Interval) - 全プレイヤーの統計値がリセットされる間隔 (リセットは次の間隔境界から始まります)。
-
UpdatePlayerStatisticDefinitionResult
- Statistic (PlayerStatisticDefinition) - 作成された統計の定義。
-
UpdatePlayerStatisticDefinitionRequest
-
GetPlayerStatisticDefinitions
- GetPlayerStatisticDefinitionsRequest (パラメーターなし)。
- GetPlayerStatisticDefinitionsResult
- Statistics (PlayerStatisticDefinition[]) - リセットの定義の配列。
-
GetPlayerStatisticVersions
-
GetPlayerStatisticVersionsRequest
- StatisticName (string) - 統計の一意の名前。
-
GetPlayerStatisticVersionsResult
- StatisticVersions (PlayerStatisticVersion[]) - 統計のバージョン変更履歴 (すべてのバージョン)。
-
GetPlayerStatisticVersionsRequest
-
IncrementPlayerStatisticVersion
-
IncrementPlayerStatisticVersionRequest
- StatisticName (string) - 統計の一意の名前。
-
IncrementPlayerStatisticVersionResult
- StatisticVersion (PlayerStatisticVersion) - この操作の結果として期限切れになった統計バージョン (およびそのアーカイブ ステータス)。
-
IncrementPlayerStatisticVersionRequest
Client API メソッド
-
GetPlayerStatistics
-
GetPlayerStatisticsRequest
- StatisticNames (string[]) - 一意の名前で返される統計の配列。
-
GetPlayerStatisticsResult
- Statistics (StatisticValue[]) - リクエストされたすべての統計の StatisticValue データの配列。
-
GetPlayerStatisticsRequest
-
UpdatePlayerStatistics
-
UpdatePlayerStatisticsRequest
- Statistics (StatisticUpdate[]) - 提供された値で更新される統計。
- UpdatePlayerStatisticsResult (パラメーターなし)。
-
UpdatePlayerStatisticsRequest
Server API メソッド
-
GetPlayerStatistics
-
GetPlayerStatisticsRequest
- PlayFabId (string) - 統計が更新されるプレイヤーの PlayFab ID。
- StatisticNames (string[]) - 一意の名前で返される統計の配列。
-
GetPlayerStatisticsResult
- Statistics (StatisticValue[]) - リクエストされたすべての統計の StatisticValue データの配列。
-
GetPlayerStatisticsRequest
-
UpdatePlayerStatistics
-
UpdatePlayerStatisticsRequest
- PlayFabId (string) - 統計が更新されるプレイヤーの PlayFab ID。
- Statistics (StatisticUpdate[]) - 提供された値で更新される統計。
- UpdatePlayerStatisticsResult (パラメーターなし)。
-
UpdatePlayerStatisticsRequest
