Эмуляция 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 эмулятор? Это кастомные библиотеки:
реклама
плюс файл с настройками:
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:
- ViGEm Bus Driver Installation
- ViGEm Bus Driver Installation – caveman edition
- Virtual Gamepad Emulation Framework Documentation
И наконец вариант номер три — эмуляция XInput через Steam.
Steam поддерживает большое количество геймпадов «из коробки», т.е. не требуется дополнительных телодвижений для того, чтобы Steam распознал ваш геймпад, а точнее правильно определил раскладку кнопок и прочее.
Но нет ничего страшного, если ваш DirectInput-геймпад незнаком стиму.
Для того, чтобы для вашего DirectInput-друга, в играх из библиотеки Steam (или добавленных туда вручную), заработала эмуляция XInput (и прочие плюшки), нужно проделать следующие шаги.
Подключить геймпад к ПК, запустить Steam и перейти в режим Big Picture:
Перейти в пункт меню с настройками контроллера:
поставить галочку на «пользовательские настройки обычного геймпада»:
выбрать внизу, в обнаруженных контроллерах, ваш геймпад и настроить его в соответствии с подсказками на экране:
нажать «сохранить» и дать имя вашему геймпаду:
Всё. Теперь ваш геймпад поддерживается в Steam, и для него доступны все настройки для любой игры из библиотеки:
В играх (из библиотеки Steam) ваш геймпад будет определяться, как XBox 360 контроллер. Чтобы произвести дополнительные настройки по конкретной игре, нужно вызвать в процессе игры оверлейный экран Steam (кнопкой GUIDE) или комбинацией клавиш и произвести все необходимые манипуляции.
Полезные программы для XBox геймпадов.
Вспоминая времена, когда для пользователей персонального компьютера появилась поддержка контроллера XBox 360, вместе с поддержкой и соответствующими драйверами, тогда же была выпущена утилита Xbox 360 Accessories Software 1.2, которая, при удержании кнопки GUIDE на 360-ом контроллере (кнопка с логотипом XBox), вызывала на экран простенький бар, с информацией о порядковом номере геймпада в системе и состоянии батареи\аккумулятора (при беспроводном подключении):
реклама
Ещё была любительская программка (Turn Off Xbox Controller), запуск которой мгновенно отключал беспроводной XBox 360 контроллер.
А что же интересного есть сейчас для геймпадов от Microsoft и не только? Давайте посмотрим.
реклама
Утилита Аксессуары XBox (XBox Accessories).
На смену консоли XBox 360 пришла консоль XBox One, на смену ОС Windows 7/8.1 пришла ОС Windows 10, на смену геймпаду XBox 360 пришёл геймпад XBox One, на смену Xbox 360 Accessories Software пришло UWP-приложение Аксессуары XBox.
Приложение Аксессуары XBox предназначено исключительно для геймпадов XBox One. Приложение умеет:
реклама
Обновлять прошивку XBox One геймпада:
Показывать статус заряда аккумулятора\батареек:
реклама
Менять местами (программно разумеется) кнопки геймпада и отключать\включать вибрацию:
Активировать режим совместной игры (дублирует управление персонажем на два геймпада):
Неплохо, определённый прогресс на лицо. Но хотелось бы индикации заряда в реальном времени, а также предупреждения о низком заряде аккумулятора. Недавно я наткнулся на две соответствующих запросу утилиты.
Первая утилита — XBox One Controller Battery Indicator.
Эта утилита висит в трее и визуально показывает уровень заряда аккумулятора\батареек:
Поддерживаются такие варианты подключения:
- XBOne + dongle;
- XBOne Elite + dongle;
- XBOne S + dongle;
- XBOne S + Bluetooth;
- XB360.
Если контроллеров больше одного, каждые несколько секунд иконка в трее меняет показания, попеременно для каждого геймпада.
Когда заряд источников питания достигает критически низкого уровня, программа сигнализирует об этом вот таким всплывающим окном:
Программа не требует установки в систему. Скачать можно отсюда.
Вторая утилита — XInput Battery Meter.
Эта аналогичная по функционалу программа, она также показывает заряд аккумулятора XBox-геймпада в трее.
Но помимо визуальной индикации на значке в трее, программа выводит всплывающий бар при подключении\отключении геймпада(-ов):
Остальные данные можно глянуть, кликнув правой кнопкой мыши по иконке программы в трее:
Порывшись в интернете, можно найти ещё парочку практически незаменимых программ для XBox-контроллера. На этот раз диагностических.
Первая программа из Microsoft Store — Game Controller Tester.
Эта программа предназначена для всех обладателей XBox геймпадов и любых других геймпадов с поддержкой XInput.
С помощью этой программы можно проверить:
- Качество работы стиков;
- Мёртвые зоны;
- Работу кнопок;
- Работу основных вибромоторов;
- Работу виброкурков.
Вторая программа из Microsoft Store — Controller X.
В принципе то же самое, только морда приятней и платная.
Ну и, наконец, ещё одна полезная программка — Durazno.
Durazno — это XInput to XInput враппер для настройки ремаппинга осей и кнопок на XInput девайсах.
С помощью этой программы можно переназначить: кнопки, оси, курки, подкрутить мёртвые зоны и вибрацию, скрывать геймпад от игры.
Утилита работает с оригинальными контроллерами XBox и XInput-совместимыми.
- запускаем утилиту (геймпад должен быть включён);
- жмём на светлый прямоугольник справа, чтобы открылись настройки ремаппинга;
- настраиваем всё, как вам заблагорассудится, можно даже скрыть геймпад от игры;
- кидаем xinput1_3.dll (в некоторых играх могут понадобиться и другие dll-ки из папки) и Durazno.INI в папку с EXE-файлом нужной игры. Для x64 битных игр используем x64 версию.
Изучаем возможности приложения «Аксессуары XBox» для геймпадов Xbox One
О существовании приложения «Аксессуары XBox» известно многим владельцам игровых контроллеров XBox One. Это приложение предназначено для настройки, проверки функций и обновления прошивки актуальных геймпадов Microsoft. Оно доступно на консоли XBox One (во всех проявлениях) и ОС Windows 10. Мы рассмотрим возможности приложения для платформы Windows 10, применительно к обычному XBox One контроллеру и контроллеру XBox Elite Series 2.
реклама
По умолчанию, эта утилита не предустановлена в Windows 10, её необходимо скачать из Microsoft Store. Так получилось, что пару недель назад я купил геймпад XBox Elite Series 2 (ссылка на обзор доступна из FAQ темы по геймпадам в конференции), поэтому мы сможем ознакомиться с функционалом приложения не только для обычного, но и для нового, элитного, геймпада:
реклама
После вступления с кратким описанием достоинств контроллера XBox Elite Series 2:
приложение предлагает выбрать индивидуальный никнейм для нашего геймпада (возможность доступна только для элитного варианта):
реклама
и залить свежую прошивку (версия 4.8.190 для Elite Series 2):
Сразу после нас встречает основное окно программы. На консоли XBox приложение привязано к учётной записи XBox, а на ПК данные учётной записи XBox можно ввести в клиенте «Компаньон консоли XBox»:
реклама
Все созданные в приложении профили улетают в облако, поэтому они не потеряются при переустановке Windows, смене ПК, консоли и пр. Достаточно просто зайти в свою учётную запись, общую для консоли и ПК (если вы не захотите завести отдельный аккаунт). В контроллере XBox Elite Series 2 доступны три программируемых (встроенных) профиля, они хранятся в памяти геймпада. Есть ещё один, четвёртый, непрограммируемый профиль, в нём не используются дополнительные лепестки-кнопки — это своего рода режим обычного XBox One геймпада. Профили переключаются специальной кнопкой, а для индикации текущего слота служат три белых светодиода на лицевой части контроллера:
Для обычного геймпада доступен только один софтовый программируемый слот. Слот не сохраняется в память геймпада:
Помимо сопоставления кнопок, в приложении есть тест работы моторов в курках, кнопка проверки актуальной прошивки и переключатель Copilot. Copilot дублирует управление на второй геймпад XBox One (если он у вас есть):
Ещё есть вкладка проверки сопоставления кнопок, стиков и курков после внесённых изменений:
В приложении можно создать любое количество болванок-профилей и применять их по мере необходимости:
Для геймпада Elite 2 возможен более широкий функционал сопоставления кнопок. Сразу оговорюсь, назначить кнопки клавиатуры или мыши на кнопки геймпада, естественно, не получится. API XInput ограничен строгими рамками по количеству осей и кнопок и выйти за эти рамки нельзя. Комбинации кнопок (макросы) также невозможны. Наверное ненужно объяснять, почему:
Есть даже режим шифта, который позволяет переключаться на альтернативную раскладку:
Для обычного контроллера возможности сопоставления поскромнее. Можно поменять местами кнопки, инвертировать оси стиков и переключить триггеры (левый на правый\правый на левый). Плюс, отключить вибрацию (полностью):
Следующие настройки доступны только для элитных геймпадов. Это настройки кривой стиков:
Мёртвых зон для триггеров:
Интенсивности вибрации для любого из четырёх вибромоторов:
И яркости для кнопки XBox:
Собственно всё. От себя могу добавить, что в реальных условиях более всего у меня востребованы настройки кривой для стиков и сопоставление кнопок на лепестки. Возможность поменять кнопки местами мне пока нигде не пригодилась.
Вот небольшое видео, для визуализации вышеизложенного:
При подготовке материала использовались источники:
https://overclockers.ru/blog/ZAMHome/show/21167/emuljacija_xboxkontrollera_dlja_gejmpadov_bez_apparatnoj_podderzhki_xinput_i_vsjo_chto_s_etim_svjazano
https://overclockers.ru/blog/ZAMHome/show/21171/poleznye_pkutility_dlja_xbox_gejmpadov
https://overclockers.ru/blog/ZAMHome/show/33685/izuchaem-vozmozhnosti-prilozheniya-aksessuary-xbox-dlya-gejmpadov-xbox-one