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.Input | XInput | DirectInput |
|---|---|---|---|
| Платформа | Windows 10/11, UWP, Win32 | Windows XP–11, Xbox 360/One/Series | Windows 95–11, устаревший |
| Поддержка контроллеров | Xbox, совместимые с XInput, джойстики, рули | Только Xbox (360/One/Series) | Любые устройства (джойстики, рули, педали) |
| Вибрация | Да (включая триггеры) | Да (только моторы) | Нет встроенной поддержки |
| Переназначение кнопок | Нет | Нет | Да |
| Максимум устройств | 8 | 4 | 16 и более |
| Безопасность | Высокая (изоляция в 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 →


