We wanted to provide game that utilizes multiple wearable technologies in a fun and healthy way.
What it does
It uses the nod ring to control a space ship in the game which is used to destroy asteroids that are the size of planets that are coming at you from random directions in a Unity-made game.
It also uses the Estimote beacons to have a second player that moves from one beacon to the other in order to win the game and to change the state of the first player. The first player could be on fire due to the Android device being close to one beacon and the fire could be extinguished when the second estimote beacon, which could be on the other side of the room, is reached.
This means that the game has to be cooperative and that's why we named it Galactic Cooperation. One player has to motivate the other player to run faster from one beacon to the other in order to extinguish the fire, while the first player has to concentrate on destroying planet sized asteroids.
If the second player doesn't extinguish the fire for in a couple of seconds, the they both lose the game. This gives an extra layer of challenge where neither of the players are allowed to lose focus on their own tasks.
How I built it
We used Unity engine to make the game and the logic for the nod ring itself and Android Studio to make an Android app that connects to the Unity-made game using TCP sockets and the estimote SDK.
The estimote beacons are constantly detected using Bluetooth 4.0 low energy and we are able to know if the first beacon is 'fire' and the second beacon is 'extinguish' due to the fact that they have unique ID, major and minor.
We also know how far the beacons are due to the fact that we are using estimote SDK to range monitor the signal strength of the beacons and convert the signal strength to meters (distance).
The Unity engine is able to directly get the nod ring coordinates in 2D space because we are using nod ring libraries and SDK for the Unity engine game portion. This means that the Nod ring could be connected via Bluetooth on a Mac or a PC, since Unity is cross-platform.
The Android device is constantly detecting how close you are to each estimote beacon and once you reach a certain beacon and a certain size (~ 0.5 meters) it sends a Socket byte packet to the Unity engine to either light the space ship on fire or extinguish it, which means that the Android player could be very far away from the computer that runs the game and it will still connect via WiFi.
Minimum Android version needed is Android 4.3
Challenges I ran into
Being able to connect Android to Unity engine, we needed to create a C# Socket server and a Java client that constantly need to maintain connection in order to send the 'fire' and 'extinguish' beacons. This was very time-consuming as the sockets are blocking and we need to properly thread each of the socket implementations to make it work both ways (Android with Estimote and Unity with Nod Ring).
Accomplishments that I'm proud of
We are very proud of the fact that we were actually able to build a full finished project on our first (for Adrian) and second(for Maksim) Hackathons.
To individually learn to use so many new subjects and tools that we were not taught in our CEGEP computer science program as well as implementing subjects we were taught in a professional and then to be able to bring all of these aspects together into one big project that just works.
To be able to finish the project in less than 48 hours is quite an accomplishment and we are both proud of that fact.
What I learned
We learned to use sockets (client/server), we learned to use estimote SDK and to range the signal strength of them, as well as learned how to use the nod ring in a Unity environment.
What's next for Galactic Cooperation
We plan on polishing it up and hopefully submitting it as a free game and perhaps even implementing other wearable technologies for even more players to increase cooperation.