Inspiration
With the upcoming release of the Oculus Rift, Vive, and other similar platforms, it's safe to say that the age of real, available virtual reality technology has begun. However, with the controversially high price point of the Oculus Rift and its incredibly demanding suggested computer specs, we're still a ways away from having that kind of virtual reality in most of our homes.
Because of this, we see the possibility of a rise in a more modest but still incredibly powerful kind of virtual reality in the form of Google Cardboard. We see its limitations as a challenge to make the most out of a highly accessible platform that nearly anybody with a smart phone can get their hands on.
What it does
Cardboard Calamity is a multiplayer team-building body-swapping virtual reality game. At least two players have phones with Google Cardboard, which connect with the central server to interact with each other. Each phone records what is in front of them using the front-facing camera. The twist is that players are only be able to see what is in front of their partner, not themselves. One player is tasked with building a simple to moderately complex Lego object with the guidance of their partner.
The helper will have nothing in front of them in actuality, but will be able to see the instructions sheet and Lego pieces in front of the builder. The builder will not be able to see the pieces or the instructions, and can only be guided by the voice and gestures of the helper, and their own feeling around.
We are also looking to implement a competitive mode with at least four people as two pairs of builders and helpers. Teams will gain points as they complete challenges that they can spend on power-ups to give their team an advantage (including one that would put the players in their own bodies temporarily) and power-downs to mess up the apposing team (like one that flips the vision of the opposing builder). The first to complete all the challenges wins.
The game was built from the ground up to encourage teamwork. It would be great for educational and business team building.
How we built it
The game is an Android app written in Java using the Cardboard API. We based our early development on an open source project called Cardboard Passthrough, which formats camera input in a way that looks natural while wearing Cardboard, among other basic tools. We used Android Studio as our IDE.
The central server used for app intercommunication is written in Go. It exposes a REST API to the app and streams camera input using sockets. Vim was used in conjunction with the vim-go plugin as the IDE. The server is hosted on a free tier Amazon AWS server.
Challenges we ran into
The Cardboard API does not itself provide a tool for converting camera input into a Cardboard-friendly form. Luckily, we found Cardboard Passthrough, which helped us significantly with this problem.
For some reason, Android Studio would not generate Gradle wrappers properly when we imported projects straight from Github. It took a lot of tinkering with Gradle scripts before we found a workaround.
We spent hours trying to figure out why our app seemed unable to connect to the server's streaming socket to transfer data. The solution was a boring and silly fix, but it took a long time to figure out.
We had a very tough time getting a usable video stream from the Android camera. The API is built with only app-internal use in mind, so transferring it through a socket involves using a tricky "hack" that we could never get working. Camera streaming is integral to implementing this game and this challenge ultimately kept us from finishing the project.
Accomplishments that we're proud of
First and foremost, we're very proud of our idea. Google Cardboard is a platform with incredible accessibility and potential, which is matched only by its limitations. Being limited to one button and a mobile platform makes traditional gaming a non-option on Cardboard, but our idea fits nicely into the constraints of this platform and benefits hugely by its simplicity and openness.
We're also proud of how well we were able to re-purpose existing tools to our needs. We saved a lot of development time by using Cardboard Passthrough's features, we were able to complete some unfinished portions of Cardboard Passthrough and, of course, added many of our own.
Cardboard Calamity's user interface is minimal, but what we have is stylish, appealing, and simple. Look no further than our logo for a taste of Cardboard Calamity's look and feel.
What we learned
We learned about the basics of Gradle version control, specifically about the wrapping process it does when a project is newly added to a computer.
We gained more general Java experience, especially in the mid-to-low-level graphical and networking areas, with OpenGL and sockets.
We learned more than we bargained for about the Android camera API, specifically on how to interact with it at a low level.
What's next for Cardboard Calamity
The first goal we have is to find a solution to the camera video streaming problem. From there, we want to improve how reliably the app interacts with the server. Then we would add 4+ player support, buffs, debuffs, and a scoring system.
We as a group would like to experiment further on how Google Cardboard and accessible virtual reality in general can provide new and fun experiences.
Log in or sign up for Devpost to join the conversation.