3 августа 2021 3.08.21 4 2186

Linux Gaming: Кровь, пот, SteamOS 3.0

Прошлые материалы по теме:

Linux Gaming: Кровь, пот и командная строка. Часть 1

Linux Gaming: Кровь, пот и командная строка. Часть 2

Metro:Exodus тестируем Linux версию

Решил написать небольшую заметку о программной начинке Steam Deck, по крайней мере то, что мне удалось найти.

Итак Steam Deck работает на операционной системе SteamOS 3.0. SteamOS 3.0 это Linux дистрибутив который в отличие от своего предшественника основан не на ветке дистрибутивов Debian, а на Arch linux.

Логотип Arch linux
Логотип Arch linux

Arch linux в своем чистом виде забава исключительно для красноглазых или тех, кто хочет ими стать. Однако свобода и гибкость линукса позволяют даже на этом создать самую дружелюбную на свете операционную систему, поэтому за SteamOS 3.0 переживать не стоит. Вообще отказ от Debian в пользу Arch понятен, ведь Арч в чистом виде это минимальный набор программ из которого можно слепить всякое, а потому именно от Valve зависит то какой будет SteamOS 3.0 и что важнее можно настроить систему на минимальное потребление ресурсов, что очень важно для портативки.

Одной из особенностей дистрибутива Arch linux является модель распространения обновлений rolling release. В отличие от крупных номерных обновлений, rolling release предполагает мелкие обновления по мере поступления. Это позволяет пользователю иметь последние версии программ и библиотек, но одновременно с этим дает шанс, что пользователь получит плохо протестированную версию программы и столкнется с ошибками. Впрочем на практике все выходит не так страшно и Arch на самом деле считается одним из самых стабильных дистрибутивов. Будет ли SteamOS использовать эту модель распространения обновлений не ясно.

В качестве менеджера пакетов Arch использует Pacman, а его официальные репозитории содержат множество программ. Помимо официального репозитория у Arch есть также AUR. AUR (Arch User Repository) это пользовательский репозиторий в котором пакеты программ собирают и публикуют обычные пользователи. Плюс - там есть практически все, минус - это пользовательский репозиторий, а это значит что туда в теории может проникнуть вредоносное ПО.

Будет ли возможность в SteamOS ставить программы из этих репозиториев снова не ясно у Valve тут есть два пути:

  • Оставить возможность ставить программы оттуда создав или использовав готовую графическую оболочку(магазин приложений)
  • Создать свой репозиторий и соответственно графическую оболочку(а возможно даже интегрировать ее в стимдековскую версию стима), и отправлять туда только протестированные на Steam Deck приложения.

Однако вне зависимости от пути, можно с уверенностью сказать, что AUR по понятным причинам будет отключен по умолчанию и неизвестно будет ли возможность в интерфейсе его легко включить.

Помимо Steam Big Picture очевидно запускаемой по умолчанию на старте этого устройства SteamOS будет использовать среду рабочего стола KDE Plasma 5. Сразу скажу, что не питаю к этому DE особой любви и этому есть множество причин. За всем блеском плоского и как бы современного интерфейса скрывается старый добрый(нет) интерфейс из нулевых. В итоге получается такой архаичный скелет на который кое как натянули новую шкуру. Хотя стоит признаться сделали это лучше чем в Windows 10 в котором новое и старое было в качестве отдельных вещей и в итоге оказалось два плеера, два браузера, две панели управления и.т.д..

Рабочий стол KDE Plasma 5
Рабочий стол KDE Plasma 5

Впрочем KDE пользуется популярностью ведь архаичность в linux сообществе очень ценится. Архаичность и малое потребление ресурсов, последнее конечно для портативки определенно плюс. Помимо этого KDE отличается гибкостью в настройке рабочего стола и панелей, что также ценится сообществом. И я тоже за гибкость, но вариант реализованный в KDE мне не очень нравится. И что более важно, я считаю он не очень подходит для массового пользователя. А ведь Steam Deck вроде как рассчитан именно на массового пользователя. Впрочем этот выбор скорее всего сделан не из-за красоты или удобства и как это все будет реализовано в SteamOS снова зависит от разработчиков Valve. Возможно они смогут отполировать и довести до ума это окружение.

В качестве графического сервера предположительно(я не нашел достоверной информации по этому поводу) будет выступать Wayland, который вот уже много лет медленно, но верно приходит на смену устаревшему X.org. Разработка Wayland была начата Кристианом Хогсбергом, но сейчас над ним работают даже ветераны X.org.

Я думаю нет смысла в подробном разборе отличий между ними. Скажу лишь коротко. X.org устаревший графический сервер. За четыре десятка лет(первая версия x windows system - 1984 год) он устарел и оброс огромным количеством нагромождений от кода которому уже десятки лет до современных костылей... огромного количества костылей. Как следствие этих награмождений большое количество ошибок при работе и сложность в разработке под иксами. Конечно его пытались привести в божеский вид, но полностью эту задачу выполнить практически невозможно.

Wayland напротив полагается на минималистичность. Что дает во-первых лучшую работоспособность, а во-вторых лучшую гибкость для разработчиков.

На самом деле нет такой диаграммы, которая смогла бы показать весь тот бардак, что творится в иксах.
На самом деле нет такой диаграммы, которая смогла бы показать весь тот бардак, что творится в иксах.

Короче говоря, если в линукс сообществе и есть споры(по каждому поводу), то точно не по поводу того, что X.org - must die. Однако это сложно. Это требует сильной переделки практически всего программного обеспечения, что очень замедляет введение wayland в дистрибутивах. Иногда в качестве временной заплатки используют компонент совместимости между X.org и Wayland - xWayland. И тут на сцену выходит одна из разработок Valve.

Gamescope ранее изветсный как steamcompmgr - микрокомпозинг разработанный Valve, специально для запуска игр. Основным его разработчиком является кодер Pierre-Loup Griffais. Главной особенностью ГеймСкопа выступает эмуляция отдельного дисплея для графических приложений приложений. Он работает поверх рабочего стола и не взаимодействует с ним, благодаря чему отдельный дисплей может обладать собственным разрешением, частотой обновления экрана и не иметь проблем с совместимостью. Помимо этого Gamescope использует асинхронные вычисления Vulkan для более быстрого вывода кадра на экран. Знаю возможно пользователей Windows не сильно впечатлит подобное описание, однако я уже неоднократно писал, что гейминг на линуксе достаточно молод и сейчас в основном силами Valve он развивается. При этом стоит уточнить, что сейчас ситуация с запуском игр в окне и полный экран не такая уж и плохая, просто хотят сделать еще лучше, что очень пригодится портативке от Габена.

Кстати, помните заявление разработчиков Steam Deck если конкретно, то как раз Пьера-Лу, что в устройстве будет возможность ограничить частоту кадров до 30? Так вот это будет возможно как раз благодаря Gamescope. Впрочем пока это забава исключительно для видеокарт от AMD. Но не потому, что Valve делает какие-то эксклюзивные технологии, а просто потому, что Nvidia не уделяет своим драйверам на Линуксе особого внимания.

Однако основным орудием Valve разумеется будет Proton. Proton - средство запуска win32 игр основанная на wine и всех его наработках (vkd3d, dxvk), а также собственных правках, и интегрированная в Steam. Запустился в 2018 году в качестве беты, изначально позволял запускать только небольшой протестированный список игр, однако достаточно быстро оброс всеми полезными функциями, такими как запуск любой игры из стимовской библиотеки, добавление сторонних .exe с последующим запуском через proton и выбором версии proton отдельно для каждой игры.

Он позволил решить самую главную проблему Линукса, отсутствие портов большинства игр, однако одновременно с этим подвергается критике за то, что отбирает мотивацию у разработчиков портировать игры на Linux. Это сложный вопрос. С одной стороны действительно так и даже недавно, упомянутая мной множество раз в цикле этих статей, Feral Interactive отменила порт Total War Saga: TROY как раз из-за нецелесообразности. Однако хоть и портировано было достаточно игр, этих портов было бы мало для игрового устройства и ждать энтузиазма разработчиков игр Valve не захотели, в конце концов это была одной из основных причин провала Steam Machine, а потому взяли все в свои руки и сейчас Proton запускает множество игр с приемлемым FPS. За что стоит сказать спасибо Vulkan.

Логотип... сами догадайтесь чего.
Логотип... сами догадайтесь чего.

Графический API Vulkan еще одно из орудий Габена в борьбе за заветные кадры в секунду. Впрочем орудие это не эксклюзивное оно доступно… да вообщем много где, но самое главное оно стало успешнее своего предшественника OpenGL. Если OpenGL на моей памяти из игр использовался в основном в продуктах ID software, то библиотека использующая Vulkan уже сейчас стала довольно обширной. RDR2, PoE, Baldur’s Gate 3, Tom Clancy’s Rainbow Six Siege, Mad Max, Dota 2, все последние игры от ID и.т.д. . Список этот будет расти, ведь вулкан особенно привлекателен своей кроссплатформенностью в отличие от конкурента DirectX 12 доступного только на Windows 10. Но самое главное на Vulkan основаны такие технологии как DXVK и VKD3D. Это трансляторы команд с DirectX на Vulkan и если не вдаваться в подробности, их появление и стало главной причиной успеха Proton от Valve, ведь именно благодаря им в разы повысилась совместимость и частота кадров в играх. Однако помимо всего этого есть еще кое что.

Google Stadia… наверное это последнее, что вы ожидали услышать в заметке про SteamOS, а зря. Ведь Стадия также использует Linux и Vulkan и платит(возможно уже нет) за порты приличные деньги. Но даже тем кто просто выпускает игры там неизбежно придется делать порт на эту платформу. И я не знаю есть ли какие-то условия запрещающие публиковать эти порты где-нибудь еще, скорее всего причиной их недоступности за пределами Стадии является низкая популярность Linux среди геймеров и отсутствие DRM в частности Denuvo, однако как минимум создание подобных портов увеличивает количество и опыт людей в работе с Vulkan и Linux, что определенно хорошо. И как знать, может какие-то из этих портов посетят Steam Deck.

Однако на этом программные плюшки от Габена не кончаются, ведь AMD чей процессор, вот удача, будет стоять в каждом Стим Деке, сделала открытые видеодрайвера Mesa. Благодаря открытому исходному коду каждый может дорабатывать эти драйвера и Valve в стороне не осталась выпустив новый компилятор шейдеров ACO вместо устаревшего LLVM. ACO быстрее выполняет компиляцию, что уменьшакет количество микрофризов в игре, а также увеличивает количество кадров в секунду.

Удивительно, долгое время на Линуксе не было нормальных драйверов на видеокарты AMD в то время как у Nvidia, они хоть были не идеальные, но достаточно неплохие. Сегодня же благодаря открытом коду AMD на Linux впереди.

Помимо этого сейчас Valve и AMD заняты модернизацией системы управления частотами процессоров AMD. На данный момент за это отвечает устаревший драйвер ACPI cpufreq. Основная цель этого мероприятия оптимизировать прозводительность/энергоэффективность иначе говоря выжимать максимум частот на ватт.

Примерно это Steam Deck собирается использовать, чтобы запускать игры с комфортом, хорошим фпс и высокой совместимостью без необходимости устанавливать windows на эту портативку. Как это все будет работать на практике увидим, но как можно видеть сейчас программисты Valve без работы не сидят. Что касается SteamOS 3.0 скорее всего она будет доступна для скачивания и для обычных компьютеров и возможно релиз этого дистрибутива состоится до релиза портативного ПК от Valve, чтобы пользователи могли вдоволь протестировать его.


Лучшие комментарии

AlexKnight 3 августа 2021, 18:11

Оказалось вентили помогают (линукс-) геймингу ещё сильнее чем я думал

Они практически в одно лицо подняли линукс гейминг из бездны. Они не то, что помогают, они его тащат на себе.

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

abysswa1ker 3 августа 2021, 17:00

Отличная статья

Не ожидал узнать что-то новое, но

сейчас Valve и AMD заняты модернизацией системы управления частотами процессоров AMD

стало для меня приятным сюрпризом

Я слышал только про futex sync. Оказалось вентили помогают (линукс-) геймингу ещё сильнее чем я думал (когда я уже не считал это возможным) 

Не могу дождаться выхода (или хоть беты) steam os 

phylinn386 7 августа 2021, 1:40

Отличный разбор)) Мое почтение)) Что удивило, AUR и в  Manjaro тоже по дефолту выключен. Там надо галочку ставить на разрешение «сторонних источников». Но при этом в GUI-шном поисковике потом отображается нормально.
Что там с вредоносным ПО под  Arch/Manjaro/SteamOS 3? Исходя из вашего опыта, какой шанс его подхватить (в том числе на портативку)?

Читай также