Proton

Материал из Wiki SteamOS

Proton — программный слой совместимости, разработанный компанией Valve Corporation на базе Wine, позволяющий запускать компьютерные игры, созданные для Microsoft Windows, в операционных системах семейства Linux. Proton интегрирован непосредственно в клиент Steam для Linux (функция «Steam Play») и обеспечивает автоматическую трансляцию системных вызовов Windows, графических API (DirectX) и сервисов Steamworks в среду Linux без потери производительности [citation:1][citation:2]. Релиз состоялся 21 августа 2018 года [citation:2][citation:6].

Благодаря Proton платформа Steam Deck (работающая на SteamOS — производной от Arch Linux) может запускать подавляющее большинство игр из каталога Steam, предназначенных для Windows [citation:6].

История

Proton был анонсирован и выпущен 21 августа 2018 года одновременно с обновлённой версией Steam Play для Linux. Первоначально компания Valve сертифицировала 27 игр, которые работали без каких-либо настроек, включая Doom (2016), Quake и S.T.A.L.K.E.R.: Тень Чернобыля [citation:2].

Разработка Proton велась с целью преодоления главного барьера для Linux-гейминга — отсутствия нативных версий популярных игр. В отличие от стандартной сборки Wine, требующей ручной настройки, Proton был задуман как полностью автоматизированное решение для конечного пользователя: достаточно нажать «Установить» в Steam [citation:1].

На 2026 год Proton является основным компонентом игровой экосистемы Linux. Его развитие тесно связано с ростом популярности Steam Deck, который использует Proton для запуска игр [citation:6].

Техническое описание

Proton представляет собой форк Wine с набором специализированных патчей и дополнительных библиотек [citation:2]. Основные возможности включают [citation:2][citation:7]:

  • Полноценная поддержка Steamworks и OpenVR в среде Linux.
  • Трансляция DirectX 9, 10, 11 в Vulkan с помощью DXVK.
  • Трансляция DirectX 12 в Vulkan с помощью vkd3d-proton.
  • Улучшенная поддержка полноэкранного режима и игровых контроллеров.
  • Повышение производительности многопоточных игр за счёт патчей (esync/fsync).
  • Поддержка систем защиты EasyAntiCheat и BattlEye через специальные рантаймы.
  • Запуск игр в изолированных контейнерах Steam Linux Runtime для обеспечения стабильности.

Архитектура

Proton имеет многослойную архитектуру, управляемую скриптом-оркестратором на Python [citation:7].

Уровни совместимости

  1. Базовый уровень (Wine): модифицированная версия Wine, обеспечивающая выполнение PE-кода (Portable Executable) Windows и трансляцию системных вызовов (Win32 API → POSIX) [citation:7].
  2. Графический уровень: подсистемы DXVK и vkd3d-proton, транслирующие Direct3D в Vulkan [citation:1][citation:7].
  3. Мост Steam API (lsteamclient): генерируемый компонент, который перехватывает вызовы Windows-версии Steam API и перенаправляет их в нативный Linux-клиент Steam. Генерация кода происходит на основе заголовочных файлов SDK с помощью LibClang [citation:7].
  4. Мост OpenVR (vrclient_x64): аналогичный компонент для работы с устройствами виртуальной реальности [citation:7].

Управление префиксами

Каждая игра запускается в отдельном, изолированном Wine-префиксе (виртуальном диске C:\). За управление жизненным циклом префиксов отвечает класс `CompatData`. Структура каталога префикса включает:

  • `drive_c/` — виртуальный диск C.
  • `dosdevices/` — символьные ссылки на ресурсы (c:\, z:\, s:\ для библиотеки игр).
  • Файлы версий (`version`) и блокировки (`pfx.lock`) для предотвращения конфликтов при обновлениях [citation:7].

При обновлении версии Proton скрипт анализирует старую версию префикса и применяет необходимые исправления (например, удаляет устаревшие библиотеки или чинит реестр для .NET Framework) [citation:7].

IPC-механизм

Для связи между Windows-кодом игры и Unix-окружением Linux используется механизм `__wine_unix_call()`. Для каждого метода Steam API генерируется структура параметров и функция-диспетчер, выполняющая маршалинг данных между 32-битным (Wow64) и 64-битным адресными пространствами [citation:7].

Компоненты

Ключевые компоненты Proton
Компонент Назначение Лицензия / Разработчик
Wine Базовая прослойка для запуска Windows-приложений. LGPL
DXVK Трансляция DirectX 9/10/11 в Vulkan. MIT / Филипп Ребиш
vkd3d-proton Трансляция DirectX 12 в Vulkan (форк vkd3d от Wine с оптимизациями от Valve). LGPL / Wine, Valve
lsteamclient Мост для Steam API. Проприетарная? / Valve
vrclient_x64 Мост для OpenVR. Проприетарная? / Valve
wineopenxr Мост для OpenXR (виртуальная реальность). XML-генератор / Valve

ProtonDB

ProtonDB — неофициальный веб-сайт и база данных сообщества, агрегирующая отчёты пользователей о качестве работы игр под Proton. Сайт предоставляет информацию о совместимости на основе краудсорсинга и позволяет геймерам оценить, будет ли конкретная Windows-игра работать на Linux [citation:2].

Шкала оценок ProtonDB [citation:2]:

  • Native — игра имеет нативную Linux-версию (либо официально поддерживается Proton).
  • Platinum — работает идеально «из коробки».
  • Gold — работает после незначительных настроек.
  • Silver — работают, но есть мелкие проблемы, не влияющие на прохождение.
  • Bronze — работают, но есть серьёзные ошибки или вылеты.
  • Borked — не запускаются или непроходимы.

По состоянию на январь 2022 года 78% из 1000 самых популярных в Steam игр имели рейтинг Gold или выше [citation:2]. Существуют браузерные расширения (например, protONsteam), интегрирующие рейтинги ProtonDB непосредственно в страницы магазина Steam [citation:8].

Производные версии

Proton GE

Proton GE (Glorious Eggroll) — неофициальная сборка Proton, поддерживаемая энтузиастом под псевдонимом Glorious Eggroll. Эта версия включает экспериментальные патчи из последних версий Wine (часто ещё не включённые в официальный Proton), дополнительные мультимедийные кодеки (исправляющие воспроизведение видео в играх), патчи AMD FidelityFX Super Resolution (FSR) и систему protonfixes для автоматического применения специфических для игры настроек [citation:10].

В большинстве случаев рекомендуется использовать официальный Proton как более стабильный. Proton GE применяется, когда официальная версия не запускает игру или наблюдаются проблемы с видео [citation:10].

PortProton

В сообществе существуют также скрипты-обёртки, такие как PortProton, которые упрощают установку и настройку Proton (или его форков) для игр вне Steam. Они обеспечивают интеграцию игровых манипуляторов и дополнительные оптимизации [citation:5].

Производительность и восприятие

Proton значительно повысил привлекательность Linux как игровой платформы. Благодаря активной разработке Valve и вкладу сообщества, многие игры под Proton работают с производительностью, сопоставимой с нативной Windows, а иногда и превосходят её из-за меньших накладных расходов драйверов Vulkan [citation:6].

Основные проблемы Proton связаны с играми, использующими сложные системы защиты (Denuvo), а также некоторыми онлайн-играми с драйвер-уровневыми античитами. Хотя Valve создала специальные рантаймы для EasyAntiCheat и BattlEye, не все разработчики игр активируют поддержку Linux в настройках своих античитов [citation:6].

К 2026 году Proton достиг высокой степени зрелости, что подтверждается успехом Steam Deck, который использует его как основу для своей работы [citation:6].

Сравнение с альтернативами

Продукт Тип Особенности
Proton Слой совместимости (в Steam) Глубокая интеграция с Steam, автоматическая настройка, поддержка Steamworks.
Wine Слой совместимости (общий) Ручная настройка, поддержка широкого спектра Windows-приложений (офис, софт), не оптимизирован для игр [citation:1].
Bottles Графический интерфейс для Wine Управление изолированными окружениями (бутылками) с графическим интерфейсом, удобно для приложений вне Steam [citation:1].
CrossOver Коммерческая версия Wine Готовая к использованию сборка Wine от CodeWeavers с техподдержкой [citation:1].
Lutris Менеджер игр Позволяет управлять версиями Wine/Proton, эмуляторами и нативными играми в едином интерфейсе [citation:5].

Ссылки