Skip to main content
この記事では、Game Saves の 6 部構成の同期フローについて説明します。使用する特定の Game Saves API によって動作が若干異なる場合がありますが、ユーザー主導のセーブに対する一般的なフローは同じです。手順は次のとおりです。
  1. タイトル開始
  2. 接続チェック
  3. データ所有権チェック
  4. クラウドとのデータ同期
  5. ゲームプレイ ループ
  6. セッション終了

タイトル開始

タイトルが起動すると、最初の手順は Game Saves の管理対象となるユーザーを決定することです。ユーザーが別のデバイスでアクティブなゲーム セッションを持っている場合、ユーザーにデバイスの切り替えを求めるシステム ダイアログが表示されます。ユーザーが切り替えると、他のデバイスは最新のローカル Game Saves データを新しいデバイスに同期します。データをローカルに保持してデバイスにバインドしたい場合は、マシン専用プロバイダーを使用できます。このオプションでは、Game Saves API に null のユーザー ハンドルを渡します。 タイトルがユーザーを選択したら、そのユーザーのハンドルを使って Game Saves を初期化します。初期化中、Game Saves は XBOX ネットワークに接続してユーザーのストレージ スペースを準備します。 関連するシステム ダイアログ: ユーザー モデルとユーザー管理の詳細については、ユーザー モデル を参照してください。 ストレージの詳細については、Game Saves ストレージ システム を参照してください。

接続チェック

次に、タイトルはクラウドへの同期が可能であることを確認するために、XBOX ネットワークに接続できるかを判定します。タイトルが接続できない場合、ユーザーは再試行するか、オフライン モードでタイトルを再開するかのオプションが提供されます。Game Saves はオフライン モードで実行できます。 関連するシステム ダイアログ: 現在データをクラウドに同期できませんでした。

オフライン時の動作

データ所有権チェック

接続が確認された後、タイトルはデバイスがデータを変更する権利を持っているかを判定します。デバイスにその権利がある場合、タイトルへのロックを取得できます。タイトルがロックを取得および解放するには、タイトルが XBOX services にアクセスできる必要があります。 タイトルは、ユーザーのデータへのロックを保持している別のデバイスがあるかを確認します。次のような理由で、このデバイスがまだロックを保持している可能性があります。
  • XBOX ネットワークから切断されており、デバイスが WebReleaseLock を呼び出せない。
  • もう一方のデバイスが大きな Game Save をアップロード中で WebReleaseLock を呼び出せない。
別のデバイスがロックを保持している場合、ユーザーには次のオプションがあります。
  • 他のデバイスから強制的にロックを取得する。他のデバイスはセッション データを失います。
  • 通常どおり再度ロックを取得しようとする。
  • ロック取得をキャンセルする。
ユーザーがロック取得をキャンセルすると、タイトルはオフライン モードで起動します。 接続喪失とロックのシナリオの詳細については、接続喪失とロックのシナリオ を参照してください。 関連するシステム ダイアログ: XBOX ネットワーク上でのロック取得の監視の詳細については、Game Saves ネットワーク トラフィックの検査 を参照してください。

クラウドとのデータ同期

タイトルがユーザーのデータへのロックを取得した後、そのデータをクラウドと同期します。次に、タイトルは次のいずれかのアクションを行うかを判定します。
  • ローカルの Game Saves データをアップロードする。
  • クラウド データをダウンロードし、ローカルの Game Saves データを更新する。
  • 何もしない。
  • データの競合を解決する。
タイトルは、次の 2 つのタイムスタンプを比較することでこれを判定します。
  • ローカル セーブ時刻: このデバイスが最後にセーブを書き込んだ時刻
  • クラウド セーブ時刻: クラウド コピーが最後に更新された時刻

4 つの同期結果

クラウドからのダウンロードが発生する場合、同期ダイアログが表示されます: …のデータを同期中…。ユーザーがこのダイアログを使用して Game Saves をキャンセルすると、タイトルはオフライン モードで続行します。

変更とセーブの状態

このシナリオは、ユーザーが 2 つのデバイス (デバイス A とデバイス B) でプレイしていることを想定しています。 ローカル変更 ユーザーがデバイス A でオフライン中に進捗を作成しました。たとえば、ユーザーがインターネット接続なしでデバイス A でレベル 126 に到達しました。 クラウド変更 ユーザーが最後にデバイス A を同期して以降、デバイス B から進捗がアップロードされました。たとえば、ユーザーがデバイス B でレベル 99 に到達し、クラウドにアップロードしました。 両方変更 ユーザーがデバイス A でオフラインでプレイしました。ユーザーはまた、最後にデバイス A を同期して以降、デバイス B でもプレイしました。たとえば、デバイス A はレベル 126 です。クラウドはレベル 99 です。 競合がある場合、システムは次のダイアログで解決するようユーザーに求めます: どちらを使用しますか?

原子性

Game Saves はコンテナー (フォルダー) レベルで原子性があります。クラウド フォルダーに、対応するローカル フォルダーにない BLOB が含まれている場合、システムは 2 つのフォルダーを別々のものとして扱います。この差異が競合を引き起こします。

ゲームプレイ ループ

ゲームプレイ ループ は、ゲーム セッションのアクティブな部分です。これは、タイトルがクラウドとセーブ データの同期を完了した後に始まります。 アクティブなゲーム セッション中、タイトルはローカルでセーブ データを読み書きします。この期間中に作成または更新されたすべてのデータは、システムがクラウド同期を実行するまで Game Saves のローカル ストレージに残ります。 コンソールまたは PC で次のいずれかの条件が真の場合、ユーザーのゲーム セッションが終了したときにゲームプレイ ループが終了します。セッションは、コンソールまたは PC が中断、終了、サインアウト、または他のシステム イベントなどの状態変化をトリガーしたときに終了します。

クラウドへの定期的な同期

ゲームプレイの 30 分ごとに、タイトルは自動的にクラウドとの同期を試みます。この動作は次のシナリオに基づいています。

セッション終了

ゲーム セッションが終了した後、タイトルは新しいデータをクラウドにアップロードします。デバイスは、接続がある場合にクラウドへのデータのアップロードを試みます。データがアップロードされた後、ロックは解放されます。 デバッグのために XBOX ネットワーク上でのロック解放を確認するには、Game Saves ネットワーク トラフィックの検査 を参照してください。

接続喪失とロックのシナリオ

接続喪失中に書き込まれたデータは、Game Saves のローカル ストレージに保存され、接続が復元された後にアップロードされます。ただし、ユーザーが別のデバイスを使用しようとした場合、現在のデバイスは接続が失われたためロックを解放できません。ユーザーは、ロックを別のデバイスに強制的に転送できます。これらのロック転送が発生するタイミングによって、タイトルは異なる動作を経験することがあります。

タイトル開始前の接続喪失

タイミング: ユーザーが接続なしでタイトルを起動します。
接続がないため、タイトルはユーザーにオフライン モードで起動するオプションを提供します。デバイスが XBOX ネットワークに再接続し、クラウドがより新しいデータを含んでいる場合、タイトルはローカル データを古いものとして扱います。この場合、タイトルは中断操作でアプリを終了することでゲーム セッションを終了します。 関連するシステム ダイアログ: このゲームまたはアプリを閉じる必要があります

ゲームプレイ ループ中の接続喪失

タイミング: ユーザーはアクティブなゲーム セッション中で、タイトルはまだロックを保持しています。ある時点で接続が失われます。タイトルはその間もゲームプレイを許可します。

セッション終了 (終了または中断) 前の接続喪失

タイミング: プレイヤーはデバイスが切断されている状態でタイトルを終了/中断します。デバイスにはまだ同期されていないローカル データがあります。

電源喪失

電源喪失は接続喪失と同様に動作します。主な違いは、アクティブだったセーブ操作が失われることです。
最終更新日 2026年8月24日