Большинство из нас знают о такой игровой консоли, как Wii, отличительной чертой которой является беспроводной контроллер Wii Remote. Сегодня я расскажу вам о моем опыте по превращению этого контроллера в удобный, функциональный, и при этом очень дешевый руль для компьютера.
Возможности самого контроллера впечатляют:
Трехосевой акселерометр
Инфракрасная камера
Подключение по Bluetooth
Вибромотор и динамик
4 светодиодных индикатора
Подключение дополнительных контроллеров
12 кнопок
Для нас, важными являются акселерометр и Bluetooth. А сам порядок действий будет выглядеть примерно следующим образом:
- Найти контроллер Wiimote (альтернативное название Wii Remote).
- Подключить его к компьютеру.
- Наладить преобразование данных, поступающих с акселерометра контроллера в понятный играм формат.
Где взять контроллер Wiimote
Те, у кого есть приставка Wii, могут сразу переходить к следующему пункту. У меня же таковой не оказалось, и я решил купить контроллер отдельно.
В России он стоит около 2000 руб., что, на мой взгляд, неоправданно дорого. Так что, недолго думая, я отправился на аукцион Ebay. И не ошибся! Год назад, новый оригинальный Wii remote + Nunchuk с бесплатной доставкой обошёлся мне всего в $18.50. При беглом осмотре сегодняшних результатов поиска, цены стали еще ниже.
Подключение к компьютеру
На первый взгляд, никаких трудностей здесь возникнуть не должно: главное иметь встроенный или внешний Bluetooth приемник. В интернете легко можно найти несколько инструкций по подключению Wiimote к компьютеру.
Однако, то ли по причине старенькой Windows Vista, то ли из-за еще более старого Bluetooth-адаптера, я так и не смог заставить нормально работать контроллер, используя стандартный стек Bluetooth от Microsoft. Но там, где споткнулась Microsoft, преуспела IVT с её продуктом BlueSoleil (к сожалению, платным). Без особых усилий, мне удалось подключить контроллер и заставить его стабильно работать. Подробную инструкцию можно найти, например, здесь.
Краткая инструкция:
- Устанавливаем BlueSoleil (или при удачном стечении обстоятельств используем стандартные средства Windows).
- Активируем Bluetooth-адаптер.
- Зажимаем кнопки 1 и 2 на контроллере и запускаем поиск устройств.
- Контроллер опознается как Nintendo RVL-CNT-01.
Превращаем Wiimote в руль
Для работы Wiimote с PC написано несколько программ, например GlovePIE – универсальная программа для эмуляции устройств ввода, позволяющая, в т.ч. связывать компьютер и Wii Remote используя внутренний язык скриптов.
Поискав, можно найти несколько таких скриптов, но и здесь не все так гладко ;)
У меня получилось заставить работать контроллер виртуальным джойстиком, однако работа с акселерометром была очень нестабильна: чуть повернешь контроллер по определенной оси (или слишком быстро/на слишком большой угол/и т.п.), и он зависает, переставая отправлять данные.
Я не стал мириться с этим безобразием, и продолжил поиски. Через некоторое время я набрел на замечательную .NET библиотеку: WiimoteLib. Она позволяет обращаться почти к любым функциям контроллера, и получать данные с его сенсоров. В комплекте идет пример программы, отображающий всю информацию, поступающую с контроллера.
Теперь, когда у нас есть данные с акселерометра, нам нужно как-то привести их к понятному играм формату. Большинство гоночных игр поддерживает железную реализацию руля. А мы подсунем им виртуальный. Для этого воспользуемся универсальным драйвером эмуляции джойстиков – PPJoy.
Официальная ссылка на скачивание: PPJoySetup-0.8.4.5-early-release.exe
Добавим в систему новый виртуальный джойстик:
Устанавливаем PPJoy
В панели управления находим и открывем «Parallel Port Joysticks».
Щелкаем по кнопке Add
Параметр Parallel Port меняем на Virtual joysticks
Щелкаем по кнопке Add
Выбираем в списке созданный джойстик и щелкаем по «Mapping...»
Next >
Заполняем это и последующие окна как на скриншотах, и заканчиваем настройку.
Я написал небольшую программку на C#, которая, фактически являясь мостом между Wiimote и PPJoy, нажимает виртуальные кнопки и крутит виртуальный руль джойстика. При запуске можно задать чувствительность.
Скачать её вместе с исходными кодами вы можете по этой ссылке: WiiController.zip
Испытания в реальном мире
Все испытания проводились на гоночном симуляторе Colin McRae: DiRT 2.
Заранее прошу прощения за качество фото и видео: все снималось на мыльницу пятилетней давности.
Примерный вид настроек игры:
А вот, как выглядит реальная игра с контроллером:
Впечатления
Сугубо положительные! Прошел всю игру, используя только Wiimote. Все работает настолько стабильно и быстро, что уже через несколько минут забываешь, что у тебя в руках устройство, предназначенное совсем не для этого. Из плюсов: огромный руль не закрывает пол-экрана, и не мешает перемещению рук, все управление выведено на кнопки контроллера.
p.s. Вообще, можно сделать очень много прикольных штук с Wii Remote, вот некоторые из них:
- http://johnnylee.net/projects/wii/
Трекинг пальцев, мультитач доска, трекинг головы (для создания иллюзии трехмерности, заглянуть за край монитора). Фактически, я купил Wiimote под впечатлением от этих проектов. - http://habrahabr.ru/blogs/DIY/91149/
Виртуальное окно в мир Winscape с трекингом положения головы используя Wiimote - http://habrahabr.ru/blogs/subconsciousness/2877/
5 самых креативных способов использования Wiimote.