PC 用のコードなしのクラウド セーブデータ
PC Game Pass に移植された一部のゲームでは、コードなしのクラウド セーブデータ ソリューションが必要になる場合があります。 その良い例を次に示します:
- ゲームは x86 であり、パッケージの外部で GDK を直接使用することはできません
- Unreal や Bolt と Unity でブループリントのようなものを使用する開発者なしでゲームが作成された可能性があります
コードなしのクラウド セーブ データを使用すると、ゲームは目的のセーブ ディレクトリからの読み取りと書き込みを行うだけで、標準の Win32 ファイル IO API を使用して同期が自動的に処理されます。 ゲームは、同期とアップロードを処理するために特別なコードを記述する必要はありません。 同期は、ゲームの起動前に行われます。
コードなしのクラウド セーブデータは、PC 上のゲームがアクティブでなくなったときにアップロードされます。 アップロードは、次の場合に行われます。
- ゲームが終了した
- セーブ データが追跡されているユーザーがサインアウトした
- PC の電源状態が変更された
- ゲームがバックグラウンドにあるか、指定したセーブ エリアに対して新しい書き込みを行っていない状態で 30 分が経過した
コードなしのクラウド セーブデータ ソリューションは、XGameSaveFiles の上に構築され、ファイル サイズとユーザーごとのストレージ制限に関するこれらの制限をすべて共有します。 ファイルは 64 MB に制限されます (XGameSave または接続ストレージ間の相互運用が必要な場合は 16 MB)。 既定では、ユーザーごとのストレージは 256 MB に制限されます。 ユーザーごとのストレージ制限を大きくする必要があるゲームは、DPM と連携して例外を要求できます。
注意
ディレクトリとファイル名には、特定の名前付けの規則と文字制限があります。 詳細については、「XGameSaveFiles」をご覧ください。
コードなしのクラウド セーブデータは、PC でのみサポートされます。 また、ゲームを起動する前にユーザーが常にサインインしていることを確認するために、 簡略化されたユーザー モデル (NDA トピック)認可が必須です をゲームで選択する必要があります。 ユーザーがゲームにサインインできない場合、ゲームの起動は許可されません。 ゲームプレイ中にユーザーがサインアウトすると、ゲームが終了します。
コードなしのクラウド セーブデータを有効にする
コードなしのクラウド セーブデータを有効にするには、microsoftgame.config を変更する必要があります。簡略化されたユーザー モデルを有効にし、セーブ ファイルの読み書きを行うルート フォルダーを指定し、ゲームの対応する SCID を指定する必要があります。
<Game configVersion="1">
<Identity Name="SampleNameOne" Publisher="CN=NoPublisher"/>
<SaveGameStorage>
<NoCodePCRoot RelativeTo="SavedGames">test\path</NoCodePCRoot>
<SCID>DF9D8061-4790-4B84-86B4-CD060B00B4DD</SCID>
<MaxUserQuota>256</MaxUserQuota>
</SaveGameStorage>
<!-- much content removed -->
<!-- Must also opt into requiring a default user at launch -->
<AdvancedUserModel>false</AdvancedUserModel>
</Game>
NoCodePCRoot で指定されたルート フォルダーは、小さなオプションのコレクションの 1 つに対して相対的である必要があります。
RelativeTo | PC 上のフォルダーの場所 |
---|---|
AppData | 環境変数 %APPDATA% にマップします |
Public | 環境変数 %PUBLIC% にマップします |
LocalAppData | 環境変数 %LOCALAPPDATA% にマップします |
LocalAppDataLow | %USERPROFILE%\AppData\LocalLow にマップ |
ProgramData | 環境変数 %PROGAMDATA% にマップします |
SavedGames | %USERPROFILE%\Saved Games にマップ |
UserProfile | 環境変数 %USERPROFILE% にマップします |
ファイルをルート ディレクトリに直接配置することはできません。 ルート フォルダーから少なくとも 1 つのサブフォルダー内にネストされている必要があります。 たとえば、 <NoCodePCRoot RelativeTo="SavedGames">savegame1.sav</NoCodePCRoot>
などのファイル名を直接使用すると、savegame1.sav が無視されるため、無効になります。
<NoCodePCRoot>
は、特定のファイルではなくディレクトリ パスを定義することを目的としています。