Почему Linux не для игр, на примере игры Control
Совсем недавно был выпущен дистрибутив Linux Chimbalix 23.1 Alphachi, и он показал себя весьма неплохо при запуске игр через Wine, естественно относительно других дистрибутивов Linux, однако тогда запускались относительно простые и старые игры, сейчас же мне захотелось запустить что-то более "весомое", и это будет игра Control:
реклама
Прямо в начале оставлю таблицу с характеристиками ПК, на котором буду запускать игру:
реклама
И вот, я уже запускаю DirectX 12 версию игры, но она ругается на проблемы с библиотеками, в папке с игрой нашёлся Microsoft Visual C++ 2017 Redistributable весом 14.5 МиБ, эх, вот бы софт для линукса всегда держал при себе подобные базовые зависимости, чтобы не приходилось танцевать с бубном при использовании линуксоидного софта... В общем устанавливаю VC Redist:
![]() |
![]() |
![]() |
Запускаю игру ещё раз:
Запустилось без проблем, собственно всё на этом, статья завершена, можно расходиться, Linux, оказывается, вполне пригоден для игр:
![]() |
![]() |
![]() |
![]() |
реклама
Ладно, ладно, Игра то запустилась, но как насчёт производительности? А вот здесь начинается пердолинг характерный для Linux, ибо в отличие от Windows, для Linux нет адекватных инструментов мониторинга производительности наподобие MSI Afterburner, а всё что есть, работает через задницу абы как наперекосяк, и утопает в зависимостях:
Так что нужны более адекватные инструменты для мониторинга под линуксом, которые точно будут работать нормально, а не как MangoHud - в одной игре работает, в трёх не работает, да ещё производительность порой снижает в 4 раза...
Хм... Точно!
реклама
Я ведь устанавливал полноценный драйвер видеокарты от NVIDIA (cuda_12.3.1_545.23.08_linux.run), а там в комплекте есть инструмент NVIDIA Nsight Compute, увы, но ничего более адекватного я пока не нашёл под линукс для мониторинга производительности:
Собирать буду системную информацию, а именно "GPU Context switch trace"
К сожалению, видеокарта слишком стара для полноценного сбора GPU метрики, но мы можем обойтись и без этого сейчас:
Отмечаем всё необходимое (и не очень):
![]() |
![]() |
Настраиваем запуск/остановку на горячую клавишу, нам ведь не нужно собирать статистику для навязчивых заставок при запуске игры...
Игра запущена, но статистика пока не собирается, нужно сходить в настройки для начала:
![]() |
![]() |
Разрешение 1920x1080, параметры качества максимальные доступные, MSAA сглаживание отключено, трассировка лучей включена:
![]() |
![]() |
![]() |
Запускаю сбор данных и делаю скриншот окна с игрой для последующего визуального сравнения:
![]() |
![]() |
Некоторое время статистика собиралась, теперь захожу в настройки и отключаю трассировку лучей:
![]() |
![]() |
Снова жду некоторое время, делаю контрольный скриншот окна с игрой, и завершаю сбор данных, игра при этом сама закрывается, неприятный к слову минус такого способа мониторинга:
![]() |
![]() |
Вот и результаты:
![]() |
![]() |
![]() |
Но давайте посмотрим на разницу в картинке с трассировкой лучей, и без:
![]() |
![]() |
Да, сразу пропали отражений предметов за пределами видимой области, но я не впечатлён, раньше и без прожорливого "Ray Tracing", и даже без DirectX 12 умели отражать всё что находилось за пределами экрана:
![]() |
![]() |
И работали эти все отражения на древних Radeon 9600/GeForce 6600 GT с приемлемым FPS, но что же сейчас? Правильно, сейчас имеем ~16.5 FPS на GeForce GTX 1070 с трассировкой лучей так "необходимых" для отражений:
![]() |
![]() |
Далее мы находились в главном меню, отключали Ray Tracing в настройках:
Без "лучей" производительность оказалась на уровне ~46 FPS, что почти в 3 раза больше, но недостаточно для комфортной игры:
В общем, GeForce GTX 1070 явно не позволяет играть на максимальных доступных настройках графики:
Но неужели всё настолько плохо, что GeForce GTX 1070 не способна в принципе потянуть данную игру? Конечно же нет, сбавляем немного настройки графики:
![]() |
![]() |
![]() |
И спокойно играем с хорошим по ощущениям FPS, который не доставляет проблем с управляемостью:
![]() |
![]() |
![]() |
![]() |
Давайте посмотрим что там происходило:
![]() |
![]() |
Итого получился FPS на уровне ~67 (примерно 62-73) с просадками до ~51, что позволяет комфортно играть:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ради интереса было решено запустить DX11 версию игры, но DXVK похоже облажался немного, или хрен знает что происходит, выглядит как отвал шрифтов, в любом случае неприятно:
![]() |
![]() |
Так как DXVK имеет встроенный модуль мониторинга производительности, перезапущу ещё раз игру:
Косяки никуда не исчезли, ничего удивительного, всё же находимся в среде Linux, но настройки вроде сохранились, зайдём в игру и посмотрим на производительность:
![]() |
![]() |
Хм, 75-84 FPS получилось в DirectX 11 режиме, что явно больше 62-73 FPS в режиме DirectX 12, похоже VKD3D отвечающий за DX12 API работает медленнее, чем DXVK отвечающий за DX9-11 API, ну или дело в самой игре:
![]() |
![]() |
Для разнообразия запущу игру в Windows 7, но для этого нужно скопировать файлы на раздел с NTFS файловой системой:
Не забываю про настройки игры и сохранения, чтобы сравнение проходило с одинаковыми параметрами качества:
Вот я и вернулся в старую добрую Windows 7, какое же приятное чувство от прекрасно работающей как швейцарские часы операционной системы, после Linux ощущение будто освободился от пыток, всё запускается моментально и работает можно сказать идеально:
![]() |
![]() |
![]() |
Запускаю игру, включаю мониторинг, проверяю настройки, всё прекрасно:
![]() |
![]() |
![]() |
Загружаю сохранение, и о чудо, под Windows 7 игра сразу же пробила отметку в 100 FPS, под Linux я и мечтать не мог о таких показателях с такими же настройками:
![]() |
![]() |
![]() |
Самое малое в игре под Windows 7 это 84 FPS, под Linux это было самое большое, что я видел... Ну и фреймтайм под старой "семёркой" получился идеален, хотя смотреть на график времени кадра когда ничего толком не происходит, ну такое:
![]() |
![]() |
![]() |
DirectX 12 версию Control я не могу просто так запустить на Windows 7, увы, но Microsoft знатно постарались с искусственными ограничениями для "неугодной" операционной системы, когда принудительно всех сгоняли на Windows 10, а нынче сгоняют на Windows 11:
Но так хочется побаловаться с трассировкой лучей перед уходом в Linux... Точно, есть же Quake II RTX, почему бы и нет?
![]() |
![]() |
![]() |
![]() |
![]() |
Теперь можно возвращаться в Linux...
![]() |
![]() |
На этом всё.
Наверняка некоторые линуксоиды начнут искать оправдания значительно более низкому FPS по сравнению с Windows 7, мол у меня дистрибутив не дистрибутив, DXVK неправильный, Wine не тот, библиотеки не такие, руки кривые, видеокарта плохая и т.п., но я не собираюсь искать никаких оправданий.
Чтобы запустить игру в Linux, нужно изрядно потанцевать с бубном и засрать мозги решением множества проблем, тем временем на стороне Windows 7 можно просто запустить игру и спокойно играть, а если нужно, так же легко запускается MSI Afterburner и на экране появляется шикарный мониторинг производительности, до которого линуксоидным аналогам пердеть и пердеть ещё очень далеко.
Да, линуксы могут запускать игры, но пока что я не вижу чем тут можно гордиться, увы.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила