![](https://habrastorage.org/storage/163eb6e9/7b86b7e5/165bc261/59c79eab.jpg)
Большинство из нас знают о такой игровой консоли, как Wii, отличительной чертой которой является беспроводной контроллер Wii Remote. Сегодня я расскажу вам о моем опыте по превращению этого контроллера в удобный, функциональный, и при этом очень дешевый руль для компьютера.
Возможности самого контроллера впечатляют:
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
Для нас, важными являются акселерометр и 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.
![](https://habrastorage.org/storage/cdee54c5/a28e31bf/5d6e9c3c/96d057eb.png)
Превращаем Wiimote в руль
Для работы Wiimote с PC написано несколько программ, например GlovePIE – универсальная программа для эмуляции устройств ввода, позволяющая, в т.ч. связывать компьютер и Wii Remote используя внутренний язык скриптов.
Поискав, можно найти несколько таких скриптов, но и здесь не все так гладко ;)
У меня получилось заставить работать контроллер виртуальным джойстиком, однако работа с акселерометром была очень нестабильна: чуть повернешь контроллер по определенной оси (или слишком быстро/на слишком большой угол/и т.п.), и он зависает, переставая отправлять данные.
Я не стал мириться с этим безобразием, и продолжил поиски. Через некоторое время я набрел на замечательную .NET библиотеку: WiimoteLib. Она позволяет обращаться почти к любым функциям контроллера, и получать данные с его сенсоров. В комплекте идет пример программы, отображающий всю информацию, поступающую с контроллера.
![](https://habrastorage.org/storage/21b31343/e16fba07/ede39005/5baa127c.png)
Теперь, когда у нас есть данные с акселерометра, нам нужно как-то привести их к понятному играм формату. Большинство гоночных игр поддерживает железную реализацию руля. А мы подсунем им виртуальный. Для этого воспользуемся универсальным драйвером эмуляции джойстиков – PPJoy.
Официальная ссылка на скачивание: PPJoySetup-0.8.4.5-early-release.exe
Добавим в систему новый виртуальный джойстик:
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![image](https://habrastorage.org/getpro/habr/post_images/b3e/889/b17/b3e889b1765f9aad0e84f62cd76efbbc.png)
![](https://habrastorage.org/cropped/816e0eef/81f35096/8694f35f/fc95024c.png)
![](https://habrastorage.org/cropped/47a8993d/e81062ac/51e4cdba/693f2c52.png)
![](https://habrastorage.org/cropped/b2f7cf6e/7fbc5719/d8f87dcc/aea2b936.png)
Я написал небольшую программку на C#, которая, фактически являясь мостом между Wiimote и PPJoy, нажимает виртуальные кнопки и крутит виртуальный руль джойстика. При запуске можно задать чувствительность.
![](https://habrastorage.org/storage/f32a9c96/d593a561/55d6b820/4e688b2d.png)
Скачать её вместе с исходными кодами вы можете по этой ссылке: WiiController.zip
Испытания в реальном мире
Все испытания проводились на гоночном симуляторе Colin McRae: DiRT 2.
Заранее прошу прощения за качество фото и видео: все снималось на мыльницу пятилетней давности.
![](https://habrastorage.org/storage/b7a77d15/bc48e2a4/fdc9168b/e0f84cd3.jpg)
![](https://habrastorage.org/storage/46fcbad9/bd46c41e/4c0bf65d/c700753e.jpg)
Примерный вид настроек игры:
![](https://habrastorage.org/storage/622ae294/c4a92391/0b8a5a39/2810a6dc.jpg)
А вот, как выглядит реальная игра с контроллером:
Впечатления
Сугубо положительные! Прошел всю игру, используя только 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.