Steam Proton: различия между версиями
IgorN (обсуждение | вклад) (Добавлен раздел по структуре каталогов и правки опечаток по тексту.) |
IgorN (обсуждение | вклад) (Добавлена категория Игры.) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 5: | Строка 5: | ||
* Является ответвлением [[WINE|Wine]], развиваемым компанией Valve. Основные отличия от Wine: | * Является ответвлением [[WINE|Wine]], развиваемым компанией Valve. Основные отличия от Wine: | ||
** В качестве транслятора вызовов Direct3D (DirectX) в Vulkan задействует [https://github.com/doitsujin/dxvk DXVK] и [https://github.com/HansKristian-Work/vkd3d-proton vkd3d-proton]. | ** В качестве транслятора вызовов Direct3D (DirectX) в Vulkan задействует [https://github.com/doitsujin/dxvk DXVK] и [https://github.com/HansKristian-Work/vkd3d-proton vkd3d-proton]. | ||
** Реализована | *** На момент 2024 года требуется видеокарта с аппаратной поддержкой Vulkan 1.3 и актуальные драйвера, поддерживающие новейшие Vulkan-расширения и версии протокола Wayland. На старом оборудовании (видеокарты десятилетней давности и старее) и устаревшей пакетной базе (платформа 9 и старее) работоспособность затруднена или отсутствует. | ||
** Реализована Python-обёртка и набор библиотек для интеграции в клиент Steam. | |||
** Используются дополнительные патчи, включая расширенную поддержку анти-читов, для достижения работоспособности отдельных игр и игровых устройств. | ** Используются дополнительные патчи, включая расширенную поддержку анти-читов, для достижения работоспособности отдельных игр и игровых устройств. | ||
* Первый выпуск состоялся в 2018 году. Историческая справка: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561 | * Первый выпуск состоялся в 2018 году. Историческая справка: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561 | ||
Строка 42: | Строка 43: | ||
Кроме официальных сборок, существуют варианты от сообщества. Среди них можно выделить следующие: | Кроме официальных сборок, существуют варианты от сообщества. Среди них можно выделить следующие: | ||
** [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom] — можно использовать из клиента Steam так же, как обычный Proton. | ** [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom] — [[#Использование сборок Proton от сообщества через Steam|после небольшой подготовки]] можно использовать из клиента Steam так же, как обычный Proton. Сборка формируется на основе Proton Experimental с добавлением различных патчей от сообщества и поддерживает дополнительные возможности. | ||
** [[PortProton]] — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций. | ** [[PortProton]] — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций. | ||
Строка 52: | Строка 53: | ||
{{Note|Пути указаны относительно каталога steamapps, расположенного по умолчанию.}} | {{Note|Пути указаны относительно каталога steamapps, расположенного по умолчанию.}} | ||
* Версии Proton загружаются в {{path|/home/$USER/.local/share/Steam/steamapps/common/}}. | |||
* Каталог игры со всем содержимым отделён от префикса и располагается в {{path|/home/$USER/.local/share/Steam/steamapps/common/}}. | * Каталог игры со всем содержимым отделён от префикса и располагается в {{path|/home/$USER/.local/share/Steam/steamapps/common/}}. | ||
* Каталог префикса располагается в {{path|/home/$USER/.local/share/Steam/steamapps/compatdata/}}. | * Каталог префикса располагается в {{path|/home/$USER/.local/share/Steam/steamapps/compatdata/}}. | ||
Строка 137: | Строка 139: | ||
[[Файл:Altlinux steam proton konung 2 меню.png|700px|центр]] | [[Файл:Altlinux steam proton konung 2 меню.png|700px|центр]] | ||
== Использование сборок Proton от сообщества через Steam == | |||
=== Пример использования сборки от [https://github.com/GloriousEggroll/proton-ge-custom%20proton-ge-custom GloriousEggroll] === | |||
{{note|Сборка требует свежайших драйверов! Видеокарты на финальном отрезке поддержки, использующие драйвера, получающие только исправления, с большой вероятностью, не смогут работать с этой сборкой.}} | |||
<br> | |||
Из официального репозитория загрузить крайнюю выпущенную версию: https://github.com/GloriousEggroll/proton-ge-custom/releases Сборка поставляется в обычном tar-архиве. | |||
<br> | |||
<br> | |||
В данном примере был загружен архив '''GE-Proton8-25.tar.gz''': | |||
[[Файл:Altlinux steam proton tar архив сборки GE.png|600px|центр]] | |||
Чтобы клиент Steam мог взаимодействовать со сборкой, её необходимо распаковать и поместить каталог ''GE-Proton<номер версии>'' со всем содержимым в {{path|/home/$USER/.local/share/Steam/compatibilitytools.d/}}. Если каталог ''compatibilitytools.d'' отсутствует, его следует создать. | |||
<br> | |||
<br> | |||
После перезапуска клиента Steam сборка станет доступной для выбора: | |||
[[Файл:Altlinux steam proton выбор GE в меню.png|600px|центр]] | |||
[[Category:WINE]] | |||
[[Category:Игры]] |
Текущая версия от 21:04, 21 января 2024
Описание
Proton (SteamPlay) — слой совместимости для запуска Windows-программ, ориентированный на запуск компьютерных игр. Предлагается в качестве опции-инструмента в клиенте Steam для бесшовного запуска игр из библиотеки пользователя. В качестве составного произведения распространяется под лицензией 3-clause BSD.
- Является ответвлением Wine, развиваемым компанией Valve. Основные отличия от Wine:
- В качестве транслятора вызовов Direct3D (DirectX) в Vulkan задействует DXVK и vkd3d-proton.
- На момент 2024 года требуется видеокарта с аппаратной поддержкой Vulkan 1.3 и актуальные драйвера, поддерживающие новейшие Vulkan-расширения и версии протокола Wayland. На старом оборудовании (видеокарты десятилетней давности и старее) и устаревшей пакетной базе (платформа 9 и старее) работоспособность затруднена или отсутствует.
- Реализована Python-обёртка и набор библиотек для интеграции в клиент Steam.
- Используются дополнительные патчи, включая расширенную поддержку анти-читов, для достижения работоспособности отдельных игр и игровых устройств.
- В качестве транслятора вызовов Direct3D (DirectX) в Vulkan задействует DXVK и vkd3d-proton.
- Первый выпуск состоялся в 2018 году. Историческая справка: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
- Официальный репозиторий: https://github.com/ValveSoftware/Proton
- Официальное руководство пользователя: https://github.com/ValveSoftware/Proton#readme
- Справка по применению опций совместимости: https://github.com/ValveSoftware/Proton#runtime-config-options
- Каталог отчётов пользователей с рецептами запуска различных игр: https://www.protondb.com/
- Полная работоспособность достигнута для многих тысяч игр, но всё ещё остаётся небольшое число тех, что работают с некоторыми проблемами или требуют дополнительных манипуляций. Так же есть незначительное количество полностью неработоспособных, большая часть из которых не работает из-за намеренной блокировки запуска анти-читами.
Первоначальная настройка
Производится через клиент Steam. Для этого перейти в Steam / Настройки / Совместимость и отметить два пункта:
- Включить Steam Play для поддерживаемых продуктов.
- Включить Steam Play для всех других продуктов.
Для применения изменений необходимо перезапустить клиент Steam. После перезапуска появится возможность устанавливать Windows-игры и запускать их. Proton будет автоматически загружен при попытке запуска любой Windows-игры из библиотеки.
Использование версий
Пользователям предлагается следующий набор версий-сборок:
- Proton <номер версии> — стабильные версии, использующие в качестве основы стабильную версию Wine с переносом отдельных изменений из ветки разработки. В клиенте Steam по умолчанию предлагается крайняя стабильная версия.
- Proton Experimental — версия со свежайшими изменениями из ветки разработки.
- Proton Hotfix — версия с экстренными, экспериментальными и адресными исправлениями. Используется в исключительных случаях.
Версию Proton можно переключить глобально или для каждой игры отдельно. Глобальный переключатель:
Пример для отдельной игры. Чтобы появился список для выбора версий, необходимо отметить пункт "Принудительно использовать выбранный инструмент совместимости Steam Play":
Кроме официальных сборок, существуют варианты от сообщества. Среди них можно выделить следующие:
- proton-ge-custom — после небольшой подготовки можно использовать из клиента Steam так же, как обычный Proton. Сборка формируется на основе Proton Experimental с добавлением различных патчей от сообщества и поддерживает дополнительные возможности.
- PortProton — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций.
Особенности структуры каталогов Steam Proton
- Версии Proton загружаются в /home/$USER/.local/share/Steam/steamapps/common/.
- Каталог игры со всем содержимым отделён от префикса и располагается в /home/$USER/.local/share/Steam/steamapps/common/.
- Каталог префикса располагается в /home/$USER/.local/share/Steam/steamapps/compatdata/.
- Для каждой игры используется отдельный префикс.
- Префикс создаётся при запуске игры. То есть для появления префикса в ./compatdata игра должна быть запущена хотя бы раз.
- В префиксе по умолчанию создаётся стандартный Windows-пользователь с именем steamuser: ./Steam/steamapps/compatdata/1608450/pfx/drive_c/users/steamuser/.
- В этом каталоге расположены стандартные каталоги Windows-пользователя, включая AppData (Application Data).
- Как правило, здесь хранятся игровые сохранения, файлы конфигурации и подобное.
- Моды из Мастерской (Steam workshop) размещаются в подкаталогах /home/$USER/.local/share/Steam/steamapps/workshop/.
- Некоторые игры могут "потерять" загруженные моды, если каталог steamapps располагается не по умолчанию (на другом разделе).
Использование Proton напрямую без задействования клиента Steam
В Proton реализован механизм прямого запуска тех или иных программ, размещённых в Proton-префиксе, без задействования клиента Steam. Использование напрямую позволяет запускать программы внутри конкретного Proton-префикса, включая штатные Wine-программы. В контексте игр это даёт удобную возможность установить русификатор, моды и подобное, а так же запускать различные инструменты: программу конфигурации, игровой редактор и подобное.
Пример запуска установочного файла OpenGL-обёртки для игры Disciples 2
Расположение префикса игры по умолчанию:
/home/$USER/.local/share/Steam/steamapps/compatdata/1640/
Установочный файл OpenGL-обёртки (DisciplesWrapperV1.90.exe) был размещён в корне префикса:
/home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/DisciplesWrapperV1.90.exe
Команда на запуск установочного файла:
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run /home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/DisciplesWrapperV1.90.exe
Из-за длины путей выглядит громоздко и сложно, но на деле команда проста:
- STEAM_COMPAT_CLIENT_INSTALL_PATH — передать этой переменной окружения путь до корневого каталога клиента Steam. В данном случае это /home/$USER/.local/share/Steam/
- STEAM_COMPAT_DATA_PATH — передать путь до Proton-префикса, который создаётся при первом запуске игры. Путь из примера: /home/$USER/.steam/steam/steamapps/compatdata/1640/, где имя каталога с префиксом соответствует ID игры в Steam — 1640.
- /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton — путь до python-скрипта proton, с помощью которого производится задействование Proton. Путь будет отличаться в зависимости от установленной версии Proton. В данном случае используется Proton 8.0. Так же стоит отметить, что в имени каталога Proton присутствует пробел, его нужно экранировать обратной косой чертой (\) или экранировать кавычками путь целиком.
- run /home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/DisciplesWrapperV1.90.exe — команда на запуск указанного исполняемого файла (DisciplesWrapperV1.90.exe) с помощью Proton.
Результат:
Важно отметить, что подобные установщики ожидают обнаружить файлы игры в границах префикса, но в структуре каталогов Steam каталог с игрой располагается вне префикса. В связи с этим, в диалоге выбора пути потребуется указать путь через структуру каталогов Linux.
В некоторых случаях это вызывает проблемы (установщик может отказаться продолжать работу, выведя ошибку). Надёжнее создать в префиксе символическую ссылку на каталог с файлами игры, что позволит установщику получить привычный DOS-путь к файлам игры. Пример расположения точки входа:
"./drive_c/Program Files (x86)/Steam/steamapps/common/Символическая_ссылка_на_каталог_игры"
Пример создания символической ссылки (пробелы и скобки в имени каталогов экранированы обратной косой чертой):
ln -s /home/$USER/.local/share/Steam/steamapps/common/Disciples\ II\ Galleans\ Return /home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/Program\ Files\ \(x86\)/Steam/steamapps/common/Disciples\ II\ Galleans\ Return
Запуск стандартных Wine-программ в Proton-префиксе
В Proton-префиксе присутствует полный набор программ из стандартного Wine-префикса. Их можно задействовать так же, как это делается для Wine-префикса. Пример запуска winecfg всё в том же префиксе игры Disciples 2:
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run winecfg
Результат:
Пример запуска «Установка/удаление программ» (uninstaller):
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run uninstaller
Пример запуска редактора реестра (regedit):
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run regedit
Пример запуска Диспетчера задач (taskmgr):
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run taskmgr
Пример запуска сторонних игр в Proton-префиксе
Да, это работает. Демонстрация на примере запуска Konung 2. Установка из setup_konung2_russian_2.0.0.3.exe:
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run /home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/setup_konung2_russian_2.0.0.3.exe
По запуску есть особенность. Если запускать исполняемый файл напрямую, то игра не запустится, но если её стартовать с файла-ярлыка (.lnk), запуск проходит успешно. lnk-файлы хранятся в каталоге ./drive_c/ProgramData/Microsoft/Windows/Start Menu/Programs/. Запуск с lnk-файла (пробелы и скобки экранированы обратной косой чертой):
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/$USER/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/$USER/.local/share/Steam/steamapps/compatdata/1640 /home/$USER/.local/share/Steam/steamapps/common/Proton\ 8.0/proton run /home/$USER/.local/share/Steam/steamapps/compatdata/1640/pfx/drive_c/ProgramData/Microsoft/Windows/Start\ Menu/Programs/Konung\ 2\ -\ Blood\ of\ Titans\ \[GOG\.com\]/Konung\ 2\ -\ Blood\ of\ Titans.lnk
Использование сборок Proton от сообщества через Steam
Пример использования сборки от GloriousEggroll
Из официального репозитория загрузить крайнюю выпущенную версию: https://github.com/GloriousEggroll/proton-ge-custom/releases Сборка поставляется в обычном tar-архиве.
В данном примере был загружен архив GE-Proton8-25.tar.gz:
Чтобы клиент Steam мог взаимодействовать со сборкой, её необходимо распаковать и поместить каталог GE-Proton<номер версии> со всем содержимым в /home/$USER/.local/share/Steam/compatibilitytools.d/. Если каталог compatibilitytools.d отсутствует, его следует создать.
После перезапуска клиента Steam сборка станет доступной для выбора: