Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Почему современные геймпады маскируются под контроллер Xbox 360

Почему современные геймпады маскируются под контроллер Xbox 360

Вы приобретаете новый современный манипулятор — например, свежий 8BitDo Ultimate 2C на замену устаревшему геймпаду Xbox One, — подключаете его к персональному компьютеру и замечаете любопытную деталь. Во многих играх интерфейс отображает не те обозначения кнопок, которые нанесены на корпус нового устройства, а раскладку, которую задает стандартный контроллер Xbox 360. Причина такого явления кроется в простом и вместе с тем изящном инженерном решении. Корпорация Microsoft внедрила системный интерфейс XInput, чтобы избавить разработчиков и игроков от необходимости настраивать каждый отдельно взятый манипулятор, обеспечив совместимость практически любого оборудования с операционной системой Windows и за ее пределами.

До появления XInput подключение геймпадов на ПК было настоящим хаосом

До релиза стандарта XInput, который вышел вместе с консолью Xbox 360, все периферийные устройства работали через интерфейс DirectInput. В свое время это решение принесло немало пользы индустрии персональных компьютеров, поскольку позволяло использовать самые разные категории устройств ввода: от классических геймпадов и джойстиков до рулей и авиационных штурвалов. Однако у такого подхода обнаружился существенный недостаток — вся сложность конфигурации ложилась на плечи пользователя. Разработчик видеоигр не мог с уверенностью предполагать, что условная кнопка A на подключенном приборе окажется на стандартизированном месте. Особенно остро эта проблема проявлялась со специализированным авиасимуляторным оборудованием, где элементы управления могли располагаться в самых неожиданных зонах.

Microsoft создала универсальное решение под единым началом

Ситуация кардинально изменилась с появлением консоли Xbox 360 и ее великолепного официального геймпада. Инженеры Microsoft проявили выдающийся подход к эргономике и дизайну железа, но не менее масштабная работа была проделана в программной части. Новый интерфейс XInput стал преемником DirectInput: он требовал минимум настроек, отличался простотой в использовании и позволял унифицировать кодовую базу между популярной игровой приставкой и операционной системой Windows.

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

Как именно работает XInput со всеми вашими геймпадами

В основе архитектуры XInput лежит базовая структура XINPUT_GAMEPAD, содержащая битовую маску нажатий клавиш, раздельные левый и правый триггеры, а также числовые координаты X и Y для двух аналоговых стиков. Набор кнопок включает стандартную крестовину D-pad, кнопки Start и Back, нажатия на стики, бамперы, а также привычную комбинацию клавиш A, B, X и Y. Компания Microsoft фактически взяла контроллер Xbox 360 за фундамент при создании универсального программного интерфейса для ПК и Xbox.

Благодаря доминированию консоли Xbox 360 на рынке в середине двухтысячных годов, Microsoft смогла обязать производителей и разработчиков поддерживать этот стандарт. Именно так Xbox 360 превратился в де-факто стандартную связующую технологию между игровым манипулятором и компьютером. Студии активно внедряли поддержку XInput, поскольку аудитория массово использовала совместимое железо, а производители выпускали оборудование под готовую программную среду. В результате геймеры привыкли, что устройства просто функционируют сразу после подключения. Даже сегодня этот принцип остается неизменным — современный геймпад 8BitDo поддерживает как XInput, так и устаревший DirectInput.

Steam помогает эмулировать контроллер Xbox 360

Платформа Valve предлагает собственное решение под названием Steam Input, которое выполняет для геймпадов ту же роль, какую Proton играет для запуска игр на операционной системе Linux. Инструмент умеет принимать сигналы с подключенного манипулятора и переводить их в понятную для конкретной игры форму. Этот процесс реализуется с помощью уже существующих системных API ввода, включая стандарт XInput.

Современный контроллер Xbox 360 и геймпад 8BitDo Ultimate 2C на столе
Геймпад 8BitDo Ultimate 2C подключен к персональному компьютеру.
Крупный план крестовины D-pad на геймпаде 8BitDo Ultimate 2C
Детализированный вид крестовины D-pad беспроводного контроллера.

Благодаря этому процессу создается эмулируемое устройство, которое передает игре понятный интерфейс вместо манипулятора, с которым приложение изначально не умело бы работать. Такой подход особенно важен, если вы подключаете к компьютеру геймпад от PlayStation. Платформа Valve корректно считывает устройство как фирменный манипулятор Sony, однако запустить его напрямую в игре удается далеко не всегда. В подобных ситуациях платформа выступает в роли переводчика, маскируя устройство под стандарт Microsoft.

Основные игровые кнопки на геймпаде 8BitDo Ultimate 2C
Расположение лицевых клавиш на современном игровом контроллере.
Вид спереди на геймпад 8BitDo Ultimate 2C
Общий вид контроллера 8BitDo Ultimate 2C спереди.
Настройка параметров ввода контроллера в интерфейсе Linux KDE
Отображение подключенного игрового устройства в системе Linux.

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

Если же говорить о фирменном Steam Controller, то операционная система и сама платформа прекрасно осведомлены о его подключении по кабелю USB. Приложение видит манипулятор в его первозданном виде, однако игра с поддержкой XInput распознает его как стандартный аналог для персональных компьютеров, тогда как проекты на собственном API платформы идентифицируют его именно как Steam Controller. В операционных системах семейства Linux ситуация выглядит несколько иначе, хотя базовая концепция практически полностью повторяется. Прослойка Proton задействует уровень совместимости, заставляя систему воспринимать устройство еще ближе к устаревшему стандарту.

Новый этап развития интерфейсов

Корпорация Microsoft уже представила свежий программный интерфейс для манипуляторов под названием GameInput, который постепенно внедряется все шире. Это интерфейс нового поколения, поддерживающий расширенный парк устройств и фактически представляющий собой надстройку над более ранними архитектурами, включая XInput, DirectInput и Raw Input. Любопытно, что разработчики предусмотрели возможность запуска старого кода XInput поверх GameInput, обеспечивая полноценную совместимость с софтом, написанным под прошлые версии API. И хотя консоль Xbox 360 давно ушла в прошлое, ее архитектурное наследие продолжает жить в современных интерфейсах управления.

Источник: xda-developers.com

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

01.
На платформе MonsterInsights