Как скачать моды из Мастерской Стим, не имея на аккаунте нужной игры? И Яндекс, и Гугл с радостью предложат вам десятки различных рецептов, кроме единственно правильного. На самом деле вам не нужно пользоваться услугами сторонних сайтов или устанавливать сомнительные браузерные расширения, ведь получить любой мод из Steam Workshop можно при помощи консольной утилиты SteamCMD от самих Valve. Этот способ не просто является самым надежным, но и позволяет автоматизировать загрузку с помощью скриптов. Если данная проблема актуальна и для вас (например, вы, как и автор этой статьи, предпочитаете покупать игры в GoG или увлекаетесь созданием собственных сборок модификаций), добро пожаловать под кат.
Необязательное (и довольно длинное) предисловие, которое можно пропустить
С RimWorld я познакомился спустя примерно год после релиза, и был совершенно очарован проектом. Еще больше, чем сама игра, меня поразила активность сложившегося вокруг нее комьюнити: энтузиасты генерировали какое-то невероятное количество контента, притом на удивление качественного. Помимо традиционных для любого проекта с поддержкой модификаций текстур-паков и разного рода фан-сервиса, для RimWorld стали появляться масштабные аддоны, добавляющие новые отрасли и биомы, полностью меняющие боевую систему, улучшающие местную медицину, систему болезней и травм, добавляющие новые сценарии и случайно генерируемые события, или вносящие существенные правки в игровой баланс. И это — не считая небольших, но крайне полезных дополнений, вроде возможности утешать колонистов, находящихся в состоянии нервного срыва или погреться у костра на открытом воздухе (да, звучит странно, но в оригинальной игре греться у огня можно лишь внутри помещений).
Впечатлившись таким многообразием, я захотел создать собственную сборку, превратив RimWorld в этакую «игру мечты», симулятор жизни на другой планете, вобравший в себя все лучшее, что породил коллективный разум сообщества. Для себя я обозначил лишь два основных критерия отбора модификаций:
1. Модификации должны улучшать, дополнять и расширять существующий игровой процесс, а также привносить новые геймплейные возможности
Это значит, что любые моды, призванные искусственно усложнить или, напротив, оказуалить игру, сразу отбрасываются, однако если изменения баланса обусловлены здравым смыслом, такой мод включается в сборку. Приведу пример.
Мод Invisible Conduit скрывает крупные силовые кабели и провода от подключаемого электрооборудования, что улучшает внешний вид помещений и окружения, положительно отражаясь на настроении колонистов.
Это — упрощение ради упрощения: после установки модификации вам больше не придется задумываться о том, чтобы прокладывать кабели под стенами, где они не видны, или продумывать расположение светильников и разнообразной аппаратуры, однако никаких новых геймплейных аспектов такая модификация не добавляет, поэтому и в мою сборку она не вошла.
В то же время в нее включен мод Subsurface Conduit, который позволяет прокладывать подземные кабели. Такие коммуникации также не видны и не портят обстановку, кроме того, они хорошо защищены от атак и их нельзя просто так разрушить. На лицо упрощение, однако на монтаж подземных кабелей колонисты тратят больше времени и больше ресурсов (эти параметры легко настроить), поэтому прокладывать их выгодно только между зданиями, иначе вы потеряете в темпе развития колонии, что окажется фатальным на высокой сложности игры.
То есть, мод сбалансирован (выгоды от него компенсируются затратами ресурсов и времени), добавляет новый геймплейный аспект (пусть совсем незначительный, но все же), к тому же, не противоречит логике мира, да и житейской логике в целом, ведь объективно, нельзя придумать ни одной причины, по которой бы колонисты, способные построить геотермальную турбину, не додумались бы укладывать критически важные силовые магистрали в траншеи и снабжать такие кабели дополнительной защитой. Именно поэтому данная модификация заняла достойное место в моей сборке.
2. Никаких кроссоверов
Кошкодевочки, азари, терминаторы, хаоситы — это существа из иных вселенных, и в RimWorld им определенно нечего делать: их появление на планете фронтира нельзя обосновать лором (разве что притянуть за уши гипотетического безумного ученого из утопического мира, который настолько фанател от реликтовой по меркам его планеты игрушки «Mass Effect», что вывел азари с помощью генной инженерии), поэтому и в сборку подобные модификации не попали.
Определившись с тем, какой результат желаю получить в конечном итоге, я приступил к работе. И здесь я столкнулся с одной фундаментальной проблемой. Точнее, проблем нарисовалась целая куча, но такие досадные «мелочи», как баги, несовместимость модификаций между собой, сломанный баланс и откровенно любительский перевод, авторы которого явно не удосужились вникнуть в контекст, были вполне ожидаемы. А вот тот факт, что множество годных модов доступно исключительно в Steam, меня неприятно удивил.
Как оказалось, сегодня авторы модификаций вообще не задумываются о том, чтобы выкладывать свои творения на GitHub или Nexus Mods, а многие их тех, кто все же этим занимается, крайне редко обновляют моды на сторонних ресурсах. В подавляющем большинстве случаев самую актуальную версию мода можно получить только в Steam Workshop, а зачастую Мастерская и вовсе является единственным местом, где модификация доступна.
Почему это оказалось проблемой? Во-первых, если игра есть в GoG, я покупаю ее именно там, так как мне куда приятнее скачать установщик без встроенной DRM и держать его копию на собственном винчестере в полной уверенности, что если завтра с сервисом что-то случится, то моя коллекция никуда не денется. Во-вторых, при создании сборки чрезвычайно удобно иметь под рукой несколько версий игры (например, одну стабильную, в которую можно спокойно играть, вторую — для отладки сборки, третью — для тестирования новых модификаций, четвертую — наиболее актуальную версию дистрибутива, вышедшую неделю назад, с которой большинство модов из готовой сборки работают криво, и т.д.). И удобство GoG-версии RimWorld как раз и заключается в том, что вы можете установить сколько угодно копий игры на один компьютер и вдоволь экспериментировать.
Разумеется, в такой ситуации можно было бы приобрести игру еще раз, уже в Steam, подписаться на нужные модификации, а затем раскидывать их копии между версиями сборок вручную или скриптом. Но зачем, если все необходимое можно забирать напрямую из Мастерской с помощью утилиты для командной строки от самих Valve? Разберемся, как это сделать.
Скачиваем любые моды из Steam Workshop с помощью официальной утилиты Valve
Консольная утилита SteamCMD изначально предназначалась для установки и обновления дистрибутивов выделенных серверов из командной строки, однако ее можно использовать, в том числе, для загрузки модификаций из Steam Workshop, причем для этого вам даже не понадобиться действующий аккаунт в Steam.
SteamCMD доступна для операционных систем Windows, macOS и Linux. Все версии утилиты используют идентичный синтаксис. Чтобы приступить к работе с версией программы для Windows, достаточно загрузить ее последнюю версию по ссылке и распаковать полученный архив в корень системного диска. О том, как установить SteamCMD на Linux и macOS, вы можете узнать в официальном руководстве от Valve.
Рассмотрим основные команды, поддерживаемые утилитой, которые необходимо знать для прямой загрузки модификаций из Steam Workshop.
Запуск SteamCMD
cd C:\SteamCMD
steamcmd
После запуска утилита автоматически проверит обновления и загрузит все необходимые для работы файлы. Чтобы каждый раз не переходить в каталог, steamcmd.exe можно добавить в переменную среды PATH.
Авторизация на сервере
login anonymous
В большинстве случаев для загрузки модификаций достаточно авторизоваться под гостевым (анонимным) аккаунтом, однако для работы с некоторыми продуктами, представленными в сервисе цифровой дистрибуции, может потребоваться войти в учетную запись Steam (так, например, вам не удастся загрузить под гостевым аккаунтом модификации для игр от самой Valve).
Чтобы войти под действующим аккаунтом Steam, необходимо указать свое имя пользователя, после чего утилита запросит пароль.
login <username>
Обратите внимание, что если вы уже авторизованы в десктопном клиенте Steam, вам необходимо предварительно выйти из своего аккаунта. В случае, если ваш профиль защищает Steam Guard, вам также придется ввести код подтверждения для авторизации, который придет на связанный e-mail.
Выбор директории
force_install_dir <directory name>
Данная команда позволяет принудительно указать каталог, в который будут загружены модификации. Эта информация не сохраняется, то есть, каждый раз после запуска SteamCMD вам придется заново выбирать нужную директорию.
Еще один важный нюанс: при загрузке модификаций SteamCMD сохраняет исходную структуру каталогов. То есть, если вы укажете, что моды необходимо загружать в папку <directory name>
, на самом деле они будут сохранены в каталог:
<directory name>\steamapps\workshop\content\<game id>
Загрузка модификаций из Steam Workshop
workshop_download_item <game id> <mod id> validate
Необходимые переменные получаем из ссылок на сайте Steam. Разберемся на примере RimWorld.
Официальная страница игры расположена по адресу:
https://store.steampowered.com/app/294100/RimWorld/
Здесь 294100
— это и есть нужный нам <game id>
.
А вот, как выглядит ссылка на небольшую модификацию «Proxy Hit»:
https://steamcommunity.com/sharedfiles/filedetails/?id=2365526329
Здесь <mod id>
является 2365526329
, на что красноречиво указывает имя передаваемого параметра.
Опция validate
отвечает за проверку целостности скачанных файлов. Кроме того, если ранее вы уже загружали мод, а к нему вышло обновление, при наличии опции validate
SteamCMD лишь сравнит файлы на ПК и на сервере, загрузив только те, которые подверглись изменениям.
Завершение работы
quit
Данная команда завершает сессию работы с сервером и останавливает процессы SteamCMD.
SteamCMD поддерживает два способа автоматизации.
1. Последовательный ввод команд с префиксом «+»
steamcmd +login anonymous +force_install_dir C:\Mods +workshop_download_item 294100 2009463077 validate +quit
Данный способ удобно использовать только для скачивания отдельных модификаций. Если вам надо загрузить несколько сотен модов, куда удобнее написать для SteamCMD сценарий.
2. Создание сценариев
Сценарий представляет собой простой текстовый файл, в котором последовательно перечислены все команды, которые должна выполнить SteamCMD. Ниже приведен пример сценария для загрузки базовых библиотек, необходимых для работы ряда модификаций Rimworld.
//
// Добавлять комментарии можно через двойной слэш
//
@ShutdownOnFailedCommand 0 // завершение работы при возникновении ошибок, при множественной загрузке рекомендуется отключить
@NoPromptForPassword 1 // отключение запроса пароля при загрузке файлов
login anonymous
force_install_dir C:\Mods
//
// Библиотеки
//
workshop_download_item 294100 2009463077 validate // Harmony
workshop_download_item 294100 818773962 validate // HugsLib
workshop_download_item 294100 839005762 validate // Humanoid Alien Races
//
quit
Для запуска сценариев предусмотрена команда runscript
:
steamcmd +runscript DownloadingMods.txt > Log.txt
Рекомендую перенаправлять результаты выполнения скрипта в лог. Дело в том, что при массовой загрузке модификаций иногда (довольно редко, но все же) могут возникать ошибки доступа к серверу. В этом случае соответствующий мод не будет загружен вообще, а SteamCMD сообщит о возникшей проблеме, однако продолжит свою работу и приступит к загрузке следующей по списку модификации. Вы же, просмотрев лог, сможете отдельно докачать недостающие моды.
Бонус: параметры запуска для установщиков GoG
Зная о том, как работает SteamCMD, вы сможете без труда написать скрипт для автоматизации загрузки модификаций к интересующей вас игре. Если при этом вы, как и я, предпочитаете покупать игры в GoG, то вам пригодятся знания дополнительных параметров установщиков.
Инсталляторы GoG создаются с использованием Inno Setup, однако поддерживают лишь ограниченное количество параметров: ряд опций не работает вовсе, а некоторые вызывают критические ошибки, делая установку игры невозможной. В своих скриптах я использую следующие параметры:
/silent
Позволяет пропустить окно с принятием лицензионного соглашения и выбором каталога, однако прогресс-бар установки все равно будет отображаться на экране. Хотя Inno Setup поддерживает параметр /verysilent
, который позволяет сделать установку полностью «бесшумной», с инсталляторами GoG он работает некорректно, вызывая ошибку и зависание установщика.
/nocancel
Блокирует кнопку «Cancel». Очень удобно, если вы устанавливаете несколько игр подряд, при этом продолжая работать на компьютере: так вы исключите вероятность случайного прерывания процедуры установки.
/norestart
Запрещает автоматическую перезагрузку компьютера после установки игры. Опять же, очень удобно, если вы устанавливаете сразу несколько игр, параллельно работая за компьютером.
/closeapplications
Инсталлятор будет автоматически закрывать программы, использующие файлы, которые должны быть обновлены во время установки. Данная опция помогает избежать ситуаций, когда установка игры останавливается из-за того, что у инсталлятора нет доступа к тому или иному файлу.
/dir="<directory name>"
Поскольку установка проходит в silent-режиме, выбрать директорию для файлов игры через мастер мы не сможем. Но это не является проблемой: нужный каталог можно заранее указать с помощью опции dir
.
/log="<log path\log.txt>"
Лог установки можно вывести в текстовый файл. Это очень удобно при работе с «проблемными» играми, а также может помочь при создании собственной сборки модов: проанализировав сохраненные данные, вы сможете узнать, например, где игра хранит файлы настроек или профили игроков.
Порядок параметров значения не имеет. В своих скриптах я использую следующую конструкцию:
rimworld.exe /silent /nocancel /norestart /closeapplications /dir="C:\RimWorld" /log="InstallationLog.txt"
Надеюсь, этот небольшой материал будет полезен всем, кто увлекается разработкой модификаций для игр или созданием собственных сборок.
P.S. Поскольку эта статья — мой дебют на портале, я хотел бы узнать, насколько завсегдатаям Хабра интересен RimWorld вообще и моддинг этой игры в частности. На данный момент у меня есть несколько идей для будущих публикаций:
«RimWorldоведение» — рассказываю о том, как устроена сама игра и модификации к ней. Какова структура модов, где и что искать, если вы хотите отбалансировать мод, добавить перевод или изменить существующий и т.д.
«Все равно его не брошу, потому что он хороший» — о кривых, дисбалансных, но очень оригинальных и остроумных модификациях, удалить которые не поднимается рука. Описание модификаций и их проблем с подробной инструкцией по исправлению багов и доведению до ума.
«Стройка века» — что-то вроде дневника, в котором я буду рассказывать о прогрессе сборки и модификациях, в нее вошедших. Каждый материал будет представлять собой нечто среднее между обзором на мод и гайдом по возможным проблемам и способам их устранения.
gudvinr
login anonymous
Не для всех игр разрешено загружать файлы из воркшопа без регистрации. Если не для всех, то для многих игр от Valve точно нельзя
Wrench_IT Автор
Сами игры таким способом загружать не пробовал, а в случае с модами еще ни разу не сталкивался с тем, чтобы сервер запрашивал регистрационные данные.
gudvinr
Попробуйте через steamcmd использовать
workshop_download_item
для Team Fortress 2 или Left 4 Dead 2, например, используяlogin anonymous
Wrench_IT Автор
Да, действительно, в случае с играми от Valve загрузка модов под гостевым аккаунтом не проходит. Видимо, такова политика компании в отношении собственных игр: поскольку они доступны только в Steam, сложно придумать ситуацию, в которой кому-то понадобится выгружать модификации таким образом, кроме как для создания «народных демо-версий». Добавлю этот нюанс в статью.