как узнать xinput или directinput
Ксинпут и Директинпут
Ксинпут — это API, позволяющий приложениям принимать входные данные от контроллера Xbox для Windows. В этом документе описываются различия между реализациями Ксинпут и директинпут в контроллере Xbox, а также способы поддержки устройств ксинпут и устаревших устройств директинпут.
использовать устаревшие директинпут не рекомендуется, и директинпут недоступен для приложений магазина Windows.
Новый стандарт: Ксинпут
Ксинпут теперь доступен для разработки игр. Это новый стандарт ввода для Xbox и Windows. интерфейсы api доступны в пакете SDK для DirectX, и драйвер доступен в Центр обновления Windows.
Использование Ксинпут вместо директинпутимеет несколько преимуществ.
Использование контроллера Xbox с Директинпут
Контроллер Xbox правильно перечислен в директинпути может использоваться с директинпутапис. Однако некоторые функции, предоставляемые Ксинпут, будут отсутствовать в реализации Директинпут:
Сочетание левого и правого триггеров в директинпут — это проектирование. Игры всегда предполагают, что оси устройств Директинпут будут центрированы при отсутствии взаимодействия с пользователем с устройством. Однако контроллер Xbox был разработан для регистрации минимального значения, а не по центру, если триггеры не удерживаются. Поэтому более старые игры подразумевают взаимодействие с пользователем.
Чтобы проверить значения триггера по отдельности, необходимо использовать Ксинпут.
Параллельная Ксинпут и Директинпут
Для этого вставьте этот код в обратный вызов перечисления Директинпут:
Эмуляция 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) или комбинацией клавиш и произвести все необходимые манипуляции.
Чем отличаются геймпады 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, ведь, как уже было упомянуто вше, все современные игры рассчитаны именно на него. Неплохим вариантом также послужат контроллеры, заточенные под оба протокола.
Как узнать xinput или directinput
Признаюсь — у меня не было никаких приставок и прочего, однако, на них я всё же играл. Потом у меня появилась PS2, но играл на ней я меньше, чем на ПК. Поэтому можно сказать, что я приверженец клавамыши и уже только потом, в особых случаях голосую за геймпад.
Конечно единственно верный и истинный для меня был тот самый пад от PS2 или любой на него похожий с аналогичной «раскладкой» (X, [], /_\, O).
Однако. В очень далёком прошлом как-то я играл в невероятно крутую (по тем временам, да и сейчас тоже) Sonic Adventure 2 на Sega Dreamcast и хоть тот пад показался мне весьма причудливым, но очень крутым.
Затем всё это забылось и играл я исключительно на ПК с клавамышью, и лишь иногда доставал свой 2-In-1 геймпад «Thrustmaster Dual Trigger PC\PS2». И он был DirectInput.
Вот такой, но только синий. Данный «красный» говорит о том, что он ещё и для PS3. Забавно, но вот те триггеры на самом деле пустышки — на них можно назначить любое дублирование, а так как это аналоговый ввод, то даже ось. У себя же я просто поставил туда R2, L2.
И вот тут начинается самое интересное. Ни для кого не секрет, что всё чаще крупные компании делают просто порты с консолей на ПК. Это касается и даже игрового процесса — он заточен под пад. Хоть и игра на ПК. Но для пада. ЩАТО. Играть на клавамыши можно, но… вы играли в DmC на клавамыши? Думаю вы просто мазахист. Ладно, DmC не лучший пример. Что на счёт новых Бэтманов? Мне вот стало жаль свою мышку и я переключился на пад.
Ой, что такое? Новые игры не могут в DirectInput? Или вынужденная покупка ради удобства.
XBox пад был признан самым комфортным из всех. Что забавно — в нём явно виднеется наследие Дримкаста. Если Майкрософт не выкупали (что там можно купить у приставки?) права, то можно смело заявить, что просто спи***ли геймпад и чуть-изменили его.
Не буду спорить об удобстве — он реально мне нравится… но действительно ли он мне нравится? Вся штука в том, что игры корректно работают только с таким падом. И вот всякие подсказки по кнопкам с A B Y X.
Должен сказать, что мне не повезло приобрести XInput геймпад в эпоху «Ё**ный Доллар!» и собственно отдал за него около 2к рублей. И это при том, что раньше я планировал взять от Logitech Xinput совместимый беспроводной пад за 1.7к (F710 вроде), а теперь он стоит 3к, а в одном магазине видел аж за 4к. 4К, КАРЛ! При этом должен заметить, что пады от logitech по дизайну таки больше PS-овские.
Но я нашёл пад от Speedlink с полной копией дизайна оригинального XBox-овского пада. При этом собственно дешевле раза в 2. А с учётом того, что оригинальный продаётся без рессивера (хотя есть комплекты и с ним)… короче я рад, что у меня появился такой пад.
То, что я хотел купить (Logitech F710)
Что купил в итоге (Speedlink Torid wireless) (Ещё есть белый и кислотно-салатовый, взял бы даже второй, да небыло его)
И знаете чем выигрывает пад от Speedlink? У него встроенный аккумулятор! Раньше смотрел (сейчас в новых консолях у всех так правда) — везде батарейки, а тут аккумулятор есть и весит почти ничего — очень лёгкий (но это как плюс так и минус).
И если раньше я реально считал психами тех, кто играет в шутеры на приставках с падами, то теперь… я сам поигрываю в Bioshock Infinite с XInput-ом! Должен сказать это не так страшно, как казалось. Хотя эта игра не удачный выбор (почти все ругают игру за элемент именно шутера).
Но думаю нет смысла спорить, что с XInput падами лучше всего играется ПОЧТИ ВО ВСЕ ИГРЫ, как минимум современные. Исключения могут быть только вот эти самые шутеры и стратегии. Но на этот счёт у Valve есть свой ответ, но жаль, что до нас (РФ) он так и не дошёл, лол.
И это было лишь вступление
Да-да. Ведь я тут совсем про другое собирался писать! Но как-то разошёлся и это… накипело!
Темой поста должно было стать неожиданное открытие в пользу DirectInput-а в современных играх. Относительно современных.
Дело в том, что ВНЕЗАПНО приобрёл руль. Это вообще на меня не похоже — столь крупная покупка, да ещё и спонтанная. Занесло короче меня.
Но и самое интересное. Думаю такой «отзыв» в пору оставлять на сайтах магазинов, где купил именно этот девайс, но… оно больше игровое.
И первое, что меня поразило — дублирование кнопок. Конечно я читал и обзоры и характеристики и всё им соотвествует, однако, почему они дублируются? Вернее не так. Какого фига они дублируются?! Железоделам было сложно положить ещё пару кнопок? Или может… ну ладно. Допустим, что это астрономические ограничения по железу — сделаешь больше и Вселенная схлопнется, но вот дальше интереснее.
(Опять отступление): Получилась забавная ситуация. В интернетах нашёл две модели одного и того же руля (опять таки от Speedlink), но с существенной железной — программной разницей — с виду они как две капли воды, но один может и в DirectInput и в XInput. Конечно тот, который двойной стоил в 2 раза дороже. А получилось так, что я приобрёл по цене первого версию с двумя принципами ввода. А может просто сайт тупил так (Яндекс Маркет).
Вот он руль. Думаю следует обратить внимание на часть с кнопками ABXY — это свидетельствует о XInput-овости. В другой версии там просто 1234.
(Speedlink Drift O.Z. PC\PS3, ага, а раскладка кнопок от XBox, лол)
Так вот. В чём был интерес опыта у РУЛЯ для XInput-a и DirectInput-a. Дело в том, что каким-то образом на уровне железа или же ПО у XInput-а контроллов было МЕНЬШЕ. А именно безбожное дублирование оси педали на ось (да, это ось) — включения поворотников.
И честно говоря я офигел от такого. Думал, что раз ИксИнпут, то значит это супер-круто-патамущта-супер-круто, а вот нет!
Что ещё интереснее — дублирование оси не оправдано. Напомню (или скажу, если не знали) — у XInput есть 6 осей (в оригинальной XBox) и 5 осей в моей версии (одна ось на два курка). А теперь если посчитать для руля: 1 ось для педалей (считаем, что курки допустим), 1 ось для Х руля, непонятно зачем 1 ось на поворотники и… и всё. Т.е. у Speedlink есть ещё минимум 2 оси (просто разобрали свой XInput пад и положили в корпус руля, профит?).
Чтож. Тут я немного взгрустнул и сменил режим на DirectInput и… ЩАТО?! теперь ось педали работала как отдельная. Т.е. в режиме ИксИнпута руль мягко говоря проигрывает. Т.е. он имеет вообще лишь 2 оси, КАРЛ. Но при ДиректИнпуте таки 3. Хотя это неважно — главное как играется игра, так сказать. И вот в режиме ИксИнпута — это нереально тупо. Правда, если играете в гонки, где не нужны поворотники, то да — это не так страшно. НО Я ТО ИГРАЛ В EURO TRUCK SIMULATOR 2! Это было просто эстетически необходимо!
Собственно, можно было бы изучить этот вопрос (про написание драйверов) и попробовать сделать как раз именно этот «фантомный компонент», чтобы сделать нормальный центр.
Ах да, в силу того, что настройки не сохраняются нельзя поставить мёртвую зону, но можно её поставить в игре — это хорошо. Но вот играть с такой мёртвой зоной — это просто крындец.
Конечно, я не знаю как дела с рулём от Logitec за 10косых, а мой обошёлся примерно в 2.7к, что для меня неоправданно дорогая покупка. Но если посмотреть на текущую ситуацию, то… короче это «нормально». Не нормально покупать руль за 30к, КАРЛ! Молчу о ценах на ноутбуки и прочее, но это абсолютно другая история.
У меня ещё есть несколько игр урваных на распродаже в Стиме, так что будет с чем гонять и тестировать руль. А пока я всё ещё делаю Взертоса.
На этом заканчивается пост-впечатления о Х-инпутах и ПрямойВвод. Возможно кому-то это будет интересно. Или нет.
Все картинки взяты из Интернет. Все права принадлежат Интернет. Что попало в Интернет является собственностью Интернет.
Как выбрать геймпад
Геймпад, как средство взаимодействия между игроком и игрой существует уже достаточно давно. Многие управляли Марио, бегущим по просторам сказочного мира, или бравым воякой в 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 |