Skip to main content
Game Saves は、オンラインとオフラインの両方で動作するように設計されており、ネットワーク接続が利用できない場合でもプレイヤーがゲームを続けられるようになっています。システムは、ネットワークの可用性とユーザーの選択に基づいて 2 つの異なるモードで動作します。

接続モード

クラウド接続モード

ネットワークが利用可能で PFGameSaveFilesAddUserWithUiAsync() が正常に完了すると、システムはクラウド接続モードで動作します。このモードでは:
  • すべての API がクラウド同期を完全に伴って正常に機能します
  • セーブ データのアップロードは期待どおりに動作します
  • ストレージ クォータの情報が利用可能です
  • アクティブ デバイスの監視が正しく機能します

オフライン モード (クラウドに未接続)

ネットワークが利用できないか、ユーザーがオフラインでプレイすることを選択した場合、システムは限られた機能でオフライン モードに入ります。PFGameSaveFilesIsConnectedToCloud() を使用して現在の接続状態を確認し、システムがどのモードで動作しているかを判断できます。

初期同期中のネットワーク障害の処理

PFGameSaveFilesAddUserWithUiAsync() がネットワーク接続なしで呼び出されると、PFGameSaveFilesUiSyncFailedCallback がトリガーされます。システムがユーザーの応答を待つ間、XAsyncBlock コールバックは発火しません。ユーザーが終端アクションを選択するまで、非同期操作は一時停止されます。
ユーザー応答オプション:
  • Try Again (Retry): ネットワーク呼び出しを再試行します。再試行も失敗した場合、このコールバックが再度発火し、ユーザーが再度応答する必要があります。XAsyncBlock コールバックは、各再試行ループを通じて延期されたままです。
  • Use Offline (UseOffline): XAsyncBlock コールバックが S_OK で発火しますが、システムはオフライン モードに入ります (PFGameSaveFilesIsConnectedToCloud() で検出できます)。
  • Cancel: XAsyncBlock コールバックが E_PF_GAMESAVE_USER_CANCELLED で発火します。

オフライン モードでの API 動作

オフライン モードでは、API は異なる動作をします。

通常に動作する API

  • PFGameSaveFilesGetFolder() - ローカル セーブ フォルダー パスを返します

機能が制限される API

  • PFGameSaveFilesUploadWithUiAsync() - すぐに S_OK を返しますが、非同期の完了は E_PF_GAMESAVE_DISCONNECTED_FROM_CLOUD を返します
  • PFGameSaveFilesGetRemainingQuota() - E_PF_GAMESAVE_DISCONNECTED_FROM_CLOUD を返します
  • PFGameSaveFilesSetActiveDeviceChangedCallback() - 設定できますがトリガーされることはありません

オンライン モードに戻る

  • 再接続を試みるために PFGameSaveFilesAddUserWithUiAsync() を再度呼び出します
  • Game Saves システムを完全に再初期化する必要はありません
  • ネットワークがまだ利用できない場合、再度失敗 UI が表示されます
  • 再試行後に接続状態を検証するには PFGameSaveFilesIsConnectedToCloud() を使用します

その他の接続状態シナリオ

PFGameSaveFilesIsConnectedToCloud() API は特に有用です。切断は複数の方法で発生する可能性があるためです。
  • 同期中のネットワーク利用不可: ユーザーが明示的にオフラインでのプレイを選択する
  • アクティブ デバイスが変更された: 別のデバイスがアクティブ デバイスとして引き継ぎ、このデバイスは自動的にオフライン モードになる
適切なユーザー フィードバックを提供するには、クラウド操作を試みる前にこの API を使用してください。

オフライン サポートのベスト プラクティス

  1. ネットワークの問題を優雅に処理するために 常に同期失敗コールバックを実装 する
  2. クラウド操作を試みる前に PFGameSaveFilesIsConnectedToCloud() を使用して 定期的に接続状態を確認 する
  3. セーブが同期されないことをプレイヤーが理解できるように、オフライン モードで動作しているときに プレイヤーに通知 する
  4. ネットワーク接続が復元されたときに 再試行オプションを提供 する
  5. ローカル セーブは常に機能する - プレイヤーはネットワーク状態に関係なくプレイを続けることができる
  6. 切断を監視する - 別のデバイスがアクティブになるとデバイスが切断される可能性があることを覚えておく

接続モードでのアップロード動作

接続モードでも、ネットワークの問題やレート制限によってアップロードが失敗する場合があります。この場合、XAsyncBlock コールバックはすぐには発火しません。システムが UI コールバック ステート マシン を通じてユーザーの応答を待つ間、非同期操作は一時停止されます。
  1. エラーの詳細と共に PFGameSaveFilesUiSyncFailedCallback が発火します。
  2. XAsyncBlock コールバックはまだ発火しません。システムが応答を待つ間、操作が一時停止されます。
  3. ユーザーが Retry を選択すると、アップロードが再試行されます。再度失敗すると、コールバックが再度発火し、ユーザーが再度応答する必要があります。
  4. ユーザーが Cancel を選択すると、XAsyncBlock コールバックが E_PF_GAMESAVE_USER_CANCELLED で発火します。
  5. 再試行が成功すると、XAsyncBlock コールバックが S_OK で発火します。
ゲームは、ネットワークが復元されたら後で PFGameSaveFilesUploadWithUiAsync() を再度呼び出すことができます。
最終更新日 2026年8月25日