Как в Steam добавить игры с Linux на Windows и наоборот

Перенос игр в Steam между Linux и Windows

Кратко о главном: В сегодняшнем материале мы детально рассмотрим, как можно обмениваться играми между компьютерами на которых установлены операционные системы Linux и Windows. Зачем спросите вы? Это для того чтобы сэкономить время загрузки игр (гры). Я имею надежды, что этот материал многим поможет сэкономить ваше время на загрузку большого количества игр, сохранит ваш трафик и конечно же ваши нервы, мне данный метод помог сократить почти 83% трафика и время которое не было зря потрачено.

Если вы достаточно часто играете в игры как в Linux так и Windows, вы геймер который активно использует Steam и все его возможности, вы хотели бы добавить ваши игры которые у вас установлены в Windows на Linux, вы не хотите повторно загружать 10 и более гигабайт, некоторые игры весят по 20-50 и более, это огромное количество времени которое вам придется ждать, но этот процесс можно существенно сократить, ниже мы рассмотрим метод как подобное осуществить.

Переносим игры в Steam с Linux на Windows и наоборот

Многие из нас геймеры, которые активно используют двойную загрузку игр как в Linux так и Windows. Некоторые из нас пользовались бы только Linux если бы для него было бы то количество игр как для Windows, из-за этого большинство пользуется клиентом Steam который позволяет хоть как-то сократить ту пропасть которая образовалась между Linux и Windows и количеством игр которое доступно под эти ОС. Хотя и большое количество игр уже разработано / портировано для linux, но все же пропасть еще огромная, сегодняшний материал хоть немного, но все же поможет сократить ее.

Возможно кто-то из вас пользовался резервным копированием в клиенте Steam, и знает как восстановить свои игры на случай если вы переустанавливали систему или при любой другой непредвиденной ситуации, например для переноса своих игр на другой компьютер, что позволяет не ждать пока игры загрузятся заново и сокращает время загрузки.

На текущий момент вы можете установить с помощью Steam в Linux такие игры как Life is Strange, Tomb Raider 2013, Shadow of Mordor, XCOM: Enemy Unknown, XCOM 2, Race The Sun, Road Redemption, SUPERHOT, так же ожидаем новые игры Deus Ex: Mankind Divided and Mad Max. Вместо того, чтобы пользоваться этими играми сразу после релиза как это доступно для Windows, мы должны ждать годы не ясно сколько, пока кто-то из разработчиков решит и портирует ее для Linux, у всех игроманов это вызывает большое недовольство, а как иначе, другой реакции ожидать и не стоит так как разработчики первым делом пишут игры лишь для операционных систем которые более популярны и с которых они могут первым делом собрать прибыль, а Linux уже в последнюю очередь, к большому сожалению так и есть.

Экспериментальный метод который я опишу чуть ниже, показывает, как использовать существующие файлы игр на любой платформе, что позволяет восстановить абсолютно любую игру которая у вас установлена в Steam на Windows или в Linux. Это приводит к тому, что мы ждем гораздо меньшее времени которое было бы потрачена на повторную установку игры, мы хотим получить удовольствие от игры, а не сидеть в ожиданиях когда завершится повторная установка игры в другой OC, верно же.

В следующем методе, мы покажем вам шаг за шагом, как создать резервную копию в Steam, и как воспользоваться функцией восстановления как в автоматическом так и ручном вариантах. Кроме всего, мы также покажем вам сходства и различия в структуре файлов между двумя платформами, после чего вы тоже сможете все изучить и перенести необходимые вам игры с одной OC на другую.

1. Резервное копирование и восстановление в Steam

Когда я попытался использовать Steam для создания копии данных с Steam в Windows и с последующим переносом на Linux (файлы в формате .csd), Steam для Linux не признает эти файлы родными, он не понимает, что это и просто начинает загружать всю игру от 0 МБ! Даже делает проверку валидации, подавляющее большинство файлов не могут пройти идентификацию. Были также попытки сделать подобное испытание на Windows, но результат был тот же!

Используем резервное копирование в Steam
Валидация файлов в Steam

Как видите попытки с резервным копированием оказались безуспешными и ничего не получилось, пришло время к использованию метода в ручном режиме для некоторых ручных настроек чтобы в итоге произвести перенос Steam игр с Windows на Linux и наоборот!

2. Ручной метод переноса игр в Steam между Linux и Windows

Прежде всего был произведен визуальный осмотр каталогов в которых хранятся игры Steam в Linux. Переходим в Домашнюю директорию вашей Ubuntu выполняем комбинацию "CTRL+H", отобразятся скрытые директории, ищем .local и .steam. Перейдем по пути .loacal - share - Steam - steamapps - common - SUPERHOT(Your name Game), первое, что стоит отметь с первых отличий, так это то, что в Linux используется для запуска родной исполняемый файл "SUPERHOT.x86_64" в отличие от файла ".exe" в Windows:

Смотрим директорию SUPERHOT

далее мы перейдем в директорию .loacal - share - Steam - steamapps - common - SUPERHOT - SUPERHOT_Data(your name game for windows). Это директория, которая содержит большинство файлов, которые нам нужны (для обмена играми между Windows и Linux):

Смотрим директорию SUPERHOT_Data

Ниже мы видим .acf файлы. "Appmanifest_322500.acf" является одним из тех файлов который нам нужен. Редактирование и настройка этого файла поможет в многом для достижения нашей цели, чтобы в итоге заставить Steam признать существующие незашифрованные резервные копии файлов которые хранятся в директории .steam - steam - steamapps - common:

Открываем на редактирование файл манифеста

Для того, чтобы подтвердить перенос игры, просто откройте файл с помощью текстового редактора, того же gedit или geany и проверим содержимое. Чем больше вы будете понимать содержимое этих файлов, тем лучше. Вот пост на форумах 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:

Проверяем директорию Supershot в Windows 10
Смотрим директорию SH_Data в Windows 10

Мы скопировали папку "SUPERHOT", а также файл манифеста (.acf) (он создается в том же формате, в Steam, для Windows). При копировании файла .acf в каталог в соответствующие места в Steam для Linux, мы убедились, что Steam не работает в фоновом режиме.

После того, как копирование было завершено, мы увидели в Steam следующее:

Смотрим реакцию Steam после завершения копирования файлов

Таким образом, вместо загрузки целых 867,4 МБ, Steam идентифицировал большую часть файлов и предлагает нам скачать всего лишь 235,5 МБ. Так что это является наверное прорывом во времени, условно говоря. Хотя все это может отличаться для различных игр, конечно, безусловно, стоит попробовать для геймеров, которые имеют игры весом 40-50 Гб, в наше время это не редкость.

Что мы попробовали:

  • Как я уже выше писал, просто перенос резервной копии ничего не дает и Steam этого не определяет предлагая скачивание игры заново и в полном ее размере. 
  • Мы можем видеть, что файлы данных которые нам нужны в Windows находятся в директории "SH_Data", в отличии от Linux, где директория называется "SUPERHOT_Data". Переименование директории так же не дает никакого результата если попробовать просто перенести игры скопировав их.

Попытка изменить файл манифеста

Файл манифеста, безусловно, может быть отредактирован и отлажен для улучшения этих результатов, чтобы помочь Steam обнаружить столько файлов сколько вам нужно перенести игр.

В сети есть проект на Github, который использует Python скрипт для генерация именно этих файлов манифеста. AppID для любой Steam игры можно получить из SteamDB. Зная идентификатор приложения, вы можете создать свой собственный файл манифеста через ваш текстовый редактор, используя следующий формат: "appmanifest_ <AppID> .acf". В приведенном выше ручном методе, мы можем видеть, что AppID для SUPERHOT является 322500. Следовательно, имя файла будет appmanifest_322500.acf.

Давайте попробуем документировать его в файле в соответствии с нашими лучшими интерпретациями:

“AppState”                           // The State of the Application(Game)
{
“appid”        “322500”              // The Steam Application ID of the Game
“Universe”        “1”
“name”        “SUPERHOT”            // Game Name
“StateFlags”        “4”
“installdir”        “SUPERHOT”      // Installation Directory Name
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”        “<SteamID>”        // Unique <SteamID> for account owner in numerical format
“BytesToDownload”        “909578688”  // Divide this number by 1073741824(1024 x 1024 x 1024) to calculate data remaining to download in GB.
“BytesDownloaded”        “909578688”  // Bytes downloaded
“AutoUpdateBehavior”        “0”       // The game will update automatically when this is set to 0.
“UserConfig”                          // User Configuration
{
“Language”        “english”
}
“MountedDepots”                       //  This section is mostly related to Game DLCs
{
“322503”        “1943012315434556837”
}
}

Экономия загрузки данных свыше 83%

Подсчитав размер загрузки данных в ГБ / МБ, в итоге мы можете сделать вывод, что ручной метод описанный выше, помог нам сэкономить более 83% данных которые нам не нужно было заново загружать.

Загрузка остатка необходимых данных игры после завершения идентификации

Я использовал метод описанный выше, в итоге это сохранило мне немного и не мало 19,8 ГБ данных которые мне не пришлось загружать заново.

Как видно с скриншота выше, я опробовал описанный способ на игре XCOM 2, которая имеет размер 23,6 Гб, в результате Steam идентифицировал большинство файлов и мне пришлось загрузить всего лишь 3,8 ГБ.

Завершение идентификации

Это чуть более 83%. Удивительно, не так ли?

Видеоинструкция в дополнение

Если у вас возникли сложности, смотрим видео выше как это делают другие пользователи на Linux Mint.

Пожалуйста, поделитесь с нами в комментариях, если вы знаете о подобных методах или точнее сказать трюках / с редактированием файлов манифеста или других решений / способов которые позволяют с помощью ручных обходных путей совершить определенные манипуляции которые облегчают жизнь для всех игроманов Steam. В будущем нам еще предстоит создать полную документацию по файлам манифестов, поскольку она еще не доступна нигде официально в сообществе разработчиков Valve и на форумах ничего нет.

Но на данный момент, это лучший способ для переноса игр Steam между Linux и Windows.

Источник: itsfoss.com

Автор: Юрий Герук

Лицензия: CC BY-SA 4.0

Похожие материалы:
Помогла ли вам статья?
Да Нет
Статья оказалась полезной для 0 человек
avatar