回复
31
查看
1286
收藏
87

0

赠楼

0%

赠楼率

23

蒸汽

1

主题

7

帖子

91

积分
发表于 昨天 03:48 · 四川 | 显示全部楼层 |阅读模式
我最近写了一个 Steam 云存档管理工具,在这里分享介绍一下。

项目地址:https://github.com/Fldicoahkiin/SteamCloudFileManager
支持平台:Windows / macOS / Linux
技术栈:Rust + egui(GUI)+ steamworks-rs(Steam API)


【功能介绍】

- 查看云端文件列表:以树状结构显示所有云存档文件

- 文件操作:下载、上传、删除单个或多个文件

- 路径映射:显示每个云端文件对应的本地硬盘位置
- 冲突检测:计算文件哈希值,对比本地和云端版本
- 备份功能:操作前可以先备份当前状态


【Steam 云同步机制】

Steam Cloud 的工作流程:

1. 游戏把存档写到本地目录(不是直接写到云端)
2. Steam 客户端检测到文件变化后,在后台把文件上传到云端服务器
3. 在另一台电脑上,Steam 会在启动游戏前把云端文件下载到本地

本地缓存位置:Steam/userdata/<你的ID>/<游戏ID>/remote/

元数据文件:remotecache.vdf
这个文件记录了每个云端文件的状态,包括文件名、大小、修改时间、是否已同步等信息。
格式是 Valve 自定义的键值对格式(VDF),类似 JSON 但语法不同。


【关于存档位置】

不同游戏的存档可能在完全不同的位置:
- 有的在"我的文档"
- 有的在 AppData
- 有的在游戏安装目录
- 有的在 Steam 云目录

这是因为 Steam 有一套 Root 路径系统。游戏开发者在 Steamworks 后台配置存档路径时,使用的是路径宏(比如 WinMyDocuments、WinSavedGames 等)。

Steam 会把这些宏转换成数字 ID(0-12),记录在每个游戏的 remotecache.vdf 文件中。这个 Root ID 到实际路径的对应关系,官方文档没有完整公开,我在仓库里整理了一份映射表,但还不够完善,如果你发现有问题或者想补充,欢迎来 GitHub 提 Issue 或 PR。

常见的 Root ID:
- 0 = Steam 云目录 (userdata/.../remote/)
- 1 = 游戏安装目录
- 2 = 我的文档
- 4 = AppData/Local
- 9 = Saved Games 文件夹
- 12 = AppData/LocalLow
(共 13 种,完整映射表见 GitHub 仓库的 ROOT_PATH_MAPPING.md)

另外 appinfo.vdf 是个二进制文件(约 150MB),包含所有游戏的元数据,其中有每个游戏的云存储配置规则(ufs 节),但里面存的是路径宏名称,不是 Root ID 数字。

这个工具会解析 remotecache.vdf 获取 Root ID,然后根据内置的映射表转换成实际路径,所以你能看到每个文件真正存在哪里。


【关于调试模式】

工具需要从 Steam 获取文件下载链接。Steam 客户端内置了一个 Chromium 浏览器,开启调试模式后可以通过 CDP 协议(Chrome DevTools Protocol)连接这个浏览器,注入脚本获取下载链接。

开启方法:Steam 启动参数加上 -cef-enable-debugging
工具里有一键重启 Steam 的按钮,会自动加上这个参数。


【文件操作说明】

操作对应的 API:
- 上传:write_file → 把本地文件写入缓存
- 同步到云端:write_file + sync_cloud_files → 仅上传本地有但云端没有的文件
- 下载:CDP 获取下载链接 → HTTP 下载到本地磁盘
- 删除:delete_file → 同时删除本地缓存和云端
- 移出同步:forget_file → 从云端移除但保留本地文件
- 备份:read_file → 把云端文件读取到本地
- 刷新:VDF 解析器 + CDP 客户端 → 重新获取文件列表
- 文件对比:计算本地和云端文件的 Hash 值进行对比


【注意事项】

1. 删除操作不可撤销,建议先用备份功能
2. 同步是后台异步进行的,操作后等几秒再关闭 Steam
3. 这个工具只是帮你看和操作文件,不会修改 Steam 的同步逻辑


【安装方式】

GitHub Release 下载:https://github.com/Fldicoahkiin/SteamCloudFileManager/releases
macOS Homebrew:
  1. brew tap Fldicoahkiin/tap && brew install steam-cloud-file-manager
复制代码

Arch Linux AUR:
  1. yay -S steam-cloud-file-manager-bin
复制代码



【参考资料】

- Steam Cloud 开发者文档:https://partner.steamgames.com/doc/features/cloud
- ISteamRemoteStorage 接口:https://partner.steamgames.com/doc/api/ISteamRemoteStorage
- Valve VDF 格式说明:https://developer.valvesoftware.com/wiki/KeyValues
- steamfiles (Python VDF 解析):https://github.com/leo工具teamfiles
- steamworks-rs (Rust Steam API):https://github.com/Noxime/steamworks-rs


项目完全开源,代码在 GitHub 上。
有问题欢迎提 Issue,也欢迎 PR 贡献。
觉得有用的话给个 Star 支持一下。

以上内容如有错误或不准确的地方,欢迎指正。
我对 Steam 内部机制的理解也在不断学习中,欢迎交流讨论。

更详细的技术说明和使用文档请查看 GitHub 仓库的 README。

QQ 交流群:324504270

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

×

本帖被以下淘专辑推荐:

回复

使用道具 举报

浏览本版块需要:
1. 初阶会员或更高等级;
2. (点击此处)绑定Steam账号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

欢迎发帖参与讨论 o(*≧▽≦)ツ,请注意
1. 寻求帮助或答案的帖子请发到问题互助版块,悬赏有助于问题解决的速度。发错可能失去在该板块发布主题的权限(了解更多
2. 表达观点可以,也请务必注意语气和用词,以免影响他人浏览,特别是针对其他会员的内容。如觉得违规可使用举报功能 交由管理人员处理,请勿引用对方的内容。
3. 开箱晒物交易中心游戏互鉴福利放送版块请注意额外的置顶版规。
4. 除了提问帖和交易帖以外,不确认发在哪个版块的帖子可以先发在谈天说地

  作为民间站点,自 2004 年起为广大中文 Steam 用户提供技术支持与讨论空间。历经二十余载风雨,如今已发展为国内最大的正版玩家据点。

列表模式 · · 微博 · Bilibili频道 · Steam 群组 · 贴吧 · QQ群 
Keylol 其乐 ©2004-2026 Chinese Steam User Fan Site.
Designed by Lee in Balestier, Powered by Discuz!
推荐使用 ChromeMicrosoft Edge 来浏览本站
广告投放|手机版|广州数趣信息科技有限公司 版权所有|其乐 Keylol ( 粤ICP备17068105号 )
GMT+8, 2026-1-8 09:19
快速回复 返回顶部 返回列表