还记得当年第一次玩到3A大作时,那时候我在网吧刚刚结束了一场激烈的枪战,趁着贤者时间逛到了单机游戏区,阴差阳错地打开了一个名为《使命召唤6 现代战争》的游戏,自此以后,CF就从小甜甜变成了牛夫人。如今十几年时间过去了,我依旧保持着对单机游戏的热爱,单论PC平台上玩过的作品应该也有上百个了,但是这么多年我每次玩游戏时,总有一朵乌云萦绕在心头,那就是丢档。
第一次丢档事故发生在《孤岛惊魂3》,那是我玩的第一款开放世界大作,直到现在为止我也不知道当初为什么会发生丢档,只知道一觉醒来毛都没了,那感觉真是从天堂到地狱,想死的心都有了,但是没办法,那时候还是个初出茅庐的小白,云存档什么的完全没听说过,无奈转投《孤岛惊魂4》了,直到现在《孤岛惊魂3》对我来说依旧是一段未尽的旅程。不过这还不是这严重的一次,最严重的一次是因为折腾双系统,直接把操作系统搞没了,等电脑从售后拿回来,C盘毫无意外地崭新如初,那次到底丢了多少个档都已经算不清了,但也就是那次丢档事故之后,我开始认真研究起了存档管理。
存档管理这需求说复杂也不复杂,它本质就是文件备份和多平台同步,所以早期我一直在尝试使用网盘搭配各种同步软件,比如Synching、Goodsync等,然后再自己写点脚本搞得更加自动化一点,也就差不多凑合用了。直到后来那个男人出现了,没错他就是宫崎英高,老贼的魂游把我虐的死去活来却又欲罢不能,但魂学家们都知道老贼的游戏出了名地喜欢弱引导和多结局,不看攻略的话一不小心哪个结局就没了,不多玩几个周目根本下不来,像我这种强迫症直接横死当场。这时候我才意识到,存档管理这需求说简单还真没那么简单,现在的3A大作不多搞几个结局都不好意思叫3A,外加存档机制被他们玩的飞起,连什么存档献祭玩法都来了,简单的线性存档管理显然已经不适用于当下的环境了。怎么办呢,我第一时间就想到了那个程序员们家喻户晓的版本管理神器——Git,Git天生就适合创建多分支,一个Git仓库几十上百个分支完全不在话下,再加上其分布式的仓库同步机制,多分支管理和多平台同步一起盘活了,那么Git会是最终答案吗?
接下来的岁月里,我一直用Git管理着我的游戏存档,也逐渐发现了Git的问题:
虽然Git不是最终的答案,但我认为站在Git的肩膀上是绝对没问题的,既然Git不能满足需求,那咱们就给它改造一下,创造一个专为玩家设计的Git,于是Gamekeeper这个独立开发项目就这么开始了。
Gamekeeper首次启动便会尝试下载 ludusavi 项目的全量数据文件manifest.yaml:
下载完成后,在新增游戏界面中,输入游戏的官方英文名称便可搜索到目标游戏,直接选中后,包括游戏的安装目录、启动文件、存档目录甚至游戏封面和图标都全部准备好了,紧接着点提交便添加完毕:
Gamekeeper将游戏存档划分在一个个相互独立的存档空间内,所谓存档空间就是游戏内常说的存档槽位,因为现在的很多游戏都抛弃了存档槽机制,搞得大家只能一个存档玩到底,Gamekeeper把这套机制重新加了回来,而且更上一层楼。Gamekeeper的存档空间没有数量上限,你像要多少个存档空间就创建多少存档空间,一个玩战士、一个玩法师,一个给自己玩、一个给女朋友玩:
多分支存档管理是Gamekeeper的开发重点。首先软件的所有存档空间都需要创建一个初始存档,初始存档是一个空存档,它代表的是游戏尚未开始前的存档数据,是后续所有分支的起点;同时,Gamekeeper参考Git设计了正在使用的存档的概念,它相当于Git中的HEAD指针,可以简单地理解为上一次保存的存档,在它的基础上提交新的存档和新的分支,就可以让存档空间内的分支图不断演进,最终形成一个由无数存档和分支组成的“分支树”:
整个分支树在软件界面中井然有序,哪个存档属于哪个分支、谁先保存谁后保存,一目了然,可选择任意存档进行回档,再也不怕错过任何一个游戏结局。
现在的3A游戏容量是越来越膨胀,相应的存档容量也越来越膨胀,Gamekeeper口号是不放过游戏中的任何一个精彩瞬间,就以开放世界游戏举例,一个游戏玩完存档保存上千次都是常有的事,如果把这些存档全部保存下来,一个存档占用只有几MB的话,随着时间的推移也会达到以GB计算的程度。Gamekeeper参考Git和SVN的设计,采用差异存储模型保存存档,也就是每次只保存新旧存档之间产生变化的数据,而游戏每次覆写存档一般只改动少量数据,所以Gamekeeper所保存的存档数据,最终空间占用比较小,相应的软件所支持的存档数量便会直线上升。
Gamekeeper目前还仅仅只是初版,围绕上面这些基础功能未来还计划开发新的玩法:
评论区
共 7 条评论热门最新