ローカル ストレージ
Xbox One 本体では、以下の 4 種類のローカル ストレージにアクセスできます。
- 一時ローカル ストレージ
- インストール済みゲーム データ
- デベロッパー スクラッチ パーティション
- 永続ローカル ストレージ
ストレージの種類 | 場所 |
---|---|
インストール済みゲーム データ | G:\ |
一時ローカル ストレージ | T:\ |
デベロッパー スクラッチ パーティション | D:\ |
永続ローカル ストレージ | XPersistentLocalStorageGetPathSize と XPersistentLocalStorageGetPath を呼び出して、パスのサイズとデータを取得します。 |
ダウンロード コンテンツ | XPackageMount を呼び出して DLC をマウントし、XPackageGetMountPath を呼び出してパスを取得します。 |
XR-133: ローカル ストレージの書き込み制限
注意
Xbox Series S、Xbox Series X、または同じ本体ファミリ内のその他の本体で実行されているタイトルは、永続的ローカル ストレージ (PLS) または一時ローカル ストレージへ 5 分間に 1 GiB を超えるデータを書き出してはなりません。 書き込みが 1 GiB を超えるタイトルは、サーティフィケーション テストに合格しません。 開発者は、PIX タイミング キャプチャで、いつ書き込み制限を超えるかについて警告を確認できます。 また、タイトルは XPackageGetWriteStats を呼び出して、実行時に書き込み統計を監視することができます。
一時ローカル ストレージ
一時ローカル ストレージは ドライブ T としてタイトルに公開されます。一時ストレージには、XtfFileIO コマンドに /x:/title を使用して、タイトルを実行している間にアクセスできます。 一時ローカル ストレージは、ログ ファイルなどの一時的なファイルの保存およびリモート取得に使用できます。 一時ローカル ストレージに書き込まれるファイルは、タイトルが実行中の間のみ利用可能であることが保証され、タイトルが実行を停止した後は削除されます。 T: ドライブに書き込まれたデータがゲームの起動からゲームの起動まで保持される保証はありません。 一時ストレージは、タイトルが終了した後のある時点で削除される可能性があります。
一時ローカル ストレージには以下の機能もあります。
- 2 GB の専用ストレージ
- コンテンツは、タイトルが終了した後に削除されます。
- コンテンツは、クイック再開を含め、一時停止および再開時は保持されます。
インストール済みゲーム データ
現在実行中のタイトルのインストール済みゲーム データの場所は ドライブ G にマップされます。このボリュームは、パッケージビルドを使用して、実行中のゲームのビュー内でのみ読み取られます。
デベロッパー スクラッチ パーティション
デベロッパー スクラッチ パーティションは ドライブ D として公開されますが、開発段階でのみ使用するローカル ストレージです。 問題が発生する可能性を回避するには、このパーティションへのすべての参照をリテール モードでコンパイルする必要があります。
永続的ローカル ストレージ
タイトルは、永続ローカル ストレージ (PLS) へのアクセスをマニフェストの一部として要求できます。
このストレージ領域は、ゲームプレイの再生やカスタム レンダリングされた記録など、ゲーム セーブ以外のデータを保存する長期的なキャッシュとして使用するためのものです。 PLS はプライマリ データ ストレージ領域として設計されていません。 ゲーム セーブ、コンテンツ アップデート (CU)、タイトルを実行するのに必要なその他のデータを保存するために使用することはありません。 ゲーム セーブは、Connected Storage API を使用して保存します。または、オンライン専用タイトルの場合は、必要に応じて Xbox サービス タイトル ストレージまたはパブリッシャーがホストしているクラウド ストレージ サービスを使用します。
PLS には次の特性があります。
- タイトル固有: このストレージ領域には、それを要求したタイトルだけがアクセスできます。
- 本体固有: このストレージ領域は、常に本体固有の XVD に作成され (タイトルが外部ドライブにインストールされている場合でも)、別の本体では使用できません。
- 保証された割り当て: システムは、タイトルの起動が許可される前に確実に領域が割り当てられるようにします。 ハード ドライブの空き領域が不足している場合は、ユーザーは、タイトルを実行できるように領域を解放するように求められます。
- ユーザーによる制御: ストレージ領域は、ユーザーによってシステム シェルから削除できます。 システムでは、この領域の項目は自動的に削除されません。
- タイトルのインストール期間との連携: タイトルがアンインストールされると、関連付けられているローカル ストレージ領域も削除されます。 タイトルが再インストールされても、以前に存在していたデータは復元されません。
- 耐障害性と改ざん防止: ストレージ領域は暗号化され、整合性がチェックされるので、タイトルによって保存されたデータを改ざんすることはできません。
PLS を要求するには、<Game> の子として次のマークアップを MicrosoftGame.config に追加します。
<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
<!-- snip -->
<PersistentLocalStorage><SizeMB>1024</SizeMB></PersistentLocalStorage>
</Game>
ローカル永続ストレージの領域を取得するには、タイトルの永続ストレージのパスを返す XPersistentLocalStorageGetPathSize と XPersistentLocalStorageGetPath を呼び出して、パスのサイズとデータを取得します。 利用可能な領域の合計量は、MicrosoftGame.config の宣言でタイトルがローカル ストレージについて要求した内容によって決まります。
タイトルがコンテンツアップデートを使用して、要求された永続的なローカルストレージ領域のサイズを増やすと、以前のストレージ領域が削除され、アップグレード中にそのコンテンツが失われます。
共有可能な永続ローカル ストレージ
タイトルは、永続的なローカル ストレージを読み取り専用として他のタイトルと共有することを選択できます。 タイトルが別のタイトルの PLS を読み取ることができるようにするリレーションシップを次に示します:
PLS の製品共有 | 共有可能 PLS を読み取る製品 |
---|---|
フランチャイズ ゲーム ハブ | すべてのハブ対応ゲームは、このフランチャイズ ゲーム ハブと、このフランチャイズ ゲーム ハブとの RelatedProduct リレーションシップを持つすべてのゲームに依存します。 |
ハブ対応ゲーム | 関連するフランチャイズ ゲーム ハブと、このゲームに RelatedProduct リレーションシップを持つすべてのゲーム。 |
ハブ非対応ゲーム | このゲームに RelatedProduct リレーションシップを持つすべてのゲーム。 |
PLS を共有可能にするには、マークアップ <Shareable> を <PersistentLocalStorage> の子として MicrosoftGame.config に追加します。
<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
<!-- snip -->
<PersistentLocalStorage>
<Shareable>true</Shareable> <!--This is optional, and the default value is false -->
</PersistentLocalStorage>
</Game>
注意
タイトルがその PLS を共有可能としてマークする場合は、ゲームを中断する前に、すべてのハンドルを PLS に閉じ、それ以外の場合はゲームの中断が失敗し、ゲームが終了することを確認する必要があります。
拡大可能な永続ローカル ストレージ
拡大可能な永続ローカル ストレージは PLS の拡張機能です。この機能を使用すると、その領域を前もって永続的に予約しなくても、タイトルはローカル ストレージ領域の大部分にアクセスを要求することができます。 ユーザー作成コンテンツ (UGC) のような追加領域や、大規模なローカル再生ファイル (すべてのユーザーが利用できるわけではない) を必要とするシナリオを使用する場合に適しています。
拡大可能な PLS を要求するには、<Game> の子として次のマークアップを MicrosoftGame.config に追加します。
<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
<!-- snip -->
<PersistentLocalStorage>
<!-- <SizeMB>1024</SizeMB> --Optional. To be used if your title always wants 1024 MBs pre-allocated even before launch -->
<GrowableToMB>20480</GrowableToMB> <!-- This is not a static reservation, but the largest size your title PLS can grow to -->
</PersistentLocalStorage>
</Game>
拡大可能な PLS に書き出す前に、タイトルは XPersistentLocalStorageGetSpaceInfo API を使用して、使用可能な領域を確認する必要があります。 GetDiskFreeSpaceExW を呼び出すと、PLS に残っている空き領域の最大容量のみがタイトルに通知されることに注意してください。これは使用できるとは限りません。 xPersistentLocalStorageGetSpaceInfo は、空き領域の合計と使用可能な空き領域 (基になるドライブの最小空き領域と実際の領域) も返します。
タイトルに使用可能な領域よりも多くの領域が必要で、その拡大可能な PLS 割り当てがいっぱいになっていない場合、かつ、PLS XVD を増加させる基になる領域がドライブに不足している場合は、XPersistentLocalStoragePromptUserForSpaceAsync 関数を使用して、タイトルが必要とする要求された追加領域を解放するようにエンド ユーザーに求める必要があります。
タイトルがコンテンツの更新を使用して、拡張不可能な永続的なローカル ストレージを使用して拡張可能な記憶域に変更した場合、以前の記憶域は削除され、アップグレード中にそのコンテンツは失われます。
ダウンロード コンテンツ
ダウンロード コンテンツは、インストール後、要求に応じてマウントおよびマウント解除することができます。 XPackageMount を呼び出して DLC をマウントし、XPackageGetMountPath を呼び出してパスを取得します。
注意
返されるパスの値をハードコーディングしないでください。これらの値は時間の経過と共に変化する可能性があり、パッケージをマウントした後でのみ有効であるからです。
リモート コンソール ツールによるゲーム データへのアクセス
リモート コンソール ツールでは、/X スイッチで /title を指定することによって、実行中タイトルと同じマッピングを使用できます。 次に、リモート コンソール ツールは、スクラッチ ボリュームに書き込まれたデータと、現在のタイトルのインストール済みゲーム データにアクセスできます。
スクラッチ ボリュームのファイルを開発用 PC にコピーするには、次のように xbcp を使用します。
xbcp /x:/title xd:\file-namec:\local-path
開発用 PC からタイトル ボリュームにファイルをコピーするには、次の方法で xbcp を使用します。
xbcp /x:/title c:\file-namexg:\dest-path
タイトルの実行中のみ、開発用 PC から PLS にアクセスできます。 xb コマンドを使用して、この場所へ、またはこの場所からファイルをコピーできます。 次に例を示します。
xbcp /x:/title c:\file-namexr:\dest-path
リモート コンソール ツールを使用して本体上のファイルを操作するための構文の詳細については、「ファイル コピー (xbcp.exe) (NDA トピック)認可が必須です」を参照してください。