playfab.gamesave 命名空间中的 title_player_account 实体发出的。
事件
gamesave_version_finalized
每次游戏存档版本被最终确定时发出。所有文件均已上传,版本已完成。此事件是跟踪存档活动的主要信号。
Conflict(嵌套对象,仅在冲突解决期间存在):
gamesave_version_marked_known_good
当游戏存档版本被显式标记为”已知良好”时发出。已知良好版本作为可信的恢复点。当玩家或作品需要从错误的存档状态中恢复时,系统会回滚到该版本。
场景
场景:标准跨设备使用
典型的跨设备流程是玩家在一台设备上存档,然后在另一台设备上继续。在 PlayStream 中,这种模式表现为一系列gamesave_version_finalized 事件,其 Version 号依次递增。
您将看到:
- 每次玩家存档时都会有一个
gamesave_version_finalized事件,其中DeviceType和PlayerIdentityProvider指明使用了哪台设备和身份提供程序。 NewFileCount和NewFilesSizeBytes显示与前一版本相比更改了多少数据。NewFileCount为 0 的版本表示玩家最终确定的版本没有新的文件内容(例如,仅元数据更新)。- 对于正常存档,
Conflict为null,IsGeneratedByRollback为false。
- 每个玩家的存档频率:跟踪最终确定事件的速率,以了解玩家参与度和存档行为。
- 存档大小随时间的变化:监控
TotalSizeBytes和NewFilesSizeBytes,以捕获可能影响存储成本或同步时间的存档数据的意外增长。 - 设备分布:聚合
DeviceType,以了解您的玩家最常从哪些平台存档。
场景:冲突解决
当两台设备针对同一基础版本最终确定游戏存档版本时,会发生冲突。例如,玩家可能同时在其主机和 PC 上离线游玩,两台设备在重新联网时都尝试同步。 您将看到:- 在冲突解决期间,客户端总是将其本地文件上传到新清单,并最终确定该清单。此过程会产生一个
gamesave_version_finalized事件,其中包含非 null 的Conflict对象。现有的云版本(已在先前事件中最终确定)不会产生新事件。 Conflict.IsWinner告诉您玩家的本地更改是否赢得了冲突:true——玩家选择了保留本地。新清单成为规范版本,先前的云版本被取代。false——玩家选择了保留远程。新清单被保留为回滚点(包含被拒绝的本地数据),而现有的云版本仍为规范版本。
Conflict.ConflictingVersion指向发生冲突的现有云版本。
- 冲突率——筛选
Conflict存在的gamesave_version_finalized事件。冲突率上升可能表明玩家在未同步的情况下频繁切换设备,或您的作品的存档节奏导致不必要的版本冲突。 - 本地与远程偏好——比较
IsWinner = true(保留本地)与IsWinner = false(保留远程)的比率,以了解玩家如何解决冲突。强烈偏向一侧可能表明冲突提示存在用户体验问题。 - 跨设备冲突模式——在冲突事件中使用
DeviceType和PlayerIdentityProvider,以了解哪些平台组合最容易发生冲突。
场景:已知良好和回滚
“已知良好”机制让您可以将特定版本标记为可信的恢复点。如果玩家的存档损坏或需要恢复,系统可以回滚到最近的已知良好版本,并基于该版本创建新版本。 您将看到:- 当您将某个版本指定为恢复点时,会有一个
gamesave_version_marked_known_good事件,其中包含Version号和MarkedAt时间戳。 - 如果发生回滚,系统会发出一个新的
gamesave_version_finalized事件,其中IsGeneratedByRollback = true。此新版本的内容基于已知良好版本,但会获得一个新的递增版本号。 - 如果回滚是作为冲突解决的一部分触发的,则回滚生成的版本也可能包含
Conflict数据。
- 回滚频率——跟踪
IsGeneratedByRollback = true的gamesave_version_finalized事件。某作品的频繁回滚可能表明存档损坏问题或作品的存档逻辑存在问题。 - 已知良好的新鲜度——比较
gamesave_version_marked_known_good中的Version与同一玩家最新最终确定的Version。差距较大意味着如果需要回滚,玩家将丢失大量进度。 - 回滚 + 冲突关联——如果回滚生成的版本经常与冲突数据一起出现,则该模式可能表明您的冲突解决策略作为副作用触发了回滚。
