Skip to main content
本文介绍了游戏存档的六部分同步流程。虽然行为可能会因你使用的具体游戏存档 API 略有不同,但用户发起保存的一般流程是相同的。步骤如下。
  1. 标题启动
  2. 连接检查
  3. 数据所有权检查
  4. 与云同步数据
  5. 游戏循环
  6. 会话结束

标题启动

当标题启动时,第一步是确定为其管理游戏存档的用户。如果该用户在另一台设备上有活动的游戏会话,系统对话框会要求用户切换设备。如果用户切换,另一台设备会将其最新的本地游戏存档数据同步到新设备。如果你希望数据是本地的并绑定到设备,可以使用仅机器的提供程序。此选项将 null 用户句柄传递到游戏存档 API 中。 标题选择用户后,它会使用该用户的句柄初始化游戏存档。在初始化期间,游戏存档会连接到 XBOX 网络以准备用户的存储空间。 相关系统对话框: 有关用户模型和用户管理的信息,请参阅用户模型 有关存储的信息,请参阅游戏存档存储系统

连接检查

接下来,标题确定它是否可以连接到 XBOX 网络,以确认是否可以同步到云端。如果标题无法连接,用户可选择重试或在离线模式下恢复标题。游戏存档可以在离线模式下运行。 相关系统对话框: 我们现在无法将你的数据与云端同步。

离线行为

数据所有权检查

在连接确认之后,标题会确定设备是否有权修改数据。如果设备有权修改,它可以获取标题的锁。要使标题获取和释放锁,标题需要访问 XBOX services。 标题会检查是否有另一台设备持有用户数据的锁。这另一台设备可能仍持有锁,原因如下。
  • 与 XBOX 网络断开连接,使该设备无法调用 WebReleaseLock
  • 另一台设备正在上传大型游戏存档,无法调用 WebReleaseLock
如果另一台设备持有锁,用户有以下选项。
  • 强制从另一台设备获取锁,会导致另一台设备丢失会话数据。
  • 尝试再次正常获取锁。
  • 取消获取锁。
如果用户取消获取锁,则标题以离线模式启动。 有关更多连接丢失和锁场景,请参阅连接丢失和锁场景 相关系统对话框: 有关在 XBOX 网络上监视锁获取的详细信息,请参阅检查游戏存档网络流量

与云同步数据

标题获取用户数据的锁后,会将该数据与云端同步。然后标题决定它执行以下操作之一:
  • 上传本地游戏存档数据。
  • 下载云端数据并更新本地游戏存档数据。
  • 不采取任何操作。
  • 解决任何数据冲突。
标题通过比较两个时间戳来做出此决定。
  • 本地保存时间:此设备上次写入存档的时间
  • 云端保存时间:云端副本上次更新的时间

四种同步结果

如果从云端下载,会出现同步对话框:正在同步 … 的数据。如果用户使用此对话框取消游戏存档,则标题继续以离线模式运行。

已更改和保存状态

此场景假设用户在两台设备(设备 A 和设备 B)上进行游玩。 本地已更改 用户在设备 A 上离线时取得了进度。例如,用户在设备 A 上没有互联网连接的情况下升到了 126 级。 云端已更改 自用户上次同步设备 A 以来,进度已从设备 B 上传。例如,用户在设备 B 上升到 99 级并上传到了云端。 两者都已更改 用户在设备 A 上离线游玩。自上次同步设备 A 以来,用户也在设备 B 上进行了游玩。例如,设备 A 是 126 级。云端是 99 级。 如果存在冲突,系统会用对话框提示用户解决冲突:你想使用哪一个?

原子性

游戏存档在容器(文件夹)级别是原子的。如果云端文件夹包含匹配的本地文件夹中不包含的 blob,则系统将这两个文件夹视为独立的。此差异会造成冲突。

游戏循环

游戏循环是游戏会话的活动部分。它在标题完成与云端同步存档数据后开始。 在活动游戏会话期间,标题在本地读取和写入存档数据。在此期间创建或更新的所有数据都保留在游戏存档本地存储中,直到系统执行云同步。 当满足以下主机或 PC 条件之一时,游戏循环在用户的游戏会话结束时结束。当主机或 PC 触发状态更改(如挂起、终止、注销或其他系统事件)时,会话结束。

定期同步到云端

每 30 分钟游玩时间,标题尝试自动同步到云端。此行为基于以下场景。

会话结束

游戏会话结束后,标题将新数据上传到云端。当设备有连接时,设备会尝试将数据上传到云端。数据上传后,锁被释放。 有关调试查看 XBOX 网络上的锁释放,请参阅检查游戏存档网络流量

连接丢失和锁场景

在连接丢失期间写入的数据存储在游戏存档本地存储中,并在连接恢复后上传。但是,如果用户尝试使用另一台设备,则当前设备因连接丢失而无法释放锁。用户能够强制将锁转移到另一台设备。根据这些锁转移发生的时间,标题可能会经历不同的行为。

标题启动前连接丢失

时机: 用户在没有连接的情况下启动标题。
由于没有连接,标题为用户提供以离线模式启动的选项。当设备重新连接到 XBOX 网络并且云端包含较新的数据时,标题会将本地数据视为过时。在这种情况下,标题会通过挂起操作终止应用来结束游戏会话。 相关系统对话框:我们需要关闭此游戏或应用

游戏循环期间连接丢失

时机: 用户处于活动游戏会话中,且标题仍持有锁。在某个时刻,连接丢失。然后标题允许在此丢失期间继续游玩。

会话结束(终止或挂起)前连接丢失

时机: 玩家在设备断开连接时退出/挂起标题。设备仍有未同步的本地数据。

断电

断电的行为类似于连接丢失。主要区别是任何正在进行的保存操作都会丢失。
最后修改于 2026年8月24日