Записки дилетанта. Играем в GNU/Linux с видеокартой от NVIDIA

Двадцатилетию МИРа NVIDIA посвящается

Вместо предисловия

Если бы мне 10 лет назад сказали, что я буду активно пользоваться системами на базе GNU/Linux, я бы расценил это как неплохую шутку. Но время шло, текущая версия Windows все меньше и меньше подходила для моего, довольно пожилого «железа», а обновления могли запросто испортить вечер или сделать его очень даже не томным. Впрочем, пользователи самой популярной ОС и без меня прекрасно знают к чему, иногда, приводят апдейты. Особенно урожайным на проблемы выдался 2020 год.

И в один прекрасный день я решил попробовать на своей шкуре, что же представляют, так называемые, «юзерфрендли» дистрибутивы и остановился на одном из самых популярных — Linux Mint. Он мне показался наиболее подходящим именно для моих задач, и сколько я не пробовал другие варианты, все время возвращался к первоначальному выбору. Все-таки, стереотип как должна выглядеть ОС срабатывает, и с этим сложно бороться. А Mint уж очень похож на то, к чему я привык за последние 25 лет. Скорость работы системы меня приятно удивила. Ноутбук 2012 года выпуска буквально полетел как самолет. И выбор был сделан. Вскоре я пришел к выводу, что Windows мне не нужен ни на работе, ни на стационарном компьютере дома. Практически сразу же я определился с необходимыми приложениями (оказалось, что почти все есть в Менеджере программ) и довольно быстро нашел способы установки необходимых Windows-программ.

Но иногда хочется и поиграть. Как оказалось, все не так плохо, как ожидалось. Особенно, если не гнаться за свежими играми. Кроме этого, выяснилось, что отдельные игроделы практически одновременно выпускают сразу версии под все «операционки». Здесь тоже нет проблем с запуском. Не будем сбрасывать со счетов и многочисленных энтузиастов Linux, которые выкладывают в сети уже готовые скрипты для запуска той или иной игры.

В данной статье попытаемся рассмотреть способы запуска Windows-игр (и просто игр) глазами неподготовленного пользователя, то есть, обычного «некомпьютерного» жителя планеты Земля.

Технологии и приложения для запуска

Не хочу перегружать читателей излишними теоретическими выкладками, но без некоторого их количества никак не обойтись для объяснения самого процесса запуска Windows-игр (да и просто приложений) в GNU/Linux.

А начнем мы с Wine. Первоначально название расшифровывалось как аббревиатура от Wine Is Not an Emulator (Wine не эмулятор). Это слой совместимости (скажем так, набор библиотек), позволяющий запускать приложения Windows в нескольких POSIX-совместимых операционных системах, таких как Linux, macOS и BSD. Вместо имитации внутренней логики Windows, такой как виртуальная машина или эмулятор, Wine транслирует вызовы Windows API в вызовы POSIX на лету, устраняя потери производительности и памяти, связанные с другими методами, и позволяя вам полностью интегрировать приложения Windows в ваш рабочий стол.

Информацию о совместимости приложений и игр, как и свежие версии Wine можно найти на сайте https://www.winehq.org/.

Что же касается конкретно видеоподсистемы, то вызовы DirectX транслируются в OpenGL «на лету», что нередко приводит к некоторой потери производительности. Иногда весьма существенной. Но, в большинстве случаев, это единственный способ запустить любимую Windows-игру. Случаются, правда, и чудеса, когда, при определенных условиях, программы показывают и более высокую производительность.

Как и многое ПО в Linux, Wine предоставляется без графической оболочки и довольно сложно для понимания для рядового пользователя. Но, как я уже сказал выше, для популяризации системы и привлечения менее опытных, чем системные администраторы пользователей, сообществом предпринимаются определенные усилия в части создания различных графических оболочек для работы с Wine. Рассмотрим некоторые из них.

PlayOnLinux (POL). Название можно перевести как «играй на Линукс». Это front-end приложение для Wine, запускающее скрипты с уже готовыми настройками для старта Windows приложений. При этом для каждого приложения создается свой виртуальный диск, устанавливается конкретная версия Wine, обеспечивающая стабильность работы именно этой программы. При этом совершенно неважно, какая версия Wine установлена в системе.

Окно выбора устанавливаемого приложения

Требуемые от пользователя действия для развертывания минимальны. В большинстве случаев требуется лишь следовать указаниям инсталлятора.

Winetricks. Крайне полезная утилита для настройки префикса Wine и для облегчения установки, необходимых той или иной программе, компонентов или DLL-библиотек.

Внешний вид программы. Минималистичность по сравнению с PlayOnLinux очевидна

На мой взгляд, это более сложная для новичка программа, требующая определенных базовых знаний, как это работает. Но зато она имеет достаточно много поклонников, что способствует, несомненно ее популяризации. Вообще — в случае с Unix-программами — чем больше пользовательское комьюнити (чем больше людей пользуется программой и участвует в ее развитии), тем проще ее установить, настроить, получить обратную связь в случае каких-то затруднений, что, несомненно важно, особенно для тех, кто только делает робкие шаги в стране Unix.

CrossOver. Программа, позволяющая запускать многие приложения, написанные для Microsoft Windows в операционной системе Linux. CrossOver создаётся компанией CodeWeavers на основе исходных кодов свободного аналога — Wine. При этом сам он является коммерческим продуктом. Разработчики добавляют собственные «заплатки», а также графические утилиты конфигурации. Кроме того компания регулярно нанимает нескольких разработчиков Wine для развития своего коммерческого продукта, а затем внедряет многие свои наработки в свободный проект, чем вносит большой вклад в его развитие.

CrossOver. Внешний вид программы

Приложение очень лояльно к неподготовленному пользователю. Однако, лояльность не бесплатна. Разработчики хотят от 30 до 50 долларов за годовую подписку. Если учесть, что за сами игры тоже нужно платить, а лицензия Windows стоит от 110 долларов, то возникает мысль о том, что надо очень сильно любить данное специальное ПО, чтобы преодолевать трудности и делать это еще и небесплатно для себя.

Vulkan (Вулкан). Это графический и вычислительный API нового поколения, который обеспечивает высокоэффективный кроссплатформенный доступ к современным графическим процессорам, используемым в самых разных устройствах, от ПК и консолей до мобильных телефонов и встроенных платформ. При этом, совершенно неважно какая у вас «операционка». Vulkan SDK доступен разработчикам совершенно бесплатно, оказывается и техническая поддержка. Игры, разработанные с применением API Vulkan довольно легко портируются или сразу же доступны для ОС Linux. При этом совершенно нет разницы в производительности по сравнению с работой под Windows. Например, DOOM Enternal изначально использовал API Vulkan, что позволяет присвоить ему золотой статус совместимости. Но есть довольно большая ложка дегтя — нужны еще драйвер и видеокарта NVIDIA, поддерживающие эту технологию.

А это, как минимум, архитектура Kepler (GeForce GT 630, GeForce MX110 и выше) и драйвер NVIDIA 415.22 или более старших версий. Это обстоятельство вызывает вселенскую грусть у владельцев более старого «железа». Например, все эти прелести недоступны для моей GeForce GT 555M, установленной в ноутбуке. И еще одна видеокарта осталась за бортом прогресса — GeForce GTX 550 Ti. Счастье улыбнулось только GeForce GTX 660 на которой и запускаются игры с поддержкой Vulkan. И это непривычная ситуация для пользователей Linux, который славился лояльностью к старому оборудованию.

Стоит упомянуть и проект DXVK. Он может применяться для запуска 3D-приложений и игр в Linux при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенной в Wine реализации Direct3D 11, работающей поверх OpenGL. В некоторых играх производительность связки Wine+DXVK отличается от запуска в Windows всего на 10-20%, в то время как при использовании реализации Direct3D 11 на базе OpenGL производительность снижается более сильно. Для использования DXVK снова требуется наличие драйверов с поддержкой API Vulkan. И снова, увы — многим придется просто тихо завидовать более свежим решениям.

Самое обидное в том, что игры, которые невозможно запустить в Linux на древнем оборудовании, спокойно запускаются и работают в той самой, всеми ругаемой, Windows 10.

Но венцом эволюции я бы назвал инструмент для запуска от компании Valve — Proton. Непосредственно Proton предназначен для интеграции в клиент Steam как «Steam Play», что обеспечивает бесперебойную работу Windows игр и программного обеспечения в Steam, но его можно использовать и как отдельное приложение. Он обеспечивает реализации DirectX 11 (на базе DXVK) и DirectX 12 (на базе vk3d), работающие через трансляцию вызовов DirectX в API Vulkan, что позволяет снизить негативное влияние на производительность и улучшить совместимость с играми.

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

Проверяем на себе

Не мудрствуя лукаво, для неподготовленного пользователя я бы рекомендовал использовать клиент Steam от компании Valve. В этом есть определенный резон, поскольку разработчики этого приложения сделали максимально комфортным жизнь начинающего линуксоида-геймера. Кстати, количество игр с поддержкой Линукс достигло впечатляющих 7,5 тысяч и постоянно увеличивается. Возможно, количество скоро перерастет в качество, и мы увидим больше проектов рейтинга ААА, доступных для запуска без различных дополнительных действий.

А что делать со сторонними играми и приложениями, если я хочу без лишних усилий запускать их с помощью Proton? Просто добавить их в клиент Steam.

Удобное и понятное меню для добавления программы

Ниже я привожу список игр, участвующих в эксперименте. И постараюсь кратко описать результаты запуска на различных системах с поддержкой Vulkan и без.

Список игр в Steam

Armada: Modern Tanks, Tank Force, The Pirate имеют нативную поддержку Linux «из коробки» да и графическая составляющая там не особо продвинута, что позволяет даже не запускать дискретную видеокарту на своем ноутбуке для комфортной игры в любой ОС.

War Thunder, Everspace сразу стартуют без танцев с бубном (есть поддержка Linux), но комфортной игру на GeForce GT 555M не назовешь из-за откровенной слабости видеокарты. Но совершенно так же игры ведут себя и в Windows. Не стану называть это недостатком, так как игры запустились и работали. То есть, игры заработают на любой видеокарте и проблемой будет только их производительность, а не возможность запуска.

Dirt Rally, Mad Max портированы командой Valve для Linux. Запускаются на любом железе, но играть на GeForce GT 555M опять невозможно. В Windows вполне сносно на минимальных настройках, ведь игры довольно пожилые и не очень требовательные к железу. А GeForce GTX 660 щелкает их как семечки, вне зависимости от ОС. На лицо проблемы потери производительности при использовании слоев совместимости Wine на не очень мощных ПК.

Lara Croft, Fallout 4 не имеют портов под Linux. Я их запускал при помощи текущей версии Proton, пробовал играть с различными версиями. Заработали игры только на GeForce GTX 660 с поддержкой новых технологий и без каких либо дополнительных телодвижений. На старом железе данные игры просто не стартуют.

World of Tanks BLITZ сперва закапризничал и отказался запускаться, чем меня крайне удивил, так как работает игра, в том числе, и на Android, а это, скажем так, дружественная система для Linux. Пришлось методично подбирать версию Proton:

Настройки, на которых удалось запустить WOT BLITZ

Заработала игра только на GeForce GTX 660. На старом железе просто стартует или выдает ошибки, жалуясь на отсутствие библиотек и тут же падает. Это обидно вдвойне, так как разработчики игры явно не чужие остальным жителям СНГ с штаб-квартирой в Минске. То есть, они прекрасно представляют себе финансовые возможности населения. Да и покупать OS Windows ради пары игрушек такое себе удовольствие, знаете ли. Проще найти альтернативу, коих развелось превеликое множество, и выбрать наиболее интересный вариант.

Совсем другое впечатление оставляют ребята из Atom Team, явно не страдающие звездной болезнью и кровно заинтересованные в продвижения своих игр. Лично я большой поклонник их творчества (серия Atom RPG создана явно с оглядкой на серию Fallout, а именно на 1 и 2 её часть) и мне вдвойне приятно, что разработчики предусмотрели возможность запуска на всех системах независимо от аппаратного обеспечения. Браво!

Перед запуском есть возможность выбора варианта обработки графики: Vulkan дает большую производительность, а OpenGL лучшую совместимость с оборудованием

Вместо заключения

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

Времена, когда Linux был уделом бородатых юношей в драных свитерах ушли в прошлое. Не смотря на то, что эта ОС, все-таки, пока не дотягивает до удобства ванильных операционных систем, покупка компьютера без операционной системы Windows или ноутбука с какой-нибудь предустановленной Ubuntu или Deepin обычным человеком уже не кажется странным. Тем более, не кажется странным установка не пиратской копии Windows, а какого-нибудь дистрибутива GNU/Linux. Помимо финансовой составляющей, менее требовательная и более безопасная ОС может быть прекрасным вариантом как для домашнего, так и для рабочего компьютера.

А наличие программного обеспечения для запуска различных игр, в будущем, сможет увеличить популярность ОС. И когда-нибудь бесконечная петля «Linux непопулярен, потому что нет прикладного ПО и игр, а их нет потому, что Linux непопулярен», в конце-концов, разорвется.

Вопросы? Поправки? Комментарии? — в нашей конференции.

Максим Сергеев (max_sever)