Открыть сервис

Windows.Gaming.Input

Windows.Gaming.Input — это программный интерфейс (API) для операционной системы Windows, предназначенный для взаимодействия с игровыми контроллерами и устройствами ввода. API входит в состав платформы Universal Windows Platform (UWP) и обеспечивает низкоуровневый доступ к функциям геймпадов, джойстиков, рулей и других игровых манипуляторов, поддерживающих стандарт XInput или DirectInput. Разработан корпорацией Microsoft для использования в играх и приложениях, распространяемых через Microsoft Store, а также для настольных приложений Win32.

История

API Windows.Gaming.Input был представлен в 2015 году вместе с выходом Windows 10 и платформы UWP. Он стал частью более широкой экосистемы Xbox и Windows, ориентированной на унификацию игрового опыта на консолях и ПК. До его появления основными способами работы с игровыми контроллерами в Windows были DirectInput (устаревший, но широко поддерживаемый) и XInput (более современный, но ограниченный контроллерами Xbox). Windows.Gaming.Input призван заменить оба этих интерфейса, предоставляя единый, современный и безопасный способ доступа к устройствам ввода, особенно в контексте UWP-приложений, которые работают в изолированной среде.

Первоначально API поддерживал только геймпады Xbox One и Xbox 360, подключенные через USB или беспроводной адаптер. В последующих обновлениях Windows 10 и Windows 11 функционал был расширен: добавлена поддержка контроллеров Xbox Series X|S, геймпадов сторонних производителей, совместимых с XInput, а также устройств с обратной связью (вибрация, триггеры). В 2017 году Microsoft выпустила обновление, добавившее поддержку джойстиков и рулей через DirectInput, что сделало API более универсальным.

Архитектура и компоненты

Windows.Gaming.Input построен на основе COM-интерфейсов и работает в пространстве имён Windows.Gaming.Input. Основные классы и интерфейсы включают:

  • Gamepad — основной класс для работы с геймпадами (например, Xbox One, Xbox Series X|S). Предоставляет доступ к кнопкам, аналоговым стикам, триггерам и вибрации.
  • ArcadeStick — для аркадных джойстиков (например, от Hori или Razer).
  • FlightStick — для авиационных джойстиков (например, Thrustmaster).
  • RacingWheel — для гоночных рулей с педалями и обратной связью.
  • RawGameController — универсальный класс для устройств, не подпадающих под стандартные категории (например, танцевальные платформы, световые пистолеты).
  • UINavigationController — для контроллеров навигации по интерфейсу, таких как пульты для Xbox Media Remote.

Каждый класс наследуется от базового интерфейса IGameController, который предоставляет общие свойства: уникальный идентификатор, состояние подключения, метку производителя. API использует событийную модель: приложения могут подписываться на события подключения/отключения устройств (Gamepad.GamepadAdded, Gamepad.GamepadRemoved) и опрашивать текущее состояние контроллера в игровом цикле.

Возможности и особенности

Поддержка вибрации и обратной связи

Windows.Gaming.Input позволяет управлять вибрацией геймпада через свойство Gamepad.Vibration. Разработчик может задать интенсивность вибрации для левого и правого моторов отдельно. Для контроллеров Xbox Series X|S дополнительно поддерживается импульсная обратная связь на триггерах (через Gamepad.TriggerWeapons), что даёт тактильные ощущения при нажатии курков.

Работа с несколькими устройствами

API поддерживает одновременное подключение до 8 контроллеров одного типа (например, 8 геймпадов). Каждое устройство имеет уникальный идентификатор, что позволяет различать их в многопользовательских играх. Приложения могут получать список всех подключённых контроллеров через статический метод Gamepad.FromGameController или перечисление Gamepad.Gamepads.

Безопасность и изоляция

В UWP-приложениях Windows.Gaming.Input работает в изолированной среде, что предотвращает прямой доступ к аппаратному обеспечению. Это повышает безопасность, но ограничивает возможности для низкоуровневой настройки (например, переназначения кнопок). Для настольных приложений Win32 API также доступен, но может быть менее стабильным из-за различий в модели безопасности.

Применение

Windows.Gaming.Input используется в играх, разработанных для Windows 10/11, особенно в приложениях из Microsoft Store. Примеры игр, использующих этот API: Forza Motorsport 7, Gears of War 4, Halo Infinite, Minecraft (UWP-версия). Также API применяется в эмуляторах, таких как Xenia (эмулятор Xbox 360), и в программах для тестирования контроллеров.

Кроме игр, API может быть использован в приложениях для управления дронами, робототехнике или симуляторах (например, для тренировки пилотов). Однако из-за ограниченной поддержки сторонних устройств (не все джойстики и рули корректно распознаются) в профессиональных симуляторах чаще используют DirectInput или специализированные библиотеки (например, SDL2).

Критика и ограничения

  • Ограниченная поддержка устройств: API не поддерживает старые контроллеры, работающие только через DirectInput (например, джойстики Logitech WingMan). Для них требуется эмуляция через XInput или использование RawGameController, что может снижать точность.
  • Отсутствие переназначения кнопок: В отличие от DirectInput, Windows.Gaming.Input не позволяет программно менять назначение кнопок. Это делает API менее гибким для игр с нестандартными схемами управления.
  • Зависимость от UWP: Для полноценной работы в UWP-приложениях требуется соблюдение строгих правил безопасности, что усложняет интеграцию с настольными играми, использующими Win32.
  • Проблемы с обратной совместимостью: Некоторые старые игры, написанные для XInput, могут не распознавать контроллеры через Windows.Gaming.Input без дополнительных прослоек (например, через Steam Input).

Сравнение с XInput и DirectInput

ХарактеристикаWindows.Gaming.InputXInputDirectInput
ПлатформаWindows 10/11, UWP, Win32Windows XP–11, Xbox 360/One/SeriesWindows 95–11, устаревший
Поддержка контроллеровXbox, совместимые с XInput, джойстики, рулиТолько Xbox (360/One/Series)Любые устройства (джойстики, рули, педали)
ВибрацияДа (включая триггеры)Да (только моторы)Нет встроенной поддержки
Переназначение кнопокНетНетДа
Максимум устройств8416 и более
БезопасностьВысокая (изоляция в UWP)СредняяНизкая (прямой доступ к драйверам)

Будущее развитие

Microsoft продолжает развивать Windows.Gaming.Input в рамках обновлений Windows 11. В 2023 году была добавлена поддержка контроллеров Xbox Adaptive Controller и улучшена работа с устройствами через Bluetooth. Ожидается, что в будущих версиях API будет интегрирован с DirectX 12 Ultimate и облачными игровыми сервисами (Xbox Cloud Gaming), что позволит использовать контроллеры на удалённых серверах.

Источники

  • Документация Microsoft: «Windows.Gaming.Input namespace» (MSDN).
  • «Windows 10 Game Development» — книга Адама Торнтона, 2016.
  • Статья «XInput vs DirectInput vs Windows.Gaming.Input» на сайте GameDev.net, 2018.
  • Обновления Windows 10 и 11: официальные примечания к выпускам (Microsoft Docs).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →