dd_action('wp_footer', function() { ?>

3.8 XInput

XInput

XInput — это компонент Microsoft DirectX, который отвечает за работу современных игровых контроллеров.

Он был создан специально для:

  • Xbox 360 Controller;
  • Xbox One Controller;
  • Xbox Series Controller;
  • совместимых с Xbox геймпадов.

В старых играх часто встречается ситуация:

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

Очень часто причина заключается именно в отсутствии или несовместимости XInput.


🔍 Что такое XInput

XInput — это API для связи игры с контроллером.

Схема работы:

 

Игровой контроллер
        ↓
     XInput
        ↓
   DirectX / Windows
        ↓
       Игра
 

Игра получает:

  • кнопки;
  • стики;
  • триггеры;
  • вибрацию;
  • состояние контроллера.

🎮 XInput и DirectInput — в чём разница

Это один из самых важных моментов при запуске старых игр.

Существует два разных подхода.


🟦 DirectInput

Старый стандарт.

Использовался для:

  • джойстиков;
  • рулей;
  • старых игровых устройств.

Годы активного использования:

 
1990–2005
 

🟩 XInput

Новый стандарт Microsoft.

Создан для:

  • Xbox-контроллеров;
  • современных игр.

Годы:

 
2005 → настоящее время
 

⚠️ Почему старый геймпад может работать, а новый нет

Пример:

Игра:

 
Need for Speed Underground 2
 

Создана под:

 
DirectInput
 

Подключается:

 
Xbox Controller
 

Игра может:

  • не видеть устройство;
  • неправильно назначать кнопки;
  • не работать с вибрацией.

🔄 Как решается проблема

Используются специальные программы:

  • x360ce;
  • XOutput;
  • Steam Input;
  • DS4Windows.

Они создают виртуальный XInput-контроллер.


🎮 Как работает x360ce

Схема:

 

Ваш контроллер
       ↓
    x360ce
       ↓
Виртуальный Xbox Controller
       ↓
      Игра
 

Для игры кажется:

что подключён настоящий Xbox-геймпад.


📂 Где находится XInput

Основные библиотеки:

 
xinput1_1.dll
xinput1_2.dll
xinput1_3.dll
xinput1_4.dll
 

Также:

 
XInput9_1_0.dll
 

Разные игры требуют разные версии.


🎮 Почему возникает ошибка xinput1_3.dll

Одна из самых частых ошибок старых игр:

 
The program can't start because xinput1_3.dll is missing
 

Причина:

игра создана под старый DirectX Runtime.


Важно:

это НЕ означает:

что нужен только XInput.

Чаще всего отсутствует весь пакет:

 
DirectX End-User Runtime
 

🛠️ Как исправить ошибку xinput1_3.dll

Правильный способ:

установить:

 
DirectX End-User Runtime (June 2010)
 

Не рекомендуется:

❌ скачивать отдельный DLL-файл;
❌ заменять системные файлы вручную.


Почему нельзя просто скачать xinput1_3.dll

Потому что игра может требовать одновременно:

 

xinput1_3.dll
+
x3daudio1_7.dll
+
d3dx9_43.dll
+
XAudio2
 

Если поставить только один файл:

появится следующая ошибка.


🔍 Как определить, какой XInput нужен игре

Есть несколько способов.


Способ 1. По ошибке запуска

Например:

 
xinput1_3.dll missing
 

Значит:

игра использует старый XInput.


Способ 2. Анализ EXE-файла

Используются программы:

  • Dependencies;
  • Dependency Walker;
  • CFF Explorer.

Открываем:

 
Game.exe
 

Ищем:

 
xinput
 

Например:

найдено:

 
xinput1_3.dll
 

Значит:

игре нужен этот компонент.


Способ 3. Через Process Monitor

Если игра запускается и сразу закрывается:

Process Monitor показывает:

 
NAME NOT FOUND
xinput1_3.dll
 

Это означает:

Windows пыталась найти DLL, но не обнаружила её.


🎮 Версии XInput


XInput 1.1

Использовался:

старые версии игр.


XInput 1.2

Используется:

некоторыми играми эпохи Xbox 360.


XInput 1.3

Самая распространённая версия.

Очень много игр требуют:

 
xinput1_3.dll
 

XInput 1.4

Используется:

Windows 8+

Современные игры.


XInput9_1_0

Совместимость со старыми играми.


🖥️ XInput в Windows 10/11

Современная Windows содержит:

 
XInput 1.4
 

Но старые игры могут искать:

 
xinput1_3.dll
 

Поэтому снова возникает ситуация:

Windows новая, а игре нужны старые компоненты.


🎮 Проблемы с геймпадами в старых играх


Проблема 1

Игра не видит контроллер.

Причина:

игра ждёт:

 
DirectInput
 

а используется:

 
XInput
 

Решение:

  • x360ce;
  • Steam Input.

Проблема 2

Кнопки перепутаны.

Например:

Игра показывает:

 
Button 1
Button 2
 

вместо:

 
A
B
X
Y
 

Решение:

настроить профиль контроллера.


Проблема 3

Нет вибрации.

Причины:

  • игра использует DirectInput;
  • контроллер XInput;
  • отсутствует поддержка.

🛠️ Steam Input как универсальное решение

Многие старые игры можно запускать через Steam Input.

Настройка:

  1. Добавить игру в Steam.
  2. Открыть:
 
Свойства игры
 
  1. Перейти:
 
Контроллер
 
  1. Включить:
 
Использовать Steam Input
 

🎮 DS4Windows

Используется для:

  • DualShock;
  • DualSense.

Принцип:

 

PlayStation Controller
        ↓
    DS4Windows
        ↓
Virtual Xbox Controller
        ↓
       Игра
 

⚠️ Когда XInput не поможет

XInput НЕ исправляет:


Ошибки графики

Например:

 
Failed to initialize graphics
 

Нужны:

  • DirectX;
  • драйвер;
  • эмуляция GPU.

Ошибки DLL других типов

Например:

 
mss32.dll
binkw32.dll
 

Нужны другие библиотеки.


Проблемы совместимости Windows

Например:

  • старый DRM;
  • 16-битный код;
  • DirectDraw.

🧭 Алгоритм диагностики XInput

Если игра не видит геймпад:


Шаг 1

Определить возраст игры.

Если:

 
до 2010 года
 

проверить DirectInput/XInput.


Шаг 2

Проверить требуемую DLL:

  • xinput1_3.dll;
  • xinput1_4.dll.

Шаг 3

Установить:

 
DirectX End-User Runtime
 

Шаг 4

Если контроллер не определяется:

использовать:

  • x360ce;
  • Steam Input;
  • XOutput.

📊 Таблица: проблема → решение

ПроблемаВозможная причинаРешение
xinput1_3.dll отсутствуетнет старого DirectX Runtimeустановить DirectX June 2010
Геймпад не виденDirectInput/XInput конфликтx360ce / Steam Input
Нет вибрациинеправильный APIиспользовать XInput
Кнопки перепутанынеправильный профильнастройка контроллера
Современный геймпад не работаетстарая играэмуляция Xbox Controller

Итог

XInput — важный компонент для работы игровых контроллеров.

Главное понимать:

  • DirectInput ≠ XInput;
  • современные Windows могут иметь XInput 1.4, но старым играм нужен XInput 1.3;
  • отсутствие xinput1_3.dll обычно означает отсутствие старого DirectX Runtime;
  • проблемы контроллеров часто решаются через эмуляцию Xbox-геймпада.