Week 1 Progress

23 Jun 2017 chinnie

As a requirement to qualify for Oculus Launch Pad scholarship, each participant is required to have a weekly blog post at Oculus forum. Since it’s not visible for non-participants, I will have a copy of it on this site as well. Here it is for this week:

Hello, I am a 3D environmental artist who also been teaching myself Unity development so I can make my own games and VR/AR experiences. I met so many brilliant and wonderful people at the Oculus Launch Pad (OLP) boot camp, and learned a lot. There were many great ideas and I’m looking forward to see them into fruition.

About my project:
EnlivenVR (working title) is an interactive relaxation experience for mobile VR platform, where users can take a break from their busy life and escape to virtual safe space, surrounded by their favorite creatures and soothing sounds, while laying on their back in a comfortable place like a bed or a sofa.
By mainly using gaze selection and head movement, users can interact with the environment. Tap and Gear VR controller will be implemented as well to give audience more input options.
I am hoping that after 10-15 minutes of using the app, users feel more relaxed, refreshed and in a better mood to face the rest of their day.

Why this (VR) project:
Gaze-based interaction in mobile VR is something I have been trying to explore. The first VR system I tried to build for was Google cardboard, since I only had access to android phone at that time. I got myself a cheap paper cardboard viewer, and for some reason the clicker did not work with my phone. As a result, I would have to put my finger by the viewer’s nose opening and tapped the phone screen that way. It was really uncomfortable, and I wished I had super power to click with only my gaze.

During a local VR meetup, I had a conversation about this gaze-click interaction with a lady who was really interested in this idea. She has spinal muscular atrophy, a genetic disease affecting part of the nervous system that controls voluntary muscle movement. On some bad days she was unable to use her arms and legs. This type of control would enable her to still interact with the virtual world even as her limbs refused to listen to her brain.

In another VR meetup, there was a conversation about accessibility. One of the problems mentioned was how to accommodate for people who were bedridden. We talked about ways to set up different cameras to make  people laying on a bed feeling like they’re standing up or sitting straight.

As I started thinking of a product when writing pitch document in preparation for OLP Bootcamp, these things came back to me. I was thinking, why don’t we make an experience for users who lay flat on the ground, a bed or a sofa, without using their hands. Instead of creating complex camera systems, why can’t we just make the interaction happening above the users, where their gaze can reach. This way, I can target both people who needs accessibility and those who are just too lazy to move their arms.

Why relaxation experience? I believe mental health is important. In our current political climate, I feel anxious and depressed more often than usual, and I know a lot of people also who have similar issues. As someone who had been through severe depression, sometimes it takes a lot of willpower just to get out of bed in the morning. I am hoping to create a tool for people like me and help finding that extra energy, extra push to face the day. I’ve read articles about successful people who also spend some time in their daily life to relax and meditate before starting their day.

Progress of week 1:
1) Hardware & software setup
The first thing I did with the Samsung phone was enabling developer mode and removing unnecessary bloatware, then install necessary apps that were needed for development. I already have the latest Unity and Android/Java SDKs installed on my work machine from previous projects, so I downloaded Oculus Utilities for Unity and VR examples.

2) Learn how to build simple scene
Before going crazy with building levels and behaviors in Unity, I needed to learn how to deploy GearVR app to the phone first. So I created a simple scene with a cube, a OVR camera and build it. I noticed unlike for Google Cardboard, GearVR app actually try to detect for the hardware before it can be loaded.

3) Playtest and analyze different existing GearVR apps, especially something with similar theme
At first I downloaded several free apps and 360 videos especially the ones mentioned during Launchpad presentations, like Zero Days VR, In the Eyes of the Animals, Face Your Fears, and Strangers with Patrick Watson. Then Oculus summer sale was happening, yay! For experiences, I downloaded Relax VR, Jurassic World: Apatosaurus, Singularity, Land’s End,  A Night Sky and Bait!. I found similar design elements as my project in Relax VR, A Night Sky and Bait!, which is a good thing.

4) Explore Oculus and Unity toolkits
So far I have spent the largest portion of my time on this. Oculus development is new to me. The Oculus Utilities for Unity had very small number of example scenes, and the Oculus Sample Framework for Unity  project ended giving tons of errors that prevent me from even building any scene. After 2 days struggling with the sample framework, I just tossed it out the window and downloaded Unity VR Samples from the asset store. This one didn’t give me errors, and gaze interaction was similar to what I have in mind.

5) Create initial design
To prevent feature creeps during development, I created initial design document, mainly identifying what needs to be in the experience, what can be added during polish time, and what is nice to have for future contents. I left out a lot of the details since this document will most likely change a lot in the next few weeks, and those details will be added as we build and test the prototype.

6) Create deliverable timeline & consider public events for testing
This one goes in hand with the initial design document. To plan for public testing of this product, I start listing when local VR meetups usually happen. In September, one week before Launchpad submission deadline, there will also be PAX Dev and PAX Prime. At PAX, I can probably get some feedback while waiting in line for panels or going to the safe space room. The great thing with mobile VR is I don’t need to lug around laptop or beefy machines to showcase my app. All I need are the phone, the viewer, cleaning supplies and a charger.
Knowing the dates of these event help in planning deliverables. Based on all this, I pretty much need to have working prototype in a month, then spend the rest on time on more testing and polishing.

7) Start prototyping, tackling mechanics first
As a 3D artist, programming will be my greatest challenge. So, instead of concentrating on art, this week I started with tackling mechanics first, to make sure the building blocks are working properly. I use a lot of art placeholders with cubes and other Unity 3D objects. Pretty stuff will be added later.

8) Setup streaming using Chromecast
People say that mobile VR is an isolated experience, but guess what, GearVR is compatible with Google Chromecast. Last night we went to Best Buy and got one, then tested it right away. I was able to stream my session to a TV. The frame rate was pretty choppy, but this will be great for testing later, to watch for user interaction. I will write my setup for streaming in a later blog.

Things to consider during development cycle:
1) Keep it simple. Since I will work on this project solo, it’s important to know my own abilities and not going for crazy ideas. From my experience with hackathons and game jams, if I’m struggling with the same problem over 1-2 days, maybe I should find and try another solution.

2) Why VR. This question keeps popping in my mind after going through the boot camp, and it really affect my design decision.

3) Think of user needs first. Since I’m creating a safe space for people, I want to make sure user comfort is the main priority. For example no jump scare, have a way to exit the app fast if needed, and have a way to remove any trigger or uncomfortable objects from the environment.

4) Test ideas through prototype. Fail fast and fail often.
Sometimes, especially in VR, ideas looks good on paper, but as we implement it in VR, it turned into really bad experience. Many questions can be answered through prototype as well. Don’t know what’s considered close or far? Put several cubes in different location. Put on the HMD and check for yourself.