ViGEm Bus Driver¶
ViGEm Bus Driver — это программный драйвер для операционной системы Windows, эмулирующий виртуальные геймпады Xbox 360 и Xbox One. Он работает на уровне ядра системы и позволяет приложениям и скриптам подключать «виртуальные» контроллеры, которые видны играм и другим программам как настоящие физические устройства. Проект является свободным и распространяется по лицензии LGPL.
¶Назначение
ViGEm Bus Driver решает задачу программной эмуляции игровых контроллеров. После установки драйвера на компьютере появляется виртуальная шина (bus), к которой можно «подключить» сколько угодно эмулируемых геймпадов. Каждый такой виртуальный контроллер ведёт себя для системы и игр точно так же, как реальный геймпад: игры получают его входные данные, отображают его в списке устройств и не отличают от физического устройства.
Основные сценарии применения:
- тестирование игр и приложений без физического геймпада;
- создание макросов и автоматизации управления в играх;
- стриминг и запись геймплея с управлением через скрипты;
- отладка программ, работающих с контроллерами;
- эмуляция управления на устройствах, где нет геймпада (например, на ПК без подключённого контроллера).
¶Устройство и принцип работы
ViGEm Bus Driver состоит из двух основных компонентов:
- Драйвер ядра (kernel-mode driver) — устанавливается в систему и регистрирует виртуальную шину, с которой взаимодействуют все компоненты.
- Клиентская библиотека (ViGEmClient) — программный интерфейс, через который приложения создают виртуальные контроллеры, отправляют в них команды (нажатия кнопок, положение стиков, нажатие триггеров) и получают обратную связь (вибрацию, LED-индикатор).
Приложение, использующее ViGEmClient, подключается к шине, создаёт виртуальный геймпад и отправляет ему события в формате, совместимом с протоколом Xbox 360 (XInput) или Xbox One. Операционная система Windows обрабатывает эти события так же, как события от реального устройства, и передаёт их играм.
Драйвер поддерживает создание нескольких виртуальных контроллеров одновременно, что позволяет эмулировать мультиплеер на одном компьютере.
¶Поддерживаемые платформы и совместимость
ViGEm Bus Driver работает только под Windows (начиная с Windows 7, рекомендуется Windows 10 и новее). Он совместим с играми, использующими XInput и DirectInput, а также с эмуляторами и стриминговыми платформами.
Проект поддерживается энтузиастами и активно используется в сообществе эмуляции и моддинга. Исходный код доступен на GitHub, что позволяет разработчикам встраивать эмуляцию контроллеров в собственные инструменты.
¶История
ViGEm Bus Driver был создан немецком разработчиком Беньямином Хоглундом (Benjamin Höglinger) и впервые опубликован в 2016 году. Проект быстро получил распространение благодаря простоте использования и открытому исходному коду. Со временем появилось множество библиотек-обёрток для разных языков программирования (C++, C#, Python и др.), что сделало эмуляцию контроллеров доступной широкому кругу разработчиков.
¶Критика и ограничения
- Драйвер работает на уровне ядра, поэтому требует прав администратора при установке.
- В некоторых играх с защитой от читов (античитами) использование виртуальных контроллеров может быть заблокировано или привести к санкциям со стороны игровых сервисов.
- Проект не является официальным продуктом Microsoft, хотя эмулируемые протоколы совместимы с Xbox.
¶См. также
¶Источники
- Официальный репозиторий ViGEm Bus Driver на GitHub
- Документация ViGEmClient
- Статьи о виртуальных контроллерах и эмуляции геймпадов в Windows
