導讀 | 這篇詳細的指南將向你展現如何在 Linux 和 Windows 之間共享 Steam 的遊戲文件以節省下載的總用時和下載的數據量。咱們將展現給你它是怎樣爲咱們節約了 83% 的數據下載量。 |
假如你決心成爲一名 Linux 平臺上的玩家,而且在 Steam 上擁有同時支持 Linux 和 Windows 平臺的遊戲,或者基於一樣的緣由,擁有雙重啓動的系統,則你能夠考慮看看這篇文章。咱們中的許多玩家都擁有雙重啓動的 Linux 和 Windows。有些人只擁有 Linux 系統,但同時擁有當前尚未被 Linux 平臺上的 Steam 支持的遊戲。因此咱們同時保留這兩個系統以便咱們能夠在忽略平臺的前提下玩咱們喜好的遊戲;幸運的是 Linux 遊戲社區應運而生,愈來愈多在 Windows 平臺上受歡迎的 Steam 遊戲也發佈在 Linux 平臺上的 Steam 中。咱們中的許多人喜歡備份咱們的 Steam 遊戲,使得咱們再也不苦苦等待遊戲下載完成。這些遊戲很大程度上是 Windows 平臺下的 Steam 遊戲。html
如今,不少遊戲也已經登錄了 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 版發佈以後,如今咱們沒必要再等候多年,而只需等待幾月左右,即可以聽到相似的消息了,這但是大新聞啊!python
下面的實驗性方法將向你展現如何使用你現存的任何平臺上游戲文件來在 Steam 上恢復遊戲的大部分數據。對於某些遊戲,它們在兩個平臺下有不少類似的文件,利用下面例子中的方法,將減小你在享受這些遊戲以前的漫長的等待時間;咱們將一步一步地嘗試利用 Steam 自身的備份與恢復功能或者以手工的方式來達到咱們的目的。當涉及到這些方法的時候,咱們也將向你展現這兩個平臺上游戲文件的相同和不一樣之處,以便你也能夠探索並作出你本身的調整。linux
下面的方法中,咱們將使用 Ubuntu 14.04 LTS 和 Windows 10 來執行備份與恢復 Steam 的測試。app
一、Steam 自身的備份與恢復編輯器
當咱們嘗試使用 Windows 平臺上 Steam 中《燥熱SUPERHOT》這個遊戲的備份(這些加密文件是 .csd 格式)時,Linux 平臺上的 Steam 不能識別這些文件,並從新開始下載整個遊戲了!甚至在作了驗證性檢驗後,仍然有很大一部分文件不能被 Steam 識別出來。咱們在 Windows 上也作了相似的操做,但結果是同樣的!ide
如今到了咱們用某些手工的方法來共享 Windows 和 Linux 上的 Steam 遊戲的時刻了!測試
二、手工方法ui
首先,讓咱們先看看 Linux 下這些遊戲文件所處的位置(用戶目錄在 /home 中):加密
這是 Linux 平臺上 Steam 遊戲的默認安裝位置。 .local 和 .steam 目錄默認狀況下是不可見的,你必須將它們顯現出來。咱們將推薦使用一個自定義的 Steam 安裝位置以便更容易地處理這些文件。這裏 SUPERHOT.x86_64 是 Linux 下原生的可執行文件,與 Windows 中的 .exe 文件相似。htm
下圖展現的位置包含咱們須要的大部分文件(在 Windows 和 Linux 平臺上相同):
下面咱們來看看這些 .acf 格式的文件: appmanifest_322500.acf 即是那個咱們須要的文件。編輯並調整這個文件有助於 Steam 識別在 common 這個目錄下現存的非加密的原始文件備份:
爲了確認這個文件是同樣的,用編輯器打開這個文件並檢查它。咱們越多地瞭解這個文件越好。這個連接是來自 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 上相同的遊戲安裝目錄裏包含哪些內容:
咱們複製了 SUPERHOT 目錄和 .acf 格式的清單文件(這個文件在 Windows 的 Steam 上格式是同樣的);在複製 .acf 文件和遊戲目錄到 Linux 中 Steam 它們對應的位置時,咱們須要確保 Steam 沒有在後臺運行。在轉移完成以後,咱們運行 Steam 並看到了這個:
因此下圖顯示只須要有 235.5 MB 的文件須要下載,而不是整個 867.4 MB,這意味着超過 70% 的文件已經被 Steam 識別了:) !相對來講,節省了一筆大量的時間開銷。固然不一樣的遊戲可能有所不一樣,但對於那些網速居於平均水平或如下的玩家來講,這種方法絕對值得一試,尤爲是考慮到當前那些 40-50 GB 大小的重量級遊戲。
咱們還進行了其餘幾種嘗試:
理解清單目錄的一個嘗試
清單目錄絕對能夠被進一步地被編輯和修改以此來改善上面的結果,使得 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 展示的信息進行比較並進行更多的調整。