Skip to main content
この記事では、XGameSaveFilesGetFolderWithUIAsync の初期化方法を説明します。また、推奨される Win32 の自動クラウド同期動作、デバッグ手順、クォータおよび診断のガイダンス、パフォーマンスのベスト プラクティス、およびよくある質問への回答についても説明します。 XGameSaveFiles は、タイトルがユーザー データを読み書きし、セッション間で永続化し、クラウドとシームレスに同期して、プレイヤーが任意のデバイスでデータを使用できるようにする API を提供します。Microsoft Game Development Kit (GDK) タイトルのゲーム セーブには XGameSaveFiles を使用してください。シナリオで XGameSaveFiles が利用できない場合にのみ XGameSave を使用してください。 XGameSaveFiles のシステム API リファレンスについては、XGameSaveFiles (API 目次) を参照してください。 XGameSaveFiles では、次の用語がよく登場します。
  • ロック: 特定のユーザーが現在アクティブに使用しているデバイス上で、タイトルの Game Saves への排他アクセスを付与するメカニズムです。これは、ロックが保持されている間、他のデバイスがそのユーザーのゲーム セーブを変更できないようにします。
    • たとえば、ユーザーがデバイス A でタイトル T をプレイしている場合、そのユーザーのタイトル T に対するロックを持っています。
  • プロバイダー: Game Save システムと通信する仲介プロセスで、タイトル データの管理を担当します。プロバイダーはデバイス上のユーザーのロックも管理します。
  • コンテナー: フォルダーに相当します。
  • BLOB: 個別のファイルに相当します。

XGameSaveFiles のパス ロジック

XGameSaveFiles は、Game Saves システムとやり取りするために使用できるファイル パスを提供します。ファイル パスはクラウド同期と統合されているため、そのパスに保存されたデータは自動的にクラウドに同期されます。提供されたパスに対して Win32 の FileIO API を使用してください。GDK タイトルでは、Game Saves のアプローチとして XGameSaveFiles を使用してください。XGameSaveFiles は、コンテナーをフォルダーに、BLOB をファイルにマッピングします。 XGameSaveFiles はクラウド セーブ システムの複雑さのほとんどを隠していますが、機能が Microsoft Azure Blob Storage に依存しているため、ディレクトリおよびファイル名の制限は依然として適用されます。タイトルがセーブに使用する可能性のある次のサンプル コードを検討してください。
  • XGameSaveFilesGetFolderWithUiAsync は [ROOT] を返します。
  • [ROOT] に続くすべて (最終スラッシュを含む) は、コンテナーにマッピングされます。
    • コンテナー名は、大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、アンダースコア (_)、ピリオド (.)、ハイフン (-)、スラッシュ (/) に制限されます。
    • コンテナー名は 256 文字までに制限されます。
    • コンテナー名は、ピリオドで終わったり、連続する 2 つのピリオドを含んだり、ピリオドまたはハイフンで始まったりすることはできません。
  • ファイル名の最終スラッシュ以降のすべてが、BLOB にマッピングされます。
  • ファイル名は 65 文字に制限されますが、New Technology File System (NTFS) がサポートするその他の Unicode 文字は使用できます。
  • ファイル名を含む完全な結果パス ([ROOT] は含まない) は、MAX_PATH (260 文字) 未満である必要があります。
Win32 とファイル管理の詳細については、ファイル管理 (ローカル ファイル システム) を参照してください。

XGameSaveFiles の実装

次の手順は、XGameSaveFiles の一般的な実装を示します。
  1. タイトルの起動または再開時に、XGameSaveFilesGetFolderWithUIAsync を呼び出してプロバイダーを初期化し、ファイル パスを取得します。
  2. ゲーム プレイ中にファイル パスを自由に読み書きします。
XGameSaveFilesGetFolderWithUIAsync は、Game Saves プロバイダーのライフタイムを自動的に管理し、Game Saves ローカル ストレージ スペースをセットアップします。
タイトル起動時と再開時に XGameSaveFilesGetFolderWithUIAsync を呼び出してください。この呼び出しにより、Game Saves プロバイダーが初期化され、ゲーム セッションの実行中はアクティブなままとなります。この手順をスキップすると、システムが予測できない動作をする可能性があります。

コード サンプル

XBOX のフォルダーにアクセスするために XGameSaveFiles API を使用する方法を示すコード サンプルについては、GameSaveFilesCombo を参照してください。

Game Saves フロー

以下は、簡略化された Game Saves フローのフローチャートです。

タイトル開始

タイトル開始は、ユーザーがタイトルを起動または再開したときに発生します。

ユーザー サインイン

タイトルはユーザーのサインイン プロセスを開始します。この操作は、XGameSaveFilesGetFolderWithUIAsync を呼び出す場所でもあります。ユーザー セットアップの詳細については、ユーザー モデル を参照してください。

接続チェック

タイトルは XBOX ネットワークに接続できるかを判定します。できない場合は、タイトルの オフライン モード を有効にする必要があります。

データ所有権チェック

デバイスは、ユーザーが現在他のデバイスでプレイしていないかを確認します。特定のタイトルのユーザーのデータには、一度に 1 つのデバイスのみがアクセスできます。

クラウドとのデータ同期

デバイスは、Game Saves のローカル ストレージ データをクラウドと同期します。競合がある場合、システムは競合解決ダイアログでユーザーに確認を求めます。 ダイアログ: どちらを使用しますか? デバイス上のデータがクラウドのデータより新しい場合、タイトルは、ローカル データを使うかクラウド データを使うかをユーザーに選択するよう求めます。

ゲームプレイ ループ

タイトルは、XGameSaveFilesGetFolderWithUIAsync から提供されたフォルダー パスに対して自由に読み書きできます。

ゲーム セッションの終了

ゲーム セッションが終了すると、システムは自動的にデータのクラウドへのアップロードを試みます。このプロセスはタイトル終了後、およそ 10 ~ 30 秒後に発生します。 同期の詳細については、Game Saves の同期フローについて を参照してください。

制限とクォータ

制限

XGameSaveFiles を使用して保存できる最大ファイル サイズは 64 MB です。この動作は、各ファイルを 16 MB に制限する XGameSave とは異なります。

クォータ

ユーザーがタイトルごとに保存できる最大データは 256 MB です。残りのクォータを取得するには、XGameSaveFilesGetRemainingQuota を使用します。タイトルのユーザーごとのストレージ制限を大きくするストレージ拡張を取得するには、開発プログラム マネージャー (DPM) に連絡してください。

よくある質問

XGameSaveFiles を XGameSave と一緒に使用できますか?

はい。ただし、このアプローチは移行の場合にのみ使用してください。詳細については、XGameSave と XGameSaveFiles の相互運用性 を参照してください。

XGameSaveFiles はどのファイル パスに保存しますか?

コンソール: タイトルがアクティブな間に一時的なパスを提供します。コンソール ファイルにはエクスプローラーを使用してアクセスできません。 PC: %AppData%\Local\Packages\<PACKAGE_NAME>\SystemAppData\xgs\<HexXuid>_<SCID>\ XGameSaveFiles の PC パスは XGameSave とは異なります。wgs を使用します。

データが保存されるパスを指定できますか?

はい、ただし PC のみです。このアプローチは、別のタイトルからソリューションを移植する場合にのみお勧めします。このソリューションでは、ノーコード クラウド セーブ を使用します。

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

関連項目

Game Saves 目次 はい、ただし PC のみです。別のタイトルからソリューションを移植する場合には、このアプローチが必要になることがあります。このソリューションでは、ノーコード クラウド セーブ を使用します。
ノーコード クラウド セーブでは、タイトルが wdapp install を使用してパッケージ ビルドとして起動されている必要があります。.exe を直接起動しても、クラウド セーブのリダイレクトは有効になりません。パッケージ起動と直接 .exe 起動を交互に行うと、セーブ データが失われたように見えることがあります。詳細については、ノーコード クラウド セーブによる以前のタイトルの PC Game Saves への移植 を参照してください。
最終更新日 2026年8月24日