Native developer's look on building cross-platfrom mobile apps using Flutter, based on our recent project with Folx.
Polidea Labs #2: Two Weeks in Virtual Reality
The main goal of Polidea Labs initiative is to serve as a learning opportunity and facilitate the process of gaining new experience. In the second Polidea Labs experiment we touch upon one of the hottest tech trends out there—Virtual Reality. Experimenting with VR doesn’t really need an explanation. Let’s just come back to Manuel Clément’s talk on VR at this year’s edition of MCE or the Google I/O 2017 keynote—unsurprisingly, also connected with VR. We simply had to experience it hands-on! The following post will give you an idea of how to conduct a super simple experiment while using the most popular tools out there. Just to have some fun and get started with VR!
2 developers, 3 tools
We are both developers—this time united in VR experiment but usually working separately on Android and iOS. At the very beginning we simply had three VR devices in front of us: (DayDream, Oculus, Cardboard) and 2 weeks to go. Sky was the limit! Then, the idea emerged—we wanted to build our office in virtual reality and spend some time there.
Let’s get started…
What do you do when you want to spend 2 weeks in your virtual office? Well, you do some research first. After getting to know the subject a bit better, we have decided to use Unity—a game engine promising to be “everything you need to succeed in games and VR/AR”. It is fairly popular and as it turned out later on, simple and beginner-friendly.
Unity website offers a lot of supporting materials like video tutorials (you can find them here). After our experiments, we can definitely say that it is enough to get into virtual reality with ease and pleasure. Here our virtual journey began—as always—with some adventures along the way.
Creating our virtual office
We started with designing our virtual office. Sounds easy, right? Unfortunately, Unity has different scales for various game objects (such as plane cube or cylinder). That means scale x of a cube doesn’t equal scale x of a plane or scale of a cylinder. Our first disappointment was quickly followed by a simple solution. We created our own scale for all the types and used it to match the objects.
Since we didn’t have any designers in our team, we had to manage it all by ourselves. We used a cube for a countertop with a material imitating wooden one. Four cylinders were used as desk’s legs. After that, we were able to create a prefab out of our model. We had to use complete components from assets store to create chairs and other elements of the office equipment.
After creating a simple office imitation, we wanted to move around it so we started adding some objects. The FPS library proved to be very helpful. We just put FPS controller from imported assets to our scene and everything was done. First week was already behind us.
Let’s get real
Second week started with checking our VR devices:
Yet again, we were positively surprised by Unity. We simply needed to check VR support options and add them. Moreover, we learned that FPS Library supports almost all of the controllers so you can easily get simple solutions for free.
You can watch it here:
To sum it up, it seems that activating VR devices is limited to ticking one checkbox and choosing the device that will be in use. Awesome, right? As for mobile devices, the biggest challenge seems to be connected with drivers and controllers (for iOS they need to be MFI ones) since different controllers have various mappings of joystick axis and buttons.
What did we find out in Virtual Reality?
Our VR trip took 2 weeks and this time we learned a lot, experienced a lot and definitely had fun along the way. Nevertheless, it was more of an adventure than real developer’s job (we needed just few lines of code :)) It should be explored by designers though!
What worked best?
Unity—although we are fully aware that we didn’t dive deep into the possibilities of the tool. For us it was intuitive and simple to use. Highly recommended for beginners!
What could have been better?
Video quality in VR devices—both on mobile and in Oculus. Even though the 960x1080 per eye in Oculus seem to be sufficient, you can easily see the gaps between pixels. The same problem appears on high-density Retina displays on mobile devices.
Frame rate—which left us a bit disappointed. We did notice a lot of dropped frames, specially with fast head movements. As it turned out, dropped frames and lags are indicated as a one of the “Virtual Reality Sickness” reasons.
“Virtual Reality Sickness”—many of our test users complained about it. Due to human’s body sensors’ conflict, moving in VR world causes similar symptoms to vehicle motion sickness. This is why in production code we should probably use “teleporting” instead of “walking” technique. You can read more about it in here.
Our 2 weeks in virtual reality were definitely a great experience! We encourage you to try Unity yourself. It’s a very powerful tool and it’s free for personal use! You can also download a simplified Unity model of Polidea’s office from our GitHub repository here.
See you there!
- KonradSenior Software Engineer
- PawełSenior Software Engineer