Эмуляция XBox-контроллера для геймпадов без аппаратной поддержки XInput.

для раздела Блоги

В текущих реалия ПК-гейминга,  современные игры поддерживают только XInput-совместимые геймпады, и только некоторые игры поддерживают DirectInput-устройства, и то, в основном применительно только к одному контроллеру - DUALSHOCK 4. Также стандарт DirectInput используется в различных гоночных и авиа-симуляторах, для работы игровых рулей и штурвалов.  

Что такое XInput? XInput - это API, который позволяет приложениям получать данные от контроллера Xbox (или любого другого контроллера с аппаратной поддержкой XInput). Подробнее можно почитать тут.

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

Сразу оговорюсь, эмуляторов DS4Windows и InputMapper, предназначенных для DUALSHOCK 4, в этой статье не будет. Для DUALSHOCK 4 существует отдельная статья в блоге, DUALSHOCK 4 в реалиях ПК, где эта тема раскрыта достаточно широко.

Итак:

Вариант номер один - эмулятор x360ce.

Изначально эмулятор появился под названием "XBOX360 Controller Emulator v3.0 by Racer_S". Был он, мягко говоря, сыроват, пока его дальнейшим развитием не занялся пользователь с ником virus, обитающий тогда на сайте www.tocaedit.com. В дальнейшем всё это дело переросло в проект x360ce и существует по сей день.

Что представляет из себя x360ce эмулятор? Это кастомные библиотеки:

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





плюс файл с настройками:

x360ce.ini

x360ce.ini конфигурируете вы самостоятельно, конкретно под свой геймпад, с помощью утилиты из комплекта. После чего x360ce.ini и dll-файлы (как правило достаточно одного dll-файла - xinput1_3.dll) подбрасываются в папку с целевой игрой:

Настроек много и они не универсальные. Эмуляция может работать, а может и не работать, зависит от игры и подобранных настроек. Для 64-битных приложений, нужно использовать 64-битную версию библиотек. Если для вашего DirectInput-геймпада в системе не установлен драйвер с поддержкой вибрации, вибрации не будет и через эмулятор. x360ce не работает с UWP-приложениями. 

x360ce-эмулятор был отличным решением несколько лет назад, но сейчас есть варианты поинтереснее. Впрочем, иногда он спасает.





Скачать x360ce можно тут.


Вариант номер два - XOutput эмулятор.

В XOutput принцип работы уже более продвинутый. При установке этого эмулятора, в систему ставится virtual bus driver (SCP драйвер-враппер, который также используют утилиты DS4Windows и InputMapper, для эмуляции XInput на геймпадах DUALSHOCK 4):

Но в отличие от заточенных под один геймпад DS4Windows и InputMapper, этот эмулятор всеяден и готов работать с любыми DirectInput геймпадами:

После настройки и активации эмуляции в системе (помимо нашего DirectInput геймпада) должен появиться XBox 360 геймпад:





Чтобы скрыть DirectInput сущность нашего геймпада от системы и игр, следует воспользоваться режимом "Exclusivity":

должно стать так:

...по идее должно стать... Эмулятор достаточно капризный, в том, что касается эксклюзивного режима. Особенно на последних версиях Windows 10. Т.е. может и не работать.

Вибрации через эмулятор, даже если она поддерживается вашим геймпадом, и в систему установлен родной forcefeedback драйвер для DirectInput устройства, не будет:

У этого эмулятора есть неоспоримые преимущества перед x360ce: он работает в UWP-приложениях, он не требует никаких сторонних DLL-библиотек в папке с игрой, он легко включается и выключается, его можно добавить в автозагрузку, он работает с 32-битными и 64-битными приложениями.

Скачать эмулятор можно тут.

Также существует новая ветка разработки XOutput. Тут для полноценной работы потребуется другой пакет драйверов (вместо SCP) - ViGEm Bus:






Суть та же, но тут работа над софтом и драйвером идёт активнее.

Вот вам необходимые ссылки по новой версии XOutput:

  1. ViGEm Bus Driver Installation 
  2. ViGEm Bus Driver Installation – caveman edition
  3. Virtual Gamepad Emulation Framework Documentation


И наконец вариант номер три - эмуляция XInput через Steam.

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

Но нет ничего страшного, если ваш DirectInput-геймпад незнаком стиму.

Для того, чтобы для вашего DirectInput-друга, в играх из библиотеки Steam (или добавленных туда вручную), заработала эмуляция XInput (и прочие плюшки), нужно проделать следующие шаги.

Подключить геймпад к ПК, запустить Steam и перейти в режим Big Picture:

Перейти в пункт меню с настройками контроллера:

поставить галочку на "пользовательские настройки обычного геймпада":

выбрать внизу, в обнаруженных контроллерах, ваш геймпад и настроить его в соответствии с подсказками на экране:

нажать "сохранить" и дать имя вашему геймпаду:

Всё. Теперь ваш геймпад поддерживается в Steam, и для него доступны все настройки для любой игры из библиотеки:

В играх (из библиотеки Steam) ваш геймпад будет определяться, как XBox 360 контроллер. Чтобы произвести дополнительные настройки по конкретной игре, нужно вызвать в процессе игры оверлейный экран Steam (кнопкой GUIDE) или комбинацией клавиш и произвести все необходимые манипуляции.

На этом пока всё.

Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 5.0 из 5
голосов: 21

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают