Чому кожна гра PC встановлює власну копію DirectX?
DirectX є частиною операційної системи Windows. Так чому ж здається, що кожна PC гра, яку ви встановлюєте з Steam, Origin або в іншому місці, встановлює власну копію DirectX?
Що таке DirectX?
DirectX є частиною Microsoft Windows. Це група API (інтерфейси прикладного програмування), яку розробники можуть використовувати для 3D-графіки, відео, мультимедіа, звуку та ігрових функцій у Windows. Багато ігор на Windows використовують Direct3D для графіки. Якщо вони цього не роблять, вони використовують крос-платформні OpenGL або Vulkan API. Інші неігрові програми можуть використовувати DirectX для функцій, таких як 3D-графіка.
Windows 7 включає DirectX 11, а Windows 10 включає DirectX 12. Коли розробники розробляють ігри, вони обирають версії DirectX, які вони хочуть націлити. Наприклад, гра, написана тільки для DirectX 11, не працюватиме на Windows XP, де найновішою доступною версією є DirectX 9.
Можна перевірити версію DirectX, доступну у вашій системі, натиснувши кнопку Пуск, набравши в полі пошуку “dxdiag”, і натиснувши Enter. Коли з'явиться вікно діагностичної програми DirectX, ви побачите номер версії праворуч від "Версії DirectX" у розділі "Системна інформація".
Якщо вона включена в Windows, чому ігри встановлюють її?
Отже, якщо DirectX є частиною Windows, чому ігри навіть встановлюють її в першу чергу? Коротка відповідь полягає в тому, що встановлення DirectX є безладдям.
Існує не тільки один DirectXD Direct3D ігри бібліотеки залежать, або навіть просто кілька. Розробники ігор повинні орієнтуватися на точну версію допоміжної бібліотеки Direct3D. Не можна використовувати нову версію бібліотеки. Наприклад, якщо розробник гри націлював свою гру на d3ddx10_40.dll, гра не може використовувати d3ddx10_41.dll. Для цього потрібна версія 40, і тільки цей файл.
Ви знайдете ці файли в папці C: Windows System32 у вашій системі. У 64-бітній системі 64-розрядні бібліотеки розташовані на мові C: Windows System32 і 32-розрядні бібліотеки знаходяться в C: Windows SysWOW64.
Навіть якщо ви запустили останній інсталятор DirectX, немає ніякої гарантії, що він встановить всі старі дрібні версії бібліотек DirectX на вашій системі. Також Microsoft вирішила не поєднувати ці бібліотечні файли Direct3D із самою Windows. Навіть бібліотеки Direct3D, створені до випуску Windows 10, не всі включені в Windows 10. Вони повинні бути встановлені програмою, яка їх потребує. Як відзначає корпорація Майкрософт у документації, розробленій для розробників ігор, "Windows Update і пакети обслуговування не надають жодного з додаткових компонентів DirectX".
Це навіть стає більш складним, ніж це. 32-бітові ігри потребують 32-розрядних версій файлу бібліотеки, а 64-бітові ігри потребують 64-бітної бібліотеки.
Це схоже на ситуацію з бібліотеками Microsoft Visual C ++ Redistributable. Різні програми залежать від різних версій бібліотек, і вам потрібно мати багато різних версій. Існує хороший шанс, що у вас також багато встановлених у вашій системі.
Але чому кожна гра PC потрібно перевстановити?
Отже, кожна гра має встановлювати точну мінливу версію бібліотек DirectX, яку вона потребує. Але, якщо ви вже встановили цю конкретну версію бібліотеки DirectX один раз, безумовно, в грі не потрібно запускати програму установки DirectX?
Неправильно. Ігри не можуть легко перевірити, чи встановлені потрібні бібліотеки DirectX. Як відзначає сайт Steam, програма встановлення Microsoft DirectX є єдиним офіційно підтримуваним способом перевірити, чи в даний час встановлені правильні файли DirectX. Ігри запускають інсталятор DirectX, часто у фоновому режимі, який встановлює будь-які необхідні бібліотеки і ремонтує будь-які проблеми в системі.
Інсталятор DirectX також є єдиним способом, яким Microsoft дозволяє розробникам поширювати ці файли. Розробники не можуть намагатися бути розумними, безпосередньо скидаючи бібліотеки DirectX у вашій системі і пропускаючи інсталятор, або вони порушують ліцензію на програмне забезпечення MIcrosoft. Вони, ймовірно, зіткнуться з різними помилками, навіть якщо вони спробували це. Ось чому ніхто не робить.
Звичайно, не всі ігри повинні запускати програму DirectX під час першого запуску. Ігри, які використовують OpenGL або Vulkan, а не Direct3D DirectX, не повинні його запускати. Деякі ігри також залежать лише від основних версій DirectX, таких як DirectX 11, 10 або 9, і не потрібно викликати програму установки DirectX, оскільки вони не використовують жодної з цих допоміжних бібліотек.
Чи можна видалити деякі з цих бібліотек?
Не слід видаляти будь-які бібліотеки DirectX у папці System32 або папці SysWOW64. Якщо вони присутні у вашій системі, це тому, що потрібна вам гра чи інша програма, яку ви встановили. Якщо ви починаєте видаляти файли бібліотек, програми можуть зламатися. Насправді не можна сказати, які файли бібліотеки DirectX потрібні, для яких ігор у вашій системі, тому неможливо дізнатися, які саме файли можна видалити.
Залиште їх наодинці! Існує причина, що офіційно не підтримується спосіб видалення цих файлів бібліотеки. Вони не викличуть жодних проблем у вашій системі і використовуватимуться лише програмами, які їх потребують.
Якщо ви дійсно бажаєте очистити ці старі бібліотеки, краще перевстановити Windows, щоб отримати свіжу систему замість випадкового видалення файлів бібліотеки. Але вони почнуть повторно з'являтися тут після установки ігор. Не турбуйтеся про це.
Що я можу зробити, якщо я маю проблеми з DirectX?
Якщо під час спроби запустити чи інсталювати гру, ви бачите повідомлення про помилку, пов'язане з DirectX, можливо, інсталятор гри не запустив правильно встановлений встановлюваний поширювач DirectX. Ви не можете просто завантажити програму установки DirectX з веб-сайту Microsoft, хоча - вам потрібно запустити інсталятор, який вимагає сама гра.
Можливо, ви зможете зайти в папку гри на вашій системі або на інсталяційному диску гри, знайти файл інсталятора .exe у DIrectX і запустити його, щоб усунути проблему. Цей файл зазвичай називається DXSETUP.exe.
Зазвичай можна отримати додаткову інформацію про те, як усунути цю проблему, виконавши пошук у мережі для назви гри або програми та конкретного повідомлення про помилку DirectX, яке ви бачите.