Аналог directx для linux

Обновлено: 06.07.2024

Рассмотрев реализацию на стороне драйвера для DirectX API на системах Windows для современных видеокарт, мне стало интересно, почему эта реализация недоступна для системы, отличной от Windows, особенно Linux.

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

Можно ли создать версию DirectX с открытым исходным кодом? Было бы возможно, но неприлично сложно?

AFAIK, DirectX содержит 3 части

  • Драйвер поставщика (предоставить API низкого уровня, определенный DX)
  • Библиотека DirectX (используйте API низкого уровня, определенный DX для доступа к оборудованию, предоставляйте DirectX API)
  • Программное обеспечение (используйте DirectX API, например, игру)

Нет драйвера, предоставляющего API низкого уровня, определенный DX на Linux, поэтому даже можно предоставить библиотеку DirectX, но он не будет работать без надлежащего драйвера поставщика, и я не вижу, есть ли какие-либо поставщик собирается создать его для своей аппаратной платформы.

Почему бы просто не использовать OpenGL? Он поддерживает все функции DirectX. У вас есть конкретная причина использовать DirectX? По какой-то причине, Microsoft сделала DirectX, и я думаю, что они не видели необходимости запускать ее в Linux.

Вы можете запускать DirectX-игры в Linux, используя Wine. Вы можете программировать XNA в Linux, используя MonoGame. Но все они используют OpenGL для аппаратного ускорения рендеринга. AFAIK, OpenGL был (и, вероятно, будет) единственным вариантом на Linux в обозримом будущем.

Можно ли написать собственную реализацию DirectX? Конечно, но это включает в себя написание драйверов, проприетарные знания и, вероятно, слишком большие затраты, чтобы кто-либо ДЕЙСТВИТЕЛЬНО извлекал из этого пользу.

ОБНОВЛЕНИЕ: В наши дни DXVK - это очень реальный и эффективный способ запуска приложений DirectX в Linux.

Работа по созданию порта для DirectX создаст те же проблемы, с которыми вы сталкиваетесь в WINE. Он никогда не будет таким же, как в Windows. Исходя из этого принципа, вам нужно будет изучить OpenGL и связанные с ним многоплатформенные библиотеки.

В этот самый момент WINE будет вашим самым близким носителем, если вы хотите что-то сделать с кодом DirectX, который у вас уже есть. Опять же, я не уверен, каким образом Visual Studio или обычная типизация помогут вам ближе к свободной среде. Библиотеки WINE не так уж далеки от родной, но всегда существует эмуляция, что приемлемо для определенного момента в моем честном мнении.

Если я посмотрю, как великолепно Final Fantasy XIV работал с полными настройками на моем iMac (2011), я думаю, что не так уж плохо полагаться на реализацию WINE. Игра точно отображается как на Bootcamp (Windows) на моем iMac.

Если вы действительно хотите работать на этом фронте, вы можете попытаться спросить WINE Devs на своих форумах или списках рассылки, как вы могли бы использовать реализацию своей совместимости DirectX и использовать это в своем проекте. Где вы, возможно, можете вызывать библиотеки, а не запрашивать DirectX через эмулируемые Windows системные вызовы.

Изменить: я полностью согласен с ответом user956030.

DirectX - это костюм API:

  • Direct3D (рисунок 3D-графики)
  • инфраструктура DirectX Graphics (перечисление адаптеров и мониторов и управление цепочками подкачки)
  • Direct2D (рисование 2D-графики)
  • DirectWrite (шрифты)
  • DirectCompute (GPU Computing)
  • DirectSound3D (воспроизведение 3D-звуков)
  • DirectX Media (DirectAnimation для 2D/3D веб-анимации, DirectShow для воспроизведения мультимедиа и потокового мультимедиа, DirectX Transform для веб-интерактивности и Direct3D Retained Mode для 3D-графики более высокого уровня).
  • Диагностика DirectX (инструмент для диагностики и генерации отчетов о компонентах, связанных с DirectX, таких как аудио, видео и драйверы ввода)
  • Объекты DirectX Media (поддержка потоковых объектов, таких как кодеры, декодеры и эффекты)
  • DirectSetup (установка компонентов DirectX и обнаружение текущей версии DirectX)

Компоненты DirectX устарели, но все еще поддерживаются

Как вы можете видеть, многие части API-интерфейса DirectX должны быть переписаны с функциональностью драйверов, написанных для Linux. Кроме того, некоторые части костюма DirectX, вероятно, будут звонить в ОС Windows, и этот код придется переписывать для машины Linux без нарушения копий частей DirectX или ОС Windows.

Да, вы могли бы написать API-интерфейс с открытым исходным кодом, который делает то же самое, что и DirectX для Linux, однако без больших знаний о звуковых и графических драйверах/поддержке со стороны их производителей для Linux было бы очень сложной задачей: сделать.

Однако, если вы задали вопрос, было больше: "Могу ли я получить/написать что-нибудь, чтобы иметь возможность запускать игры и программы, созданные с помощью DirectX для работы в Linux?" в этом смысле, короче говоря, из-за более вероятного нарушения авторских прав.


Решил написать небольшую статью, о всех тяготах и лишениях линукс гейминга, а заодно расписать процесс установки игр с парочкой приемов упрощающих жизнь. По крайней мере таков был изначальный замысел, сказать пару слов про историю и перейти сразу к делу. Но история сказала «парой слов не обойдешься!», поэтому я удивленный тем, что история разговаривает и еще более удивленный 7 страницами текста с размером шрифта 11 в Goole Docs распилил эту статью на две части. Первая будет посвящена соответственно истории и теории(ну и немного моим мнением и опытом.), а вот вторая будет уже более практическая, с различными приемами и выводом.

Возможно кто-то сможет подчерпнуть для себя полезную информацию, но с большей вероятностью вы забрели сюда просто, чтобы узнать, как живется по ту сторону виндузевых 96%.


Ага, примерно такая вероятность. (хотя это статистика тех, у кого установлен стим). Глобально линукс имеет большую долю, а на серверах и мобильных устройствах и вовсе лидирует.

Почему я не включил маковские 3%? Ну, во-первых, потому, что это в основном зарубежные 3%, а во-вторых хоть эта статья посвящена линуксу, частично она актуальная и для MacOS.

Cкорее всего вам больше хочется узнать, что за нелегкая могла привести к такому выражению как “Линукс гейминг”, а нелегкая не такая уж и… нелегкая… ироничный Свист-ХА! Мне нравится линукс в текущем его состоянии. Пользовательский интерфейс десктопных дистрибутивов сегодня достаточно юзерфрендли (особенно есть взять какую-нибудь elementaryOS, после которой винда покажется дремучим лесом, особенно те помойки 8 и 10(сразу стоит оговорится, не считаю десятку плохой системой, однако неудачное совмещение старого и нового интерфейсов превращает ее в свалку с двумя видеоплеерами, двумя браузерами, двумя панелями инструментов и.т.д.)).


Куда уж элементарнее?

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


Linux Manjaro напирмер предлагает в пару кликов менять расположение панелей и вид основного меню. Очень удобно.

Именно поэтому, я предпочитаю работать в линуксе, мне в нем банально комфортнее. Ну а там, где работа, почему бы и не быть развлечению, тем более, что дядюшка Гейб в 2012, а потом и в 2018 сделал линукс сообществу невероятные и неожиданные подарки. Ну то есть стим машины с линуксом на борту не выстрелили в итоге, но наследие осталось и живо до сих пор. Что же это за подарки такие? Для ответа на этот вопрос требуется углубится в … на самом деле не очень-то и глубокую историю… ироничный Свист-ХА! №2… Простите это больше не повторится.

От темных времен до Steam

Итак, 2011 год. Из возможностей запустить игру на линуксе имеется только wine и его платный брат близнец Crossover(Правда оба не умели в DirectX11). А от Valve появляется информация, что помимо продажи игр компания также займется продажей железа. Гейб Ньюэлл дает интервью ресурсу Penny arcade:

Ну, если нам нужно будет продавать оборудование, мы будем это делать. У нас нет причин полагать, что у нас это получится, скорее мы хотим продолжать представлять миру инновации, и если единственным способом реализации таких проектов будет являться разработка и продажа оборудования напрямую, мы будем это делать. Это, конечно, не основная идея, которая нас занимает; мы бы предпочли, чтобы оборудование выпускали игроки аппаратного рынка, которые уже имеют большой опыт в производстве и распространении оборудования.

Гейб Ньюэлл

Генеральный директор Valve

Кстати сама статья с Penny arcade была удалена или перемещена, т.к. все ссылки на эту статью ведут к ошибке 404. Однако, как минимум частично это интервью можно найти на сторонних ресурсах.

Появляется слух, что на GDC2012 валв анонсирует steam machine (известным тогда еще под рабочим названием steam box), однако представитель valve заявляет, что подобных планов пока нет. В апреле Валв начинает поиск инженера для работы над дизайном железного решения, а уже в июле анонсирует порт своего стим клиента и основного движка компании, source, на linux. Тогда же Гейб открыто критикует Windows 8:

Я считаю, что Windows 8 — это, своего рода, катастрофа для всех в сфере ПК. Я думаю, мы потеряем нескольких ведущих производителей компьютеров. Они уйдут с рынка. Я думаю, что многие люди потерпят убытки. Если мои предположения оправдаются, будет неплохо иметь альтернативу, чтобы отгородиться от такого хода дел.

Гейб Ньюэлл о Windows 8

Катастрофой w8 в итоге не оказался. Особенно забавно это читать сегодня когда игры от Microsoft не только выходят на пк, но еще и появляются в самом Стиме, а сам магазин Windows не то, что не обрел статус монополии (а опасения Гейба были именно об этом, что Microsoft усложнит жизнь сторонним магазинам), но даже не получил практически никакой популярности.

Вообще планы у Валв были глобальные. Они хотели подвинуть не только Windows, но и классические консоли будучи уверены в том, что в будущем пк станет основной платформой для игр. И хоть мы знаем, что этим планам в итоге не суждено будет сбыться, некое пророческое видение в этом и правда было. ПК платформа сегодня действительно растет. Стим машины правда это не спасло и их ждал очевидный провал, ведь количество портов игр на линукс поначалу было небольшим, а обещанная возможность запускать любую win32 игру появилась сравнительно недавно, когда паровые машины уже не подавали признаков жизни. Однако железо нас, не интересует. А если все-же да, подробнее можно почитать, например, на странице Википедии.

В ноябре 2012 состоялся запуск закрытого бета-теста Steam для линукса, а также одной игры на движке Source. Этой игрой оказалась Team Fortress 2, однако до самого теста новостные сайты предполагали, что это будет Left 4 Dead 2. Вскоре после закрытого бета теста запустился и открытый.

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

Гейб Ньюэлл о запуске Steam на Linux

Возможно упоминания стоит и дистрибутив основанный на Linux Ubuntu который создали для Стим машин, а также выкатили в открытый доступ всем желающим. Но если честно мало кто понял зачем нужно ставить отдельный урезаный дистрибутив, если стим можно поставить себе без переустановки системы. Отчего он умер даже, не успев пошуметь.

-Но доктор, SteamOS все еще доступен для загрузки прям на сайте стима!

-Печально, когда дистрибутивы уходят от нас еще совсем бета, но этот мир был слишком жесток и несправедлив для него. Покойся с миром SteamOS.











Отличительной особенностью дистрибутива была возможность отказаться от привычного ПК пользователям десктоп окружения в пользу консольного Big Picture.

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

Ну то есть чего конечно было, было Вино (Wine — wine is not emulator(wine это не эмулятор)), но игры запущенные на нем отличались такой же низкой производительностью и нередко требовали изрядно потанцевать с бубном перед тем как это нечто получало возможность хотя бы запускаться. Конечно были специальные программы для автоматизации процесса, например Play on Linux, однако с большой долей вероятности танцы с бубном никуда не уходили, а просто переходили от командной строки в GUI (графический интерфейс).

А тут стим… нажал кнопку установить потом играть. Правда таких игр по пальцам можно было пересчитать, нет счет их достаточно быстро перешел на тысячи, но вы знаете темную зону стима, она… на любителя. Но вот что удивительно подобными портами линукс сообщество порадовали не только инди разработчики, даже некоторые ААА тайтлы были перенесены на эту платформу. На данный момент, например, официально портирована вся трилогия современной Лары Крофт. Другие студии правда, часто останавливались на порте одной части франшизы, например, CD Project портировала только второго ведьмака, хотя обещания третьей части вроде как были. Это был большой шаг для линукса, официальные порты на линукс, не поделки студентов на коленке, не копии игр, собранных на их-же опенсурсных движках типа квейка или дума, ну и не java версия minecraft и то, только потому, что ява мультиплатформенная сама по себе, а официальные порты AAA игр.


Логотип Feral Interactive

Но я уже точно говорил о качестве портов… возможно второго упоминания ситуация вокруг них не достойна. Да в них был низкий фпс по сравнению с вин версией, но это было играбельно и это не требовало танцев с бубном. Тем более некоторые игры шли очень хорошо например Torchlight 2 или первая часть Divinity: Original Sin.

Однако нельзя сказать, что в это время я активно занимался геймингом на линуксе. Пару игр поставить, еще пару протестировать и все это в основном из любопытства. А вот дальнейшее развитие и следующий подарок от Гейба изменили многое.

DXVK: да придет спаситель.

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

Вообще, забавно несмотря на стереотипы о командной строке в линуксе как единственном способе управления системой, в большинстве современных дистрибутивах многое реализовано через графический интерфейс, а также есть годный магазин приложений в котором есть если не все, то большинство нужных программ, а командная строка просто помогает ускорить некоторые процессы, ну и дает те возможности, которым в GUI и делать то нечего. Т.е. выполняет такую же роль, как и cmd (ну и его более продвинутая версия PowerShell) в Windows.


Просто нажал установить, а после перезагрузил систему и готово. Даже на сайт нвидии заходить не надо.

И что еще важнее, нвидия не будет донимать вопросами о скачивании обновлений драйверов или их долгой установкой. В линуксе пакеты драйверов будут обновляться вместе с системой. При этом установка нового драйвера никак не будет мешать работе системы, ведь начнет использоваться он только после перезагрузки. Это одно из главных преимуществ линукса для меня, ему не нужны тонны googleupdater, mailupdater yandexupdater, vasyansoftupdater, обновление системы также скачивает новые пакеты программ и драйверов из различных в том числе и подключенных пользователем источников. Но что-то я отвлекся.

В 2015-2016 годах произошло два важных события, которые и стали виновниками того, о чем будет написано далее.

29 июля 2015 года состоялся релиз DirectX 12, а 16 февряля 2016 на свет появился Vulkan. Это новые графические API призванные улучшить работу с железом, снизить нагрузку на процессор и улучшить многопоточность, что в свою очередь должно было привести к более высокой производительности, а так-же добавить новые возможности такие как трассировка лучей. Однако если Dx12 поддерживает только Windows 10(по крайней мере так задумывалось изначально, вроде как некоторую совместимость со старыми системами они в итоге реализовали), то Vulkan работает и на w7, и на w8, и на w10, и на Linux, и на Android и в принципе не имеет каких-то эксклюзивных ограничений. Собственно, поддержка вулканом линукса, а также его кроссплатформенность и стали виновниками сегодняшней ситуации.

Итак, на сцену выходит проект vkd3d, а также DXVK и D9VK (последние два в конце 2019 года объединились в один проект). Все они нацелены на реализацию трансляций вызовов DirectX в API Vulkan. Если без долгих и сложных объяснений эти проекты, улучшают совместимость и производительность игр, запущенных под вайном. И говоря, улучшают совместимость и производительность, я имею ввиду, существенно. Запуск солидного количества игр стал возможен в принципе, да еще и без костылей, да еще и с нормальным фпс и без артефактов. В случае с vkd3d которая направлена на трансляцию запросов от DirectX 12 потери фпс могут быть и вовсе незначительными. Однако DXVK (DirectX 9-11) не все так гладко, потери могут составлять 10-15 фпс, но даже это отличный результат.



The Elder Scrolls: Online запущенный без DXVK и с ним. Fps написан в левом нижнем углу под чатом. Я думаю комментарии тут не нужны.

Но не меньшим, событием стал упомянутый мной ранее второй подарок линуксоидам от Гейба. Им стал Proton.

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

Стоит ли говорить, что запуск протона разделил линукс геминг на до и после? Исходя из данных ProtonDB на момент написания статьи через линуксовый стим можно запустить 11 024 игры. Правда 3 тысячи игр имеют статус Broken (т.е. не запускаются). Да, в большинстве своем просто нажав установить, а потом играть. GTA5, Ведьмак 3, Monster Hunter: world, Скайрим, Assassin's Creed Odyssey, Doom, Kingdom come: deliverance и многое другое теперь запускаются без костылей, да и костыли стали довольно лояльными(например применить небольшую команду в Divinity OS 2 (игра работает без проблем, но лаунчер обновленной версии не запускается и если запускать игру в обход лаунчера то все будет хорошо), или например установить сертификат для того, чтобы онлайн в Dirt Rally 2.0 заработал) Более того, все эти решения линукс геймеры собирают в ProtonDB, так что зачастую и думать не нужно, если это можно запустить, там написано как.

Минутка офигительных историй. Один раз вышла забавная ситуация. Life is Strange упорно отказывалась запускаться на винде ругаясь на библиотеки PhysX. При этом решения в интернете были максимально противоречивы. Одним помогло одно, другим другое, кому-то не помогло ничего. Поэтому я решил «Пфф… на линуксе пройду» и прошел.


Конечно ложкой дегтя является то, что в лучшем случае фпс будет незначительно ниже, например, если игра уже работает на Вулкане или DirectX 12. Но это запускается и работает, и даже не требует выкручивать графику на минимум, чтобы быть хотя бы играбельным(и то, раньше и это давало гарантий). И даже более того, новые версии протона регулярно выходят (в основном они привязаны к появлению новой версии wine) и за чуть больше года было решено много проблем. Например, начал работать physX и Hairworks, правда последний все также становится причиной большой потери фпс, что для ситуации, когда фпс и без того теряется из-за запуска под линуксом не очень хорошо.

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

DXVK – это набор dll файлов замены, которые переводят из DirectX 11 в Vulkan.

Поскольку код DX11 переносится в Vulkan, DXVK напрямую решает самую большую проблему современных игр Wine – несовместимость с новыми формами DirectX. Большинство игр уходят как можно дальше от DirextX 9 и в процессе нарушают сопоставимость Wine. DXVK имеет очень реальный потенциал в качестве решения.

Как установить Vulkan в Linux

Прежде чем вы сможете использовать DXVK, вам нужна поддержка Vulkan. Это могут быть разные вещи, в зависимости от вашей видеокарты и драйверов, но есть некоторые универсальные, которые можно установить в первую очередь.

Установить Mesa в Linux

Если вы используете Mesa, вместе с AMD или Intel, это очень хорошая идея. Вы можете получить последнюю версию Mesa из PPA-репозитория, который постоянно обновляет Mesa из Git для Ubuntu.

Откройте терминал, и введите следующие команды

Теперь установите драйвер Mesa Vulkan.

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

Lutris

В прошлой статье, я уже писал о такой замечательной программе как Lutris. В ней, вы можете абсолютно без проблем запускать игры с DXVK, ведь он уже поставляется по умолчанию. Попробуйте запустить Lutris, а не разбираться с независимыми конфигурациями Wine самостоятельно. DXVK работает на основе префиксов, поэтому разделение, которое приносит Lutris, делает его намного лучше для такого рода вещей. Если вам нужна помощь в установке и настройке Lutris, ознакомьтесь с моим руководством по Lutris.

dxvk lutris

Установка DXVK в Linux

Перейдите на страницу релиза проекта и загрузите последнюю версию tarball. Распакуйте архив в любое удобное место.

Откройте терминал, и выполните следующие команды из каталога DXVK:

dxvk linux

Это скопирует библиотеки DLL в каталоги system32 и syswow64 вашего префикса wine и настроит необходимые переопределения DLL. Чистые 32-битные префиксы также поддерживаются.

Сценарий установки также необязательно принимает следующие аргументы:

–symlink: Создавать символические ссылки на файлы DLL вместо их копирования. Это особенно полезно для развития.

–with-d3d10: Установить d3d10.dll вспомогательные библиотеки.

–without-dxgi: Не устанавливайте реализацию DXVI в DXVK и используйте вместо нее ту, которая предоставляется wine. Это необходимо, чтобы vkd3d и DXVK работали в одном и том же префиксе wine.

Убедитесь, что ваше приложение использует DXVK вместо wined3d, проверив наличие файла журнала d3d9.log или d3d11.log в каталоге приложения, или включив HUD.

DXVK_HUD – Переменная среды управляет HUD, который может отображать частоту кадров и некоторые счетчики. Он принимает разделенный запятыми список следующих опций:

  • devinfo: Отображает имя графического процессора и версию драйвера.
  • fps: Показывает текущую частоту кадров.
  • frametimes: Показывает график времени кадра.
  • submissions: Показывает количество командных буферов, отправленных на кадр.
  • drawcalls: Показывает количество вызовов отрисовки и отрисовки проходов за кадр.
  • pipelines: Показывает общее количество графических и вычислительных конвейеров.
  • memory: Показывает объем памяти устройства, выделенной и использованной.
  • gpuload: Показывает приблизительную загрузку графического процессора. Может быть неточным.
  • version: Показывает версию DXVK.
  • api: Показывает уровень функций D3D, используемый приложением.
  • compiler: Показывает активность шейдерного компилятора
  • samplers: Показывает текущее количество используемых пар сэмплеров [Только D3D9]

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

Или включить все

Например, команда которую я ввел чтобы играть выглядит вот так

установка dxvk

Чтобы удалить DXVK из префикса, выполните следующую команду:

Вот и все. Надеюсь статья была полезной, и если это так, не забудьте поделиться в социальных сетях.

Хотите ли вы играть в последние и лучшие Windows игры на Linux? Конечно. Проблема в том, как это сделать. Linux использует OpenGL, в то время как большинство игр для Windows зависят от DirectX. Нет проблем. Для этого есть Wine .

Что подвигло меня на установку одной из тяжелых игр для Windows, так это системные требования. Игра, о которой идет речь - это прекрасная Tropico 3 с прекрасными системными требованиями: не менее 2 Гб оперативной памяти и видеокарта не хуже Nvidia 7600GT с 256 Мб памяти. Оба моих Атлона с Windows, оснащенные видеокартами Nvidia 6600GT и 7600GT, эту игру не тянули. Но недавно я купил себе новенький ноутбук с мощной видеокартой Nvidia 9600GS с 512 Мб памяти. так что я решил попробовать.

Я установил DirectX на Linux, используя Wine, а затем установил Tropico 3. Все установилось и прекрасно работает. Я могу играть с высокой детализацией без всяких проблем и глюков, все работает как надо, даже качество звука выше похвал.

В этой статье я покажу, как установить DirectX, используя Wine. Это не просто, но и не очень сложно.

Это просто. Откройте свой менеджер пакетов и установите программу.

Это самый сложный этап. Но не бойтесь, я опишу его подробно, шаг за шагом.

Запустите конфигуратор Wine. В меню "Приложения" вашего дистрибутива запустите Wine > Configure Wine или наберите winecfg в командной строке. Выберите вкладку Libraries .

Эта вкладка позволяет задать поведение различных библиотек DLL и перезаписать настройки по умолчанию. Чтобы DirectX заработал, необходим длинный список DLL. Первый шаг - щелкните на выпадающем списке New override , и найдите d3d8 DLL, после чего кликните Add .

Библиотека будет добавлена в список Existing overrides что будет выглядеть примерно так: d3d8 (builtin,native) .

Но это еще не все что нам нужно. Необходимо выбрать DLL в списке и кликнуть Edit . В появившемся диалоговом окне измените конфигурацию на builtin .

Так как требуемых библиотек очень много, их ручная настройка не слишком приятное занятие. К счастью, можно хакнуть реестр Wine и добавить все требуемые записи как список.

Для редактирования реестра откройте в вашем любимом текстовом редакторе (например gedit) файл

В этом файле найдите раздел, помеченный как DllOverrides :

В этот раздел вы можете вставить список требуемых библиотек, который можно взять из этой прекрасной статьи. После вставки сохраните файл и закройте редактор. Далее снова запустите конфигуратор Wine. Вы должны увидеть примерно вот это:

Первый шаг выполнен. Теперь нам необходимо несколько файлов.

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

После скачивания скопируйте файлы в папку Wine system32:

/.wine/drive_c/windows/system32/
cp streamci.dll

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

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

Перейдите в папку, куда вы распаковали файлы, и запустите инсталлятор.

После успешного окончания установки меня попросили перезагрузиться, но необходимости в этом нет.

Проверим работоспособность DirectX 9.0c. Перейдите в папку system32 (внутри директории .wine) и запустите dxdiag.exe.

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

Если вы хотите получить полную поддержку звуковых эффектов, необходим другой драйвер. Файл, котором идет речь, называется gm.dls. Его можно скачать здесь . Скопируйте файл в папку system32/drivers.

После этого перазапустите dxdiag и проверьте вкладку Music.

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

Настало время попробовать игру. В моем случае это Tropico 3, которая установилась без проблем. Как я уже говорил, игра отказалась запускаться, поскольку требовала библиотеку d3dx9_41.dll. После того, как я скачал ее и скопировал в папку system32, все заработало. Тормозов не наблюдалось даже при максимальных настройках качества, звук работал прекрасно. Все получилось!

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

1 комментарий:

Подпишитесь на RSS


Перевод. Оригинал здесь. Если вы новичек в Linux и ранее использовали iTunes для управления своим iPod/iPhone/iPad, то скорее всего буд.

uTorrent - это легкий и эффективный торрент-клиент для Linux, Windows OS и Mac OS. Установка uTorrent в Linux отличается тем, что здесь uT.

Вы можете запускать скрипты на python в Linux непосредственно из терминала. Знать, как это делается, полезно как программистам, так и пол.

Как вы наверное знаете, Safari является браузером по умолчанию в Mac OS X и iPhone OS. Вышло уже несколько релизов и для Windows, но версии .

Способ сброса пароля root в CentOS 7 кардинально отличается от такового в Centos 6. 1. В загрузочном меню нажмите "е" - реда.

Читайте также: