Steam Proton: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
(Добавлено про использование Proton напрямую.)
Строка 44: Строка 44:
** [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom] — можно использовать из клиента Steam так же, как обычный Proton.
** [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom] — можно использовать из клиента Steam так же, как обычный Proton.
** [[PortProton]] — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций.
** [[PortProton]] — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций.
== Использование Proton напрямую без задействования клиента Steam ==
{{Note|Для помания материала крайне желательно иметь представление об [[WINE|основах использования Wine]].}}
В Proton реализован механизм прямого запуска тех или иных программ, размещённых в Proton-префиксе, без задействования клиента Steam. Использование напрямую позволяет запускать программы внутри конкретного Proton-префикса, включая штатные Wine-программы. В контексте игр это даёт удобную возможность установить русификатор, моды и подобное, а так же запускать различные инструменты: программу конфигурации, игровой редактор и подобное.
=== Пример запуска установочного файла OpenGL-обёртки для игры Disciples 2 ===
Расположение префикса игры по умолчанию:
<br>
{{path|/home/$USER/.local/share/Steam/steamapps/compatdata/1640/}}
Установочный файл OpenGL-обёртки (DisciplesWrapperV1.90.exe) был размещён в корне префикса:
<br>
{{path|/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.
Результат:
[[Файл:Altlinux steam proton окно установки обёртки.png|центр]]
Важно отметить, что подобные установщики ожидают обнаружить файлы игры в границах префикса, но в структуре каталогов Steam каталог с игрой располагается вне префикса. В связи с этим, в диалоге выбора пути потребуется указать путь через структуру каталогов Linux.
В некоторых случаях это вызывает проблемы (установщик может отказаться продолжать работу, выведя ошибку). Надёжнее создать в префиксе символическую ссылку на каталог с файлами игры, что позволит установщику получить привычный DOS-путь к файлам игры. Пример расположения точки входа:
<br>
{{path|"./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'''
Результат:
[[Файл:Altlinux steam proton winecfg.png|центр]]
Пример запуска «Установка/удаление программ» (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'''
[[Файл:Altlinux steam proton uninstaller.png|центр]]
Пример запуска редактора реестра (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'''
[[Файл:Altlinux steam proton regedit.png|центр]]
Пример запуска Диспетчера задач (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'''
[[Файл:Altlinux steam proton taskmgr.png|центр]]
=== Пример запуска сторонних игр в 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'''
[[Файл:Altlinux steam proton установка konung 2.png|600px|центр]]
По запуску есть особенность. Если запускать исполняемый файл напрямую, то игра не запустится, но если её стартовать с файла-ярлыка (.lnk), запуск проходит успешно. lnk-файлы хранятся в каталоге {{path|./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'''
[[Файл:Altlinux steam proton konung 2 меню.png|700px|центр]]

Версия от 10:09, 6 января 2024

Описание

Proton (SteamPlay) — слой совместимости для запуска Windows-программ, ориентированный на запуск компьютерных игр. Предлагается в качестве опции-инструмента в клиенте Steam для бесшовного запуска игр из библиотеки пользователя. В качестве составного произведения распространяется под лицензией 3-clause BSD.

  • Является ответвлением Wine, развиваемым компанией Valve. Основные отличия от Wine:
    • В качестве транслятора вызовов Direct3D (DirectX) в Vulkan задействует DXVK и vkd3d-proton.
    • Реализована python-обёртка и набор библиотек для интеграции в клиент Steam.
    • Используются дополнительные патчи, включая расширенную поддержку анти-читов, для достижения работоспособности отдельных игр и игровых устройств.
  • Первый выпуск состоялся в 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 для всех других продуктов.
Altlinux steam proton.png

Для применения изменений необходимо перезапустить клиент Steam. После перезапуска появится возможность устанавливать Windows-игры и запускать их. Proton будет автоматически загружен при попытке запуска любой Windows-игры из библиотеки.

Altlinux steam proton кнопка установки игры.png


Использование веток

Пользователям предлагается следующий набор версий-сборок:

    • Proton <номер версии> — стабильные версии, использующие в качестве основы стабильную версию Wine с переносом отдельных изменений из ветки разработки. В клиенте Steam по умолчанию предлагается крайняя стабильная версия.
    • Proton Experimental — версия со свежайшими изменениями из ветки разработки.
    • Proton Hotfix — версия с экстренными, экспериментальными и адресными исправлениями. Используется в исключительных случаях.

Версию Proton можно переключить глобально или для каждой игры отдельно. Глобальный переключатель:

Altlinux steam proton глобальный переключатель.png

Пример для отдельной игры. Чтобы появился список для выбора версий, необходимо отметить пункт "Принудительно использовать выбранный инструмент совместимости Steam Play":

Altlinux steam proton локальный переключатель.png

Кроме официальных сборок, существуют варианты от сообщества. Среди них можно выделить следующие:

    • proton-ge-custom — можно использовать из клиента Steam так же, как обычный Proton.
    • PortProton — отдельная обёртка-приложение, независящая от клиента Steam. Позволяет запускать программы вне библиотеки Steam без специфичных манипуляций.


Использование Proton напрямую без задействования клиента Steam

Примечание: Для помания материала крайне желательно иметь представление об основах использования Wine.


В 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.

Результат:

Altlinux steam proton окно установки обёртки.png

Важно отметить, что подобные установщики ожидают обнаружить файлы игры в границах префикса, но в структуре каталогов 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

Результат:

Altlinux steam proton winecfg.png

Пример запуска «Установка/удаление программ» (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
Altlinux steam proton uninstaller.png

Пример запуска редактора реестра (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
Altlinux steam proton regedit.png

Пример запуска Диспетчера задач (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
Altlinux steam proton taskmgr.png


Пример запуска сторонних игр в 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
Altlinux steam proton установка konung 2.png

По запуску есть особенность. Если запускать исполняемый файл напрямую, то игра не запустится, но если её стартовать с файла-ярлыка (.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


Altlinux steam proton konung 2 меню.png