Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
记得当年第一次玩到 3A 大作时,我在网吧刚刚结束了一场激烈的枪战,趁着「贤者时间」逛到了单机游戏区,阴差阳错地打开了一个名为《使命召唤 6:现代战争》的游戏。自此以后,CF 就从「小甜甜」变成了「牛夫人」。
如今十几年时间过去,我依旧保持着对单机游戏的热爱,单论 PC 平台上玩过的作品应该也有上百个了,但是这么多年以来,每次玩游戏时也总有一朵乌云萦绕在心头,那就是丢档。
第一次丢档事故发生在《孤岛惊魂 3》,那是我玩的第一款开放世界大作,直到现在我也不知道当初为什么会发生丢档,只知道一觉醒来什么都没了,那感觉真是从天堂到地狱,想死的心都有了。但没办法,那时候还是个初出茅庐的小白,云存档什么的完全没听说过,无奈转投《孤岛惊魂 4》——所以直到现在《孤岛惊魂 3》对我来说依旧是一段未尽的旅程,而这还不是这严重的一次。最严重的一次是因为折腾双系统,直接把操作系统搞没了,等电脑从售后拿回来,C 盘毫无意外地崭新如初。
那次到底丢了多少个档都已经算不清了,但也就是那次丢档事故之后,我开始认真研究起了存档管理。
存档管理这需求说复杂也不复杂,它本质就是文件备份和多平台同步。
所以早期我一直在尝试使用网盘搭配各种同步软件,比如 Synching、Goodsync 等,然后再自己写点脚本搞得更加自动化一点,也就差不多凑合用了。直到后来「那个男人」出现了——宫崎英高,老贼的魂游把我虐得死去活来却又欲罢不能,但魂学家们都知道老贼的游戏出了名地喜欢弱引导和多结局,不看攻略的话一不小心哪个结局就没了,不多玩几个周目根本下不来,像我这种强迫症直接横死当场。
这时我才意识到,存档管理这需求说简单还真没那么简单,现在的 3A 大作不多搞几个结局都不好意思叫 3A,外加存档机制被他们玩得飞起,连什么存档献祭玩法都来了,简单的线性存档管理显然已经不适用于当下的环境了。
怎么办呢?我第一时间就想到了那个程序员们家喻户晓的版本管理神器——Git,Git 天生就适合创建多分支,一个 Git 仓库几十上百个分支完全不在话下,再加上其分布式的仓库同步机制,多分支管理和多平台同步一起盘活了,那么 Git 会是最终答案吗?

接下来的日子里,我一直用 Git 管理着我的游戏存档,也逐渐发现了 Git 的问题:
首先,Git 的使用太过复杂,想要在玩家圈子里普及开来几乎是不可能的;其次,Git 毕竟不是为存档管理而设计的,它不保存文件的创建时间、不保存空目录等特性在少数游戏上可能造成存档混乱;最后,我最理想的存档管理工具不仅仅只是存档管理,还包括诸如存档路径识别、存档分享、Mod 管理等等功能,这些东西都无法围绕 Git 进行构建。
虽然 Git 不是最终的答案,但我认为站在 Git 的肩膀上是绝对没问题的,既然 Git 不能满足需求,那咱们就给它改造一下,创造一个专为玩家设计的 Git,于是 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 目前还仅仅只是初版,围绕上面这些基础功能未来还计划开发新的玩法:
对 Gamekeeper 感兴趣的用户可前往官网免费下载并使用,详细说明请参考官网中的使用文档。

> 关注 少数派小红书 ,感受精彩数字生活 🍃
> 实用、好用的 正版软件 ,少数派为你呈现 🚀