换了平台存档就没了?XGP存档提取工具5步把Xbox Game Pass存档搬到Steam
【免费下载链接】XGP-save-extractorPython script to extract savefiles out of Xbox Game Pass for PC games项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor
你在 Xbox Game Pass 里肝了几百小时的进度,可能正锁在一个连文件夹名都是乱码的深层目录里。XGP存档提取工具(XGP-save-extractor)能用一条命令,把 XGP 存档自动打包成 Steam、Epic 版本直接认得的 ZIP 文件——这篇文章就从原理讲到实操,带你 5 步完成存档备份与迁移。
一个扎心的反常识:你根本找不到自己的存档
先问一个奇怪的问题:你玩过的 Xbox Game Pass 游戏,存档到底在哪个文件夹?
大多数人会答"游戏目录里""我的文档里",全都不对。Windows 版 Xbox 游戏把存档统一放在%LOCALAPPDATA%\Packages目录下,每个游戏对应一个以"包名"命名的文件夹。再往下走,是SystemAppData\wgs——真正的存档就藏在这层目录深处。
我第一次摸进去时,看到的是这样的景象:两层文件夹全是随机 GUID,文件名是 UTF-16 编码的二进制,打开全是乱码。那一刻我的想法是:这玩意儿是给人类看的吗?
200 小时的《幻兽帕鲁》,差点就这么没了
朋友小林的故事。他在 Game Pass 里玩《幻兽帕鲁》,盖了基地、抓齐了稀有帕鲁,游戏时长 200 小时往上。后来 Steam 服的朋友都在喊他过去,他一查攻略,发现 XGP 的存档根本没法手动复制——不是找不到,就是找到了也分不清哪个文件对应哪个存档。
他对着满屏 GUID 盯了半小时,最终放弃:"算了,就当白玩了。"
这就是 XGP 存档最坑的地方:它有一套自己的"封装系统",箱子外面贴的全是天书标签。普通人想手动备份,约等于没有钥匙却想开保险柜。
工具亮相:XGP存档提取工具是什么?
好在社区里有位开发者把这件事做成了开源脚本——XGP存档提取工具(XGP-save-extractor)。
一句话电梯陈述:它是一个开源的 Python 脚本,自动扫描你电脑上已安装的 Xbox Game Pass 游戏,把藏在系统深处的存档翻译成标准文件名并打包成 ZIP,让你能直接搬到 Steam、Epic 版本继续玩。
它内置一份游戏清单(games.json),覆盖《幻兽帕鲁》《星空》《Forza Horizon 5》《P5R》《Hades》《Lies of P》《Control》《Hi-Fi RUSH》《Manor Lords》《最终幻想15》《如龙0》等 40 多款主流游戏。清单里甚至标了哪些已验证可用、哪些不兼容,绝不让你白忙一场。
传统方式 vs 工具:一张表看懂差距
| 对比项 | 手动翻目录 | 用 XGP存档提取工具 |
|---|---|---|
| 找到存档位置 | 靠缘分,路径极深 | 自动扫描已安装游戏 |
| 辨认文件归属 | 全是 GUID,无法辨认 | 自动还原成游戏内文件名 |
| 多账号区分 | 容易拿错别人的存档 | 自动识别 Xbox 玩家代号 |
| 输出结果 | 一堆无规则乱码文件 | 一个标准 ZIP 压缩包 |
| 操作门槛 | 需要专业知识 | 一条命令搞定 |
原理拆解:它怎么把"天书"翻译回人话?
打个比方:XGP 的存档像一套"上了锁的快递箱"。仓库在wgs目录,每个箱子是一个"容器"(container),箱内文件用 GUID 命名,标签是 UTF-16 编码。脚本做的事就三件:拆箱、对账、重贴标签。
它先读每个游戏包下的containers.index索引文件,搞清楚每个箱子叫什么、里面有几份文件、属于哪个账号;再按游戏各自的规则,把 GUID 文件还原成真名。以《幻兽帕鲁》为例,它的容器名里用短横线-表示目录层级,翻译规则就一行:
fname = container["name"] fname = fname.replace("-", "/") # 把短横线还原成目录分隔符 fname += ".sav"每种游戏一条规则,这就是"一游戏一方案"。像《星空》要把容器里拆成好几段的碎片文件重新拼回一个.sfs;《Lies of P》要剥掉文件名前端的数字编号。原理不神奇,但足够细心,才覆盖得了 40 多款游戏。
实操上手:3分钟完成XGP存档备份的5个步骤
第一步:准备 Python 环境。安装 Python 3.10 或更高版本,安装时记得勾选"Add Python to PATH"。
第二步:把工具克隆到本地。
git clone https://gitcode.com/gh_mirrors/xg/XGP-save-extractor第三步:在项目文件夹打开命令行,运行脚本。
python main.py第四步:盯一眼输出。脚本会列出检测到的游戏名称,然后逐个处理。看到每个账号对应的存档文件名单,就说明读对了。
第五步:拿走 ZIP。当前目录会出现形如palworld_玩家代号_时间戳.zip的文件。解压后把内容放进 Steam/Epic 版游戏的存档目录(具体位置去 PCGamingWiki 查),进度就能无缝接上。
⚠️避坑提示:Xbox 云存档同步需要时间。如果运行时提示"同步可能未完成",说明存档可能还没下载完整,先等几分钟再跑一次,避免拿到残缺文件。
进阶技巧:老玩家才懂的3个隐藏姿势
多账号自动分流。一台电脑多个 Xbox 账号玩同一款游戏?脚本会读取 Xbox 应用里的XboxLiveGamer.xml,用玩家代号给每个账号单独打包,文件名各带其主,绝不混淆。
不兼容名单先查再跑。打开 README 里列出的不兼容游戏清单(如《瘟疫传说:安魂曲》《ARK》《P3R》),它们的存档格式和 Steam 版差异太大,提前知道能省下你的时间。
杀软误报的解法。如果你用的是打包好的单文件版(PyInstaller 制作),个别杀毒软件可能误报。介意的话直接用 Python 跑main.py源码,效果完全一样。
答疑专区:关于XGP存档备份的高频问题
我的游戏在支持列表里吗?打开项目根目录的games.json翻一眼就清楚。主流大作基本都在,每个游戏的验证状态在 README 里有表格说明。
它会动我原来的存档吗?完全不会。脚本全程只做"读取 + 打包",只产生新的 ZIP,不修改、不删除任何原始数据。
提取后怎么判断成功?看 ZIP 里的文件名是否正常。如果还是 GUID 乱码,八成是云同步没完成,重跑一次即可。
运行报错"Failed to read game list"怎么办?多半是games.json没被正确读取,确认它和main.py在同一目录就行。
能支持更多游戏吗?可以。项目欢迎通过提交 issue 的方式申请新游戏,只要格式能转换,社区就会把它加进清单。
用户之声:两个真实玩家的存档故事
阿杰,重装系统前的"存档保险"。"我每周末跑一次提取器,把《星空》的存档打包扔进网盘。后来一次系统崩溃重装,靠备份找回了几十小时的飞船和殖民地。运行一次不到一分钟,等于给进度买了个保险。"(化名示例)
Momo酱,家庭共享一套进度。"家里两台电脑共用一个 Xbox 账号玩《幻兽帕鲁》,提取器自动按账号区分存档,两台机器轮流玩同一个基地,进度从来没乱过。"(化名示例)
写在最后:把"存档备份"变成肌肉记忆
XGP存档提取工具最打动我的,不是技术有多难,而是它把一件"听起来很专业"的事,简化成了"运行一条命令"。你不需要懂 wgs 容器、UTF-16 编码或 GUID 是什么,只要知道:点一下,进度就安全了。
换平台、重装系统、电脑出意外——这些事谁也说不好什么时候来。花 3 分钟把存档备份变成习惯,才能让每一次打开游戏,都只剩纯粹的快乐。现在就运行一次,看看你的存档有没有好好待在家里。
【免费下载链接】XGP-save-extractorPython script to extract savefiles out of Xbox Game Pass for PC games项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考