Продолжаем делать игровой ПК под 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, а у него оказалась очень удобная для меня особенность
Он проводной (что минус). И у него нет кнопки выключения (что плюс). А это значит, что можно удерживать центральную клавишу Xbox, она же Guide, бесконечно долго. Вспоминаем, что у Стима на эту кнопку назначены сразу 2 функции: вызов оверлея стима и переключение на клава-мышь, если удерживать кнопку, то выходит, что можно практически полностью отказаться от переключения с ТВ на монитор и большую часть действий делать лежа на диване с геймпадом в руках.
Подстроив раскладку под себя, я получил что-то вроде этого:
И это действительно работает. Я так сидя на диване удалил пройденный Ghosrunner, скачанный из ЕГС, а потом запустил Nier Replikant. И стим не запутался, какую раскладку - десктопную или раскладку геймпада - ему включать.
Единственное, что тут у меня не заработало - это вызов клавиатуры. То вызывается, то нет. Сейчас, пока пишу этот текст, она спокойно вызвалась. А еще у этой клавы нет связи с системным способом вода и поэтому переключение языков через нее не работает.
2 gamescope-session-steam и зачем он нужен
А ни зачем он не нужен. Это пакет от ChimeraOS, портированный в основной репозиторий Арча. Проблема в том, что он для стационарного ПК сырой, в нем нет важных функций.
Если вы думаете, что сможете с помощью него сделать стационарный Steam Deck, то... да, сможете, но не совсем. Этот пакет не дружит с несколькими мониторами, а графического приложения для его настройки не существует. У меня он всегда выводит изображение только на монитор, игнорируя ТВ. Чтоб вывести на ТВ, нужно узнавать, как мои выходы называются в системе и через командную строку менять этот выход. Удобно? Нет. В добавок у меня не работает пункт "Выйти на рабочий стол". Видимо из-за того, что это пакет от другого дистра.
Мало этого, так gamescope использует Wayland, а не X11. Wayland и X11 - это протоколы для организации графического сервера, т.е. отрисовки окружения и правил взаимодействия с ним.Wayland более новый протокол и его разрабатывают на замену иксам. Но тут сразу 3 проблемы:
- Драйвер NVidia не поддерживает протокол Wayland (но это не значит, что у вас будет черный экран. У вас будут проблемы с совместимостью)
- Стим все еще работает на иксах, а значит будет задействована прослойка XWaylend, дабы стим вообще запускался
- Proton так же работает через иксы. Хотя вы его можете и пропатчить под Wayland, но кто этим будет заниматься?
Выходит, что у вас игры будут запускаться через костыль Proton, а Proton будет запускаться через костыль XWayland, что в теории может привести к багам. На практике я хз, какие баги у стим дека вызваны сыростью самого пакета gamescope-session, а какие костылем XWayland.
Моя же (и всех адептов Куртки) проблема связана с пунктом 1. И эту проблему вы можете наблюдать на скрине:
И как вы можете понять, Print Screan тоже не работает в gamescope-session.
Таким образом идея использовать Steam Big Picture в качестве графического окружения откладывается в долгий ящик.
3 Вертикальная синхронизация и ее "нерешаемая" проблема
Я только сейчас заметил, что в играх у меня не работает вертикалка. Пойдя гуглить, я лишь узнал, что это "частая проблема линуксов" и что работоспособность зависит от дистра и вообще она не решаемая.
Как оказалось, она решаемая. Надо просто отключить вертикалку и она включится. Почему? Понятия не имею (как выяснится далее, виноват Proton), но выключение вертикалки ее включает. Но включает будто бы адаптивную вертикалку, у которой при падении ФПС тиринг будет виден.
Решение этой проблемы я нашел совершенно случайно, листая страницу Ghostrunner на ProtonDB. Просто из любопытства, что там такого сверхразумы пишут в параметрах запуска у игры, которая имеет ранг совместимости "Платина".
Я нашел чела, который использовал такие вот параметры, но никак не объяснил, зачем он их использует:
Первые 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 и в свободной строчке вставляем следующее:
Теперь при каждом запуске ПК под моей учеткой будут создаваться эти переменные среди, которые Proton автоматически подхватит
3* Форсированное включение других типов вертикалки
вообще у Vsync есть 4 параметра:
- Выключен
- Включен
- Адаптивный
- Mailbox (включенная вертикалка с разлоченным FPS)
Возможно, есть и другие подвиды или форки перечисленных выше, но знаю я только о таких.
Я еще не встречал игры, которые предлагали что-то большее, чем просто ползунок "Вкл/Выкл". Чтобы установить вертикалку, которую мы сами хотим, нам опять нужно воспользоваться пакетом mangohud
Для этого открываем свойства нужной нам игры и в параметры запуска пишем:
Параметр alpha=0 нужен, чтобы отрубить показатели производительности (они просто будут полностью прозрачные).
Заключение
Настройка линукса под игры чем-то напоминает создание ОС под свой сетап: ты смотришь, что у тебя работает не так и сам решаешь эту проблему, фикся конфиги. А если хочется что-то большего, что качаешь соответствующие пакеты, либо вообще создаешь свои собственные скрипты. Линукс - это лего от мира операционных систем, ковыряя который я получаю удовольствие
Главное потом поиграть не забыть.
Ну вон, гостраннер прошел 🙃
Отличный пост на тему "Как самому себе создавать трудности, а потом пытаться их мужественно преодолевать".
Вот только на линуксе я уже, похоже, все саои проблемы решил, а вот решение моих проблем на винде мне так никто и не предложил
Прослойка на прослойке, чудо что это всё работает через костыли. Таков путь линукс.
Поражает, что стим дек нормально работает и валв просто забило хуй на создание специальных патчей для дековских протонов, чтоб они через вейленд работали
Сложно. Можно же просто поставить Виндоус 🤷