Kitten Run VR

Inspiration

VR is still a kind of a luxury nowadays. Not everyone has access to a $200+ device, plus accessories to enhance the experience. That's why we decided to develop using the Google Cardboard (an 8 euro alternative) and a smartphone app in order to design a new gaming experience.

Our motivation is to have the users exercise while having fun and being challenged.

Also, we wanted an "open" interface to which the user can add diverse input methods to the game from the physical world. That is, give the user the ability to use anything "smart" to connect into the virtual world.

What it does

Kitten Run VR is a VR video game experience designed to inspire the user to move and workout. The game consists of an endless obstacle run. While wearing the VR headset and the chest strap, the user has to physically jump, crouch, plank and sidestep in order to continue further, and the game is over whenever one is hit.

How we built it

The core of Kitten Run VR is in an MQTT broker, running in our server (Raspberry Pi), an embedded device with a gyroscope and accelerometer, and the headset.
The embedded device is a Nordic NRF51 development board with an Invensense MPU fused motion detector. It communicates via BLE to the smartphone in order to send movement updates. In the app, motions such as standing, crouching, planking and sidestepping are recognized and sent to the server via MQTT topics (channels) to which the headset unit is subscribed.
The game was developed in Unity and built for iOS and Android, using Google's Cardboard VR SDK. We used open source 3D models. The game is subscribed to the MQTT channels in the server, to which it reacts by performing the appropriate action/command.

Challenges we ran into

It was the first time developing in Unity for everyone in the team.

Properly classifying movements using the development board is quite challenging, specially when more than one user is taken into account.

Accomplishments that we're proud of

Creating a generic MQTT interface into our videogame. This means that any IoT device that can send MQTT commands (a motion sensor, a smart toothbrush, a pressure mat... etc) can be used to control our game.

We learned the basics for Unity and came up with a rather usable videogame in a few hours of work

We integrated custom hardware and open source and affordable devices (like the google cardboard) to deliver a fun gaming experience.

What we learned

Unity

MQTT

Cats are evil

What's next for Kitten Run VR

We would like to test using different and diverse input methods for our game. Since anything that talks MQTT or sends HTTP requests can be used, it would be fun to experiment with motion sensors, voice commands (Alexa, for example), or custom hardware.
It would also be interesting if a second user could control the VR experience from "outside". Via a smartphone app, he/she could generate obstacles, increase the difficulty, speed, etc.