Skip to main content
PlayFab 游戏存档发出 PlayStream 事件,您可以使用这些事件来跟踪玩家如何存档、同步和管理其游戏数据。使用这些事件可以监控存档活动、检测冲突以及了解整个玩家群体的跨设备使用模式。 所有游戏存档事件都是针对 playfab.gamesave 命名空间中的 title_player_account 实体发出的。

事件

gamesave_version_finalized

每次游戏存档版本被最终确定时发出。所有文件均已上传,版本已完成。此事件是跟踪存档活动的主要信号。 Conflict(嵌套对象,仅在冲突解决期间存在):

gamesave_version_marked_known_good

当游戏存档版本被显式标记为”已知良好”时发出。已知良好版本作为可信的恢复点。当玩家或作品需要从错误的存档状态中恢复时,系统会回滚到该版本。

场景

场景:标准跨设备使用

典型的跨设备流程是玩家在一台设备上存档,然后在另一台设备上继续。在 PlayStream 中,这种模式表现为一系列 gamesave_version_finalized 事件,其 Version 号依次递增。 您将看到:
  • 每次玩家存档时都会有一个 gamesave_version_finalized 事件,其中 DeviceTypePlayerIdentityProvider 指明使用了哪台设备和身份提供程序。
  • NewFileCountNewFilesSizeBytes 显示与前一版本相比更改了多少数据。NewFileCount 为 0 的版本表示玩家最终确定的版本没有新的文件内容(例如,仅元数据更新)。
  • 对于正常存档,ConflictnullIsGeneratedByRollbackfalse
需要关注的内容:
  • 每个玩家的存档频率:跟踪最终确定事件的速率,以了解玩家参与度和存档行为。
  • 存档大小随时间的变化:监控 TotalSizeBytesNewFilesSizeBytes,以捕获可能影响存储成本或同步时间的存档数据的意外增长。
  • 设备分布:聚合 DeviceType,以了解您的玩家最常从哪些平台存档。

场景:冲突解决

当两台设备针对同一基础版本最终确定游戏存档版本时,会发生冲突。例如,玩家可能同时在其主机和 PC 上离线游玩,两台设备在重新联网时都尝试同步。 您将看到:
  • 在冲突解决期间,客户端总是将其本地文件上传到新清单,并最终确定该清单。此过程会产生一个 gamesave_version_finalized 事件,其中包含非 null 的 Conflict 对象。现有的云版本(已在先前事件中最终确定)不会产生新事件。
  • Conflict.IsWinner 告诉您玩家的本地更改是否赢得了冲突:
    • true——玩家选择了保留本地。新清单成为规范版本,先前的云版本被取代。
    • false——玩家选择了保留远程。新清单被保留为回滚点(包含被拒绝的本地数据),而现有的云版本仍为规范版本。
  • Conflict.ConflictingVersion 指向发生冲突的现有云版本。
需要关注的内容:
  • 冲突率——筛选 Conflict 存在的 gamesave_version_finalized 事件。冲突率上升可能表明玩家在未同步的情况下频繁切换设备,或您的作品的存档节奏导致不必要的版本冲突。
  • 本地与远程偏好——比较 IsWinner = true(保留本地)与 IsWinner = false(保留远程)的比率,以了解玩家如何解决冲突。强烈偏向一侧可能表明冲突提示存在用户体验问题。
  • 跨设备冲突模式——在冲突事件中使用 DeviceTypePlayerIdentityProvider,以了解哪些平台组合最容易发生冲突。

场景:已知良好和回滚

“已知良好”机制让您可以将特定版本标记为可信的恢复点。如果玩家的存档损坏或需要恢复,系统可以回滚到最近的已知良好版本,并基于该版本创建新版本。 您将看到:
  • 当您将某个版本指定为恢复点时,会有一个 gamesave_version_marked_known_good 事件,其中包含 Version 号和 MarkedAt 时间戳。
  • 如果发生回滚,系统会发出一个新的 gamesave_version_finalized 事件,其中 IsGeneratedByRollback = true。此新版本的内容基于已知良好版本,但会获得一个新的递增版本号。
  • 如果回滚是作为冲突解决的一部分触发的,则回滚生成的版本也可能包含 Conflict 数据。
需要关注的内容:
  • 回滚频率——跟踪 IsGeneratedByRollback = truegamesave_version_finalized 事件。某作品的频繁回滚可能表明存档损坏问题或作品的存档逻辑存在问题。
  • 已知良好的新鲜度——比较 gamesave_version_marked_known_good 中的 Version 与同一玩家最新最终确定的 Version。差距较大意味着如果需要回滚,玩家将丢失大量进度。
  • 回滚 + 冲突关联——如果回滚生成的版本经常与冲突数据一起出现,则该模式可能表明您的冲突解决策略作为副作用触发了回滚。
最后修改于 2026年8月25日