LINUX.ORG.RU
ФорумGames

Вот почему нет смысла в нативных играх

 , ,


1

2

Решил тут провести эксперимент. Я всегда знал что OpenGL сильно сливает Vulkan-у. Но тут меня результат сильно удивил.

Superposition Benchmark запсутил с одинаковыми настройками нативную OpenGL версию и виндовую DirectX версию через proton ge 10.3

Железо написано на скринах, но продублирую: Ryzen 9 7900x, RX 7900GRE, 32 GB. Nobara 42, KDE, Wayland. Взял Uningine

И вот результаты

Натив OpenGL: https://postimg.cc/SnMHKtY7

Proton DXVK: https://postimg.cc/Y4BZLf1c

Разница как говорится налицо. И для свидетелей «что там не прорисовывается» я несколько раз прогонял тесты друг за другом чтобы максимально визуально сравнить картинки, разницы я не увидел, тени, свет, отражения, эффекты полупрозрачности и т.д. все абсолютно одинаково.

★★★

Последнее исправление: CrX (всего исправлений: 1)

Всё так. Очевидно, OpenGL будет хуже Vulkan'а. Последний — более совершенная технология. OpenGL имеет смысл использовать на железе, которое не умеет в Vulkan.

posixbit ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Да нет, это правда. Во всех случаях vulkan-реализация быстрее OpenGL. А в некоторых случаях vulkan-реализация (да, даже DXVK) быстрее, чем обычная виндовая DirectX (т. к. альтернативно реализуется WinAPI, что в некоторых случаях заметно улучшает работу игры). Особенно заметно на старых играх. Например, Fallout 3/New Vegas, GTA IV и др.

posixbit ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Я тебе наглядно показал разницу. Я поэтому даже купленные в стиме ETS и ATS несмотря на наличие нативной версии запускаю через proton. В нативной OpenGL версии фпс прямо заметно ниже чем при запуске виндовой версии через proton.

AleksK ★★★
() автор топика
Ответ на: комментарий от AleksK

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

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

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

AleksK ★★★
() автор топика

Я всегда знал что OpenGL сильно сливает Vulkan-у.

Вряд ли это является большой проблемой. Старые нативные игры даже с OpenGL бодро бегают на нынешних видеокартах и выдают сотни фпс. А новые нативные игры скорее всего уже используют вулкан. Здесь интереснее было бы сравнить нативный порт какой-нибудь ААА игры с вулкан рендерером против виндузячьего порта с протоном. Например Civilization VII или что там еще выходило нативно в последний год.

Проблема нативных игр скорее в том, что Win32 - это единственный стабильный API на Linux. Нативные игры запросто могут отвалиться через несколько лет после релиза из-за очередного обновления glibc или других библиотек, а виндузячья версия преспокойно продолжит работать через протон. Я так с запуском Anomaly Warzone Earth пердолился. Точно помню, что 10 лет назад она отлично запускалась, а на современных дистрах намертво виснет при загрузке уровня. Фикс эталонно красноглазый - нужно канпелять so-библиотеку из исходников и подсовывать ее игре через LD_PRELOAD. Либо запускать через протон, где все просто работает.

archie
()
Ответ на: комментарий от vbr

Есть. Пришлось даже ради этого ядро патчить. Только недавно в 6.14 появилась поддержка специфических для винды примитивов синхронизации, которые невозможно было реализовать в wine без значительных потерь производительности.

https://www.phoronix.com/news/Linux-6.14-NTSYNC-Driver-Ready

gag ★★★★★
()
Ответ на: комментарий от vbr

Есть. API Open GL было придумано очень давно. С тех пор архитектура видеокарт сильно поменялась, а API Open GL не особо. Отсюда выходит то что выходит.

ЗЫ, ну и смысл в нативных играх есть. Не open gl единым жив линукс в 2025 то году. И dxvk наглядно это демонстрирует

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от vbr

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

s-warus ★★★★
()

Если не лень перетести еще с Zink`ом. Интересно сравнить результаты. Помнится он одно время бурно развивался и периодически новости были что он в очередной раз ускорился.

Это mesa OpenGL драйвер который использует вулкан. Нужен в случаях когда для железки есть вулкан драйвер а OpenGL нет.

Запускать:

MESA_LOADER_DRIVER_OVERRIDE=zink glxinfo

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Потестил сам. У меня получились отличные от ТСа результаты.

Натив 18310 https://grantipak.ru/s/BJJ3Akex5Hptbnx

Zink 16387 https://grantipak.ru/s/afX4KSND2tDBAni

DirectX 18522 https://grantipak.ru/s/HQqzEyx8fsWZagB

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 2)

Точка в заголовке — в принципе, дальше читать уже мало смысла, но попробуем, мало ли.

«OpenGL медленный, значит, нативные игры не нужны» — какая-то альтернативная логика просто, учитывая что есть Vulkan. Примерно как «на Windows игры не нужны, потому что DX11 говно».

ATS, ETS2

Они и на винде работают плохо, движку 16 лет.

anonymous
()

Самое забавное начинается когда та же CS2 в нативе потребляет сильно больше памяти виндовой версии и при этом лишь слегка быстрее работает. А вообще нужны конечно нативные версии. Странно что их делят на версии имея графический Vulkan одинаковый для обеих платформ и разработка может вестись сразу универсально и для соснолей и для ПК на винде с линуксом. Вот собачий Metal в макакос это отдельное убожество - там есть повод трясти бабло за нативную версию. Так что вывод некорректный потому что некорректно выставлен вопрос. Потому что Vulkan тоже нативный для линукс.

anonymous
()
Ответ на: комментарий от Behem0th

О боже, ну сколько можно тормозить? Vulkan интересен, а не то что кто-то обкакался и получил отличные результаты. С разницей в десять тысяч в пользу булкана все другие АПИ идут лесом в этом тесте, а может и просто лесом на видеокартах с поддержкой вулкана. И вообще вулкан позволяет даже винде жить хоть сейчас, если драйвера есть на 7-ку или 8-ку, потому что вулкан не подчиняется менеджерам некрософта напрямую и то что в 7-ку, а то и в висту с кернелех можно установить драйвер с вулканом делает их по сути современными операционными системами. Vista живее всех живых - это ли не мечта? Патчи безопасности приходят. Ровно такие же, а то и большие улучшения происходят на линуксе, потому что меньше кода надо обработать на одну и ту же операцию. Что за запор у регистрантов пошел? Откуда это вообще? Они думают что они после регистрации сразу тертыми линуксоидами становятся?

anonymous
()
Ответ на: комментарий от s-warus

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

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

вулкан версия работала куда быстрее директикса

Оно там случайно не за счет большего количества выжираемой видеопамяти работало быстрее? Нужно чекнуть сколько видеопамяти потребляется и сравнить.

Правда вот краши были куда чаще у вулкана

Краш может наступать когда видеопамять кончается.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Оно там случайно не за счет большего количества выжираемой видеопамяти работало быстрее?

Не.

Краш может наступать когда видеопамять кончается.

Может, но мне так не кажется, т.к. крашилось одинаково на разных видяхах с разным объёмом видеопамяти. И на 4 гигах и на 16.

Причина вся в том, что vulkan более низкоуровневое API чем OpenGL или DirectX. А OpenGL в онтопике через жопу сделан, особенно если через родной драйвер от мелкомягких работает. Т.е. в вулкане больше писанины и места где можно накосячить, но можно сильнее оптимизации провести.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Суть в том что для DirectX игр используется DXVK (до DX11 включительно) или VKD3D (DX12), т. е. DirectX транслируется в Vulkan. И вот тут есть одна засада: Vulkan пока не умеет автоматически освобождать видеопамять при её переполнении, если разработчик движка игры такого явно не предусмотрел в этой сцене например.

В виндовой реализации DirectX при исчерпании видеопамяти – что с видеокартами на 4 Гб и меньше происходит очень и очень быстро – кроме видеопамяти, начинает использоваться память системная. Это, конечно, сажает производительность, но при наличии быстрой PCI-E (хотя бы 3 поколения и двухканальной памяти хотя бы DDR 3) это не приводит к катастрофической потере играбельности. А главное – это происходит автоматически и прозрачно для движка игры.

В Vulkan, в который транслируются DirectX-вызовы, соответствующий механизм пока не реализован, поэтому при исчерпании видеопамяти начинаются сильные просадки FPS и фризы (до 5-10 кадров). В среднем новые игры сейчас рассчитаны на 8+ Гб видеопамяти.

posixbit ★★★
()
Ответ на: комментарий от anonymous

Ничего не понял в твоем потоке слов.

Мне было интересно сравнить натив OpenGL и Zink. Я попросил сравнить автора на его видюхе. Пока ждал ответа провел свои тесты и поделился результатами.

Почем тут 7ка, 8ка, виста? Мне они совершенно не интересны.

Behem0th ★★★★★
()

Тему правильней озаглавить «Вот почем нет смысла в играх на Opengl»

Opengl давно-предавно перестал развиваться и перешел в legacy-статус. Напомню: последнее мажорное обновление, он получал в 2017. А до него, всего-ничего, в 2013.

Поэтому и неудивительно , что вендоры не стремятся улучшать поддержку. Реализовали на сколько-нибудь приемлемом уровне, для обеспечения функциональности legacy-продуктов — и баста.

Посмотри на современные игровые движки, или системные фреймворки QT6/GTK4: они изначально проектировались с упором именно в vulkan.

hargard ★★★
()
Ответ на: комментарий от Behem0th

Скажем так, когда вулкан работает исправно более высокоуровневые реализации в принципе ненужны. Это было верно и 25 лет назад когда OpenGL, Direct3D и Glide конкурировали. Уже тогда сравнивали OpenGL с его 5600 строками кода необходимых к обработке одного и того же вывода на экран с 3100 строками кода в Direct3D и 1500 строками в Glide. То есть Glide был по сути более низкоуровневым, хоть и предоставлял меньше функций. OpenGL держался за счет опережения Direct3D по количеству реализованных функций, хоть и работал медленно. Потом DirectX 12+ разросся и по сути перерос OpenGL, став более многопоточным и поближе к низкоуровневости. После этого производители подумали, что сидеть на игле мелкомягких не круто и запилили Vulkan, который успешно занял место Glide и является самым низкоуровневым, но при этом открытым и весьма фичастым, хоть до версии 1.4 расширения, которые есть набор тех самых функций не были обязательными к поддержке, а теперь стали обязательны. То есть Vulkan уже по сути стабильно работает и программисты уже могли научиться с ним работать. В этом свете упоминать высокоуровневые реализации просто бессмысленно - они будут плюс-минус равны и будут теми же яйцами что и вид сбоку - самого главного, то есть прироста производительности не будет. Это бессмысленно нагружать процессор просто так пустой работой. Я уже давно не видел особого прироста от версий OpenGL. Разве что всякие Quake и Doom в него все еще могли. Но никто в своем уме не станет их использовать потому что опять же - производительность на нуле. В случае видеокарт разница в 30% производительности равна разнице в 3,5 раза по потреблению на моей видеокарте, то есть 26 ватт против 85-90. Так что эти 40% прироста на деле приведут к разнице еще большей и к примеру та же видеокарта будет работать пассивно, потребляя при этом 16 ватт. То есть это все не просто голые циферки, а очень важный параметр, позволяющий выбирать режимы работы видеокарты в зависимости от желаемого уровня производительности. Это как если у тебя вдруг появится выбор на обед не только жрать каждый день овсянку, а сразу первое, второе, третье, да еще и малиновый компот!

anonymous
()
Ответ на: комментарий от archie

Нативные игры запросто могут отвалиться через несколько лет после релиза из-за очередного обновления glibc или других библиотек

Так что мешает их пересобрать?

Xenius ★★★★★
()
Ответ на: комментарий от peregrine

я рад что так, сам отценить не могу. Ибо поглупел-постарел давно не практик, с дочей майнкрафт-майнтест и zsnes (эмулятор приставок) рубимся не более.

s-warus ★★★★
()
Ответ на: комментарий от archie

Проблема нативных игр скорее в том, что Win32 - это единственный стабильный API на Linux. Нативные игры запросто могут отвалиться через несколько лет после релиза из-за очередного обновления glibc или других библиотек,

Возможно, но… в первой половине 10-х я покупал много всяких humble indie bundle, год назад нашел пару бинарников, поиграл в Atom Zombie Smasher и SpaceChem, пока норм :)

Aber ★★★★★
()
Ответ на: комментарий от Behem0th

Если не лень перетести еще с Zink`ом. Интересно сравнить результаты. Помнится он одно время бурно развивался и периодически новости были что он в очередной раз ускорился.

Сделал только хуже

https://postimg.cc/w1NH99Nx

AleksK ★★★
() автор топика
Ответ на: комментарий от Xenius

Так что мешает их пересобрать?

Проприетарность? Бинарник ты никак не пересоберешь, а на патчи разрабы рано или поздно забивают, особенно на порт под онтопик. Разве что всякие туксрейсеры можно в любое время переканпелять.

archie
()
Ответ на: комментарий от AleksK

Сделал только хуже

Как и в моем случае. Возможно это максимум производительности которую можно получить от этого драйвера.

Странно что у нас очень близкие результаты. Что OpenGL что Zink. Хотя у тебя карта и новее и топ в отличии от моей. И только в DX у тебя заметно вырывается вперед.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Странно что у нас очень близкие результаты. Что OpenGL что Zink. Хотя у тебя карта и новее и топ в отличии от моей. И только в DX у тебя заметно вырывается вперед.

Нет с твоими настройками у меня вот так

https://postimg.cc/FdrhrF7L

https://postimg.cc/VrKmdyCH

AleksK ★★★
() автор топика
Ответ на: комментарий от hobbit

Так исходя из текста заголовок должен быть «Вот почему нет смысла в OpenGL-играх при живом Vulkan», а не «нативных»?

А много есть нативных игр для линукс использующих vulkan? Больших я особо и не знаю.

AleksK ★★★
() автор топика
Ответ на: комментарий от AleksK

А много есть нативных игр для линукс использующих vulkan? Больших я особо и не знаю.

Baldur’s Gate 3, Dota 2, Counter-Strike 2, Total War: Three Kingdoms, Life is Strange 2 я вобщем-то не особо играю в ААА. Но в общем-то с удивлением обнаружил, что твоя претензия таки валидная даже для инди игр, большинство игроделов ленятся сделать линукс билд даже если это юнити или unreal engine, а старые игры, у которых есть линукс билд вобщем-то под opengl.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Вот тут человек расписал как его плющило от перехода с OpenGL без выбора вариантов, пока не был реализован MoltenVK для макоси. Там он писал что это большая проблема ААА игр когда они делают реализации под конкретную ось и потому целился в маленькой фирме сразу на OpenGL, а впоследствии на Vulkan.

https://blog.nap-labs.tech/d0/dfd/md_articles_001_nap_opengl_to_vulkan.html

Таким образом Zink не слишком быстро работает и используется вроде как когда нет драйвера OpenGL. Но это хрен пойми как работает, потому что нужна полноценная реализация с принудительной компиляцией шедеров с их принудительным сохранением, чтобы разработчики не решали что стоит сохранить в готовом виде и собирать не на ходу. Иначе вместо вулкана получаем просто работоспособный клон OpenGL. У меня когда The Finals через задницу запускался, не компилля шейдеры, то при любом движении камеры фпс падал сразу в несколько раз из-за отсутствия кеша этих самых шейдеров. Оно могло бы взлететь, но явно не в таком виде. Самому вулкану тоже требуется своя ручная коробка передач чтобы не давать возможности разработчикам вмешиваться в это дело. Просто когда у тебя высокий фпс это еще сильнее бьет по производительности. А когда мало, то получается просто все медленно работает. По итогу нужно не на ходу собирать, а один раз дать просраться. Ну кто в своем уме будет компилировать Gentoo на ходу? Набрал команду, а система тебе «ща, я тут соберу полтора гига исходников».

anonymous
()

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

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от archie

Проприетарность? Бинарник ты никак не пересоберешь

Так бери свободные нативные игры. Или хотя бы с открытым движком и проприетарными ресурсами, такие тоже есть.

Xenius ★★★★★
()