From Prototype to VR App
Article posted on
Today I want to tell you a story of how I decided on, developed and released my first VR experience. I have to admit it’s a basic app, but I learned quite a lot.
There is no doubt that building quick prototypes is a great way to explore things and test hypotheses, but working on something from concept till release is different. It uncovers so many hidden details that you would never think of by jumping between rapid prototypes and designs.
Luckily I discovered this quite early. While working as a designer at an enterprise software company, I built simple websites for fun in my free time. Take, for example, Design Password Generator and Design Critique Coach. They are not great from a design standpoint, but the experience of coming up with an idea, designing, testing, building and then seeing other people using it is exceptional.
I was extremely excited about Web XR when I tried it for the first time (2017). I was so confident in it that I built a Learn Calligraphy with AR. While working on it, I learnt a lot about UX in AR and how AR and web AR plugins work and tonnes of other stuff. In the end, I considered this tool a failure, as it never gained traction; but after reflecting, I figured out its flaws and filed them away for the future. Three years later (2020), when MR headsets became a reality, I decided to come back to the same idea. It ended up not being so easy, so again I’m keeping this idea and my experience in reserve for later.
I’ve been exploring the use of real scale scenes in VR to make dataviz more influential for quite some time (Human factor in virtual reality data visualization). So, when I saw the COVID death toll started rising again, I figured out that VR might help in understanding the true scale of the problem, as statistics have become just relative numbers disconnected from real life.
I made a quick prototype, recorded a video and posted it on Twitter like any other video. Only a few weeks later it started gaining popularity, and more and more people began asking where to download it.
After having chats with dozens of people and identifying a demand for such an app, I decided, why not. Just preparing this prototype to share it publicly couldn’t be so difficult.
The first thing that I identified as a deal-breaker was poor performance. The prototype was exceeding Oculus max recommendations by five times. It was so bad that I had a hard time even recording it, as it was barely running.
And of course, I know close to nothing about optimizing performance in Unity. It’s never been my problem. My focus was to make things simply run. So, I started reading and watching tutorials about how to check performance and improve it. In fact I had to rebuild the scene a few times; eventually, I added automatic replacement of the mesh with a simpler one if users were far enough. And it worked. The app was running just below Oculus recommendations.
After sorting out performance, I started focusing on things that differentiate a quick prototype from a standalone app. At first, I had to add some intro information to help users figure out what it’s about.
Luckily the experience is quite straightforward. I ended up adding just simple text in front of the spawning place.
I had a few interactions in addition to basic locomotion. You can use X and Y to select previous or next day, and B/A to go up or down. I decided to add how-to next to the controllers.
I thought about making them disappear on rotation or after some time, but decided to not bother, as it’s not an experience where users would spend a lot of time, so always visible how-to wouldn’t distract so much during short visits.
I added hover and pressed states to the info for each button, to add a little more feedback. Now when you touch the button, the help info elevates a little bit, and when you press it, the info gets pressed as well.
For me, the best locomotion is no locomotion. But it is the cornerstone of this experience. For the prototype, I added basic direct movement. I thought of using teleportation, but it would work only when users are at ground level. In the air, it would work strangely, so I ended up just keeping basic direct movement.
To make the elevator experience more comfortable, I added a small platform which appears when users are higher than the figures. Can’t say if it makes the experience any better.
The experience still felt empty. I’d done some experiments with musical instruments in VR before but didn’t know much about setting up audio.
The first thing I wanted to add was more feedback to the actions of switching days, as it’s the key feature in the app. Just different click sounds for the next and previous day worked fine. Also, I added a kind of elevator sound when users are moving up and down.
And the last part I added was an empty click sound when users have selected the latest day (yesterday) but are still clicking to select the next day.
To make the experience more complete, I added a sad melody to the background.
It was almost there for the users, but I still had a few loopholes to close. For example, what if users don’t have an internet connection or the API that I use to get data doesn’t respond? I added some notifications for such edge cases, with recommendations what users should do.
Still, there is plenty to improve. Performance can definitely be optimized, and more features, like selecting different countries, added.
Also, a few people on the internet mentioned that it would be interesting to add some random or real data about each person, like name, profession, or a photo. Making the silhouette more human definitely would raise empathy engagement and make the experience more emotional. But I decided to not take this path. I would rather stick to the data visualization concept, and just present numbers in a more consumable format. It’s up to users to come to their own conclusions. Different tricks to make the experience more dramatic might be perceived as attempts to influence and convince of a specific point of view.
After spending 10x more time on polishing the experience than I spent on building the initial prototype, which looks almost the same, I decided to stop working on it.
First, I wanted to keep exploring other interaction concepts. I have a much longer list of ideas to test than I have free time for 😀
Second, after publishing this experience, only 16 people downloaded it in a week from SideQuest.
For example, one of the tweets got +120k impressions and +3.5k engagements.
I have to admit I haven’t done a lot of promoting the app. I haven’t even spent much time on preparing assets for SideQuest. I added only the minimum necessary screenshots and video. I’m sure that this can be improved.
Maybe the app isn’t so good. It’s definitely not an engaging fitness app or exciting VR game. It’s a short data viz. It’s not outstanding in terms of graphics, gameplay or interactions by any means.
Around this time, we had a conversation on Twitter that it would be great to build a Web VR version of this experience. And Amir Berenjian was generous enough to offer to do it. It looked slightly different, but in essence, it’s just the same. In addition, it has multiplayer and runs on any device. But somehow it didn’t get much attention either. It kind of ruins my excuse that there aren’t enough headsets to let such niche dataviz take off. You can access it here virtualrem5.link/EKFB4L2
Anyway, it was a great lesson for me. I acquired a lot of practical knowledge during the work on this VR app. I learned about performance optimization, assets preparation, app distribution, and considering the end-to-end user experience.
Initially, I didn’t notice the main effect of this exercise. But just a week later, I wasn’t thinking about building the next prototype, but rather sharing it with others to try out. This would also help me to gather more real feedback.
Just going through the whole process of delivering something opened my eyes; it’s not so difficult. I mean, difficult, but still possible. Releasing apps, experiences, or even design assets to the public is an effective way to grow.
Download COVID Deaths in the USA Dataviz from SideQuest sidequestvr.com/app/2717