Оседлание Вимота

24.06.09 | lex-kravetski | 105 комментариев

Игры


Надо отметить, что трава в детстве была куда зеленее. Сейчас трава качественная, высокотехнологичная, но не так хорошо забирает. Да. Не так. О чём, то бишь, я? Ах да, детство.

В детстве у меня был компьютер БК0010, а чуть позже — ZX Spectrum. В первом 16 килобайт памяти, во втором — сто двадцать восемь. Четыре и шестнадцать цветов соответственно. Скорость процессора я сейчас даже и не вспомню, однако это в те времена было пофиг — один хрен, поменять его нельзя. В общем, процессор тоже медленный. Из-за всего этого об играх уровня Call of Duty 5 даже мечтать не получалось. Про видеть я и не говорю — представить-то ни в какую. Ну, представить, что будут трёхмерные солдатики бегать, фотореалистичные взрывы и война по интернету с американцами, европейцами и китайцами. Просто анриал. Даже человечки три сантиметра высотой воспринимались как мега-технологический прорыв, поскольку ещё буквально позавчера человечек состоял из пары десятков пикселей.

В общем, никаких 3д-шутеров и стратегий в реальном времени с тысячами юнитов не было. Были исключительно простые и прямолинейные игры: бежишь вперёд и во всех стреляешь. Ну или едешь и стреляешь. Или летишь и стреляешь. Многим покажется, что в Ил-2 так же — летишь и стреляешь, — но оно совсем не так. Оно было в плоскости, без даже тени реализма и с бешеной динамикой. Такое до сих пор временами привлекает, но его уже не особо делают. То есть, делают, но в основном на приставках. Но приставки у меня, напротив, нет. Причём, не потому что стоит дорого, а потому что ставить некуда.

Новые времена: ценностью является уже не компакт-диск или некий девайс, а место, куда всё это можно поставить.

Без приставки, ясное дело, игры я получал совсем другие. Тоже очень клёвые, но тех, старых прямолинейных не хватало. Особенно не хватало игр стиля «надери их всех», килл-эм-оллеров — это когда бравый пацан идёт вперёд и голыми руками / подручными предметами вымешивает толпы врагов. Вымешивать толпы врагов — это весело. Армиями руководить тоже весело, однако временами хочется просто сесть и некоторое время поистреблять всех врагов максимально простыми способами. Желательно зрелищными. Жаль, на PC игр с простыми зрелищными способами всегда было не особо много. Временами совсем не было. Сейчас вдруг что-то случилось и разом вышла масса подобных игр и для PC тоже. Что лично меня не может не радовать.

Но тут какое дело. Чтобы в эти игры играть, нужен какой-то спец-манипулятор. Маньяки осиливают в них играть с клавиатуры, однако, на мой взгляд, для такого нужно быть потомком осьминога. Сами посудите: четыре клавиши на перемещение персонажа, четыре — на перемещение камеры, два-три удара, прыжок, ещё две-четыре спец-клавиши… Полтора десятка клавиш минимум. Пальцев, соответственно, не хватает.

Сразу понятно: надо с этим что-то делать. И, кроме того, сразу понятно что. На приставках используют приблуду под названием «геймпад». Приблуда удобно располагается в руке и позволяет жать на гораздо большее количество кнопок разом, нежели клавиатура. Плюс ещё два мини-джойстика под большими пальцами. Удобство налицо. Вот ей и следует играться.

Геймпад много места не занимает, поэтому я его неприминул купить. Играться в килл-эм-оллеры и прочие аркады после этого стало удобнее. Однако душа ведь никогда не останавливает свой полёт к совершенству. Прознал я про ещё один чудо-девайс, которым играются владельцы приставки Nintendo Wii. Сама приставка на фоне икс-боксов и плейстейшенов не ахтец. Графика даже от PC-игр семилетней давности в среднем отстаёт, но не суть. Мне приставка пофиг, главное новый прогрессивный способ управления. По счастью, прогрессивный способ продаётся и отдельно от приставки. Причём, способ действительно прогрессивный. Вместо геймпада нинтендовцы предлагают играть пультом для телевизера. Не, ну этот самый wiimote — реально пульт ДУ, не отличишь.



Вимот на картинке справа, а слева — нунчак. Они в паре работают. Причём, отходящий от них провод, он не к приставке идёт, он их соединяет — батарейка-то только в Вимоте, а нунчак от него вынужден запитываться. Несведующие спросят: а в чём радость? Ну один мини-джойстик, ну штук десять кнопок, и чего теперь? Отчего бы вместо этой хрени не юзнуть геймпад и тем возрадоваться?

Отвечаю. Вещи, они не всегда такие, какими они выглядят. Внутре данных двух вещей, окромя контактов для кнопок, запрятаны ещё и акселерометры. Это — такие штуки, которые меряют ускорение по осям. Таким образом, пульт узнаёт свой поворот в пространстве. То есть, наклонён ли он вокруг своей продольной оси, и под каким углом к вертикали он находится. Увы, даже имея три акселерометра нельзя узнать угол, задающий поворот вокруг вертикальной оси — тут уже гироскоп нужен, но и два угла уже неплохо.

Как мы знаем из законов Ньютона, если некоторый объект двигать с ускорением, то на его детали будет действовать сила инерции. Соответственно, акселерометры могут померить и её тоже. При этом в некоторых случаях мы даже сможем отличить поворот от движения — для наклонов акселерометры будут давать значение из диапазона от минус сила тяжести до плюс сила тяжести, ускоренным же движением мы можем получить и бо́льшие значения. Если же двигать с малыми ускорениями, то да, можно и перепутать.

Кроме акселерометров в Вимоте ещё расположена инфракрасная камера, способная отслеживать до четырёх инфракрасных источников одновременно. Это даёт нам возможность детектировать и движение без ускорения тоже: источники, соответственно, закреплены, а Вимот относительно них движется. Мы считываем положения источников и определяем смещение (или, чего там, прямо сразу координату). Причём, движение мы можем фиксировать и в третьем измерении тоже — оценивая изменеие расстояния между точками.

В общем, основной цимес данных девайсов — способность отслеживать движения рук. Что, конечно, управление изрядно обогащает — завсегда же приятнее рубить врагов, просто размахивая руками, а не нажимом на кнопки. Да и целиться прикольнее прямо пультом в экран, а не движениями мышки. Помимо того, запоминать движения и их комбинации для человека естественнее именно в виде движений, а не последовательностей кнопок. Навыки в этом случае вырабатываются ощутимо быстрее. Сплошные, таким образом, плюсы. Минус же ровно один: мега-пультом играются владельцы Nintendo Wii. Владельцы же PC не играются пультом. Думал я.

Оказалось, думал неправильно. Данная система общается с приставкой посредством bluetooth. То есть, при наличии блютус-адаптера для компа Вимот начнёт слать все необходимые данные прямо в комп. Нам их остаётся только перехватить и правильно обработать. Второй момент — инфракрасные источники. У Wii они вделаны непосредственно в сенсор-бар, поставляемый вместе с приставкой, желающим же заюзать девайс для PC придётся прикупить инфракрасных диодов и обеспечить их питание. Либо же довольствоваться только акселерометрами (которых для файтингов за глаза хватает, но вот для 3д-шутеров — уже нет). Но технически проблема решается, причём, не особо даже сложно. Я проверял.

За техническими проблемами сразу же следуют программные — сигналы-то мы словили, а что с ними делать? Ясен пень, игры на PC даже и не догадываются о наличии у вас прогрессивной системы управления и ждут сигналов клавиатуры, мыши, джойстика или на крайняк геймпада. Тут сразу понятно: нужна программа, которая будет одни сигналы переделывать в другие. И такая программа есть. Называется GlovePie. Читает сигналы практически с чего угодно и пишет их практически во что угодно. С её помощью можно запросто сделать управление курсором мыши с джойстика безо всяких там драйверов от производителя джойстика. Вимот программа тоже целиком и полностью воспринимает.

Правда, для некоторых игр (тех самых файтингов, например) дискретное управление персонажем вида «w-a-s-d» не особо хорошо подходит. Ибо с ним герой бегает строго по восьми направлениям розы ветров, а хотелось бы возможности бегать как угодно. То есть, при помощи GlovePie сигналы с Вимота надо будет переделать не в нажатия кнопок клавиатуры, а в повороты мини-джойстика на геймпаде. GlovePie это позволяет, но только в том случае если в системе присутствует виртуальный джойстик, созданный при помощи PPJoy.

То есть, целиком не очень сложная, но и не очень простая система заюзывания мега-девайса выглядит так: приобретается девайс (≈4000 р) и usb-адаптер bluetooth ( ≈300 р.), при помощи ИК-диодов (≈15 р. за штутку) собирается система из нескольких источников (взаимное расположение их неважно, можно, например, на углы монитора прикрепить), ставится софт для адаптера blootooth (рекомендуется адаптер, работающий через систему bluesoleil), адаптер bluetooth втыкается в usb-порт, нажатием кнопок 1 и 2 на Вимоте активизируется подача сигнала для связи с адаптером, в софте адаптера запускается поиск устроиства, после того, как устройство найдено, запускается GlovePie — теперь он получает сигналы Вимота. Если есть желание эмулировать ещё и геймпад, то ставится программа PPJoy и с её помощью создаётся виртуальный джойстик. Теперь из GlovePie можно слать сигналы виртуальному джойстику, которые будет перехватывать игра. Выглядит вроде как запутанно, однако, если отвлечься от ваяния инфракрасных источников, исполняется оное за полчаса-час. После же описанной настройки надо будет только запускать GlovePie и загружать нужный скрипт. Цена устройства — немалая, но для желающего семь вёрст не крюк. Ощущения от девайса всё это окупают.

Что не исполняется за полчаса, так это перенаправление сигналов. Конечно, скрипты имеются прямо в дистрибутиве GlovePie, но от идеала они далеки. Что в шутерах, что в килл-эм-оллерах заскриптованные варианты желаемого удобства не создают. Поэтому, вооружившись пространственным воображением и познаниями в физике с программированием, первым делом надо написать свои, правильные скрипты.

Путь написания скриптов в GlovePie чем-то сродни пути познания дао. Сначала вообще ни хрена не ясно, как и что делать. Лично у меня просветление наступило только через пару дней и вот это — самое сложное, что было в настройке. Понять, как с помощью трёх акселерометров описывать всевозможные движения, оно непросто. И я даже вот так прямо сразу объяснить этого не смогу. Разве что могу сказать: совершайте движение и представляйте как меняются показания акселерометров. Обычно достаточно описания критической точки, но иногда надо найти ещё одно условие, позволяющее отличить одно движение от другого. Но при этом сам язык прост. Команды на нём выглядят примерно так:

Key.j = wiimote.gx > 2 and Abs(wiimote.gy) < 0.2

Смысл команды: установить клавишу клавиатуры «j» в состояние «нажата», если ускорение по оси x больше 2g и направлено влево, а ускорение по оси y меньше 0.2g. То есть, должно сэмулироваться нажатие кнопки «j» на клавиатуре, если Вимотом махнули влево, держа его почти горизонтально. Вместо булевских значений могут использоваться и числа с плавающей точкой — если это подразумевает эмулируемое устройство (например, перемещение по оси мини-джойстика). Кроме того, есть условия, математические функции, усреднение по времени, команда ожидания и прочее подобное. Можно также определять переменные. Правда, язык не совсем похож на обычные линейные языки, он скорее — описание одной итерации с возможностью временно сохранить значение.

var.swordPush = KeepDown(Key.j, 300ms)

Вот пример такой нетривиальной команды. Тут написано: установить значение переменной swordPush равным значению Key.j, при этом, если значение Key.j сменилось с false на true, то значение true следует сохранять в течении 300ms даже если оно за это время реально уже сменилось на false. Понять сиё непросто, но практика решает. Я, например, после двух дней практики написал мега-скрипты — один для килл-эм-оллера и ещё один для 3д-шутеров. В последнем даже удалось устранить эффект дрожания рук — курсор мыши реально замирает, если движения «почти нет», но если движение начинается, то реагирует на него мгновенно.

В шутеры играть пока не попробовал — скрипт для него потестил прямо на виндовых окнах: действительно в иконки при помощи Вимота попадать не тяжелее, чем мышью. Килл-эм-оллер же опробовал непосредственно. Внушает. Играется гораздо бодрее, чем с геймпадом, не говоря уже про клавиатуру. И гораздо азартнее, поскольку физически ощущаешь рубилово. Результатами доволен. Буду продолжать изыскания.

Комментарии
Goblin рекомендует заказывать создание сайтов в megagroup.ru


cтраницы: 1 все комментарии

lex-kravetski
отправлено 24.06.09 17:21 | ответить | цитировать # 2


Кому: Zimson, #1

> примеры килл-эм-оллеров привести можешь?

X-Men Origins: Wolverine. Devil May Cry. Watchmen: The End Is Nigh. Ну и самый известный — Prince of Persia. В «Принцах», правда, акробатики всякой много.


lex-kravetski
отправлено 24.06.09 17:33 | ответить | цитировать # 7


Кому: Zimson, #3

> Но вот как вместо джойстика виймоутом играть, представляю себе очень слабо. Там же всё на комбинации замешано

Их взмахами гораздо проще исполнять, чем кнопками. Правда, запрограммировать всё это непросто. У меня с первого раза не получилось. Но сейчас вроде уже близко к идеалу.


lex-kravetski
отправлено 24.06.09 18:42 | ответить | цитировать # 19


Кому: zloy_da4nik, #12

> А с какой силой надо махать пультом, чтобы все эти комбо исполнить, я даже не представляю.

Со слабой силой. Под PC ты ж сам программируешь действия. Не хочешь сильно махать — делаешь минимальные требования по ускорению.

Как с этим непосредственно на Wii — я не знаю. Не пробовал.


lex-kravetski
отправлено 24.06.09 18:44 | ответить | цитировать # 20


Кому: ProFFeSSoR, #16

> мало знакомому хотя бы с простейшими скриптами или алгоритмами, не разобраться в этом

Тут я помочь не могу — в одну статью учебник по программированию не запихаешь.


lex-kravetski
отправлено 24.06.09 18:45 | ответить | цитировать # 21


Кому: Ульв, #18

> а эта, скриптами можеш поделиться?

В принципе, могу. Почему нет? Они, правда, пока не оформлены толком.


lex-kravetski
отправлено 24.06.09 18:57 | ответить | цитировать # 23


Кому: Cassad, #22

> Сдается мне, что подобный вариант будет проще:

Там тоже наверняка есть акселерометры, да.


lex-kravetski
отправлено 24.06.09 20:01 | ответить | цитировать # 30


Кому: Ульв, #25

> вообще тебе можно, как вариант, на нас, жадных детях ( %) ) заработать денюжку
> довести до ума свои скрипты, написать понятную для всех оболочку

Такое заведомо не окупится. Ты вот сколько готов за такой софт заплатить? Думаю, тысяча рублей — предел. Ну будет таких десять человек. Десять тысяч, таким образом. Максимум. Это — цена трёх дней работы. За три же дня удобный софт написать просто не реально. Нереально даже для готового софта скрипты написать.

Кому: Unwanted, #26

> Клавиши для перемещения камеры?

Считается полная необходимая сумма кнопок, а не только кнопки для одной руки.

> Тот же самый Росомаха играется на компьютере элементарно

Во что угодно играется. Причём, даже с клавиатуры.


lex-kravetski
отправлено 24.06.09 21:11 | ответить | цитировать # 39


Кому: psi, #34

> Автор статьи не помнит но 3x мерные игры на спектруме БЫЛИ.

Они были формально трёхмерные, да. Но выглядели при этом на порядок хуже двумерных. Причём, в Elite вообще были только рёбра — без заливки даже. В Academy заливка была, но всё это воображение не поражало.

Хотя первая увиденная мной трёхмерная игра на БК0010 таки поразила. На полчаса примерно.

F19 же на Spectrum тоже не того. Её я, правда, видел на PC году в 89-м, но PC в 89-м на дому — это как сейчас собственный вертолёт.

> Просто хорошая статья не о спектруме. Обидно стало, что его так походя охаяли.

Как я его могу охаять? Я на нём пять лет целыми днями игрался.


lex-kravetski
отправлено 24.06.09 21:20 | ответить | цитировать # 40


Кому: Areksy, #37

> А то список телодвижений, которые надо совершить, чтобы все заработало, деморализующе длинен.

Зато исчерпывающь!!!


lex-kravetski
отправлено 24.06.09 21:55 | ответить | цитировать # 44


Кому: Seer, #43

> Ты бы записал видео, как в итоге выглядит игровой процесс.

Выглядит так: сидит парень перед монитором и трясёт пультом. В ютюбе таких роликов тьма. Зачем ещё один нужен? Скорее имеет смысл записать ролик про подключение и настройку. Но лень.


lex-kravetski
отправлено 24.06.09 22:38 | ответить | цитировать # 47


Кому: lopar111, #46

> По-моему, только подключение по сложности почти как гаму на готовом движке писать

Ну это, чтобы на PC играть, надо сначала винду установить, потом драйверы, потом саму игру. Этот процесс сложнее даже. И ничего, многие играют.


lex-kravetski
отправлено 25.06.09 14:59 | ответить | цитировать # 81


Кому: j_silver, #77

> я слышал, есть прога - типа эмуляция ZX Spectrum для IBM-совместимых компов. кто-нибудь что-нибудь знает?

Есть, да. Я даже пробовал. Но сейчас уже не цепляет, ибо на современных мониторах выглядит убого. Более-менее нормально цепляют игры со старых приставок и с игровых автоматов — тоже через эмулятор.


lex-kravetski
отправлено 25.06.09 15:00 | ответить | цитировать # 82


Кому: Snyker, #78

> А вот в Зов Чести 4 по сети с помощью этого всего гамать можно?
> Повороты стволом-понятно,но вот передвижение и доп кнопки?

Ещё не попробовал, но предварительный опыт показывает, что можно. Кнопок достаточно. Передвижение — джойстик с нунчака. Им же приседания и прыжки. Им же выглядывание из-за угла.


lex-kravetski
отправлено 25.06.09 15:04 | ответить | цитировать # 83


Кому: Dor, #79

> Дядь Дим!

Зови меня просто Лекс.

> Еще вы забыли еще раз подчеркнуть, что все эти дивайсы беспроводные.

Скоро сделают версию сайта, где специально для тебя «беспроводные дивайсы» будут ещё раз подчёркиваться после каждого предложения.


lex-kravetski
отправлено 25.06.09 18:20 | ответить | цитировать # 87


Кому: bullgare, #86

> кто-нибудь пытался это устройство использовать сугубо в качестве пульта к компу?
> интересно, возможно ли это без ик-датчиков.

Возможно. Кнопки и без них работают. Как и акселерометры. Но у меня пульт к компу и так есть, поэтому мне не актуально. Но работать будет.


lex-kravetski
отправлено 25.06.09 18:22 | ответить | цитировать # 88


Кому: bullgare, #86

> кто-нибудь пытался это устройство использовать сугубо в качестве пульта к компу

Но лично я рекомендую вот этот:
http://remote.rni.ru/

И дешевле и проще в эксплуатации.


lex-kravetski
отправлено 25.06.09 19:40 | ответить | цитировать # 91


Кому: Spectre, #90

> Который с обычной и бейсиком - БК0010.01, разница существенная )

У меня был 01. Но разница именно в клавиатурах. БК0010 был у приятеля — ровно тот же Бейсик, полная совместимость и всё такое. А фокал прилагался и к 01 тоже — как положено, отдельным блоком ПЗУ.


lex-kravetski
отправлено 25.06.09 19:59 | ответить | цитировать # 93


Кому: psi, #89

> Вот вспомнил http://www.camspace.com/ для совсем ленивых нужна только веб камера.

С камерой — мега-придумка. Вечером опробую.


lex-kravetski
отправлено 26.06.09 18:32 | ответить | цитировать # 100


Кому: psi, #98

> Тотал Эклипс 2 части честная 3х мерная в отличии от ДУМА идёт на 48 кб. :)

Ещё в отличие от Дума в ней врагов нет. Это очень круто — 3д-шутер без врагов.



cтраницы: 1 все комментарии

Правила | Регистрация | Поиск | Мне пишут | Поделиться ссылкой

Комментарий появится на сайте только после проверки модератором!
имя:

пароль:

забыл пароль?
я с форума!


комментарий:
Перед цитированием выделяй нужный фрагмент текста. Оверквотинг - зло.

выделение     транслит



Goblin EnterTorMent © | заслать письмо | цурюк