Играем во Flash игры с геймпадом

Мне всегда во Flash играх очень не хватало поддержки геймпадов. Я мечтал о об этом, и спустя некоторое время все же нашел решение, позволяющее играть в игры с геймпадом, даже без его поддержки самими играми.

Когда-то у меня была одна из первых ревизий XBox360 — большой такой, беленький и ужасно шумный. Мне безумно нравилось играть на нем в игры, но это было практически невозможно сделать: днем - либо работа, либо дети, либо иные дела, еще бывает телевизор занят, а ночью XBox шумел, как пылесос — ребенок то и дело просыпался от этого шума. Пришлось XBox360 продать и купить в место него не менее шумный Lego, но о Lego как-нибудь потом… В общем, с тех самых пор мои отношения с компьютерными играми складываются достаточно сложно. Я теперь мало играю в игры и вряд ли пройду очередной шедевр с использованием клавиатуры и мышки — не те ощущения, не тот комфорт, не тот фан от игры. Мне и без того приходиться проводить безумно много времени, скрючившись перед монитором, работая с клавиатурой и мышкой, а чтобы еще и расслабляться в том же положение — какой же это отдых!?

Конечно, можно купить геймпад и для PC, и играть в игры, которые его поддерживают (думал я). Но к тому времени я уже перешел на Mac, а для него не было и нет никаких геймпадов и по сей день. Но, однажды, бороздя какой-то форум по Minecraft я нашел интересный топик о том, как можно подключить XBox Controller к Mac, настроить его и более того играть в Minecraft! О, святые орешки! Это стало для меня настоящим открытием в начале этого лета. Если можно играть в Minecraft, у которого даже намека нет на поддержку геймпада, значит можно играть в любую игру, используя геймпад!? Это не говоря уже о том факте, что XBox Controller можно поключить к Mac. Тут-то я перестал спать спокойно и задумался о покупке геймпада.

Выбор геймпада

Уже в первом компьютерном магазине меня ждал больщущий выбор всяких геймпадов, но мне не хотелось брать что-то левое, тем более когда на коробке нет наклейки, что этот девайс поддерживается MacOS (впрочем с поддержкой MacOS мне ничего и не попадалось). Но я знал точно только то, что барабаня в бубен можно как-то подключить к Mac оригинальный XBox Controller. И тут есть маленький подвох.

Оригинальный XBox Controller проводной или беспроводной для приставки не совместим с любым компьютером по причине того, что Microsoft в своей приставке использует какой-то свой уникальный канал для передачи данных. В общем, обычный XBox Controller от игровой приставки не совместим с компьютером и нужно брать адаптированный под PC.

Найти контроллер для PC не сложнее, чем оригинальный для приставки, продаются они везде. Но при покупке нужно обязательно убедиться, что на хвосте у него USB. А если брать беспроводной XBox Controller для PC, то у него будет своя станция, которая подключается к USB.

Беспроводной XBox Controller для PC

Какой лучше брать: проводной или беспроводной — я затрудняюсь ответить. Конечно, лучше когда меньше проводов болтается на столе и под столом, но у беспроводного есть пару недостатков:

  • Цена около 2700 руб (~$90). (кусается)
  • Необходимость замены батареек или покупки аккамуляторов с последующей их подзарядкой.

В связи со своими сомнениями я решил не тратиться и взял проводной вариант (1500 руб, ~$45). Вдруг не получится завести его на маке или он спустя время запылится где-то на полке — хоть не так жалко будет.

Подключение и настройка

Для пользователей Windows не должно возникнуть никаких проблем с подключением и настройкой XBox Controller, так как это одно из немногих устройств, разработанных самой Microsoft. То есть за драйверами далеко ходить не надо, и если их вдруг не оказалось в комплекте с самим девайсом, то их можно легко найти и скачать на официальном сайте. А далее только установить, следуя инструкциям установщика.

А вот у Mac пользователей все немного сложнее. Сколько не втыкай свежекупленный девайс в USB порты, компьютер будет упорно делать вид, что ничего не происходит! И тут на помощь придет только сторонний драйвер, созданный энтузиастом Colin Munro.

Драйвер для MacOS берем здесь. Если у вас OSX Lion и выше, то ставьте последнюю версию драйвера 0.12. А вот у пользователей OSX Leopard могут возникнуть с последней версией проблемы (у меня не определялся драйвером геймпад). И проблема решилась только после установки 0.09 версии драйвера, а в 0.10 версии, оказывается, могут возникнуть проблемы с подключением или отключением геймпада (отваливаются другие устройства ввода такие как клава или мышка).

После того, как драйвер установлен, можно зайти в системные настройки и там вы увидете иконку с контроллером. Открыв панель настроек геймпада, можно потестировать его в работе, нажимая разные кнопки.

Окно настроек для XBox Controller

Если что-то пошло не так и необходимо удалить драйвер, то Windows пользователи пользуются родным удалятором, а Mac пользователи следуют следующим шагам:

  1. Берете скрипт удаления драйвера здесь...
  2. Запускаете Терминал.
  3. Вводите команду "sudo sh" и выполняете её, после чего будет запрошен пароль администратора, вводите его.
  4. Вводите повторно команду "sudo sh " и перетягивайте скаченный ранее файл UnTattieboglev2.sh в консоль к команде "sudo sh " — после чего у вас должен появится путь к данному файлу сразу после команды. Выполняете команду.
  5. После успешного выполнения команды вы увидите список удаленных файлов.
  6. Готово!

Наслаждаемся

После того как драйвера установлены, геймпад можно сразу же протестировать в деле на любой игре, поддерживающей его. Я знаю только две игры, которые точно имеют нативную поддержку XBox Controller, как для Windows, так и для MacOSX, это:

  1. Mafia 2 — для Mac пользователей игра продается в AppStore, а Windows пользователи могут раздобыть игру на полках магазинов или из других Интернет магазинов.
  2. FEZ — доступен в Steam, а так же всего за $5 в текущем HumbleBundle в числе других замечательных игр (актуально еще 7 дней).
  3. Bastion — доступен в Steam, а так же входит в Humble Bundle 9.
  4. Rockedbirds — доступен в Steam, а так же входит в Humble Bundle 9. Возможно прохождение игры вдвоем на одном компьютере.
  5. Limbo — доступен в Steam, а так же входит в Humble Bundle 9. На Mac версии джойстик не работает нативно.
  6. Знаете другие игры? Напишите в комментариях, дополним этот список :)

В этих играх не требуется никаких настроек геймпада, игры сами его подхватывают и отлично играются. А вот чтобы настроить игры, которые не адаптированы разработчиками под геймпады — придется повозиться, но как правило, оно того стоит!

Настраиваем геймпад для Flash игр и не только

Нет ничего приятнее, чем откинуться на спинку кресла и поиграть в свою любимую Flash игрушечку, не напрягая спину! Но как показала практика, далеко не все игры поддаются настройке, к тому же нужен дополнительный софт, который поможет нам перехватывать действия кнопок геймпада и превращать их в клавиатурные или мышиные действия.

И так, чтобы настроить любую игрушку под наш геймпад, нам понадобится программа из разряда key mapper'ов. И тут, Windows пользователи снова в выигрыше, потому что для вас доступен большой выбор, как бесплатных, так и платных аналогов. И первое, что мне попалось для Windows пользователей, это Keysticks

Keysticks

Как можно видеть на картинке, с помощью программы мы просто привязываем клавиши клавиатуры к кнопкам и стикам геймпада — вот и все дела. Так же обратите внимание на инструкцию о том как можно настроить геймпад для игры в Minecraft — это может стать отправной точкой для настройки не только Flash игр, но и любых других.

Для Mac пользователей я могу посоветовать программу ControllerMate, она хоть и дорогая ($26), но она стоит своих денег. Это программа обладает куда более глубокими и гибкими настройками геймпада, чем какой-либо бесплатный аналог. А это туториал по настройке ControllerMate для Minecraft.

Теперь вы знаете как привязать кнопки геймпада к кнопкам клавиатуры, а это значит вы сможете настроить геймпад практически под любую Flash игру. НО! Вот здесь такое большое НО, которое немного омрачает всю радость. К сожалению, не получится полноценно поиграть с геймпадом в игры, которые управляются полностью или частично мышкой. Например, в такую игру как Zombotron. Мышку конечно можно привязать к стику, но вряд ли будет комфортно играть: окно Flash игры маленькое, курсор то и дело будет вылетать за пределы и игра будет терять фокус. Меня этот факт в свое время очень опечалил и я пробовал искать выход. Выход я, конечно же, нашел, но работал он только для меня, как для разработчика через ужастные "костыли".

Zombotron и геймпад

Зомботрон и геймпа

Пару месяцев назад, когда я еще работал над последней частью Зомботрона, мне очень хотелось сделать поддержку геймпада, хотя бы просто для тестирования. Мне много приходилось играть в игру и порой рука просто жутко болела от активной игры мышью, а у пальцев уже не было сил давить в клаву. Очень хотелось чуть большего комфорта от тестирования, и спустя некоторое время мне удалось сделать прицеливание стиком, но работало это все за счет MouseLock, который необходим для блокировки мыши в центре экрана. Такой подход используется в основном для 3D игр, преимущественно от первого лица. Это позволяет избежать упирания мышки в края экрана и при этом можно получать силу движения мыши (дельту), исходя из которой рассчитывается скорость поворота камеры. Я же эту дельту использовал для рассчета угла наклона стика, чтобы получить угол для прицела.

Все бы ничего, но помимо того, что нужен сторонний софт для связки геймпада с игрой, еще и MouseLock во Flash работает только в полноэкранном режиме, который в свою очередь тоже включается с большими бубнами (необходимы всякие подтверждения от пользователя и т.п.), да и сама игра работает не достаточно быстро в полноэкранном режиме. В общем, все это в итоге не годится, не то, что для полноценной поддержки, но и даже для тестирования игры. Меня хватило только на побаловаться и потом пришлось с сожалением о потраченном времени забыть об этом.

Еще несколько дней назад я был готов рассказать более подробно о своих мучениях и сожалениях по поводу геймпадов во Flash, но тут пришла внезапная радость! Наконец-то можно забыть о мучениях и сожалениях и порадоваться полноценной поддержки геймпадов во Flash Player 11.8, который вышел буквально на прошлой недели!

Нативная поддержка геймпадов во Flash

В первый же день, когда я узнал о новой возможности (то есть вчера), я непременно решил попробовать её в деле и за пару часов написал небольшой прототип игры с примитивной графикой. Теперь не нужно никаких настроек и чего-либо прочего. Запустил игру, взял в руки геймпад и понеслось!

Поиграть могут только те, кто имеют подключенный геймпад и установленный плеер 11.8. Проверить версию плеера можно вызвав контекстное меню к флешке. Если у вас вдруг старая версия плеера, то скачать последнюю версию Flash Player для браузера можно тут.

А уже через пару дней я подготовлю туториал с подробным описанием и исходниками о том, как сделать такую игру с поддержкой геймпада в домашних условиях. Если у вас еще нет геймпада, то бегом в магазин! ;)


Индикаторы: Уроки, Разное
Постоянная ссылка

 

 

Антон, ну наконец-то! Завтра же поиграю с контроллером.

Murlyka
18 Сентября 2013
— 14:24
#

Как-то давно уже приобрёл Cyborg V.5 Rumble Pad. Практически не разу не подводил. Те игры, для которых нужны были дрова (используя иксбокс геймпад), этот геймпад подхватывали на ура безо всяких танцев с бубном -)

warezzko
18 Сентября 2013
— 14:59
#

Ждем новые уроки УРААААААААААААААА!!!!!

Grimm
18 Сентября 2013
— 20:40
#

Позапрошлой зимой решил вспомнить молодость и пройти Final Fantasy VII. Для удобства приобрел какой то дешевенький геймпад "Easy Touch" (аналогичен геймпаду для PS One). Протестировал Вашу демку - почти работает. "Почти" значит, что нажатия кнопок флешка учуяла, но сами кнопки не распознала... В результате в углу я видел надписи
- <Черт знает что за кнопка> 0
- <Черт знает что за кнопка> 1

elder_Nosferatu
18 Сентября 2013
— 23:10
#

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

BolT
19 Сентября 2013
— 07:22
#

@elder_Nosferatu, «почти работает» — это потому что библиотека созданная Адоби для поддержки джойстиков распознает только геймпады от Ouya и Xbox. Соответственно работают без проблем так же геймпады которые работают как XBox Controller, например с этим примером неплохо дружит геймпад от Logitech.

Ant.Karlov
19 Сентября 2013
— 11:54
#

@BolT, если честно, то целевая аудитория Flash игр — это в основном дети дошкольного, школьного возрастов, так же есть и студенты. Офисные сотрудники как правило больше времени посвящают социальным играм, а вот офисные работники со стажем (женщины среднего возраста) уже более крепко сидят на казуальных играх.

На самом деле совершенно не обязательно делать игру только для геймпада — это даже плохо будет. В идеале надо делать игру под клавиатуру с мышкой и дополнительно поддерживать геймпад. Ведь теперь во Flash легко можно проверить подключен геймпад к компьютеру или нет: если подключен, то автоматически выбираем управление для геймпада, а если не подключен, то работаем с клавой и мышкой. Так делают все современные хорошие игры. Более подробно о том как сделать такую поддержку 2 в 1 — я расскажу в следующей статье про геймпады.

PS: Сегодня узнал, что Intrusion 2 поддерживает геймпад, но не нативном уровне Flash, а за счет сторонней библиотеки. Но факт остается фактом.

Ant.Karlov
19 Сентября 2013
— 12:06
#

Обновил информацию по драйверу для геймпада для MacOS. Так же обновил список игр которые поддерживают геймпад нативно. Оказалось что Intrusion 2 не поддерживает геймпад, во всяком случае в Mac версии.

Ant.Karlov
20 Сентября 2013
— 11:17
#

Я пока не могу представить насколько будет удобно играть на геймпаде в зомботрон. Один стик для направления выстрела, второй стик или стрелки для направления бега. Остальные действия есть смысл вешать только на верхние кнопки, иначе палец будет скакать со стика на соседние кнопки.

Mafiй
20 Сентября 2013
— 15:43
#

@Mafiй, Capsized изначально разрабатывался для XBox Live и судя по всему отлично играется на геймпаде. Во время создания последней части зомботрона я тоже прошел его пару раз с использованием геймпада — все достаточно комфортно. За исключением того, что в в момент разработки, элементы интерфейса не реагировали на действия геймпада. На тот момент небыло возможности поддерживать работу геймпада для игроков, поэтому я не стал тратить свое время и силы на адаптацию интерфейса. А с новыми возможностями, в ближайшее время, я обязательно сделаю апдейт для зомботрона в который можно будет играть с геймпадом ;) И возможно не только зомботрона.

Что касается управления: Левый стик — движение, правый стик — прицеливание, A — прыжок, X — использовать, Y — лечение, B — отмена действия. Левый курок (LT) — перезарядка, правый курок (RT) — стрельба, LT, RB — предыдущее, следующее оружие. Как-то так :) Основная задача только адаптировать элементы интерфейса для игры на джойстике.

Ant.Karlov
20 Сентября 2013
— 16:55
#

Мой логитек не работает с демокй - коды хваются но частично. Увы, печалько

Turtleblast
20 Сентября 2013
— 19:33
#

@Turtleblast, пришлите картинку или список кодов которые подхватываются и которые не подхватываются? Очень интересно. Думаю о том чтобы поддерживать в будущих своих проектах геймпады, но для начала хочется больше информации собрать. Спасибо!

В официальных документах вообще говорится только о двух геймпадах: XBox Controller и Ouya.

Ant.Karlov
20 Сентября 2013
— 21:12
#

Еще есть такая библиотека:
https://github.com/arkeus/as3-controller-input

BLASTER
24 Сентября 2013
— 00:38
#

@BLASTER, интересная ссылка. Спасибо! :)

Ant.Karlov
24 Сентября 2013
— 12:13
#

На тему контроллеров:
http://www.youtube.com/watch?v=cN6tpxWtlII

sk
26 Сентября 2013
— 13:19
#

Любой контроллер в windows можно представить как xbox360-шный, а его поддерживают вообще все современные игры, которые можно играть джойстиком. Но с флешкой врядли прокатит, т.к. рядом надо класть библиотечку с настройками
x360ce программка называется. Я с друзьями с 4 разношерстными джойстиками одновременно играл, ничего, все игры прут.

У меня logitech f710, который может прикидываться как обычным джойстиком для старых игр, или xbox360 контроллером - для новых - беспроводной (на новый год купил себе, ибо беспроводные дороги, но того стоят), и дешевенький defender (первый мой джойстик). Кстати, батарейки как вставил, так и работают до сих пор, скоро уже год будет (т.е. проблема довольно надуманная, а при наличии аккумуляторов - проблемы вообще не вижу).

WeslomPo
2 Октября 2013
— 09:23
#

Демка не работает, даже x360ce, который меня всегда выручал, не помогает. Mad Catz контроллер Ps3, опознается программой как PS3 RF Pad.

MidnightOne
4 Октября 2013
— 18:57
#

не знаю на счет навороченных контроллеров и замене мыши... в простых играх (там flash... или еще что) я всегда пользовался JoyToKey

ab
31 Декабря 2013
— 23:07
#

навая игра

настя
26 Января 2014
— 12:39
#

Судя по документации, это работает только в AIR?

Аноним
1 Июня 2014
— 09:10
#

@Аноним, начиная с версии Flash Player 11.8 джойстик работает для браузерных Flash игр. Я реализовал поддержку геймпада в Fire Catcher — чтобы попробовать, достаточно подключить геймпад к компьютеру и игра сама его найдет и будет использовать для управления персонажем.

Реализация поддержки геймпада делается как для AIR приложений.

Ant.Karlov
1 Июня 2014
— 15:12
#

Да как всё-таки играть в зомботрон с геймпадом?

Игорь
6 Октября 2015
— 19:15
#

странно. подключил геймпад. пишет unknown = 1. управлять никак. геймпад дефендер.

/тут моё имя/
21 Декабря 2015
— 11:06
#

майнкрафт

михаил
24 Апреля 2016
— 20:38
#