Продолжаем делать игровой ПК под Linux

Ну что, продолжаю писать о моих приключениях в настройке линукса под себя для игр

Продолжение моего опуса обусловлено тем, что у меня появился новый геймпад с одной особенностью, в комментах под прошлым постом спрашивали касательно SteamOS и ChimeraOS, а так же решению нерешаемой проблемы (согласно линуксойдным форумам) гейминга на линукс с видюхами от NVidia.

Этот лонг уже будет совмещать некоторые элементы гайда, а не просто описания, что я сделал со своей ОС.

Но сначала напишу свой конфиг:

  • Операционная система: Manjaro Linux
  • Версия KDE Plasma: 5.27.11
  • Версия KDE Frameworks: 5.115.0
  • Версия Qt: 5.15.12
  • Версия ядра: 6.6.19-1-MANJARO (64-бита)
  • Графическая платформа: X11
  • Процессоры: 8 × AMD Ryzen 7 7800X3D 8-Core Processor
  • Память: 31,1 ГиБ ОЗУ
  • Графический процессор: NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2
  • Производитель: ASRock
    Название продукта: B650 Pro RS

1 Геймпад и его крайне высокая совместимость для Стима

Подарили мне значит GameSir G7 SE, а у него оказалась очень удобная для меня особенность

Продолжаем делать игровой ПК под Linux

Он проводной (что минус). И у него нет кнопки выключения (что плюс). А это значит, что можно удерживать центральную клавишу Xbox, она же Guide, бесконечно долго. Вспоминаем, что у Стима на эту кнопку назначены сразу 2 функции: вызов оверлея стима и переключение на клава-мышь, если удерживать кнопку, то выходит, что можно практически полностью отказаться от переключения с ТВ на монитор и большую часть действий делать лежа на диване с геймпадом в руках.

Подстроив раскладку под себя, я получил что-то вроде этого:

Дополнительно удаляем мертвую зону у стика и делаем кривую поведения очень широкой, чтоб было удобнее
Дополнительно удаляем мертвую зону у стика и делаем кривую поведения очень широкой, чтоб было удобнее

И это действительно работает. Я так сидя на диване удалил пройденный Ghosrunner, скачанный из ЕГС, а потом запустил Nier Replikant. И стим не запутался, какую раскладку - десктопную или раскладку геймпада - ему включать.

Единственное, что тут у меня не заработало - это вызов клавиатуры. То вызывается, то нет. Сейчас, пока пишу этот текст, она спокойно вызвалась. А еще у этой клавы нет связи с системным способом вода и поэтому переключение языков через нее не работает.

2 gamescope-session-steam и зачем он нужен

А ни зачем он не нужен. Это пакет от ChimeraOS, портированный в основной репозиторий Арча. Проблема в том, что он для стационарного ПК сырой, в нем нет важных функций.

Если вы думаете, что сможете с помощью него сделать стационарный Steam Deck, то... да, сможете, но не совсем. Этот пакет не дружит с несколькими мониторами, а графического приложения для его настройки не существует. У меня он всегда выводит изображение только на монитор, игнорируя ТВ. Чтоб вывести на ТВ, нужно узнавать, как мои выходы называются в системе и через командную строку менять этот выход. Удобно? Нет. В добавок у меня не работает пункт "Выйти на рабочий стол". Видимо из-за того, что это пакет от другого дистра.

Мало этого, так gamescope использует Wayland, а не X11. Wayland и X11 - это протоколы для организации графического сервера, т.е. отрисовки окружения и правил взаимодействия с ним.Wayland более новый протокол и его разрабатывают на замену иксам. Но тут сразу 3 проблемы:

  1. Драйвер NVidia не поддерживает протокол Wayland (но это не значит, что у вас будет черный экран. У вас будут проблемы с совместимостью)
  2. Стим все еще работает на иксах, а значит будет задействована прослойка XWaylend, дабы стим вообще запускался
  3. Proton так же работает через иксы. Хотя вы его можете и пропатчить под Wayland, но кто этим будет заниматься?

Выходит, что у вас игры будут запускаться через костыль Proton, а Proton будет запускаться через костыль XWayland, что в теории может привести к багам. На практике я хз, какие баги у стим дека вызваны сыростью самого пакета gamescope-session, а какие костылем XWayland.

Моя же (и всех адептов Куртки) проблема связана с пунктом 1. И эту проблему вы можете наблюдать на скрине:

Так будет выглядить боковое меню у вас 90% времени, если у вас видюха от NVidia
Так будет выглядить боковое меню у вас 90% времени, если у вас видюха от NVidia

И как вы можете понять, Print Screan тоже не работает в gamescope-session.

Таким образом идея использовать Steam Big Picture в качестве графического окружения откладывается в долгий ящик.

3 Вертикальная синхронизация и ее "нерешаемая" проблема

Я только сейчас заметил, что в играх у меня не работает вертикалка. Пойдя гуглить, я лишь узнал, что это "частая проблема линуксов" и что работоспособность зависит от дистра и вообще она не решаемая.

Как оказалось, она решаемая. Надо просто отключить вертикалку и она включится. Почему? Понятия не имею (как выяснится далее, виноват Proton), но выключение вертикалки ее включает. Но включает будто бы адаптивную вертикалку, у которой при падении ФПС тиринг будет виден.

Решение этой проблемы я нашел совершенно случайно, листая страницу Ghostrunner на ProtonDB. Просто из любопытства, что там такого сверхразумы пишут в параметрах запуска у игры, которая имеет ранг совместимости "Платина".

Я нашел чела, который использовал такие вот параметры, но никак не объяснил, зачем он их использует:

PROTON_ENABLE_NVAPI=1 DXVK_ENABLE_NVAPI=1 VKD3D_CONFIG=dxr VKD3D_FEATURE_LEVEL=12_2

Первые 2 понятно зачем, они заставляют Proton и DXVK насильно подрубить совместимость для карт NVidia. Почему-то Ghostrunner не определял мою видюху, как видюху из RTX семейства, не давая включить DLSS (хотя Хогвартс давал и без этих параметров), поэтому PROTON_ENABLE_NVAPI=1 у меня уже была включен.

VKD3D_CONFIG=dxr подключает библиотеку DXR, которая отвечает за трассировку лучей. Тут же еще, например, можно через запятую написать force_static_cbv, что является небезопасным спидхаком для карт NVidia. Полный список переменных можно найти тут.

VKD3D_FEATURE_LEVEL=12_2 включает 12_2 уровень компонентов в DirectX 12 (как я понял, уточняет версию 12-го DirectX). Последний на данный момент - 12_2.

Добавив другие 3 параметра я обнаружил, что вертикалка починилась: если ее выключить - она выключится, если включить - включится. Проверив 3 другие игры я констатировал, что нерешаемая проблема решилась! Видимо проблема была в том, что библиотека DXVK не включала API Nvidia сама, но может решили проблему и совокупность из всех 4 команд.

Ну и что же, это мне для каждой игры в параметры запуска писать столько переменных? Оказалось, что нет и их можно сделать переменными среды, и тогда Proton их будет подхватывать автоматически для каждой игры. Если ваш дистр использует Bash в качестве оболочки, то ищем файл .bash_profile и в свободной строчке вставляем следующее:

export PROTON_ENABLE_NVAPI=1 DXVK_ENABLE_NVAPI=1 VKD3D_CONFIG=dxr VKD3D_FEATURE_LEVEL=12_2

Теперь при каждом запуске ПК под моей учеткой будут создаваться эти переменные среди, которые Proton автоматически подхватит

3* Форсированное включение других типов вертикалки

вообще у Vsync есть 4 параметра:

  • Выключен
  • Включен
  • Адаптивный
  • Mailbox (включенная вертикалка с разлоченным FPS)

Возможно, есть и другие подвиды или форки перечисленных выше, но знаю я только о таких.

Я еще не встречал игры, которые предлагали что-то большее, чем просто ползунок "Вкл/Выкл". Чтобы установить вертикалку, которую мы сами хотим, нам опять нужно воспользоваться пакетом mangohud

Список переменных, которые могут принимать параметры gl_vsync и vsync соответственно
Список переменных, которые могут принимать параметры gl_vsync и vsync соответственно

Для этого открываем свойства нужной нам игры и в параметры запуска пишем:

MANGOHUD_CONFIG=vsync={переменная},gl_vsync={Переменная},alpha=0 %command%

Параметр alpha=0 нужен, чтобы отрубить показатели производительности (они просто будут полностью прозрачные).

Заключение

Настройка линукса под игры чем-то напоминает создание ОС под свой сетап: ты смотришь, что у тебя работает не так и сам решаешь эту проблему, фикся конфиги. А если хочется что-то большего, что качаешь соответствующие пакеты, либо вообще создаешь свои собственные скрипты. Линукс - это лего от мира операционных систем, ковыряя который я получаю удовольствие

3838
59 комментариев

Главное потом поиграть не забыть.

23
Ответить

Ну вон, гостраннер прошел 🙃

1
Ответить

Отличный пост на тему "Как самому себе создавать трудности, а потом пытаться их мужественно преодолевать".

16
Ответить

Вот только на линуксе я уже, похоже, все саои проблемы решил, а вот решение моих проблем на винде мне так никто и не предложил

4
Ответить

Прослойка на прослойке, чудо что это всё работает через костыли. Таков путь линукс.

10
Ответить

Поражает, что стим дек нормально работает и валв просто забило хуй на создание специальных патчей для дековских протонов, чтоб они через вейленд работали

Ответить

Сложно. Можно же просто поставить Виндоус 🤷

9
Ответить