Настройка джойстика для игр
В текущих реалия ПК-гейминга, современные игры поддерживают только 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:
И наконец вариант номер три — эмуляция XInput через Steam.
Steam поддерживает большое количество геймпадов «из коробки», т.е. не требуется дополнительных телодвижений для того, чтобы Steam распознал ваш геймпад, а точнее правильно определил раскладку кнопок и прочее.
Но нет ничего страшного, если ваш DirectInput-геймпад незнаком стиму.
Для того, чтобы для вашего DirectInput-друга, в играх из библиотеки Steam (или добавленных туда вручную), заработала эмуляция XInput (и прочие плюшки), нужно проделать следующие шаги.
Подключить геймпад к ПК, запустить Steam и перейти в режим Big Picture:
Перейти в пункт меню с настройками контроллера:
поставить галочку на «пользовательские настройки обычного геймпада»:
выбрать внизу, в обнаруженных контроллерах, ваш геймпад и настроить его в соответствии с подсказками на экране:
нажать «сохранить» и дать имя вашему геймпаду:
Всё. Теперь ваш геймпад поддерживается в Steam, и для него доступны все настройки для любой игры из библиотеки:
В играх (из библиотеки Steam) ваш геймпад будет определяться, как XBox 360 контроллер. Чтобы произвести дополнительные настройки по конкретной игре, нужно вызвать в процессе игры оверлейный экран Steam (кнопкой GUIDE) или комбинацией клавиш и произвести все необходимые манипуляции.
Источник
Эмуляция 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:
И наконец вариант номер три — эмуляция XInput через Steam.
Steam поддерживает большое количество геймпадов «из коробки», т.е. не требуется дополнительных телодвижений для того, чтобы Steam распознал ваш геймпад, а точнее правильно определил раскладку кнопок и прочее.
Но нет ничего страшного, если ваш DirectInput-геймпад незнаком стиму.
Для того, чтобы для вашего DirectInput-друга, в играх из библиотеки Steam (или добавленных туда вручную), заработала эмуляция XInput (и прочие плюшки), нужно проделать следующие шаги.
Подключить геймпад к ПК, запустить Steam и перейти в режим Big Picture:
Перейти в пункт меню с настройками контроллера:
поставить галочку на «пользовательские настройки обычного геймпада»:
выбрать внизу, в обнаруженных контроллерах, ваш геймпад и настроить его в соответствии с подсказками на экране:
нажать «сохранить» и дать имя вашему геймпаду:
Всё. Теперь ваш геймпад поддерживается в Steam, и для него доступны все настройки для любой игры из библиотеки:
В играх (из библиотеки Steam) ваш геймпад будет определяться, как XBox 360 контроллер. Чтобы произвести дополнительные настройки по конкретной игре, нужно вызвать в процессе игры оверлейный экран Steam (кнопкой GUIDE) или комбинацией клавиш и произвести все необходимые манипуляции.
Источник
Эмуляция геймпада на примере Sleeping Dogs
Как правильно настроить x360ce
Без правильного внедрения x360ce в игру джойстик будет вести себя странно. Например, в Sleeping Dogs: Definitive Edition не будет работать правый стик и перепутаются кнопки.
Как связать кнопки виртуального джойстика Xbox 360, который увидит игра, и кнопки настоящего джойстика в ваших руках, я рассказал в инструкции по настройке x360ce. Сейчас сосредоточимся на внедрении эмулятора в игру.
Решение
Сначала — информационная разведка. Нужно проанализировать игру.
Загрузите на сайт virustotal.com exe-файл игры (тот, который запускает игру):
В моем случае игра лицензионная, установлена в Стиме и поэтому лежит в папке «c:\Program Files (x86)\Steam\SteamApps\common\SleepingDogsDefinitiveEdition«. У вас, скорее всего, будет другая папка.
После непродолжительного анализа на вирусы (сайт в первую очередь создан для этого) откройте вкладку «Сведения о файле«. Там будет нужная информация.
1. Определяем, работает ли игра с XInput
Нужно определить, поддерживает ли игра геймпады. Без этого управлять игрой джойстиком через x360ce не получится, нужен другой эмулятор — программа типа JoyToKey, которая превратит кнопки геймпада в клавиши клавиатуры и движения мыши.
Пробегаем глазами раздел «PE imports«. Среди строчек типа «ADVAPI32.dll«, «OLEAUT32.dll» и т.д. ищите следующие:
- xinput9_1_0.dll
- xinput1_1.dll
- xinput1_2.dll
- xinput1_3.dll
- xinput1_4.dll
- dinput8.dll
Как у игры Sleeping Dogs:
Если у игры только dinput8.dll, значит, возможно, она умеет работать с геймпадами через протокол DirectInput и никакой эмуляции джойстика Xbox 360 не нужно.
Отсутствие dinput8.dll означает, что игра, скорее всего, не умеет подключаться к джойстику через протокол Dinput и эмулятор x360ce нужен, но только если есть Xinput*.dll.
Не нашли Xinput*.dll? Печально — либо игра практикует особый подход к геймпадам иксбокса (этим славится игровой движок Unity), либо не поддерживает геймпады Xbox 360 вообще.
В Sleeping Dogs есть настройки геймпада Xbox 360 и она работает через xinput9_1_0.dll — значит, эмулятор x360ce можно внедрить.
2. Смотрим разрядность
Игра поддерживает XInput? Продолжаем.
В разделе «PE header basic information» строчка «Target machine» подскажет, какой разрядности игра: 64-битная (значение «x64«) или 32-битная («Intel 386 or later processors and compatible processors«).
Смотрим, какой разрядности программа
Для подтверждения догадки смотрим раздел «ExifTool file metadata» — «FileType«: «Win32 EXE» или «Win64 EXE«:
Подтверждаем свою догадку
2. Ставим нужные галки
Осталось отметить галками нужные пункты в конфигураторе x360ce.exe:
Тогда в папке с игрой появятся файлы xinput*.dll. Если есть кнопка «Apply/Synchronize Settings«, жмите ее.
Чтобы знать, что созданные файлики подхватились игрой, нужно включить оповещение на вкладке «Options«: ставьте галку на «Use Init Beep«:
Галка на «Use Init Beep» включает звук «бип» при запуске игры, если x360ce работает
Если вы слабослышащий, отметьте галкой пункт «Enable Console» — когда эмулятор x360ce внедрится в игру, появится черное окошко (если игра запускается поверх всех окон, жмите Alt+Tab).
3. Если геймпад не работает в игре
Sleeping Dogs, The Evil Within и некоторые другие игры просто так не заработают. Кнопки будут перепутаны и/или не заработает правый стик. Исправим это!
Копируем из папки с конфигуратором x360ce.exe файл x360ce.ini в папку с игрой и пробуем запустить.
Теперь игра вылетает с ошибкой? Скажите спасибо корявым драйверам джойстика. Отключите вибрацию на вкладке «Force Feedback«:
Отключение функции вибрации
Если геймпадов несколько, отключите у всех.
После настройки заново скопируйте x360ce.ini в папку с игрой. Игра запустится и кнопки заработают как надо.
Управление работает как надо!
Все остальные методы, как бороться с вылетами x360ce, описаны в записи «x360ce — подключаем любой джойстик«.
DirectInput vs. XInput
Протокол команд DirectInput используется для работы с геймпадами (джойстиками, рулями и другими забавными штуками) с не знаю каких времен. У него большие возможности:
- Можно настроить на кнопки джойстика любые действия.
- Поддерживается виброотдача.
- Количество кнопок, рычажков, педалей, рулей и прочей атрибутики может быть почти бесконечным.
Потом Microsoft изобрела новый протокол XInput для общения компьютера с геймпадами фирменных приставок Xbox.
Геймпад для Xbox One
Поддержка сенсоров и микрофона, конечно, добавляет изюминку в игровой процесс, но разработчики игр лишили радости владельцев альтернативных геймпадов.
- Управление не настраивается.
- Количество кнопок и стиков строго ограничено.
Заточенные под новый протокол игры не видят DirectInput геймпады. А ведь 99% геймпадов китайского происхождения используют только его!
Есть геймпады, умеющие переключаться между обеими режимами. Таким эмулятор x360ce не нужен:
SPEEDLINK XEOX Pro — переключалка режима на видном месте
Кнопкой «Mode» можно включать эмуляцию геймпада от Xbox 360. Конечно, стики от этого лучше работать не станут, но хоть что-то.
На мой взгляд, ни один не оригинальный геймпад не заменит оригинальный хотя бы из-за точности стиков (рычажков). Можно снизить их чувствительность, как я уже рассказывал в статье по настройке x360ce, но это немного не то.
Источник