Xinput что это такое
Чем отличаются геймпады 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, ведь, как уже было упомянуто вше, все современные игры рассчитаны именно на него. Неплохим вариантом также послужат контроллеры, заточенные под оба протокола.
Эмуляция 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 был разработан для регистрации минимального значения, а не по центру, если триггеры не удерживаются. Поэтому более старые игры подразумевают взаимодействие с пользователем.
Чтобы проверить значения триггера по отдельности, необходимо использовать Ксинпут.
Параллельная Ксинпут и Директинпут
Для этого вставьте этот код в обратный вызов перечисления Директинпут:
Как выбрать геймпад
Геймпад, как средство взаимодействия между игроком и игрой существует уже достаточно давно. Многие управляли Марио, бегущим по просторам сказочного мира, или бравым воякой в Contra, с помощью пластикового прямоугольника с кнопками.
С тех пор много воды утекло, геймпады стали куда более разнообразными, функциональными и эргономичными. Не удивительно, что в сегодняшнем мире выбор контроллера может стать не праздной задачей. Вариантов много, поди, разберись, в чем отличия и какой подойдет именно вам. Но все-таки давайте попробуем.
Целевая платформа
В сегодняшнем мире существует достаточное количество различных игровых платформ, и не удивительно, что контроллеры для них также отличаются. Поэтому первоначально необходимо выбрать, с какой из них вы будете использовать геймпад.
Несмотря на это производители стараются делать относительно универсальные модели, подходящие к различным устройствам. Например, геймпад может подходить одновременно и для ПК, игровой приставки и для андроид устройства. Выбирая контроллер для ПК, ознакомьтесь также со списком поддерживаемых операционных систем.
Но к сожалению, бывают устройства, к которым нет универсальных моделей (например, некоторые игровые приставки Nintendo).
XInput или DirectInput
До середины нулевых такой дилеммы не существовало. Геймпады использовали DirectInput API. Однако Microsoft с выходом своей приставки XBOX 360, ввела в использование новый вид API – XInput. А поскольку эта компания владеет самой распространённой операционной системой (с самой широкой библиотекой игр), то XInput появился и в Windows, начиная с XP Service Pack 1.
Раз уж разговор затронул приставки (на которых геймпады первое и практически единственное средство управления), то следует упомянуть, что контроллеры от XBOX (360 и ONE) используют XInput, а контроллеры Sony Playstation – DirectInput.
Благодаря кроссплатформенности (XBOX/PC) и отсутствию необходимости в настройке, XInput быстро стал стандартом для PC игр и практически все игры, вышедшие за последние 10 лет, поддерживают работу с такими устройствами. Определяются такие геймпады как Xbox 360 controller, этого пугаться не стоит.
DirectInput используется игровыми рулями, штурвалами для авиа- и космических симуляторов, геймпадами для Playstation 2/3/4.
Также стоит отдельно отметить DUALSHOCK 4 (стандартный контроллер Playstation 4). Поскольку это контроллер от приставки текущего поколения, проданной почти 100 млн. тиражом, некоторые разработчики игр, кроме XInput, добавляют поддержку именно этого DirectInput устройства. Также компания Valve в своем клиенте Steam, обеспечила полную поддержку DUALSHOCK 4, независимо от игры.
У вас может возникнуть закономерный вопрос: почему не объединить оба API в одном устройстве? Производители также задавались им и выпустили модели которые могут работать в любом из этих стандартов по вашему желанию. Для этого необходимо всего лишь использовать переключатель, размещенный на тыльной стороне устройства. Практично и иногда очень полезно.
Способ подключения
Немаловажный параметр, также зависящий от того к какой платформе вы покупаете геймпад.
Фундаментально различается на 2 вида:
Для проводного подключения используются USB (например, в ПК) или проприетарные разъемы (например, для Nintendo Switch). Беспроводным подключением является Bluetooth (ПК, Android, iOS), либо используются специальные (фирменные) приемопередатчики (XBOX 360/ONE).
Приемопередатчик для беспроводного подключения контроллера XBOX ONE к ПК |
Дополнительные кнопки 9, 10, Turbo, Clear и Auto |