Proton — это инструмент для использования с клиентом Steam, который позволяет играм, эксклюзивным для Windows, запускаться на операционной системе Linux. Он использует Wine для обеспечения этого.
Большинство пользователей должны использовать Proton, предоставленный самим клиентом Steam. Подробнее см. этот пост сообщества Steam.
Исходный код доступен для продвинутых пользователей, чтобы они могли изменять Proton. Например, некоторые пользователи могут захотеть использовать другую версию Wine с определенным тайтлом.
Журнал изменений доступен на нашей вики.
Получите исходный код Proton, клонируя https://github.com/ValveSoftware/Proton и переключаясь на нужную ветку.
Вы можете клонировать последнюю версию Proton на вашу систему с помощью следующей команды:
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
Убедитесь, что обновляете подмодули при переходе между ветками:
git checkout experimental_6.3
git submodule update --init --recursive
Если вы хотите изменить любой подкомпонент, это самое время для этого. Например, если вы хотите внести изменения в Wine, вы должны применить их к директории wine/
.Большая часть Proton собирается внутри контейнера Proton SDK с минимальными зависимостями от стороны хоста.
Вам потребуется либо Docker, либо Podman. Мы настоятельно рекомендуем безкорневую конфигурацию Podman. Пожалуйста, обратитесь к документации вашего дистрибутива для инструкций по установке (например, Arch Podman / Docker, Debian Podman / Docker).
Мы предоставляем топ-уровневый файл Makefile, который выполнит большую часть команд сборки для вас. После клонирования репозитория и обновления его подмодулей, предполагая, что у вас есть работающая среда Docker или Podman, вы можете собрать и установить Proton с помощью простого:
make install
Если ваша система сборки не имеет необходимых зависимостей, сборка завершится быстро с ясным сообщением об ошибке.
После завершения сборки, возможно, вам потребуется перезапустить клиент Steam, чтобы увидеть новый инструмент Proton. Имя инструмента в клиенте Steam будет основано на текущей ветке Proton. Вы можете переопределить это имя с помощью переменной build_name
.
См. make help
для других целей сборки и опций.## Ручная сборка
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
Запуск configure.sh
создаст файл Makefile
, который позволит вам собрать Proton. Скрипт проверяет, работают ли контейнеры, и предлагает вам добавить недостающие зависимости на стороне хоста. Вы должны запускать команду из директории, созданной специально для вашей сборки.
Конфигурационный скрипт пытается обнаружить рабочую среду Docker или Podman для использования, но вы можете заставить использовать совместимый движок с помощью флага --container-engine=<executable_name>
.
Вы можете включить ccache с помощью флага --enable-ccache
. Это позволит смонтировать вашу директорию $CCACHE_DIR
или $HOME/.ccache
внутри контейнера.
Флаг --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>
можно использовать для сборки с пользовательской версией образов Proton SDK.
См. --help
для других опций конфигурации.
ЗАМЕЧАНИЕ: Если используется SELinux, контейнер сборки Proton может не иметь доступа к файлам вашего пользователя. Это вызвано [метками файловой системы SELinux][selinux-labels]. Вы можете передать флаг --relabel-volumes
для конфигурации, чтобы заставить [движок контейнеров перелогировать свои bind-mounts][bind-mounts] и позволить доступ к этим файлам изнутри контейнера. Это может быть опасно при использовании с системными директориями. Будьте осторожны и обратитесь к руководству вашего движка контейнеров.### Сборка
make
Важные цели make:
make install
- установка Proton в вашу папку Steam пользователя, подробности см. в разделе локальная установка Proton.
make redist
- создание распространяемой сборки (redist/
), которую можно скопировать в ~/.steam/root/compatibilitytools.d/
.
make deploy
- создание сборки для развертывания (deploy/
). Это то, что мы используем для развертывания Proton пользователям Steam через Steamworks.
make module=<module> module
- сборка как 32-, так и 64-битных версий указанного модуля Wine. Это позволяет быстро итерироваться над одним модулем. Эта цель полезна только после сборки Proton.
make dxvk
/ make vkd3d-proton
- пересборка DXVK / vkd3d-proton.
Чтобы предотвратить удаление символов, добавьте UNSTRIPPED_BUILD=1
к вызову make
. Это следует использовать только с чистой директорией сборки.
Пример:
mkdir ../debug-proton-build && cd ../debug-proton-build
../proton/configure.sh --enable-ccache --build-name=debug_build
make UNSTRIPPED_BUILD=1 install
Steam поставляется с несколькими версиями Proton, которые игры используют по умолчанию или которые вы можете выбрать в разделе Steam Play настроек Steam. Steam также поддерживает запуск игр с локальными сборками Proton, которые вы можете установить на вашем компьютере.Чтобы установить локальную сборку Proton в Steam, создайте новую директорию в ~/.steam/root/compatibilitytools.d/
с именем инструмента по вашему выбору и поместите директорию с вашей распространяемой сборкой под этот путь.
Цель make install
выполнит эту задачу для вас, установив сборку Proton в папку Steam для текущего пользователя. Вам потребуется перезапустить клиент Steam, чтобы он обнаружил новый инструмент.
Правильная локальная установка инструмента должна выглядеть примерно так:
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
Чтобы включить вашу локальную сборку в Steam, перейдите в раздел Steam Play настроек окна. Если сборка была правильно установлена, вы должны увидеть "proton-localbuild" в выпадающем списке инструментов совместимости. Каждая часть этого программного обеспечения используется на условиях их лицензий.
См. файлы LICENSE
здесь, а также файлы LICENSE
, COPYING
и т.д. в каждом подмодуле и директории для подробностей. Если вы распространяете сборку Proton для других пользователей, вы должны соблюдать условия этих лицензий.
Конфигурации Proton по умолчанию имеют удалённые символы. Вы можете переключиться на ветку "debug" бета в Steam (найдите Proton в вашей библиотеке, Свойства... -> BETAS -> выберите "debug") или собрать без удаления символов (см. раздел Отладочные сборки).Символы предоставляются через сопутствующие файлы .debug
, которые могут потребовать явной загрузки отладочными инструментами. Для GDB есть вспомогательный скрипт wine/tools/gdbinit.py
(загрузите его) с командой load-symbol-files
(или lsf
для краткости), которая загружает символы для всех отображаемых файлов.
Для советов по отладке см. docs/DEBUGGING.md.
compile_commands.json
Для использования с clangd сервером LSP и подобными инструментами.
Проекты, собранные с помощью cmake или meson (например, vkd3d-proton), автоматически включают compile_commands.json
. Для autotools (например, wine) вам нужно настроить сборку с помощью --enable-bear
, который использует bear для создания базы данных компиляции. Это не включено по умолчанию, так как это может замедлить сборку.
Система сборки собирает все созданные файлы compile_commands.json
в поддиректории сборки, названной compile_commands/
.
Пути преобразуются для указания на реальные исходные файлы (то есть, не копию rsync). Однако они всё ещё могут зависеть от директории сборки для вещей, таких как автоматически сгенерированный config.h
. Для wine может быть полезно запустить tools/make_requests
в исходных директориях, так как эти изменения не коммитируются.
Затем вы можете настроить ваш редактор для использования этого файла для clangd несколькими способами:1) напрямую — некоторые редакторы/плагины позволяют указать путь к compile_commands.json
2) через файл .clangd
, например:
cd src/proton/wine/
cat > .clangd <<EOF
CompileFlags:
CompilationDatabase: ../build/current-dev/compile_commands/wine64/
EOF
ln -s ../build/current-dev/compile_commands/wine64/compile_commands.json .
Proton может быть настроен во время выполнения для улучшения работы определённых игр. Клиент Steam устанавливает некоторые параметры для известных игр с помощью переменной STEAM_COMPAT_CONFIG
. Вы можете переопределить эти параметры, используя переменные окружения, описанные ниже. Лучший способ установки этих переменных окружения для всех игр — переименовать user_settings.sample.py
в user_settings.py
и соответствующим образом изменить его. Этот файл расположен в директории установки Proton в вашей библиотеке Steam (часто ~/.steam/steam/steamapps/common/Proton #.#
).
Если вы хотите изменить конфигурацию времени выполнения для конкретной игры, вы можете использовать настройку Set Launch Options
в диалоговом окне Properties
игры в клиенте Steam. Установите переменную, за которой следует %command%
. Например, введите "PROTON_USE_WINED3D=1 %command%
" для использования OpenGL-рендерера wined3d вместо Vulkan-рендерера DXVK.Чтобы включить опцию, установите переменную в значение, отличное от 0
. Чтобы отключить опцию, установите переменную в 0
. Чтобы использовать конфигурацию по умолчанию Steam, не упоминайте переменную вовсе.Все нижеуказанные опции являются временными. Они не вносят постоянных изменений в Wine-префикс. Удаление опции вернёт поведение к предыдущему состоянию. | Строка конфигурации совместимости | Переменная окружения | Описание |
| :-------------------------------- | :------------------- | :------- |
| | PROTON_LOG
| Удобный метод для создания полезного отладочного лога в файл $PROTON_LOG_DIR/steam-$APPID.log
. Установите значение 1
, чтобы включить стандартное логирование, или задайте строку для добавления к стандартным каналам WINEDEBUG
. |
| | PROTON_LOG_DIR
| Выводите лог-файлы в указанный каталог. По умолчанию используется домашний каталог пользователя. |
| | PROTON_WAIT_ATTACH
| Ждите подключения отладчика к steam.exe перед запуском игрового процесса. Чтобы подключиться к игровому процессу при запуске, отладчики должны быть настроены на отслеживание дочерних процессов. |
| | PROTON_CRASH_REPORT_DIR
| Записывайте логи аварийного завершения в этот каталог. Не удаляются старые логи, поэтому они могут занять все доступное место на диске со временем. |
| wined3d
| PROTON_USE_WINED3D
| Используйте OpenGL-базированный wined3d вместо Vulkan-базированного DXVK для d3d11, d3d10 и d3d9. |
| nod3d11
| PROTON_NO_D3D11
| Отключите d3d11.dll
, для игр, которые могут использовать d3d9 и работать лучше при отсутствии d3d11. |
| nod3d10
| PROTON_NO_D3D10
| Отключите d3d10.dll
и dxgi.dll
.| Значение | Переменная окружения | Описание |
| --- | --- | --- |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9. dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| dxvk
| PROTON_USE_WINED3D
| Используйте d3d9.dll
из DXVK. |
| Если оба параметра заданы, значение
forcelgaddимеет приоритет. | |
oldglstr |
PROTON_OLD_GL_STRING | Устанавливает некоторые драйверные переключатели, чтобы ограничить длину строки расширений OpenGL для старых игр, которые вылетают при очень длинных строках расширений. | |
vkd3dfl12 | | Принудительно устанавливает уровень функциональности Direct3D 12 на 12, независимо от поддержки драйвера. | |
vkd3dbindlesstb | | Добавляет
force_bindless_texel_bufferв
VKD3D_CONFIG. | |
nomfdxgiman |
WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER| Включает хак для обхода проблем с видео в некоторых играх из-за неполной поддержки IMFDXGIDeviceManager. | |
noopwr |
WINE_DISABLE_VULKAN_OPWR | Включает хак для отключения рендеринга других процессов Vulkan, который иногда вызывает проблемы на Wayland из-за отставания блита на один кадр. | |
hidenvgpu |
PROTON_HIDE_NVIDIA_GPU | Принудительно отображает видеокарты Nvidia как видеокарты AMD. Некоторые игры требуют этого, если они зависят от функциональности драйвера Nvidia, доступной только в Windows. См. также параметр конфигурации DXVK nvapiHack, который влияет только на отчётность из Direct3D. | | |
WINE_FULLSCREEN_INTEGER_SCALING | Включает режим целочисленного масштабирования для получения чётких пикселей при увеличении. | |
cmdlineappend: | | Добавляет строку после двоеточия в качестве аргумента к командной строке игры.Может быть указано более одного раза. Экранируйте запятые и обратные слеши обратными слешами. | |
xalia |
PROTON_USE_XALIA | Включает Xalia, программу, которая может добавить интерфейс для некоторых клавиатур/мыши с помощью джойстика. | |
seccomp |
PROTON_USE_SECCOMP | **Примечание: Устарел в Proton 5.13.** В более ранних версиях включает фильтр seccomp-bpf для эмуляции нативных системных вызовов, необходимых для работы некоторых DRM-защит. | |
d9vk |
PROTON_USE_D9VK` | Примечание: Устарело в Proton 5.0. В более ранних версиях вместо OpenGL-based wined3d для d3d9 следует использовать Vulkan-based DXVK. |<! -- Цель: GitHub-вкус Markdown. Для локального тестирования: pandoc -f markdown_github -t html README.md -->
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )