某些游戏被移植到电脑 Game Pass 可能需要无代码云保存解决方案。 这方面的出色示例包括:
- 游戏属于 x86,不能直接在打包外部使用 GDK
- 游戏可能是在没有开发人员使用与使用 Unreal 的蓝图或使用 Unity 的 Bolt 类似的内容的情况下创建的
使用无代码云保存,游戏只需从所需的保存目录读取和写入,使用标准 Win32 文件 IO API,同步将自动处理。 游戏无需编写特殊代码即可处理同步和上传。 同步将在游戏启动之前进行。
当电脑上的游戏不再处于活动状态时,将上传无代码云保存。 将在以下情况下上传:
- 游戏已终止
- 保存被跟踪的用户已注销
- 电脑上的电源状态更改
- 30 分钟后,游戏位于后台或游戏未对指定的保存区域进行任何新写入
无代码云保存解决方案基于 XGameSaveFiles 构建,并共享所有关于文件大小和每个用户存储限制的限制。 文件限制为 64 MB(如果需要在 XGameSave 或“连接存储”之间进行互操作,则为 16 MB)。 默认情况下,每个用户的存储空间限制为 256 MB。 需要更大的每用户存储限制的游戏可以与其 DPM 一起申请例外。
注意
目录和文件名有特定的命名约定和字符限制。 有关详细信息,请参阅 XGameSaveFiles
无代码云保存仅在电脑上受支持。 它要求游戏还必须选择加入简化用户模型 (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 指定的根文件夹必须与一小部分选项集合之一相关。
RelativeTo | 电脑上的文件夹位置 |
---|---|
AppData | 映射到环境变量 %APPDATA% |
开放 | 映射到环境变量 %PUBLIC% |
LocalAppData | 映射到环境变量 %LOCALAPPDATA% |
LocalAppDataLow | 映射到 %USERPROFILE%\AppData\LocalLow |
ProgramData | 映射到环境变量 %PROGAMDATA% |
SavedGames | 映射到 %USERPROFILE%\\保存的游戏 |
UserProfile | 映射到环境变量 %USERPROFILE% |
文件不能直接放置在根目录中。 它们必须嵌套在根文件夹的至少一个子文件夹中。 例如,直接使用文件名(如 <NoCodePCRoot RelativeTo="SavedGames">savegame1.sav</NoCodePCRoot>
)将无效,因为将忽略savegame1.sav。
<NoCodePCRoot>
旨在定义目录路径,而不是特定文件。