1. 程式人生 > >在 Linux 和 Windows 之間玩轉 Steam 遊戲

在 Linux 和 Windows 之間玩轉 Steam 遊戲

導讀 這篇詳細的指南將向你展示如何在 Linux 和 Windows 之間共享 Steam 的遊戲檔案以節省下載的總用時和下載的資料量。我們將展示給你它是怎樣為我們節約了 83% 的資料下載量。

假如你決心成為一名 Linux 平臺上的玩家,並且在 Steam 上擁有同時支援 Linux 和 Windows 平臺的遊戲,或者基於同樣的原因,擁有雙重啟動的系統,則你可以考慮看看這篇文章。我們中的許多玩家都擁有雙重啟動的 Linux 和 Windows。有些人只擁有 Linux 系統,但同時擁有當前還沒有被 Linux 平臺上的 Steam 支援的遊戲。所以我們同時保留這兩個系統以便我們可以在忽略平臺的前提下玩我們喜愛的遊戲;幸運的是 Linux 遊戲社群應運而生,越來越多在 Windows 平臺上受歡迎的 Steam 遊戲也釋出在 Linux 平臺上的 Steam 中。我們中的許多人喜歡備份我們的 Steam 遊戲,使得我們不再苦苦等待遊戲下載完成。這些遊戲很大程度上是 Windows 平臺下的 Steam 遊戲。

steam4

現在,很多遊戲也已經登陸了 Linux 平臺上的 Steam,例如奇異人生Life is Strange古墓麗影 2013Tomb Raider 2013中土世界:魔多陰影Shadow of Mordor幽浮:未知敵人XCOM: Enemy Unknown、幽浮 2、與日賽跑Race The Sun公路救贖Road Redemption燥熱SUPERHOT等等,並且這份名單一直在增長。甚至還有 殺出重圍:人類分裂Deus Ex: Mankind Divided 瘋狂的麥克斯Mad Max!!!在一些遊戲的 Windows 版釋出之後,現在我們不必再等候多年,而只需等待幾月左右,便可以聽到類似的訊息了,這可是大新聞啊!

下面的實驗性方法將向你展示如何使用你現存的任何平臺上游戲檔案來在 Steam 上恢復遊戲的大部分資料。對於某些遊戲,它們在兩個平臺下有很多相似的檔案,利用下面例子中的方法,將減少你在享受這些遊戲之前的漫長的等待時間;我們將一步一步地嘗試利用 Steam 自身的備份與恢復功能或者以手工的方式來達到我們的目的。當涉及到這些方法的時候,我們也將向你展示這兩個平臺上游戲檔案的相同和不同之處,以便你也可以探索並做出你自己的調整。

下面的方法中,我們將使用 Ubuntu 14.04 LTS 和 Windows 10 來執行備份與恢復 Steam 的測試。

1、Steam 自身的備份與恢復

當我們嘗試使用 Windows 平臺上 Steam 中《燥熱

SUPERHOT》這個遊戲的備份(這些加密檔案是 .csd 格式)時,Linux 平臺上的 Steam 不能識別這些檔案,並重新開始下載整個遊戲了!甚至在做了驗證性檢驗後,仍然有很大一部分檔案不能被 Steam 識別出來。我們在 Windows 上也做了類似的操作,但結果是一樣的!

如何在 Linux 和 Windows 之間共享 Steam 的遊戲檔案

如何在 Linux 和 Windows 之間共享 Steam 的遊戲檔案

現在到了我們用某些手工的方法來共享 Windows 和 Linux 上的 Steam 遊戲的時刻了!

2、手工方法

首先,讓我們先看看 Linux 下這些遊戲檔案所處的位置(使用者目錄在 /home 中):

這是 Linux 平臺上 Steam 遊戲的預設安裝位置。 .local 和 .steam 目錄預設情況下是不可見的,你必須將它們顯現出來。我們將推薦使用一個自定義的 Steam 安裝位置以便更容易地處理這些檔案。這裡 SUPERHOT.x86_64 是 Linux 下原生的可執行檔案,與 Windows 中的 .exe 檔案類似。

如何在 Linux 和 Windows 之間共享 Steam 的遊戲檔案

下圖展示的位置包含我們需要的大部分檔案(在 Windows 和 Linux 平臺上相同):

如何在 Linux 和 Windows 之間共享 Steam 的遊戲檔案

下面我們來看看這些 .acf 格式的檔案: appmanifest_322500.acf 便是那個我們需要的檔案。編輯並調整這個檔案有助於 Steam 識別在 common 這個目錄下現存的非加密的原始檔案備份:

如何在 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 的遊戲檔案

我們複製了 SUPERHOT 目錄和 .acf 格式的清單檔案(這個檔案在 Windows 的 Steam 上格式是一樣的);在複製 .acf 檔案和遊戲目錄到 Linux 中 Steam 它們對應的位置時,我們需要確保 Steam 沒有在後臺執行。在轉移完成之後,我們執行 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 展現的資訊進行比較並進行更多的調整。

相關推薦

no