xinput что это такое
Эмуляция XBox-контроллера для геймпадов без аппаратной поддержки XInput.
реклама
А что же делать юзеру, если у него в арсенале оказался геймпад без аппаратной поддержки XInput, DirectInput-совместимый? Выкидывать геймпад? Продавать и покупать XInput-совместимый? Нет, это совершенно необязательно, потому что существуют различные варианты эмуляции XInput для DirectInput Only геймпада. Вот эти варианты мы сегодня и рассмотрим.
Сразу оговорюсь, эмуляторов DS4Windows и InputMapper, предназначенных для DUALSHOCK 4, в этой статье не будет. Для DUALSHOCK 4 существует отдельная статья в блоге, DUALSHOCK 4 в реалиях ПК, где эта тема раскрыта достаточно широко.
реклама
Изначально эмулятор появился под названием «XBOX360 Controller Emulator v3.0 by Racer_S». Был он, мягко говоря, сыроват, пока его дальнейшим развитием не занялся пользователь с ником virus, обитающий тогда на сайте www.tocaedit.com. В дальнейшем всё это дело переросло в проект x360ce и существует по сей день.
Что представляет из себя x360ce эмулятор? Это кастомные библиотеки:
реклама
плюс файл с настройками:
реклама
Настроек много и они не универсальные. Эмуляция может работать, а может и не работать, зависит от игры и подобранных настроек. Для 64-битных приложений, нужно использовать 64-битную версию библиотек. Если для вашего DirectInput-геймпада в системе не установлен драйвер с поддержкой вибрации, вибрации не будет и через эмулятор. x360ce не работает с UWP-приложениями.
x360ce-эмулятор был отличным решением несколько лет назад, но сейчас есть варианты поинтереснее. Впрочем, иногда он спасает.
Скачать x360ce можно тут.
В 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:
Steam поддерживает большое количество геймпадов «из коробки», т.е. не требуется дополнительных телодвижений для того, чтобы Steam распознал ваш геймпад, а точнее правильно определил раскладку кнопок и прочее.
Но нет ничего страшного, если ваш DirectInput-геймпад незнаком стиму.
Для того, чтобы для вашего DirectInput-друга, в играх из библиотеки Steam (или добавленных туда вручную), заработала эмуляция XInput (и прочие плюшки), нужно проделать следующие шаги.
Подключить геймпад к ПК, запустить Steam и перейти в режим Big Picture:
Перейти в пункт меню с настройками контроллера:
поставить галочку на «пользовательские настройки обычного геймпада»:
выбрать внизу, в обнаруженных контроллерах, ваш геймпад и настроить его в соответствии с подсказками на экране:
нажать «сохранить» и дать имя вашему геймпаду:
Всё. Теперь ваш геймпад поддерживается в Steam, и для него доступны все настройки для любой игры из библиотеки:
В играх (из библиотеки Steam) ваш геймпад будет определяться, как XBox 360 контроллер. Чтобы произвести дополнительные настройки по конкретной игре, нужно вызвать в процессе игры оверлейный экран Steam (кнопкой GUIDE) или комбинацией клавиш и произвести все необходимые манипуляции.
Ксинпут и Директинпут
Ксинпут — это API, позволяющий приложениям принимать входные данные от контроллера Xbox для Windows. В этом документе описываются различия между реализациями Ксинпут и директинпут в контроллере Xbox, а также способы поддержки устройств ксинпут и устаревших устройств директинпут.
использовать устаревшие директинпут не рекомендуется, и директинпут недоступен для приложений магазина Windows.
Новый стандарт: Ксинпут
Ксинпут теперь доступен для разработки игр. Это новый стандарт ввода для Xbox и Windows. интерфейсы api доступны в пакете SDK для DirectX, и драйвер доступен в Центр обновления Windows.
Использование Ксинпут вместо директинпутимеет несколько преимуществ.
Использование контроллера Xbox с Директинпут
Контроллер Xbox правильно перечислен в директинпути может использоваться с директинпутапис. Однако некоторые функции, предоставляемые Ксинпут, будут отсутствовать в реализации Директинпут:
Сочетание левого и правого триггеров в директинпут — это проектирование. Игры всегда предполагают, что оси устройств Директинпут будут центрированы при отсутствии взаимодействия с пользователем с устройством. Однако контроллер Xbox был разработан для регистрации минимального значения, а не по центру, если триггеры не удерживаются. Поэтому более старые игры подразумевают взаимодействие с пользователем.
Чтобы проверить значения триггера по отдельности, необходимо использовать Ксинпут.
Параллельная Ксинпут и Директинпут
Для этого вставьте этот код в обратный вызов перечисления Директинпут:
Как подключить геймпады от консолей Xbox и PlayStation к компьютеру
В статье мы рассмотрим контроллеры трех последних поколений консолей Sony и Microsoft.
Более старые устройства тоже можно подключить к ПК, но понадобится переходник и специальный драйвер. Начиная с поколения PS3 и Xbox 360 все гораздо проще.
Контроллер Xbox 360
Для консоли Xbox 360 были выпущены как проводные, так и беспроводные версии геймпадов. С проводным вариантом проблем никаких: достаточно лишь подключить его в свободный порт USB. На Windows 10 и Windows 8 все заработает автоматически, на Windows 7 понадобится установка драйвера. Беспроводная версия подключается сложнее: нужен специальный ресивер, который продается отдельно. Его можно купить на Aliexpress.
Сейчас уже нет особого смысла покупать геймпад от Xbox 360. Для беспроводной версии нужно докупать адаптер, а играть по проводу и вовсе неудобно. Да и найти оригинальный геймпад сейчас не так просто: он уже не продается в любом магазине электроники, как это было раньше.
Тем не менее по форме и восприятию от использования геймпад отличается от современных вариантов для Xbox One и Xbox Series X. Он несколько по-другому лежит в руке, тактильные ощущения от кнопок и курков тоже отличаются. Возможно, вам понравится именно такое исполнение.
Контроллер Xbox One и Xbox Series X
Геймпады от Xbox One и Xbox Series X внешне очень похожи друг на друга. Способы их подключения также совпадают: можно использовать проводное соединение или Bluetooth. Но в случае с геймпадами от Xbox One есть нюанс.
Дело в том, что существует две версии геймпада Xbox One: первая поставлялась с оригинальной консолью, а вторая уже с Xbox One S и более поздней Xbox One X. У более ранней версии геймпада нет Bluetooth, из-за чего его можно подключить только через специальный адаптер, который продается отдельно (можно купить на Aliexpress).
Понять, какой у вас геймпад, можно по внешнему виду: у нового контроллера область около кнопки Guide (круглая кнопка с логотипом Xbox) цельная и сливается с корпусом. У старой версии эта область сливается с курками и в белой версии геймпада она черная. Геймпад от Xbox Series S/X опознать еще проще. У него несколько отличий, наиболее очевидные из которых — более современный порт USB Type-C и дополнительная кнопка Share.
Чтобы подключить геймпад к компьютеру, перейдите в «Параметры Windows» и далее в «Устройства». Нажмите «Добавление Bluetooth или другого устройства». Обратите внимание, если у вас старая версия и фирменный адаптер, то нужно выбрать пункт «Все остальное», а если новая — Bluetooth.
Далее нужно включить геймпад, нажав на кнопку Guide. Затем три секунды удерживать небольшую кнопку рядом с портом USB, пока индикатор Guide не начнет мигать. Система опознает контроллер и установит соединение.
Обратите внимание, вы не сможете использовать разъем для гарнитуры при соединении по Bluetooth. Это работает только на консоли или при подключении через фирменный адаптер. Также стоит учесть, что у геймпадов Xbox (кроме версии Elite) нет встроенного аккумулятора. Для питания подойдут батарейки или аккумуляторы формата АА. Зато можно не ждать пока геймпад зарядится, а купить два комплекта и менять их на лету.
Геймпады Xbox хорошо вписываются в экосистему Windows 10. Так, геймпад нативно поддерживает Xinput, который используется в современных играх, а кнопка Guide по умолчанию открывает игровую панель Windows 10 (но ее можно назначить и на запуск Steam Big Picture). Это самый беспроблемный вариант для ПК.
Контроллер PlayStation 3
Одна из особенностей DualShock 3 — аналоговые кнопки на лицевой панели, которые могут распознавать силу нажатия. Это используется в некоторых играх, например, в Metal Gear Solid 3. Впрочем, пригодиться это может разве что при игре на эмуляторе.
Для полноценной работы на Windows нужно установить программу ScPToolkit. До установки подключите геймпад при помощи кабеля Mini USB. Не перепутайте с Micro USB, который сейчас широко распространен. Также при установке поставьте галочку на пункте ScpToolkit Bluetooth Pair Utility, если хотите использовать геймпад в беспроводном режиме.
Когда процесс установки дойдет до экрана с большой зеленой кнопкой, нажмите на нее. Появится новое окно, в котором нужно убедиться, что все галочки проставлены. Force Driver Installation нужен только для Windows Vista.
В выпадающем списке выберите соответствующие устройства: ваш адаптер Bluetooth и DualShock 3, который обозначен PLAYSTATION 3 Controller. Далее нажмите Install. Когда процесс завершится, в нижней части окна должны появится сообщения об успешной установке: DualShock 3 USB Driver Installed и Bluetooth Driver Installed. Далее нажмите Exit.
Теперь вы можете запустить ярлык ScpToolkit Settings Manager. Здесь можно отключить вибрацию и выбрать другие настройки, но по умолчанию все должно работать и так. Система считает, что подключен XInput совместимый геймпад. Также DualShock 3 теперь можно заряжать от компьютерного порта USB.
Контроллер PlayStation 4
В отличие от геймпадов Microsoft, DualShock 4 работает через API DirectInput, поэтому он совместим далеко не со всеми играми. Для его корректной работы нужен враппер вроде DS4Windows. Кроме того, вы можете без проблем играть в игры из каталога Steam, так как клиент официально поддерживает DualShock 4. Также на сайте pcgamingwiki.com можно найти список игр, в которых DualShock 4 поддерживается официально.
DualShock 4 может похвастаться некоторыми особенностями, которых нет у контроллеров других производителей. Сенсорная панель, гироскопы, встроенный динамик и световой индикатор (LightBar) в первую очередь предназначены для консольных игр, но иногда отдельные функции могут быть задействованы и на PC. Например, Assassin’s Creed Odyssey использует лайтбар.
Официальный сайт больше не обновляется. Последнюю версию DS4Windows можно скачать тут. Пошаговая установка прописана в самой программе, правда, на английском языке. Но в целом все просто:
Если вас по каким-то причинам не устраивает геймпад Xbox, то DualShock 4 отлично заменит его. Пусть и в использовании он чуть менее удобен из-за отсутствия XInput.
Контроллер PlayStation 5
Новый контроллер отличается от предшественников существенно. Даже название у него другое — DualSense. Главные отличия от предыдущих поколений — адаптивные триггеры. Подробнее об этом вы можете прочитать в нашем обзоре. Как и в случае с DualShock 4 уникальные функции DualSense предназначены в первую очередь для консолей, но игры с поддержкой тактильной отдачи и адаптивных триггеров уже появляются и на PC.
Так как DualSense оснащен современным портом USB Type-C, для проводного подключения понадобится соответствующий кабель. В комплекте с консолью он есть, но если вы купите DualSense отдельно, то в комплектации будет только сам геймпад. Можно взять любой с как минимум одним разъемом Type-C, стоимость невелика. По Bluetooth контроллер подключается средствами Windows. Нужно зажать на три секунды центральную кнопку PS и кнопку Create. Может потребоваться ввести код 0000.
Как и в случае с другими контроллерами Sony, клиент Steam поддерживает DualSense. Можно играть в игры из каталога, а также в любые другие, которые вы добавите в клиент Steam вручную. Также можно использовать любой универсальный враппер для DirectInput-геймпадов, поскольку для нового геймпада нет специальной утилиты вроде DS4Windows.
В чем отличия XInput и DInput
XInput и DInput — это API, которые используются операционной системой при работе контроллеров. C выходом Xbox 360 основным API в Windows стал XInput, который заточен под геймпады Microsoft. В нем четко регламентировано количество и тип кнопок, триггеров и стиков. Все игры, вышедшие в эпоху Xbox 360 и далее, распознают контроллер без дополнительной настройки (если игра в принципе поддерживает геймпад). По сути, контроллер работает так же, как и в играх на консолях Xbox.
DInput (DirectInput) — это предшествующий API, который до сих пор используется в некоторых геймпадах. Тот же DualShock 4 работает именно через этот API. Проблема в том, что XInput и DInput несовместимы между собой. Если игра не поддерживает DInput, то поиграть на соответствующем геймпаде не выйдет. Нужен будет враппер или, как его еще называют, эмулятор геймпада Xbox.
Какой версии нужен Bluetooth
В большинстве случаев подойдет донгл версии Bluetooth 2.0 + EDR или 2.1 + EDR. Если собираетесь покупать новый, то берите не младше 4-й версии. Разница в цене небольшая, но более современный адаптер сгодится не только для подключения геймпадов.
В зависимости от устройства радиус действия может быть хуже или лучше. Для уверенного приема желательно вынести донг на переднюю панель, а не вставлять его сзади системного блока. Подробнее о Bluetooth и выборе адаптера можно прочитать в нашем материале «Как выбрать и настроить Bluetooth-адаптер для компьютера».
начало работы с Ксинпут
Ксинпут — это API, позволяющий приложениям принимать входные данные от контроллера Xbox для Windows. Поддерживаются эффекты румблеа контроллера, речевой ввод и вывод.
В этом разделе содержится краткий обзор возможностей Ксинпут и их настройки в приложении. Это включает в себя следующее:
Введение в Ксинпут
Консоль Xbox использует игровой контроллер, совместимый с Windows. приложения могут использовать API ксинпут для взаимодействия с этими контроллерами, когда они подключены к Windows компьютеру (за один раз может быть подключено до четырех уникальных контроллеров).
С помощью этого API можно запрашивать состояние любого подключенного контроллера Xbox, а также устанавливать эффекты вибрации. Контроллеры, подключенные к гарнитуре, также могут быть запрошены для устройств ввода и вывода звука, которые можно использовать с гарнитурой для обработки голоса.
Контроллер Xbox
Использование Ксинпут
Использование Ксинпут — это просто вызов функций Ксинпут по мере необходимости. С помощью функций Ксинпут можно получить состояние контроллера, получить идентификаторы головного телефона и установить эффекты румбле контроллера.
Несколько контроллеров
Приложения должны поддерживать несколько контроллеров.
Получение состояния контроллера
В течение всего времени работы приложения получение состояния от контроллера, вероятно, будет выполняться чаще всего. Из фрейма в кадр в игровом приложении необходимо получить состояние и сведения об игре, обновленные для отражения изменений контроллера.
Чтобы получить состояние, используйте функцию ксинпутжетстате :
По соображениям производительности не вызывайте ксинпутжетстате для пустого слота пользователя в каждом кадре. Рекомендуется проделать проверки для новых контроллеров каждые несколько секунд.
Неработающая зона
Чтобы пользователи имели единообразный интерфейс игрового процесса, игра должна правильно реализовать неработающую зону. Недействующая зона — это значения перемещения, сообщаемые контроллером даже в том случае, если аналоговые сумбстиккс не были затронуты и центрированы. Существует также некоторая зона для двух аналоговых триггеров.
Игры, использующие Ксинпут, которые не фильтруют неработающую зону, будут испытывать низкую игрового процессау. Обратите внимание, что некоторые контроллеры являются более важными, чем другие, поэтому неработающая зона может отличаться от единицы к единице. Рекомендуется тестировать игры с несколькими контроллерами Xbox в разных системах.
Приложения должны использовать «неработающие зоны» в аналоговых входах (триггеры, устройства), чтобы указать, когда перемещение было достаточно, чтобы подсчитаться допустимым.
Приложение должно проверить неработающие зоны и ответить на аппоприатели, как показано в следующем примере:
В этом примере вычисляется вектор направления контроллера и расстояние от вектора, который был отправлен контроллером. Это позволяет принудительно применять циклическое деадзоне, просто проверяя, превышает ли величина контроллера значение деадзоне. Кроме того, код нормализует величину контроллера, которую затем можно умножить на фактор для определенной игры, чтобы преобразовать расположение контроллера в единицы, относящиеся к игре.
Обратите внимание, что вы можете определить собственные зоны для устройств и триггеров (в любом месте от 0-65534) или использовать предоставленный деадзонес, определенный как _ левый игровой планшет ксинпут _ _ _ деадзоне, ксинпут _ игровой планшет, _ правый _ бегунок _ и _ _ _ пороговое значение триггера игровой планшет в деадзоне. h:
После применения деадзоне может оказаться полезным масштабировать результирующий диапазон [ 0,0.. 1.0 ] с плавающей запятой (как в примере выше) и при необходимости применить нелинейное преобразование.
Например, при работе с играми может быть полезно выполнить куб результата, чтобы лучше поработать с автомобилями с помощью игрового планшета, так как кубинг дает больше точности в нижних диапазонах, что желательно, так как игроки обычно применяют мягкую принудительную работу, чтобы получить незаметное перемещение или применить жесткое принудительное выполнение в одном направлении для получения ответа на Rd.
Установка эффектов вибрации
Обратите внимание, что правый мотор является высокочастотным мотором, левый мотор — это двигатель с низкой частотой. Им не всегда нужно присвоить одинаковую сумму, так как они предоставляют различные эффекты.
Получение идентификаторов звуковых устройств
Головной телефон для контроллера Xbox имеет следующие функции:
Используйте этот код для получения идентификаторов устройств для гарнитуры:
После получения идентификаторов устройств можно создать соответствующие интерфейсы. Например, если вы используете Ксаудио 2,8, используйте этот код для создания главной речи для этого устройства:
Сведения об использовании идентификатора устройства Каптуреид см. в разделе запись потока.
Получение идентификаторов GUID DirectSound (только для устаревших пакетов SDK DirectX)
использование устаревшей DirectSound не рекомендуется и недоступно в приложениях Windows Store. Сведения в этом разделе относятся только к версии пакета SDK для DirectX Ксинпут (Ксинпут 1,3). Windows 8 версия ксинпут (ксинпут 1,4) использует исключительно Windows идентификаторы устройств API аудио-сеансов (васапи), полученные через ксинпутжетаудиодевицеидс.
После получения идентификаторов GUID можно создать соответствующие интерфейсы, вызвав DirectSoundCreate8 и DirectSoundCaptureCreate8 следующим образом:
Чем отличаются геймпады XInput и DirectInput?
С геймпадами игровых консолей проблем никаких нет – приобретаете стандартный фирменный и играете без каких-либо трудностей. А вот в случае с компьютером ситуация слегка иная. Со всеми современными играми никаких сложностей не возникает, так как они в большинстве случаев имеют поддержку XInput. Устаревшие же игры создавались только с расчетом на DirectInput, поэтому при их запуске может сложиться такая ситуация, что кнопки начнут вести себя “неадекватно”. Например, они могут временами не распознаваться, или может возникнуть эффект зажатой кнопки и т.д. Чтобы устранить проблему, необходимо разобраться, в чем отличие между XInput- и DirectInput-геймпадами. И не стоит утверждать со стопроцентной уверенностью, что контроллерам на компьютере не место! Ведь в случае с файтингами или, например, с платформерами они являются неотъемлемыми элементами управления!
Сравнение
Разработчиком API XInput и DirectInput является компания Microsoft. Посредством интерфейса программирования приложений (API) происходит взаимодействие игры с контроллером. DirectInput особых изменений не получал еще с начала 2000 г., то есть со времен DirectX 8. XInput же появился в конце 2005 г. с релизом всем известной приставки Xbox 360. Начиная с этого момента, XInput стал стандартом ввода для всех геймпадов, которые совместимы и с консолями Xbox, и с компьютером под Windows. Хоть оба API и являются творением одного производителя (Microsoft), взаимозаменяемыми они не являются.
В случае с XInput все обстоит довольно просто, так как игра моментально и без проблем распознает геймпад. Все назначения кнопок являются стандартными. Можно, конечно, при необходимости изменять назначение кнопок, но зачем это делать, если по умолчанию все итак работает отлично? XInput оснащен фиксированным количеством кнопок, триггеров и осей, то есть строго соответствует стандартам консоли Xbox 360. А у DirectInput подобные ограничения не предусмотрены.
С DirectInput все обстоит по иному, так как перед каждой игрой придется каждый раз настраивать управление. Это, конечно, не сложно, однако может занимать время и доставлять неудобства. Но с другой стороны можно постоянно изменять назначение кнопок, тем самым подстраивая управление игрой под индивидуальные предпочтения. Популярным DirectInput-устройством является DualShock 4.
На рынке можно чаще встретить XInput-контроллеры, так как DirectInput-устройства выпускаются реже. Некоторые модели геймпадов рассчитаны под оба протокола, благодаря чему пользователю доступно быстрое переключение между ними.
Что выбрать?
Перед тем как выбрать между XInput и DirectInput, следует определиться, в какие игры чаще всего приходится играть. В любом случае стоит остановиться на XInput, ведь, как уже было упомянуто вше, все современные игры рассчитаны именно на него. Неплохим вариантом также послужат контроллеры, заточенные под оба протокола.