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

Посмотрите это 1-минутное видео Remote Pad в действии:

Исходный код







Этот проект состоит из двух репозиториев: remote-pad, отвечающего за веб-клиент, который дает вам страницу html5 с панелями или кнопками, которые вы можете нажимать, и remote-pad-server. >который является сервером, который получает данные из браузера и выполняет, как если бы это была клавиатура, и отправляет данные в эмулятор.

Архитектура

На изображении выше показан клиент, который использует 4 кнопки и значение акселерометра по оси Y в качестве команд. Команды транслируются в JSON и отправляются на сервер. На сервере есть карты для реальных клавиш на клавиатуре для каждого игрока.

Таким образом, эмулятор не имеет значения. Вы можете играть в любую игру, если ваша платформа (Linux, Windows или Mac) ее поддерживает. Тем не менее, у него есть некоторые ограничения, например, некоторые из используемых библиотек, такие как robotjs, не поддерживают 32-битные системы.

Инструменты

Инструменты, используемые для создания этого проекта:

Как видите, для создания этого проекта использовался только язык JavaScript (и немного C/C++ из robotjs), а поскольку протокол MQTT легковесен, команды беспрепятственно отправляются по сети (конечно, лучший способ — запустить на локальном компьютере). сеть).

Играбельность

В настоящее время у вас уже есть готовые Race Pad и Directional Pad.

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

Например, Race Pad, конечно, лучше подходит для гоночных игр. Давайте подумаем о Mario Kart 64, вам понадобится руль, кнопка для ускорения и еще одна для стрельбы по особым предметам. И это все. Все остальные кнопки можно считать необязательными в смысле минимального количества кнопок, необходимых для реального воспроизведения.

Кнопку направления я использую, чтобы играть в такие игры, как SNES Bomberman 5. Основы таких игр — движение и сброс бомбы. В этом случае я использую жест панорамирования — указатель опускается вниз и перемещается в нужном направлении. Это работает, но иногда вы делаете нежелательные движения. Единственный способ заставить его работать правильно — это тестировать и создавать всевозможные пэды с разными жестами, пока вы не достигнете играбельности.

Вывод

NodeJS (JavaScript) и его управляемая событиями модель отлично работают в средах, требующих связи в реальном времени, как клиента, так и сервера.

API HTML5 еще не полностью поддерживается, но уже позволяет создавать действительно отличные приложения. Потенциал бесконечен.