如何在 Linux 和 Windows 之间共享 Steam 游戏文件
简介:这份详细指南向您展示如何在 Linux 和 Windows 之间共享 Steam 游戏文件以节省下载时间和流量。我们还将向您展示它如何为我们节省了超过 83% 的下载数据。
如果您是或想成为一名忠实的 Linux 游戏玩家,并且 Steam 上的游戏在 Linux 和 Windows 上均受支持,或者出于同样的原因拥有双启动操作系统,您可能需要考虑阅读本文。
我们中有许多游戏玩家同时启动 Linux 和 Windows。如果不是那些尚未登陆 Linux 版 Steam 的游戏,我们中的一些人可能只会拥有 Linux。因此,我们保留了这两个操作系统,以便我们可以玩所有我们最喜欢的游戏,无论它们到达哪个平台。
值得庆幸的是,Linux 游戏社区正在优雅地崛起,我们有越来越多流行的 Windows 版 Steam 游戏在 Linux 版 Steam 上发布。
我们中的许多人喜欢备份 Steam 游戏,这样我们就不必等待下载完成。这些集合是 Steam for Windows 游戏的大部分。
现在,许多此类游戏也登陆了 Linux 版 Steam,例如《奇异人生》、《古墓丽影 2013》、《暗影魔多》、《XCOM:未知敌人》、《XCOM 2》、《Race The Sun》、《Road Redemption》、《SUPERHOT》……而且这个名单还在不断增加!我们还有即将推出的《杀出重围:人类分裂》和《疯狂的麦克斯》!!!如今,在 Windows 发布后,我们只需等待数月即可获得此类游戏,而不是数年,这是一个大新闻!
此实验方法向您展示如何使用任一平台上的现有游戏文件来恢复 Steam 上的大部分游戏数据文件。这会大大减少您享受游戏的等待时间,因为文件在两个操作系统之间非常常见,正如我们将在下面的示例中看到的那样。
在下面的方法中,我们将向您展示尝试 Steam 自己的备份和恢复功能以及手动方式的分步过程。与此同时,我们还将向您展示两个平台之间游戏文件结构的相似点和差异,以便您也可以探索并提出自己的调整。
在此方法中,我们使用 Ubuntu 14.04 LTS 和 Windows 10 来执行备份和恢复 Steam 测试。
#1:Steam自己的备份和恢复
当我们尝试在 Linux 上使用 SUPERHOT 的 Windows Steam 备份(.csd 格式的加密文件)时,Steam for Linux 无法识别任何文件并开始从 0 MB 下载整个游戏!即使进行了验证检查,绝大多数文件也无法被 Steam 识别。我们也在 Windows 上做了类似的测试,但结果是一样的!
是时候进行一些手动调整以在 Windows 和 Linux 之间共享 Steam 游戏了!
#2:手动方法
首先,我们查看了游戏文件在 Linux 上的位置(主目录中的用户目录):
这是 Linux 版 Steam 的默认安装位置。 “.local”和“.steam”目录默认是隐藏的,您必须取消隐藏它们。我们建议使用自定义 Steam 安装位置,以便更轻松地处理文件。这里的“SUPERHOT.x86_64”是本机Linux“可执行文件”,与Windows中的“.exe”文件不同:
这是包含我们需要的大部分文件的位置(Windows 和 Linux 之间常见):
下面我们看到 .acf 文件。 “appmanifest_322500.acf”是我们需要的。编辑和调整此文件有助于 Steam 识别“common”目录中现有的未加密原始文件备份:
要确认这一点,只需使用编辑器打开文件并检查即可。我们对这个文件了解得越多越好。这是 Steam 论坛上的一篇帖子,显示了其重要意义。它看起来像这样:
它看起来像这样:
“应用程序状态”
{
“appid” “322500”
“宇宙” “1”
“名字” “超级热”
“状态标志” “4”
“安装目录” “超级热”
“上次更新” “1474466631”
“更新结果” “0”
“磁盘大小” “4156100762”
“buildid” “1234395”
“最后的所有者” “”
“下载字节” “909578688”
“已下载字节数” “909578688”
“自动更新行为” “0”
“用户配置”
{
“语言” “英语”
}
“安装仓库”
{
“322503” “1943012315434556837”
}
}
在Linux上卸载游戏进行测试后,我们现在看看Windows 10上同一游戏的内容:
我们复制了“SUPERHOT”文件夹以及清单(.acf)文件(它在 Windows 版 Steam 中以相同的格式创建)。将 .acf 文件和目录复制到 Linux 版 Steam 上各自的位置时,我们确保 Steam 没有在后台运行。
传输完成后,我们运行Steam并看到以下内容:
因此,它现在显示 235.5 MB 的文件可供下载,而不是整个 867.4 MB,这意味着超过 70% 的文件已被 Steam 识别:)!所以相对而言,这是一个巨大的时间增益。当然,虽然这可能因不同的游戏而异,但对于互联网连接低于平均水平的游戏玩家来说,这绝对值得一试,尤其是考虑到如今“重型”游戏的大小大多在 40-50 GB 左右。
我们尝试过的其他调整:
我们尝试使用 Linux 原始清单文件的备份版本以及 Windows 手动备份。但这导致 Steam 一开始就下载了游戏。
我们可以看到数据文件位于 Windows 上名为“SH_Data”的文件夹中,而不是 Linux 上的“SUPERHOT_Data”目录中。更改它对上述结果没有任何影响。
尝试理解清单文件
当然可以编辑和调整清单文件以改进这些结果,以使 Steam 检测到尽可能多的文件。
Github 上有一个项目,它是一个用于生成这些清单文件的 python 脚本。任何 Steam 游戏的 AppID 都可以从 SteamDB 获取。通过了解应用程序 ID,您可以使用您喜欢的编辑器使用以下格式创建自己的清单文件:“appmanifest_
让我们尝试根据我们的最佳解释将其记录在文件中:
“AppState” /应用程序的状态(游戏)
{
“appid” “322500” /游戏的Steam应用程序ID
“宇宙” “1”
“name” “SUPERHOT” /游戏名称
“状态标志” “4”
“installdir” “SUPERHOT” /安装目录名称
“上次更新” “1474466631”
“更新结果” “0”
“磁盘大小” “4156100762”
“buildid” “1234395”
“LastOwner” “” /数字格式的帐户所有者的唯一
“BytesToDownload” “909578688” /将此数字除以 1073741824(1024 x 1024 x 1024) 以计算剩余下载数据 (GB)。
“BytesDownloaded” “909578688” /下载的字节数
“AutoUpdateBehavior” “0” /当设置为 0 时,游戏将自动更新。“UserConfig” /用户配置
{
“语言” “英语”
}
“MountedDepots” // 此部分主要与游戏 DLC 相关
{
“322503” “1943012315434556837”
}
}
通过计算数据下载大小(以 GB/MB 为单位),您可以将其与 Steam 显示的内容进行比较,并尝试更多调整。
节省了超过 83% 的下载数据
所以,我使用了我在这里提到的方法,你猜怎么着,它节省了我 19.8 GB 的数据。
我在 XCOM 2 游戏上尝试过,大小为 23.6 GB,但使用此方法,我只需要下载 3.8 GB。
这个比例略高于 83%。是不是很神奇?
如果您了解更多有关清单文件的提示和技巧/建议或手动解决方法的其他改进/方法,请在评论中与我们分享。我们尚未发现这些文件格式的完整文档,因为 Valve 开发者社区或论坛尚未正式提供该文档。
但就目前而言,这些是在 Linux 和 Windows 之间共享 Steam 游戏的最佳方式。