惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
月光博客
月光博客
Jina AI
Jina AI
F
Fortinet All Blogs
博客园 - 聂微东
The Cloudflare Blog
美团技术团队
B
Blog RSS Feed
N
Netflix TechBlog - Medium
罗磊的独立博客
The GitHub Blog
The GitHub Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
V
V2EX

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
Gamekeeper----像Git一样管理游戏存档
Thinkuni · 2025-10-07 · via 机核

那些年我丢失的存档

还记得当年第一次玩到3A大作时,那时候我在网吧刚刚结束了一场激烈的枪战,趁着贤者时间逛到了单机游戏区,阴差阳错地打开了一个名为《使命召唤6 现代战争》的游戏,自此以后,CF就从小甜甜变成了牛夫人。如今十几年时间过去了,我依旧保持着对单机游戏的热爱,单论PC平台上玩过的作品应该也有上百个了,但是这么多年我每次玩游戏时,总有一朵乌云萦绕在心头,那就是丢档。

第一次丢档事故发生在《孤岛惊魂3》,那是我玩的第一款开放世界大作,直到现在为止我也不知道当初为什么会发生丢档,只知道一觉醒来毛都没了,那感觉真是从天堂到地狱,想死的心都有了,但是没办法,那时候还是个初出茅庐的小白,云存档什么的完全没听说过,无奈转投《孤岛惊魂4》了,直到现在《孤岛惊魂3》对我来说依旧是一段未尽的旅程。不过这还不是这严重的一次,最严重的一次是因为折腾双系统,直接把操作系统搞没了,等电脑从售后拿回来,C盘毫无意外地崭新如初,那次到底丢了多少个档都已经算不清了,但也就是那次丢档事故之后,我开始认真研究起了存档管理。

Git会是最终答案吗?

存档管理这需求说复杂也不复杂,它本质就是文件备份和多平台同步,所以早期我一直在尝试使用网盘搭配各种同步软件,比如Synching、Goodsync等,然后再自己写点脚本搞得更加自动化一点,也就差不多凑合用了。直到后来那个男人出现了,没错他就是宫崎英高,老贼的魂游把我虐的死去活来却又欲罢不能,但魂学家们都知道老贼的游戏出了名地喜欢弱引导和多结局,不看攻略的话一不小心哪个结局就没了,不多玩几个周目根本下不来,像我这种强迫症直接横死当场。这时候我才意识到,存档管理这需求说简单还真没那么简单,现在的3A大作不多搞几个结局都不好意思叫3A,外加存档机制被他们玩的飞起,连什么存档献祭玩法都来了,简单的线性存档管理显然已经不适用于当下的环境了。怎么办呢,我第一时间就想到了那个程序员们家喻户晓的版本管理神器——Git,Git天生就适合创建多分支,一个Git仓库几十上百个分支完全不在话下,再加上其分布式的仓库同步机制,多分支管理和多平台同步一起盘活了,那么Git会是最终答案吗?

接下来的岁月里,我一直用Git管理着我的游戏存档,也逐渐发现了Git的问题:

  • 首先,Git的使用太过复杂,想要在玩家圈子里普及开来几乎是不可能的

  • 其次,Git毕竟不是为存档管理而设计的,它不保存文件的创建时间、不保存空目录等特性在少数游戏上可能造成存档混乱

  • 最后,我最理想的存档管理工具不仅仅只是存档管理,还包括诸如存档路径识别、存档分享、Mod管理等等功能,这些东西都无法围绕Git进行构建

虽然Git不是最终的答案,但我认为站在Git的肩膀上是绝对没问题的,既然Git不能满足需求,那咱们就给它改造一下,创造一个专为玩家设计的Git,于是Gamekeeper这个独立开发项目就这么开始了。

Gamekeeper要如何做到

自动识别存档目录

虽然玩家群体基本上都是懂电脑的,但游戏厂商实在是太能藏了,找游戏存档的位置依旧是个比较麻烦的活,好在社区的力量是无穷大的, mtkennerly 大神开源项目 ludusavi 会定期从wiki网站上抓取数量庞大的游戏数据,有了这些数据做支撑,寻找存档位置便不再那么棘手。

Gamekeeper首次启动便会尝试下载 ludusavi 项目的全量数据文件manifest.yaml:

下载完成后,在新增游戏界面中,输入游戏的官方英文名称便可搜索到目标游戏,直接选中后,包括游戏的安装目录、启动文件、存档目录甚至游戏封面和图标都全部准备好了,紧接着点提交便添加完毕:

多存档空间设计

Gamekeeper将游戏存档划分在一个个相互独立的存档空间内,所谓存档空间就是游戏内常说的存档槽位,因为现在的很多游戏都抛弃了存档槽机制,搞得大家只能一个存档玩到底,Gamekeeper把这套机制重新加了回来,而且更上一层楼。Gamekeeper的存档空间没有数量上限,你像要多少个存档空间就创建多少存档空间,一个玩战士、一个玩法师,一个给自己玩、一个给女朋友玩:

多分支存档管理

多分支存档管理是Gamekeeper的开发重点。首先软件的所有存档空间都需要创建一个初始存档,初始存档是一个空存档,它代表的是游戏尚未开始前的存档数据,是后续所有分支的起点;同时,Gamekeeper参考Git设计了正在使用的存档的概念,它相当于Git中的HEAD指针,可以简单地理解为上一次保存的存档,在它的基础上提交新的存档和新的分支,就可以让存档空间内的分支图不断演进,最终形成一个由无数存档和分支组成的“分支树”:

整个分支树在软件界面中井然有序,哪个存档属于哪个分支、谁先保存谁后保存,一目了然,可选择任意存档进行回档,再也不怕错过任何一个游戏结局。

差异存储模型

现在的3A游戏容量是越来越膨胀,相应的存档容量也越来越膨胀,Gamekeeper口号是不放过游戏中的任何一个精彩瞬间,就以开放世界游戏举例,一个游戏玩完存档保存上千次都是常有的事,如果把这些存档全部保存下来,一个存档占用只有几MB的话,随着时间的推移也会达到以GB计算的程度。Gamekeeper参考Git和SVN的设计,采用差异存储模型保存存档,也就是每次只保存新旧存档之间产生变化的数据,而游戏每次覆写存档一般只改动少量数据,所以Gamekeeper所保存的存档数据,最终空间占用比较小,相应的软件所支持的存档数量便会直线上升。

后续开发计划

Gamekeeper目前还仅仅只是初版,围绕上面这些基础功能未来还计划开发新的玩法:

  1. 利用网络存储服务进行多平台同步,即云存档功能

  2. 存档分享,将自己的存档分享给他人或者获取他人分享的存档

  3. 跟踪游戏进程进行存档监控,实现实时保存存档、定时保存存档等

  4. 参考Git的Tag功能实现标签系统