> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Game Saves ツール

> Fiddler で XBOX Game Saves のトラフィックを検査し、xbstorage および gamesaveutil コマンド ライン ツールを使用してローカル セーブ データをエクスポートおよびインポートします。

この記事では、ネットワーク トラフィックを検査するための Fiddler の使用、デバッグに欠かせないツールと手法、および Game Saves の操作について説明します。

## Game Saves ネットワーク トラフィックの検査

Fiddler を使用して、タイトルとの間を行き来するネットワーク トラフィックを検査およびデバッグします。Fiddler のセットアップの詳細については、次の記事を参照してください。

* [XBOX 開発キットでの Fiddler](https://docs.xbox.com/ja-jp/build/console-features/networking/tools/fiddler-setup-networking.md)
* [Windows PC での Fiddler](https://docs.xbox.com/ja-jp/build/console-features/networking/tools/fiddler-pc.md)

Fiddler は、タイトルがタイトル ロックを取得または解放したかを確認するのに使え、これはデータがクラウドとの間でいつ同期されるかを決定します。

タイトルがロックの取得に成功したときの `PUT` リクエストは次のとおりです。

```
PUT /connectedstorage/users/xuid(<XUID>)/scids/<TITLE SCID>/lock HTTP/1.1  
```

タイトルがロックを解放したときのリクエストは次のとおりです。

```
DELETE /connectedstorage/users/xuid(<XUID>)/scids/<TITLE SCID>/lock HTTP/1.1
```

タイトルは、使用している Game Saves API に応じて異なるタイミングでロックを取得および解放します。

| Game Saves API | ロック取得 | ロック解放 | 備考 |
| - | - | - | - |
| XGameSaveFiles | [XGameSaveFilesGetFolderWithUiAsync](https://docs.xbox.com/ja-jp/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync.md) | デバイスが保留中の変更のアップロードを完了すると自動的にロックを解放します。このプロセスはタイトル終了後、約 15 ～ 30 秒かかります。 | タイトルが再開したら、[XGameSaveFilesGetFolderWithUiAsync](https://docs.xbox.com/ja-jp/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync.md) を呼び出してロックを再取得します。API 呼び出しからのフォルダー パスは、セッション間で同じままです。ロックはアクティブでなくなっている可能性があります。 |
| XGameSave | [XGameSaveInitializeProvider](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesaveinitializeprovider.md) または [XGameSaveInitializeProviderAsync](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesaveinitializeproviderasync.md) | [XGameSaveCloseProvider](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesavecloseprovider.md) | タイトルは [XGameSaveCloseProvider](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesavecloseprovider.md) を呼び出してプロバイダーのリソースを解放します。これを呼び出さないとメモリ リークが発生します。 |

同期プロセスの詳細については、[Game Saves の同期フローについて](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/game-saves-syncing.md) を参照してください。

## Game Saves の操作

Game Saves と直接対話するために使える 2 つのツールがあります。

* `xbstorage`: コンソール上のローカル Game Saves に使用します。詳細については、[コンソール上での Game Saves データの管理 (xbstorage.exe)](https://docs.xbox.com/ja-jp/tools/tools-console/commandlinetools/xbstorage.md) を参照してください。
* `xgamesaveutil`: PC 上のローカル Game Saves に使用します。詳細については、[PC 上での Game Saves データの管理 (xgamesaveutil.exe)](https://docs.xbox.com/ja-jp/tools/tools-pc/commandlinetools/gr-xgamesaveutil.md) を参照してください。

これらのツールを使用すると、.xml ファイルを介して個々のユーザーまたはマシン プロバイダー ストレージ スペースをインポートおよびエクスポートできます。
すべてのツール操作の一覧については、それぞれのツールの記事を参照してください。

> [!NOTE]
>
> インポートとエクスポートの動作は、コンソールと PC で異なります。詳細については、以下の説明と各ツール ページを参照してください。

### コンソール (xbstorage)

コンソール上では、`xbstorage` はコンソールの Game Saves サービスを介して動作します。ツールが操作を実行すると、システムはあたかもタイトルが直接その操作を実行しているかのように動作します。

* **インポート** データは、コンソールがまずクラウドと同期し (ロックを取得してリモートの変更をダウンロード)、インポートされたデータをローカルに書き込み、その後インポートされたデータをクラウドへアップロードし始めます。アップロードは、ロックが解放される前にバックグラウンドで完了します。
* **エクスポート** データは、コンソールがまずクラウドと同期し、その後ローカル データを出力ファイルにコピーします。

### PC (xgamesaveutil)

PC 上では、`xgamesaveutil` は Game Saves サービスを介さずに直接ローカル ディスクにデータを書き込みます。

* **インポート** データは、コンテナーと BLOB をローカル ディスクに書き込みます。ツールはインポートの前後にクラウドと同期せず、クラウドへのアップロードもトリガーしません。インポートされたデータは、次回タイトルが起動し、Game Saves プロバイダーを取得したときにクラウドにアップロードされます。
* **エクスポート** データは、コンテナーをローカル ディスクから直接読み取ります。読み取りの前にクラウドと同期はしません。

これらのツールを実行するデバイスがロックを取得できない場合や、クラウドとローカルのコンテナー間の競合を検出した場合、システムはユーザーが競合を解決しないかのように状況を扱います。この状態で、デバイスはコンテナーの 1 つのバージョンを保持します。デバイスは、次回タイトルが起動されるまでオフラインであるかのように動作します。

## リファレンス API ドキュメント

* [XGameSave (API 目次)](https://docs.xbox.com/ja-jp/reference/system/xgamesave/xgamesave_members.md)
  * 関数
    * [XGameSaveInitializeProvider](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesaveinitializeprovider.md)
    * [XGameSaveInitializeProviderAsync](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesaveinitializeproviderasync.md)
    * [XGameSaveCloseProvider](https://docs.xbox.com/ja-jp/reference/system/xgamesave/functions/xgamesavecloseprovider.md)
* [XGameSaveFiles (API 目次)](https://docs.xbox.com/ja-jp/reference/system/xgamesavefiles/xgamesavefiles_members.md)
  * 関数
    * [XGameSaveFilesGetFolderWithUiAsync](https://docs.xbox.com/ja-jp/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync.md)

## 関連項目

[Game Saves 目次](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/game-saves-toc.md)


## Related topics

- [Game Saves の概要](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/game-saves-overview.md)
- [Game Saves (目次)](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/game-saves-toc.md)
- [Game Save](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/index.md)
- [Game Saves システム ダイアログ](https://docs.xbox.com/ja-jp/build/core-features/common/game-save/game-saves-dialogues.md)
- [Game Saves ロールバック](https://docs.xbox.com/ja-jp/services/playfab/player-progression/game-saves/rollback.md)
