In game image
View of a player using the headset
We looked at all the different possible items in the hardware list at the beginning of Merced Hacks. We picked out three things that seemed they'd work well together: an Oculus Rift, a Leap Motion, and an Alienware to run VR on. We knew Unity integrated all these together relatively well, and we wen't from there.
What it does
The game starts you at a fixed distance from a target you throw darts at. You get 20 darts and the goal is to make as many points as possible. Thanks to the Leap Motion, you pinch the dart to hold it, and actually throw and release the dart to send it off.
How I built it
We started with a basic floor and target, and spent the first day developing physics interactions and planning out the method for throwing.
At first we were going to go for a grab and throw method for throwing the dart, but there were some glitches that were introduced by trying to grab a ball that did not physically exist. Once we learned of the method that allowed pinch detection, we built up a more detailed level and implemented a pinch and release throw system.
After the initial system was created we implemented a score system and a limit on darts per round, encouraging a sense of competition and setting a goal for the players.
Challenges I ran into
The first major issue that we encountered was that the Leap Motion from the hardware lab did not come with the VR headset mount that was advertized on their website. In order to continue with our plan, we improvized and used laptop stickers to mount the Leap Motion to the Oculus. Despite the USB extended we used being a little weak, it worked far better than expected for the entire duration fo the event.
The second issue was that none of our team really knew how to use Unity, or how to properly use the Leap Motion or Oculus. The most experienced memeber of Unity on our team had about 10 hours max experience, outside of VR and AR. Half of our team had never touched it before. This made progress slow and setbacks numerous. At one point the project folder on one of our laptops deleted half of itself, causing a large confusion that lasted several hours. We got through it in the end, thanks to version control.
Accomplishments that I'm proud of
The first time we got both the VR and the hand tracking working at the same time was a major relief and accomplishment for us. Most notable, however, is when we fully implemented the pinch to throw mechanism, which required the majority of our custom codebase for the project.
What I learned
Working with several different technologies with a group of people who have never used them together before... and then trying to develop something out of no knowledge is a large uptaking. It took a lot of hard work to get through that wall, but it paid off in the end. Even just experiencing VR development was worth it alone.
What's next for DartMotion
Should we continue working on the project, given that school doesn't get in the way, we plan on developing a more detailed scenery in the future, as well as refining the performance and overall experience and smoothness of animation.