菜单

云存档系统

相关源文件

Hydra启动器中的云存档系统可在用户本地计算机和Hydra云服务之间提供游戏存档数据备份和同步功能。该系统与第三方游戏存档管理器Ludusavi集成,以定位、打包和恢复各种游戏的存档数据。

有关也与云同步的相关成就系统的信息,请参阅成就系统

系统架构

云存档系统由多个组件协同工作,提供无缝的存档数据备份和恢复功能。

来源:src/main/events/cloud-save/download-game-artifact.ts1-147 src/main/events/cloud-save/upload-save-game.ts1-27 src/main/constants.ts30

存档数据备份过程

当用户想要为其游戏存档创建云备份时,备份过程从UI启动。

来源:src/main/events/cloud-save/upload-save-game.ts7-26

当用户发起存档备份时

  1. 渲染进程通过IPC发送一个uploadSaveGame事件
  2. 事件处理程序使用CloudSync服务处理游戏信息
  3. CloudSync使用Ludusavi定位和打包存档文件
  4. 备份通过HydraApi上传到Hydra云存储
  5. 状态更新会发送回UI

备份名称使用时间戳和本地化格式自动生成

来源:src/main/events/cloud-save/upload-save-game.ts19-22

存档数据恢复过程

恢复过程更为复杂,因为它涉及下载打包好的备份并将其适应当前用户环境。

来源:src/main/events/cloud-save/download-game-artifact.ts74-147

下载过程包括几个关键步骤

  1. 从API请求下载URL
  2. 下载备份存档
  3. 将其解压到本地目录
  4. 调整文件路径以匹配当前用户的系统
  5. 使用Ludusavi将存档文件恢复到正确位置

路径标准化

恢复过程的关键部分是在不同用户环境之间标准化路径。系统会将原始用户的家庭目录路径替换为当前用户的路径。

这确保了存档文件能够恢复到正确的位置,而不管用户名如何不同。

来源:src/main/events/cloud-save/download-game-artifact.ts24-72 src/main/helpers/index.ts33-34

云同步和订阅功能

云存档同步与Hydra订阅系统绑定。非订阅用户可以看到云存档功能,但不能使用。

来源:src/renderer/src/pages/game-details/sidebar/sidebar.tsx157-164 src/main/services/hydra-api.ts325-327

UI指示云功能需要订阅

来源:src/renderer/src/pages/game-details/sidebar/sidebar.tsx157-164

API确保在服务器端强制执行订阅要求

来源:src/main/services/hydra-api.ts316-328

本地存储结构

云存档系统使用特定的路径来存储备份数据

路径目的
userData/Backups所有游戏备份的根目录
userData/Backups/{shop}-{objectId}特定游戏的备份目录

路径在应用程序常量中定义

来源:src/main/constants.ts30 src/main/events/cloud-save/download-game-artifact.ts88

与Ludusavi集成

Ludusavi是一个处理实际存档文件识别和管理的第三方工具。Hydra启动器通过一个包装服务与Ludusavi集成。

Ludusavi使用清单文件来识别各种游戏的存档位置。清单URL在常量中定义。

来源:src/main/constants.ts4 src/main/events/cloud-save/download-game-artifact.ts131-136

数据格式

游戏存档备份以tar归档格式存储。归档文件包含:

  1. 实际的存档文件
  2. 一个`mapping.yaml`文件,用于跟踪文件路径和哈希值
  3. 关于原始系统的元数据

当恢复备份时,系统会:

  1. 解压tar归档文件
  2. 修改`mapping.yaml`文件以更新当前系统的路径
  3. 使用Ludusavi将文件放置到正确的位置

来源:src/main/events/cloud-save/download-game-artifact.ts117-137

进度跟踪和用户反馈

在备份和恢复操作期间,云存档系统向用户界面提供进度更新。

完成后,它会发送通知事件。

来源:src/main/events/cloud-save/download-game-artifact.ts100-104 src/main/events/cloud-save/download-game-artifact.ts132-135

错误处理

该系统包含针对各种故障情况的错误处理

  1. API认证失败
  2. 订阅要求失败
  3. 下载失败
  4. 文件系统错误
  5. 恢复失败

发生错误时,会将适当的错误事件发送到UI

来源:src/main/events/cloud-save/download-game-artifact.ts140-143

总结

云存档系统提供了一个完整的解决方案,用于将游戏存档数据备份并恢复到云端。它利用Ludusavi进行存档文件管理,与Hydra API集成进行云存储,并通过UI提供用户反馈。该系统处理系统之间的路径差异,并需要有效的订阅才能获得完整功能。