Эмуляция геймпада на примере Sleeping Dogs

Чтение на 6 минут

Как правильно настроить x360ce

Без правильного внедрения x360ce в игру джойстик будет вести себя странно. Например, в Sleeping Dogs: Definitive Edition не будет работать правый стик и перепутаются кнопки.

Как связать кнопки виртуального джойстика Xbox 360, который увидит игра, и кнопки настоящего джойстика в ваших руках, я рассказал в инструкции по настройке x360ce. Сейчас сосредоточимся на внедрении эмулятора в игру.

Решение

Сначала — информационная разведка. Нужно проанализировать игру.

Загрузите на сайт virustotal.com exe-файл игры (тот, который запускает игру):

x360ce: настраиваем геймпад на примере Sleeping Dogs

В моем случае игра лицензионная, установлена в Стиме и поэтому лежит в папке «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:

x360ce: как выбрать нужные настройки 2

Если у игры только 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 можно внедрить.
В 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«:

x360ce: как выбрать нужные настройки
Подтверждаем свою догадку

2. Ставим нужные галки

Осталось отметить галками нужные пункты в конфигураторе x360ce.exe:

x360ce: как выбрать нужные настройки 3

Тогда в папке с игрой появятся файлы xinput*.dll. Если есть кнопка «Apply/Synchronize Settings«, жмите ее.

Чтобы знать, что созданные файлики подхватились игрой, нужно включить оповещение на вкладке «Options«: ставьте галку на «Use Init Beep«:

Галка на "Use Init Beep" включает звук "бип" при запуске игры, если x360ce работает
Галка на «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
Геймпад для Xbox One

Поддержка сенсоров и микрофона, конечно, добавляет изюминку в игровой процесс, но разработчики игр лишили радости владельцев альтернативных геймпадов.

  • Управление не настраивается.
  • Количество кнопок и стиков строго ограничено.

Заточенные под новый протокол игры не видят DirectInput геймпады. А ведь 99% геймпадов китайского происхождения используют только его!

Есть геймпады, умеющие переключаться между обеими режимами. Таким эмулятор x360ce не нужен:

SPEEDLINK XEOX Pro - переключалка режима на видном месте
SPEEDLINK XEOX Pro — переключалка режима на видном месте

Кнопкой «Mode» можно включать эмуляцию геймпада от Xbox 360. Конечно, стики от этого лучше работать не станут, но хоть что-то.

На мой взгляд, ни один не оригинальный геймпад не заменит оригинальный хотя бы из-за точности стиков (рычажков). Можно снизить их чувствительность, как я уже рассказывал в статье по настройке x360ce, но это немного не то.

Темы записей
ТЕМЫ:
9 комментариев
  • СПАСИБО!!! Я так долго мучался и только сейчас у меня всё нормально заработало!

      • Здравствуйте. Не настраивается джойстик к игре NARUTO SHIPPUDEN: Ultimate Ninja STORM 4. Джойстик DEFENDER GAME RACER TURBO. Не подскажите более точные настройки. Просто в сайте (https://github.com/x360ce/x360ce/blob/master/Wiki/CompatibilityList.md), о котором говорилось в другой вашей статье, этой игры нет. К предыдущей части игры джойстик удалось подключить с более простыми настройками. Буду безумно благодарен за любую подсказку или совет

  • Огромное спасибо откладываю кирпичи играя в Outlast на геймпаде ;)

  • Новые типы игр Для Виндовс 10 заточенные под Х360 не работает с эмулятором ВООБЩЕ
    так как не используют xinput вообще а работают через API функции жостко забиты в теле программы

  • Сделала всё как надо , но геймпад не работает в игре Alice Madness Returns . ЧТо делать ?

  • Не мог подключить геймпад к Dark Souls на пк. Создал все возможные файлы xinput*.dll и удалил Dinput.dll из папки с экзешником игры — заработало

Добавить комментарий