🔥《Monster Train》存档救援指南:XGP-save-extractor新功能全解析
你是否曾因Xbox Game Pass(XGP)云存档同步延迟丢失《Monster Train》的精心构筑?是否在重装系统前苦于找不到存档导出方法?XGP-save-extractor项目最新更新已正式支持这款广受好评的卡牌构筑游戏,本文将带你深入了解实现原理、操作流程及底层技术细节,让存档管理从此高枕无忧。
📋 读完本文你将掌握
- 3步快速导出《Monster Train》存档的实操指南
- XGP存档容器格式与"1cnf-folder"处理机制的技术解析
- 自定义游戏支持的开发指南(含JSON配置与代码示例)
- 存档提取常见问题排查方案(附同步状态检测技巧)
🚀 功能背景与技术突破
存档提取痛点分析
XGP游戏存档采用加密容器格式存储于%LOCALAPPDATA%\Packages目录,每个游戏使用独立的包名(Package Name)和处理逻辑。《Monster Train》作为一款依赖复杂存档结构的策略游戏,其存档包含多张卡牌组合、升级路线和进度数据,传统文件复制方式无法直接获取有效存档。
核心技术创新
本次更新为《Monster Train》实现了"1cnf-folder"处理模式,该模式的核心优势在于:
- 文件夹级容器映射:将每个XGP存档容器直接映射为独立文件夹
- 多文件结构保留:完整保留游戏存档的目录层级关系
- 零数据转换损耗:采用二进制原样复制确保存档完整性
🛠️ 实操指南:3步完成存档提取
环境准备与依赖检查
确保系统满足以下条件:
- Python 3.8+环境(推荐3.10版本)
- 已安装XGP版《Monster Train》并至少运行一次
- 管理员权限(用于访问受保护的AppData目录)
执行提取流程
-
获取项目代码
git clone https://gitcode.com/gh_mirrors/xg/XGP-save-extractor cd XGP-save-extractor -
运行提取脚本
python main.py程序将自动检测已安装的支持游戏,《Monster Train》会显示为:
Installed supported games: - Monster Train Save files for user GamerTag123: - SaveSlots/Slot_0 - SaveSlots/Slot_1 - Settings.json Save files written to "monster_train_gamertag123_2025-09-11_15_30_45.zip" -
验证存档完整性 提取的ZIP文件包含以下结构(与游戏原始存档保持一致):
monster_train_gamertag123_2025-09-11_15_30_45.zip/ ├── SaveSlots/ │ ├── Slot_0 │ └── Slot_1 └── Settings.json
🔍 技术原理深度解析
存档容器解析流程
XGP存档系统采用多层加密结构,提取过程包含以下关键步骤:
-
包名定位 《Monster Train》的唯一标识为
69C22BB6.MonsterTrain_8ekbzbj4dakee,在games.json中定义:{ "name": "Monster Train", "package": "69C22BB6.MonsterTrain_8ekbzbj4dakee", "handler": "1cnf-folder" } -
容器索引解析
containers.index文件包含存档元数据,通过解析可获取:- 容器创建时间(FILETIME格式,需转换为UTC时间)
- 容器GUID与文件GUID映射关系
- 存档修改时间戳(用于检测同步状态)
-
"1cnf-folder"处理逻辑 在
main.py的get_save_paths函数中,针对该处理类型的核心代码为:elif handler_name == "1cnf-folder": # 每个容器映射为独立文件夹 for container in containers: folder_name: str = container["name"] for file in container["files"]: fname = file["name"] zip_fname = f"{folder_name}/{fname}" fpath = file["path"] save_meta.append((zip_fname, fpath))
存档同步状态检测
系统通过两种机制确保提取的存档完整性:
- 容器时间戳校验:对比本地与云同步时间戳
- 文件GUID一致性检查:验证容器内文件GUID配对状态
当检测到潜在同步问题时,会触发警告提示:
def print_sync_warning(title: str):
print(f" !! {title} !!")
print(" Xbox cloud save syncing might not be complete, try again later.")
print(" Extracted saves for this game might be corrupted!")
🛠️ 开发指南:添加自定义游戏支持
JSON配置规范
要为新游戏添加支持,需在games.json中添加包含以下字段的配置:
name:游戏显示名称package:XGP包名(可通过Get-AppxPackage命令获取)handler:处理类型(支持1c1f/1cnf/1cnf-folder等)handler_args:可选参数(如后缀名、文件格式等)
示例配置:
{
"name": "示例游戏",
"package": "Publisher.GameName_abc123xyz",
"handler": "1c1f",
"handler_args": {
"suffix": ".sav"
}
}
处理函数开发步骤
- 在
get_save_paths函数中添加新handler分支 - 实现容器解析逻辑(参考现有handler代码)
- 添加单元测试(验证文件路径映射与ZIP打包)
- 更新README与games.json文档
❗ 常见问题与解决方案
提取失败排查流程
同步警告处理
当出现"Xbox cloud save syncing might not be complete"警告时:
- 关闭游戏并等待5分钟让云同步完成
- 重启Xbox应用强制同步
- 检查网络连接状态(建议使用有线网络)
存档导入方法
提取的ZIP存档需放置到对应位置:
- Steam版:
%USERPROFILE%\Documents\Monster Train\Saves - Epic版:
%LOCALAPPDATA%\MonsterTrain\Saved\SaveGames
📊 支持游戏矩阵与处理类型
| 游戏名称 | 处理类型 | 包名 | 存档特点 |
|---|---|---|---|
| Monster Train | 1cnf-folder | 69C22BB6.MonsterTrain_8ekbzbj4dakee | 多文件夹层级结构 |
| Hades | 1cnf | SupergiantGamesLLC.Hades_q53c1yqmx7pha | 单容器多文件 |
| Celeste | 1c1f | MattMakesGamesInc.Celeste_79daxvg0dq3v6 | 单容器单文件 |
| Control | control | 505GAMESS.P.A.ControlPCGP_tefn33qh9azfc | 特殊chunk格式 |
📝 项目贡献与未来规划
贡献指南
- Fork本项目并创建特性分支
- 实现新功能或修复bug
- 添加测试用例
- 提交PR并描述变更内容
路线图
- 0.8版本:添加存档导入功能
- 0.9版本:GUI界面支持
- 1.0版本:添加多语言支持与存档加密功能
🔖 总结与资源
XGP-save-extractor为《Monster Train》玩家提供了可靠的存档管理解决方案,其灵活的handler架构支持快速扩展新游戏。项目采用MIT许可证开源,欢迎开发者参与贡献。
项目资源
- 源代码仓库:[已按要求移除外部链接]
- 问题反馈:提交issue至项目仓库
- 开发文档:项目根目录下的DEVELOPMENT.md
提示:定期执行存档提取可有效防止数据丢失,建议重要进度节点后立即备份。提取的ZIP文件请存储在多个位置以确保安全。
希望本文能帮助你彻底掌控《Monster Train》的存档管理,从此告别云同步焦虑。如有技术问题或功能建议,欢迎通过项目issue系统交流反馈。祝游戏愉快,构筑出属于你的最强列车!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



