如何在 Linux 和 Windows 之間共享 Steam 的遊戲文件
簡介:這篇詳細的指南將向你展示如何在 Linux 和 Windows 之間共享 Steam 的遊戲文件以節省下載的總用時和下載的數據量。我們將展示給你它是怎樣為我們節約了 83% 的數據下載量。
假如你決心成為一名 Linux 平台上的玩家,並且在 Steam 上擁有同時支持 Linux 和 Windows 平台的遊戲,或者基於同樣的原因,擁有雙重啟動的系統,則你可以考慮看看這篇文章。
我們中的許多玩家都擁有雙重啟動的 Linux 和 Windows。有些人只擁有 Linux 系統,但同時擁有當前還沒有被 Linux 平台上的 Steam 支持的遊戲。所以我們同時保留這兩個系統以便我們可以在忽略平台的前提下玩我們喜愛的遊戲。
幸運的是 Linux 遊戲社區應運而生,越來越多在 Windows 平台上受歡迎的 Steam 遊戲也發布在 Linux 平台上的 Steam 中。
我們中的許多人喜歡備份我們的 Steam 遊戲,使得我們不再苦苦等待遊戲下載完成。這些遊戲很大程度上是 Windows 平台下的 Steam 遊戲。
現在,很多遊戲也已經登陸了 Linux 平台上的 Steam,例如 奇異人生 、 古墓麗影 2013 、 中土世界:魔多陰影 、 幽浮:未知敵人 、幽浮 2、 與日賽跑 、 公路救贖 、 燥熱 等等,並且這份名單一直在增長。甚至還有 殺出重圍:人類分裂 和 瘋狂的麥克斯 !!!在一些遊戲的 Windows 版發布之後,現在我們不必再等候多年,而只需等待幾月左右,便可以聽到類似的消息了,這可是大新聞啊!
下面的實驗性方法將向你展示如何使用你現存的任何平台上遊戲文件來在 Steam 上恢復遊戲的大部分數據。對於某些遊戲,它們在兩個平台下有很多相似的文件,利用下面例子中的方法,將減少你在享受這些遊戲之前的漫長的等待時間。
在下面的方法中,我們將一步一步地嘗試利用 Steam 自身的備份與恢復功能或者以手工的方式來達到我們的目的。當涉及到這些方法的時候,我們也將向你展示這兩個平台上遊戲文件的相同和不同之處,以便你也可以探索並做出你自己的調整。
下面的方法中,我們將使用 Ubuntu 14.04 LTS 和 Windows 10 來執行備份與恢復 Steam 的測試。
1、Steam 自身的備份與恢復
當我們嘗試使用 Windows 平台上 Steam 中《 燥熱 》這個遊戲的備份(這些加密文件是 .csd 格式)時,Linux 平台上的 Steam 不能識別這些文件,並重新開始下載整個遊戲了!甚至在做了驗證性檢驗後,仍然有很大一部分文件不能被 Steam 識別出來。我們在 Windows 上也做了類似的操作,但結果是一樣的!
現在到了我們用某些手工的方法來共享 Windows 和 Linux 上的 Steam 遊戲的時刻了!
2、手工方法
首先,讓我們先看看 Linux 下這些遊戲文件所處的位置(用戶目錄在 /home 中):
這是 Linux 平台上 Steam 遊戲的默認安裝位置。 .local
和 .steam
目錄默認情況下是不可見的,你必須將它們顯現出來。我們將推薦使用一個自定義的 Steam 安裝位置以便更容易地處理這些文件。這裡 SUPERHOT.x86_64
是 Linux 下原生的可執行文件,與 Windows 中的 .exe
文件類似。
下圖展示的位置包含我們需要的大部分文件(在 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 大小的重量級遊戲。
我們還進行了其他幾種嘗試:
- 我們嘗試使用 Linux 下原有的清單文件(
.acf
)和來自 Windows 的手工備份文件,但結果是 Steam 重新開始下載遊戲。 - 我們看到當我們將
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 展現的信息進行比較並進行更多的調整。
假如你知道更多關於清單文件或者手工方式中另外可以改進的方法,請在評論中分享給大家。我們打算去發現更多的關於這些文件格式的信息,當前在官方的 Valve 開發者社區 或者 Steam 論壇 上我們還沒有發現完整的文檔。
至少現在為止,這些便是我們知道的在 Linux 和 Windows 之間分享 Steam 遊戲的最好方法了。
via: https://itsfoss.com/share-steam-files-linux-windows/
作者:Avimanyu Bandyopadhyay 譯者:FSSlc 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive