在 Linux 和 Windows 之间玩转 Steam 游戏

假如你决心成为一名 Linux 平台上的玩家,而且在 Steam 上拥有同时支持 Linux 和 Windows 平台的游戏,或者基于一样的缘由,拥有双重启动的系统,则你能够考虑看看这篇文章。咱们中的许多玩家都拥有双重启动的 Linux 和 Windows。有些人只拥有 Linux 系统,但同时拥有当前尚未被 Linux 平台上的 Steam 支持的游戏。因此咱们同时保留这两个系统以便咱们能够在忽略平台的前提下玩咱们喜好的游戏;幸运的是 Linux 游戏社区应运而生,愈来愈多在 Windows 平台上受欢迎的 Steam 游戏也发布在 Linux 平台上的 Steam 中。咱们中的许多人喜欢备份咱们的 Steam 游戏,使得咱们再也不苦苦等待游戏下载完成。这些游戏很大程度上是 Windows 平台下的 Steam 游戏。python

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

如今,不少游戏也已经登录了 Linux 平台上的 Steam,例如奇异人生Life is Strange、古墓丽影 2013Tomb Raider 201三、中土世界:魔多阴影Shadow of Mordor、幽浮:未知敌人XCOM: Enemy Unknown、幽浮 二、与日赛跑Race The Sun、公路救赎Road Redemption、燥热SUPERHOT等等,而且这份名单一直在增加。甚至还有杀出重围:人类分裂Deus Ex: Mankind Divided和疯狂的麦克斯Mad Max!!!在一些游戏的 Windows 版发布以后,如今咱们没必要再等候多年,而只需等待几月左右,即可以听到相似的消息了,这但是大新闻啊!linux

下面的实验性方法将向你展现如何使用你现存的任何平台上游戏文件来在 Steam 上恢复游戏的大部分数据。对于某些游戏,它们在两个平台下有不少类似的文件,利用下面例子中的方法,将减小你在享受这些游戏以前的漫长的等待时间;咱们将一步一步地尝试利用 Steam 自身的备份与恢复功能或者以手工的方式来达到咱们的目的。当涉及到这些方法的时候,咱们也将向你展现这两个平台上游戏文件的相同和不一样之处,以便你也能够探索并作出你本身的调整。app

下面的方法中,咱们将使用 Ubuntu 14.04 LTS 和 Windows 10 来执行备份与恢复 Steam 的测试。编辑器

一、Steam 自身的备份与恢复ide

当咱们尝试使用 Windows 平台上 Steam 中《燥热SUPERHOT》这个游戏的备份(这些加密文件是 .csd 格式)时,Linux 平台上的 Steam 不能识别这些文件,并从新开始下载整个游戏了!甚至在作了验证性检验后,仍然有很大一部分文件不能被 Steam 识别出来。咱们在 Windows 上也作了相似的操做,但结果是同样的!测试

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

如今到了咱们用某些手工的方法来共享 Windows 和 Linux 上的 Steam 游戏的时刻了!ui

二、手工方法加密

首先,让咱们先看看 Linux 下这些游戏文件所处的位置(用户目录在 /home 中):教程

这是 Linux 平台上 Steam 游戏的默认安装位置。 .local 和 .steam 目录默认状况下是不可见的,你必须将它们显现出来。咱们将推荐使用一个自定义的 Steam 安装位置以便更容易地处理这些文件。这里 SUPERHOT.x86_64 是 Linux 下原生的可执行文件,与 Windows 中的 .exe 文件相似。游戏

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

下图展现的位置包含咱们须要的大部分文件(在 Windows 和 Linux 平台上相同):

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

下面咱们来看看这些 .acf 格式的文件: appmanifest_322500.acf 即是那个咱们须要的文件。编辑并调整这个文件有助于 Steam 识别在 common 这个目录下现存的非加密的原始文件备份:

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

为了确认这个文件是同样的,用编辑器打开这个文件并检查它。咱们越多地了解这个文件越好。这个连接是来自 Steam 论坛上的一个帖子,它展现了这个文件的主要意义。它相似于下面这样:

“AppState”
{
“appid”        “322500”
“Universe”        “1”
“name”        “SUPERHOT”
“StateFlags”        “4”
“installdir”        “SUPERHOT”
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”       “<SteamID>”
“BytesToDownload”        “909578688”
“BytesDownloaded”        “909578688”
“AutoUpdateBehavior”        “0”
“UserConfig”
{
“Language”        “english”
}
“MountedDepots”
{
“322503”        “1943012315434556837”
}
}

在 Linux 平台上卸载游戏后咱们再进行测试。如今让咱们看看在 Windows 10 上相同的游戏安装目录里包含哪些内容:

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

咱们复制了 SUPERHOT 目录和 .acf 格式的清单文件(这个文件在 Windows 的 Steam 上格式是同样的);在复制 .acf 文件和游戏目录到 Linux 中 Steam 它们对应的位置时,咱们须要确保 Steam 没有在后台运行。在转移完成以后,咱们运行 Steam 并看到了这个:

在 Linux 和 Windows 之间玩转 Steam 游戏在 Linux 和 Windows 之间玩转 Steam 游戏

因此下图显示只须要有 235.5 MB 的文件须要下载,而不是整个 867.4 MB,这意味着超过 70% 的文件已经被 Steam 识别了:) !相对来讲,节省了一笔大量的时间开销。固然不一样的游戏可能有所不一样,但对于那些网速居于平均水平或如下的玩家来讲,这种方法绝对值得一试,尤为是考虑到当前那些 40-50 GB 大小的重量级游戏。

咱们还进行了其余几种尝试:

  • (1)咱们尝试使用 Linux 下原有的清单文件(.acf)和来自 Windows 的手工备份文件,但结果是 Steam 从新开始下载游戏。/li>
  • (2)咱们看到当咱们将 SUPERHOT_Data 这个目录中的 SH_Data 更换为 Windows 中的对应目录时,同上面的同样,也从新开始下载整个游戏。

理解清单目录的一个尝试

清单目录绝对能够被进一步地被编辑和修改以此来改善上面的结果,使得 Steam 检测出尽量多的文件。在 Github 上有一个项目,包含一个能够生成这些清单文件的 python 脚本。任何 Steam 游戏的 AppID 能够从SteamDB 上获取到。知晓了游戏的 ID 号后,你即可以用你喜好的编辑器如下面的格式建立你本身的清单文件 appmanifest_<AppID>.acf。在上面手工方法中,咱们能够看到 SUPERHOT 这个游戏的 AppID 是 322500,因此对应的清单文件名应该是 appmanifest_322500.acf。

下面以咱们知晓的信息来尝试对该文件进行一些解释:

“AppState”                                 // 应用(游戏)的状态
“appid”        “322500”                    // 游戏的 AppID
“Universe”        “1”
“name”        “SUPERHOT”                   // 游戏的名称
“StateFlags”        “4”
“installdir”        “SUPERHOT”             // 安装目录的名称
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”        “<SteamID>”             // 惟一的账号拥有者的 <SteamID> 
“BytesToDownload”        “909578688”       // 将这个数字除以 1073741824(1024 x 1024 x 1024) 即可以计算出还须要下载的数据大小,以 GB 记。
“BytesDownloaded”        “909578688”       // 已下载数据的大小, 以 Bytes 记。
“AutoUpdateBehavior”        “0”            // 当这个设为 0 时,该游戏将自动升级。

“UserConfig”                               // 用户的配置信息
{
“Language”        “english”
}
“MountedDepots”                            //  这个部分大多与游戏的 DLC 相关。
{
“322503”        “1943012315434556837”
}
}

经过计算下载的数据的大小,你能够将它与 Steam 展示的信息进行比较并进行更多的调整。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力作得更多更好:http://www.linuxprobe.com/

相关文章
相关标签/搜索