playfab.gamesave 名前空間で title_player_account エンティティに対して発行されます。
イベント
gamesave_version_finalized
ゲーム セーブ バージョンが確定されるたびに発行されます。すべてのファイルがアップロードされ、バージョンが完成しています。このイベントは、セーブ アクティビティを追跡するための主要なシグナルです。
Conflict (ネストされたオブジェクト、競合解決中のみ存在):
gamesave_version_marked_known_good
ゲーム セーブ バージョンが「既知の良好 (known good)」として明示的にマークされたときに発行されます。既知の良好なバージョンは、信頼できる復元ポイントとして機能します。プレイヤーやタイトルが不正なセーブ状態から回復する必要がある場合、システムがロールバックするバージョンです。
シナリオ
シナリオ: 標準的なクロス デバイス使用
典型的なクロス デバイスのフローは、プレイヤーが 1 つのデバイスでセーブし、別のデバイスで再開するようなものです。PlayStream では、このパターンはVersion 番号が増加する gamesave_version_finalized イベントの一連の流れとして表示されます。
表示される内容:
- プレイヤーがセーブするたびに
gamesave_version_finalizedイベントが表示され、DeviceTypeとPlayerIdentityProviderは使用されたデバイスと ID プロバイダーを示します。 NewFileCountとNewFilesSizeBytesは、前のバージョンと比較してどれだけのデータが変更されたかを示します。NewFileCountが 0 のバージョンは、プレイヤーが新しいファイル コンテンツなしでバージョンを確定したことを意味します (たとえば、メタデータのみの更新)。- 通常のセーブでは、
Conflictはnull、IsGeneratedByRollbackはfalseです。
- プレイヤーごとのセーブ頻度: 確定イベントの割合を追跡して、プレイヤーのエンゲージメントとセーブ動作を理解します。
- 時間の経過に伴うセーブ サイズ:
TotalSizeBytesとNewFilesSizeBytesを監視して、ストレージ コストや同期時間に影響する可能性のあるセーブ データの予期しない増加を検知します。 - デバイス分布:
DeviceTypeを集約して、プレイヤーが最も頻繁にどのプラットフォームからセーブしているかを理解します。
シナリオ: 競合解決
2 つのデバイスが同じベース バージョンに対してゲーム セーブ バージョンを確定するときに競合が発生します。たとえば、プレイヤーがコンソールと PC で同時にオフラインでプレイし、両方のデバイスがオンラインに戻ったときに同期しようとする場合などです。 表示される内容:- 競合解決中、クライアントは常にローカル ファイルを新しいマニフェストにアップロードし、マニフェストを確定します。このプロセスにより、null でない
Conflictオブジェクトを持つ単一のgamesave_version_finalizedイベントが生成されます。既存のクラウド バージョン (以前のイベントで既に確定済み) は新しいイベントを生成しません。 Conflict.IsWinnerは、プレイヤーのローカルの変更が競合に勝ったかどうかを示します:true—プレイヤーは ローカルを保持 を選択しました。新しいマニフェストが正規のバージョンとなり、以前のクラウド バージョンは置き換えられます。false—プレイヤーは リモートを保持 を選択しました。新しいマニフェストは (拒否されたローカル データを含む) ロールバック ポイントとして保存され、既存のクラウド バージョンが正規のままとなります。
Conflict.ConflictingVersionは、競合していた既存のクラウド バージョンを指します。
- 競合率—
Conflictが存在するgamesave_version_finalizedイベントをフィルターします。競合率の上昇は、プレイヤーが同期せずに頻繁にデバイスを切り替えていること、またはタイトルのセーブ頻度が不要なバージョン衝突を引き起こしていることを示す可能性があります。 - ローカル対リモートの優先度—
IsWinner = true(ローカル保持) とIsWinner = false(リモート保持) の比率を比較して、プレイヤーが競合をどのように解決するかを理解します。片側への強い偏りは、競合プロンプトの UX 問題を示す可能性があります。 - クロス デバイスの競合パターン—競合イベントで
DeviceTypeとPlayerIdentityProviderを使用して、どのプラットフォームの組み合わせが最も競合しやすいかを理解します。
シナリオ: Known good とロールバック
「Known good」メカニズムを使用すると、特定のバージョンを信頼できる復元ポイントとしてマークできます。プレイヤーのセーブが破損したり回復が必要な場合、システムは最新の既知の良好なバージョンにロールバックし、そこから新しいバージョンを作成できます。 表示される内容:- バージョンを復元ポイントとして指定すると、
Version番号とMarkedAtタイムスタンプを持つgamesave_version_marked_known_goodイベントが表示されます。 - ロールバックが発生した場合、システムは
IsGeneratedByRollback = trueの新しいgamesave_version_finalizedイベントを発行します。この新しいバージョンのコンテンツは既知の良好なバージョンに基づいていますが、新しい増加したバージョン番号が付与されます。 - ロールバックが競合解決の一部としてトリガーされた場合、ロールバックによって生成されたバージョンにも
Conflictデータがある可能性があります。
- ロールバック頻度—
IsGeneratedByRollback = trueのgamesave_version_finalizedイベントを追跡します。タイトルで頻繁にロールバックが発生する場合、セーブの破損問題やタイトルのセーブ ロジックの問題を示す可能性があります。 - 既知の良好性の鮮度—
gamesave_version_marked_known_goodのVersionを、同じプレイヤーの最新の確定済みVersionと比較します。大きなギャップは、ロールバックが必要な場合にプレイヤーが大きな進行状況を失うことを意味します。 - ロールバックと競合の相関—ロールバックによって生成されたバージョンが競合データと頻繁に一緒に表示される場合、そのパターンは、競合解決戦略が副作用としてロールバックをトリガーしていることを示唆する可能性があります。
