【小技巧】Steam导入任意游戏并实现云存档(以魔女的夜宴为例) 您所在的位置:网站首页 steam游戏云端梦境 【小技巧】Steam导入任意游戏并实现云存档(以魔女的夜宴为例)

【小技巧】Steam导入任意游戏并实现云存档(以魔女的夜宴为例)

2023-12-03 04:38| 来源: 网络整理| 查看: 265

本期配套视频教程:https://www.bilibili.com/video/BV1tK411D7zA/

在最开始简单概括一下实现的功能和所做的事情

特性:

通过Steam作为启动器打开和管理本地游戏(包括在Steam库中但是使用本地文件替换游玩,也就是正版受害者的游戏,以及不在库中的纯本地游戏)

使不支持Steam云存档的游戏(如上述手动添加的游戏)拥有和Steam云存档相同的体验

实现:

替换Steam库中游戏的本地文件内容,自定义启动选项(以《魔女的夜宴》为例)

通过Steam添加本地游戏,并自定义头图和封面

通过同步盘和软链接将游戏的存档目录进行自动同步

如果看到这里你已经完全Get到我们要做的事情,那么恭喜你就可以不用看了,核心就是软链接配合同步盘。如果你还有不明白的地方,那么下面有详细的操作步骤和我个人的一些理解,比较详细。因为我喜欢将事情讲透,至少是我知道的部分,所以有点啰嗦,也是传统了,自己看着跳过吧。

1/ 优缺点说在前

优点:

当你有多台电脑时,可以实现多地存档共通,打开能继续玩

本身只有本地功能的游戏实现存档备份(适用于Galgame、DLSiteGame、PSP、PS3、Switch模拟器等等)

不仅仅适用于游戏,还适用于软件配置项,比如IDE的配置、文本编辑器的偏好等(不过对于密钥对等文件谨慎处理)

缺点:

全部存档同步,不能只限定于某款游戏(除非你的同步盘支持设置,不过文件没有变化也不会同步)

文件发生变化后就会触发同步,而不是游戏结束后一次同步,会有资源浪费——解决办法,可以定期开启同步

2/ 背景

为什么要做这个事情,简单讲一下我的出发点。首先就是我希望游戏启动能够有一个统一的入口,而不是需要我一个个目录去点,或者创建很多快捷方式。并且Steam更新后,库中可以自定义封面,对于很多小游戏来说很不错,看着好看(比如某网站买的那些像素游戏)。

还有就是小时候玩过的一些GalGame,现在补票了想重温,但是正版不一定有官方中文,所以自己还要打补丁,也就是正版游戏的受害者(老滚5退出群聊)。

好在Steam提供的自定义启动参数和添加本地游戏功能可以帮助我们解决问题。然后再使用同步盘和软链接,就能够实现Steam打开可以看到我所有想玩的游戏,而且即使我往返于出租屋和家,使用多台电脑,都可以继续之前的进度。

3/ Steam库中游戏打补丁

我们玩的游戏经常需要打汉化补丁、MOD、不可明说补丁等等。这里分两种情况:

第一种,类似Mod,大家直接将文件放入游戏文件夹,不影响Steam游戏的正常启动、成就获得、Steam云存档等。

举个栗子,公主殿下冷饭年度皇家版ProPlus,一些游戏的汉化补丁也类似:

第一种就不说了,没什么需要注意的。第二种,就是打了补丁以后,可执行文件变了,游戏无法从Steam库中直接启动,手动启动后也无法获取Steam成就,也无法通过Steam云进行存档。

这里的三个问题,我们可以解决1和3,第二点就比较困难了。因为成就的获得必定耦合在程序的各个流程中,无法简单修改。以《魔女的夜宴》为例说明下如何解决剩下两个问题,这样至少还有游戏时间等一些统计信息。

(话外音:本来以为《魔女的夜宴》上了Steam马上就会有官中,结果这么久了都没有,作为正版受害者只能自己搞了。)

首先将可以启动的本地游戏内容全部拷贝到Steam版本的安装目录中,进行覆盖。我这里习惯使用差异比较工具,大家ctrl+c和ctrl+v是一样的效果,这样就是替换游戏资源内容,但是保留了Steam的接口文件(其实这个例子中留不留已经无所谓了,其他情况大家酌情)。

覆盖完成后,Steam点击"开始游戏"是无法启动的,因为正常汉化版是通过"魔女的夜宴.exe"这个程序启动的。这里我们将她改个英文名,比如"Launcher.exe"(虽然这里用中文名也可以,但很多时候,别用中文路径可以解决许多奇怪问题)。

接下来,找到Steam中对应游戏,右键->属性,在启动选项中,输入我们上一步Launcher.exe的绝对路径加上" %command%"

如:"H:\SteamLibrary\steamapps\common\Sabbat of the Witch\Launcher.exe" %command%

%command%参数的作用,简单讲就是让我们的可执行文件在前面先执行,否则就会作为参数拼接在后面。有兴趣扩展可以看wiki:

https://wiki.archlinux.org/title/Steam

设置完成后点击"开始游戏"就可以正常运行了,问题1解决。Steam云存档我们放到后面一起说,接下来是添加本地游戏内容。

4/ 添加本地非Steam游戏到库中

Steam本身就支持此功能,只要在最下方 添加游戏->添加非Steam游戏 浏览找到exe可执行程序即可。

硬盘版没有写到注册表,可以从浏览里面定位。

比如我这里以CLANNAD为例(十多年了,再感动一遍)

添加完之后就可以运行了。

但此时啥都没有,比较丑,我们可以进行自定义。

最终效果还是挺不错的。

顺便说一下,自定义图片的位置就在Steam用户文件夹下:...\Steam\userdata\\config\grid

不满意可以自己修改,命名规则就是

.png

p.png

_logo.png

_hero.png

5/ 通过同步盘和软链接将游戏的存档目录进行自动同步

同步盘现在也比较多了,我在上大学的时候还做过一期使用坚果云和OneNote实现云同步笔记的视频:https://www.bilibili.com/video/BV14x411W7f4

(跑个题,现在也没再使用这个方法了,主要是因为工作以后跨平台需求比较高,所以现在改用Notion了)

我用过的同步盘只有坚果云和百度云,现在百度云也支持了,考虑到用户量,这次就以百度云作为栗子。

这里不比较不同同步盘的价格差异,但是从我目前看,如果你只是为了同步游戏存档,那么大多数的免费个人套餐都足够使用了。

开通同步盘,设置好同步文件夹后,就算同步盘的设置完成了。

之后我们来到设置的同步文件夹,新建一个我们想要用来存储存档的目录,我这里使用SaveDataTest来模拟新建的情况,然后我在里面创建了Sabbat of the Witch目录用于存放魔女的夜宴存档,其他游戏再新建目录。

然后我们来到游戏的存档目录,以魔女的夜宴为例,也就是游戏安装根目录中的savedata文件夹。这里我将它删除,如果其中已经有存档,那么可以自己先备份。

之后我们使用管理员的命令提示符。

找到cmd,右键以管理员运行,或快捷键win+x+a(高版本windows默认是powershell,一样)

我们使用如下命令创建软链接:

mklink /d

如:

mklink /d "H:\SteamLibrary\steamapps\common\Sabbat of the Witch\savedata" "G:\BaiduSyncdisk\SaveDataTest\Sabbat of the Witch"

如果你想同步的存档文件只是一个单一文件而不是文件夹,那么只要去掉/d参数即可,同时在同步盘中放一个相同的文件。

如:

mklink "H:\SteamLibrary\steamapps\common\Sabbat of the Witch\savedata.txt" "G:\BaiduSyncdisk\SaveDataTest\Sabbat of the Witch\savedata.txt"

命令成功后,我们就能够看到游戏目录内多了一个快捷方式似的图标。不过这个并不是快捷方式,快捷方式是.lnk文件,而这个是软链接。

如果双击这个文件夹,其实就访问的是同步文件夹,我们可以在这里新建一个txt文件测试。

文件是同时出现的,因为访问的本质上是一个东西。

到这里其实就完工了,只要正常进行游戏,然后保存,就能够发现存档文件被同步盘自动上传了。

然后我们再模拟下其他端设备使用这个云存档的情况,其实是一样的

我们现在对端设备上登录好同步盘,设定好同步文件夹,之后存档就应该被下载到对应的同步文件夹中了,比如这里举例的SaveDataTest

为了模拟,我先将游戏目录的savedata删除,这是不会影响到同步文件夹中的文件的,你可以认为它就是一个"快捷方式"

然后我们再使用命令,创建软链接

mklink /d "H:\SteamLibrary\steamapps\common\Sabbat of the Witch\savedata" "G:\BaiduSyncdisk\SaveDataTest\Sabbat of the Witch"

完成后我们双击进入,就能看到存档文件了

也就是每台设备,这样设置一次同步盘和软链接,就可以实现多端同步了。

然后我们详细讲一下软链接和硬链接的区别,以及我为什么推荐软链接。不想看的可以跳过。

深入到文件系统的部分我也讲不透,所以我建议大家用这两张图去了解。

由于Linux中符号链接就是软链接,Windows上貌似还有细分,Windows中的符号链接就类似Linux中的软链接,所以我在上文中都使用了"软链接"这个词。可以说,最大的区别就是软链接就像一个门牌号(快捷方式),指向的是真实文件的路径,而硬链接就像一个屋子有两扇门,和原本的文件是相同的,指向的就是文件本身。如果将软硬链接比作指针/地址,那么硬链接和源文件都指向同一块存储数据的区域。而软链接指向的事源文件的地址,而源文件指向真正的存储区域。

还是用栗子来辅助理解:

软链接:如果软链接被删除了,那么源文件没有任何影响。如果源文件被删除了,软链接还在,但是会失效,如下图:

但是如果又将源文件恢复,那么软链接又可以照常使用。

硬链接:如果硬链接被删除了,源文件没有任何影响。如果源文件被删除了,硬链接也不会受任何影响。因为他们是"一个屋子的两扇门",当删除一个,文件内部的计数器会-1,只有当计数器归0时,文件才会真正删除。同时由于实现机制,硬链接必须与源文件位于同一volume,简单说就是不能跨盘符。

基于这些理由,我才推荐使用软链接的方案。上面都不理解也没关系,你只要认为,所有的存档文件都是在同步目录中的才是真正的文件,游戏目录下的只是个"快捷方式"就行了。但是这种快捷方式可以让游戏正常访问,就像访问真正的文件一样。只要不删除同步目录中的文件,那么存档就不会被删除。

好了,分享就到这里了,希望能有帮助,大家有什么问题欢迎在评论区留言,也欢迎补充和指正。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有