Monday, November 28, 2016

Titans of Space 2.0 gets a comfort mode

Despite the positive reactions Titans of Space has received since the initial version was released over three years ago, there has been one nagging problem throughout:  it uses artificial locomotion to sweep players along from planet to planet, accelerating them at a blistering pace along curved paths while rotating their frame of reference, performing lateral moves, and so on.  Even though I made an effort to be gentle with the player, it "breaks all the rules".

As far as I can tell, Titans of Space has gotten away with this for so long is because many players apparently enjoy the experience in spite of these motion issues, and because developers (me) are the worst playtesters, and -- here's the main reason -- because I could never come up with a good-enough solution to this that didn't sacrifice the essence of the experience, though I definitely made a few attempts along the way.

From the very beginning, the experience had an option for low vs high intensity routes, defaulting to low intensity.   Some time later, I added an option for smooth movement vs abrupt takeoffs.   Right after Oculus Connect #1, I added an option for a "player-locked skybox", which I found to be pretty trippy in practice even though no one really liked it or knew to look for it in the options.  Besides, it detracts from the creative vision that the player be moving through space, so it's not something I actively pushed onto players.   And finally, I added a "protective frame" around the cockpit that by default shows up when moving to provide a much more obvious frame of reference, and then hides away after coming to a stop to avoid obstructing the player's view.  But none of that was good enough.

I finally found some time in the last few months to really tackle this problem through intense prototyping and external playtesting, and now I'm very proud to say that I consider motion sickness a solved problem in Titans of Space 2.0 (for PC VR only at the moment).

I'd like to share some of the little gotchas and breakthroughs that added up to a complete solution:

At the beginning of the experience, the player is now asked whether or not they are sensitive to motion.  When answering yes, the new comfort mode kicks in and the basic idea is that each flight between planets is broken up into multiple segments of constant velocity.  Meaning, the player will move along these segments in a straight line at a fixed speed, while reproducing the experience of the original curved paths as much as possible, with each segment separated by a fade out and fade in of some kind.   However, when this was implemented in a straightforward way, there ended up being many interesting problems:

  1. Simply breaking up a 30 second flight into 4 or 5 segments made each segment feel WAY too fast and frantic, and was arguably far more disorienting than the original curved flight trajectory.
  2. Constant velocity is a very comfortable form of motion, but not if it involves lateral movement or moving backward.  Unfortunately, the original curved paths involved lateral and backward movement in order to point the player in the right direction.
  3. Reorienting the player for each segment in order to see the action can be disorienting if the view changed too much.
  4. Conversely, when the view doesn't change enough between segments, the player can feel that the fade out and fade in was unnecessary, which leads to annoyance.   "Why does this keep blinking for no reason?"
  5. Related to #3 above, suddenly fading in with a giant Sun in view is a bit like being in a dark room and then turning on a flashlight into one's eyes - very jarring.
  6. Approaching a planet at a fixed speed and then cutting to simply being stationary in front of that planet creates an overwhelming feeling of impending collision, even if there is a slow fade out and fade in at the cut.   This can also feel like an unnecessary cut.
  7. Slow fade-ins took time away from the experience of the travel itself, while fast fade-ins were too jarring.
  8. Anxiety in not knowing when each segment is about to end, or how far there was to go to the next tour stop.
  9. Fading in to movement away from the last tour stop was sometimes disorienting as the fade-in itself obscured exactly how and in which direction the player left that tour stop.


Solving all these issues without resorting to the disappointing fallback of simply teleporting from one tour stop to the next required doing the following:

  1. Constant velocity movement is slowed WAY DOWN relative to the original curved trajectories.   Doing so gives the player enough time to absorb what's happening in given segment and allows for lower fixed speeds.  Amazingly, even if the movement is slowed down twice as much, the perception of time passing tends to be about the same as the original continuous curved trajectories.
  2. The player's cockpit always faces the direction of movement.  The exception to this is rising or falling (the cockpit doesn't pitch up or down for that), but there is always some sort of forward movement.  This produces a consistent direction of travel that is comfortable since it removes lateral and backward motion.
  3. Constant velocity travel no longer conforms exactly to the original flight paths.   I spent time creating detailed editing tools that gave more control over these paths and allowed me to easily gauge each segment's speed and duration at design-time.   As a result, many of the fast close approaches toward planets were removed, and consecutive segments that did not significantly change the player's view were consolidated, and some segments became disjointed instead of continuous.  In addition, many of the constant velocity paths were changed to start with a flyby of the planet they were just looking at, to give more context about where the player is going.
  4. There is a new and obvious progress indicator that appears during constant velocity travel, showing the player moving at a fixed speed with icons for each cut.  Playtesters absolutely loved this feature as it wiped away their anxiety.
  5. The cockpit remains visible during fade-outs between segments.   The allows the player's frame of reference to remain useful at a time when the player needs it the most.   This simple change was actually one of the biggest breakthroughs in achieving something comfortable. 
  6. The fade-out/fade-in mechanism was changed to an actual "blink" (like eyelids closing from the top and bottom), with the fade-out portion actually fading out at the same time.   The reason for the blink approach during the fade-out is to inform the player that a cut is about to happen, and to discourage the player from looking up where it is easy to be disoriented after a cut.  And the reason for the blink approach during the fade-in portion is to steadily reveal more and more of the field of view so that the new view (and new fixed speed) isn't jarring.  The fading fade-out was done in order to avoid *scaring* the player if they happened to be looking up and saw the fade out appear out of thin air above them.  The fade color is a solid dark gray instead of black in order to avoid annoying changes in brightness (something I learned from putting together the slideshow portion of 'Mars Is A Real Place'), and it is a solid color without any texture to avoid introducing vection.  However, it's still important that the player can sense that it's a small sphere around the cockpit so the sphere remains low poly with visible polygons along the edges.
  7. Fade out/fade ins ended up being the same speed.  I experimented with quick fade out to make the beginning of travel feel responsive, slow fade outs to avoid jarring cuts, quick fade ins when speeding up from one cut to the next, slow fade ins when slowing down.   However, playtest results informed me that the different fade in/out speeds felt chaotic and random.  


Other comfort-related changes include:

  1. The cockpit floor is no longer see-through when in comfort mode -- one player reported feeling like they were dangling in ferris wheel pod high up in the air and couldn't shake the anxiety from that.
  2. More than one player reported that a dizzying sensation of falling on one particular downward segment (even at a constant velocity), so that had to be slowed down.
  3. The motion sensitivity prompt in the beginning replaces the old prompt whether or not to use gaze-timer interaction ("Wait for Input" vs "Automatic").   Not only is gaze-timer interaction completely outdated now in PC VR, players that unknowingly choose gaze-timed interaction sometimes feel extremely disoriented when they accidentally start the cockpit moving, which leaves a sour taste in a player's mouth.
  4. The moving cloud bands of Jupiter are now paused while moving slowly near the planet.   I'm a seasoned VR user but even for me, moving slowly near a large rotating body like Jupiter with an easy way to cause vection issues.
  5. The overview of the Solar System toward the end involved pitching down about 90 degrees as you look down onto the orbits.  This produced another vection issue, solved by darkening the stars in the background during that rotation.

Overall, this was quite a learning experience, and these lessons learned will carry forward as the tour is extended and more content released in the next few updates,

Friday, May 20, 2016

Titans of Space 2.0

Many months since posting here!

The last release of Titans of Space was v1.8 on Oculus Share, 9 months ago.  I wish I could say I've been working on an update Titans for all of those 9 months, but I've been helping out on other projects, most notably Apollo 11 VR, and of course all the usual things happening in meatspace that take time away from VR development.

I have a bunch of things I want to do for Titans of Space 2.0, some of it based on feedback collected since the first version was released nearly 3 years ago, and some of it based on what I think will excite players in today's VR world.   Things have changed a lot in those 3 years: new VR technologies have come to market, new SDKs, higher player expectations, and I've gotten a lot more end-to-end VR development experience under my belt.   I'm managed to tie up a few loose ends, say no to various opportunities, and allocate a bit of time to put Titans of Space 2.0 into active development.   This is what I love to do.

Now, even though this is what I love to do, I'm not able to do it for free any longer.   My wife was in pure shock after seeing the combined download numbers across three different VR platforms for what started out as a hobby project 3 years ago...  and then slowly facepalmed when I reminded her that it was free to download.   The Narration add-on for the Cardboard version has been successful as far as niche within a niche things go, but it's a drop in the bucket compared to the bills that need to be paid.   I also really appreciate the support of those that donated to encourage me to keep developing Titans of Space.  I think the donation model is useful for knowing that some people will go out of their way to seek out a donation page, and that is effective in keeping me motivated, but again it does not come close to paying the bills.   I'm one of the thousands of developers that are trying to go VR development full time, so here goes:

Titans of Space 2.0 launches as an Early Access title for the Oculus Rift, HTC Vive, and desktop monitor on May 24th at $7.99, with the price going up after it leaves Early Access.   The Titans of Space site has been updated, and I've opened up a store page on Steam.  If you've played an early version of Titans of Space in the past and are wondering what's new in 2.0, I've gone into some details here.

NOTE #1:  A purchase from Viveport currently does not include the Rift version, and a purchase from Oculus Home currently won't include the Vive version.  If I see an opportunity to make things more convenient for players, I'll take it as long as I have the resources to do so.

NOTE #2: If you have made a donation to me on or before May 19th 2016, I'm very grateful for that and would like to offer you a free copy of Titans of Space 2.0! You should receive an email from keys (at) drashvr (d0t) com shortly after release, if you don't get it, please email keys (at) drashvr (d0t) com with your name and email used for the original donation.

Thank you for the support!

Saturday, September 26, 2015

Big update for Titans of Space on Gear VR!

A new version of Titans of Space is now on Oculus Store for the Gear VR:

No more compromises: full stereoscopic 3D is back, running at a smooth 60 FPS!

For those that weren't aware, since its release Titans of Space on Gear VR has always been rendered monoscopically, so both eyes are effectively seeing the same thing.   Basically an interactive 360 video with headtracking.   I did add an optional hybrid 2D/3D mode where only the cockpit could be shown in 3D, but performance of this was borderline, and subject to a bit of choppiness and tearing here and there.  Not ideal, and not something I would be excited to show to anyone, and I know many users felt the same!

So what's changed?  Why is Titans of Space now suddenly able to pull off full stereo 3D at a solid 60 FPS?  Several factors came into play:

  1. Oculus has been doing a stellar job with their Mobile SDK.  They, in combination with Unity, have introduced optimizations that have increased the time available for the CPU to do its work.
  2. Although Titans of Space Gear VR is now using Unity 5, I'm not enabling the checkbox for native VR functionality that comes with Unity (yet).  I'm using the Mobile SDK 0.6.1 that is intended for Unity 4.... with Unity 5.   Seems to have worked out great, and hopefully doesn't backfire later on.  Reason for doing this is because at least up through Unity 5.2.0p1, the native VR functionality still seemed to be underperforming, but it's possible that might have changed recently.  I also couldn't stay on Unity 4.6.x because I use a single Unity 5 project for both PC and mobile versions of Titans of Space.
  3. When the Gear VR innovator edition was first released, Samsung and/or Oculus had put strict limits on the CPU and GPU levels that a developer could choose to target.   For example, Titans of Space was running at CPU1/GPU3.  Max level for each is currently 3.   So GPU running at full speed, CPU running at reduced speed.   At the time, CPU2/GPU3 and CPU3/CPU3 were not valid combinations and trying to set those levels would be considered invalid and thus introduce chaos into the CPU/GPU clock speeds as it reverts to default throttling logic set up by Samsung for normal mobile phone usage.   Sometime in the last few months, those limits were removed.
  4. When Gear VR innovator edition was first released, changing the CPU/GPU levels at runtime resulted in a one-frame flicker as it resets the VR rendering state, which means that the levels had to be selected at load time (or during a fade out, etc), and remain that way.   Sometime in the last few months, this also changed -- the levels could be changed at will without any discernible impact on what the player sees.  This gives rise to the ability to dynamically change the levels at runtime based on what's going on in the app.
Monoscopic rendering is still an option but it's not the default -- this uses the least amount of CPU. And, to address the persistent performance issue for those with the Snapdragon Note 4 & Android 5.0.1 / 5.1, I raised the CPU level further for that configuration to compensate.

The bottom line is, a tiny bit more app optimization + SDK improvements + Unity updates + higher CPU clock level limits was what I needed to make 60 FPS stereo 3D work.   Huge sigh of relief on my part!   


...Until I remembered that higher CPU levels means the device warms up faster!   Which isn't great considering Titans of Space encourages users to take their time to look around and read about things.  Worse still, the tour is linear in nature (well, it has branches depending on the tour length you choose, but it's still basically linear).   So if the device happens to overheat in the middle of the tour, users may not bother trying to catch the rest of it once the device cools down.  Those that have stayed for the whole tour know that there's more than just the Solar System, and many users tend to think it's almost over when they get to Pluto.

My solution to this was to simply remember where the player was last time and give them the option to resume the tour.   It's an obvious feature that should have been implemented a long time ago (even without thermal issues), except for the fact that it's more complicated than it looks.   The tour involves objects moving around, objects changing scale, music changes, flight paths, info text, tweens and animations, and the state of tour at stop Z depends on everything that happened before that between tour stops A through Z.   I ended up having the app fade out and automatically (and very quickly) proceed from the beginning of the tour to where the user last left off.  A number of race conditions and other issues were exposed in doing this, and those were all very interesting to troubleshoot and fix. :-)

Users also have the option to toggle monoscopic rendering (to go back to the way it was before the update) which will be more efficient with CPU usage.


Anyway, beyond that, Titans of Space for Gear VR now has parity with the recent v1.8 update for the desktop version -- updates for Pluto, Ceres, info text for many planets and moons, a "smooth movement" option, and easier to read text.

Enjoy!

Thursday, August 27, 2015

Titans of Space [Classic] released, works with Oculus Runtime 0.7

Titans of Space is over 2 years old. I've spent a lot of the spare time across 6% of my life on this thing! Yikes! I feel very fortunate that it has seen a lot of downloads across several platforms, and I remain encouraged to push ahead for stronger market penetration and add as much value as I can to it.

So, in this long journey to figure out how to leverage my passion for VR development and using it alone to put food on the table, I've decided the best course of action is to re-brand the existing Titans of Space experience as "Titans of Space [Classic]". More than just a re-name, it's got a bunch of small improvements, new Pluto and Ceres stuff, and overall polish to get it ready for consumer VR. A full list of changes can be found here or inside the program itself.

For those without a VR headset, or with kids that are too young for a VR headset, the "Monitor version" has also been completely brought up to date.

Oculus Share submission is pending approval, Oculus Store (on Gear VR) is pending approval, and I'll update the Cardboard version soon. Until it's up on Share, please feel free to download the update directly from http://titansofspacevr.com/#downloads.

Titans of Space [Classic] represents the last feature update that I make available for free before I release the full version (actual name TBD). I'm aiming for the end of the year, but we'll see how that goes. The full version will have a lot of huge new features and content. It will be available for desktop VR first, and some of that will trickle down to the Mobile Edition afterward.

Thanks!

Tuesday, March 24, 2015

"Mars Is A Real Place" has been released!

I'm happy to announce that I'm sending a new VR experience out into the wild, and this time I'm charging a small amount for it.  Despite the relatively simple screenshots and premise, I'm hopeful that the few people that take a chance on it will enjoy it.  It's definitely not for everyone, but like all my VR demos and experiences, I tend to build what I would love to see for myself.

Mars Is A Real Place is a short and musicsl slideshow of stereoscopic 3D landscapes, and it is available for three VR platforms right out of the gate:

  • Oculus Rift DK2 (via itch.io)
  • Samsung Gear VR (via Oculus Store)
  • Google Cardboard (via Google Play, might be a couple hours before it shows up)

(I just had to take a step back and reflect on how amazing it is that there are at least three VR platforms, let alone one!)

Anyway, this experience is virtually the same on all three platforms, but with extra care taken to round out the user experience on the more robust platforms.   I'm sure it goes without saying that the better your VR device, the better the user experience is ultimately going to be. On the off-chance that this sells more than a handful of copies, I'll share the results of simultaneously releasing this on multiple platforms.

If you happen to pick up the DK2 or Cardboard version and run into any problems, don't hesitate to reach out to me at support (at) drashvr (dot) com with feedback, and to get a refund for DK2 purchases. (Cardboard users can simply use the Refund button at the top of the app's store listing.)  The Gear VR one shouldn't have any issues as there's currently only one device to target. :)

This experience's official site can be found at www.MarsIsARealPlace.com.



Friday, February 27, 2015

The Narration Add-On is here! (Cardboard first, other platforms to follow)

When I first released Titans of Space in the middle of 2013 (wow... time flies), one of the top requests I started getting ever since was for a voiceover / narration of some kind.   At first I figured this would be no problem, but it's a pretty big job to get the script written, and then record the voiceover for all of it.  Not only that, but setting the right tone and covering fresh topics is a challenge.

Eventually, I connected with Michael McArdle, who is a regular member of the VR community and always has incredibly insightful things to say about everything VR.   He works within the education sector and is passionate about getting VR into schools and education in general.  It was great to meet him at Oculus Connect #1.  Months of work followed, Michael with his scriptwriting and voiceover recordings, and then integrating it into the existing experience in a way that flows naturally and adds to the core experience rather than clashing with it.   We also worked on getting subtitles together for the whole thing (English only for now).

So, I'm very proud to announce that the Narration Add-on has finally arrived, although for now it's only available here on one platform, Google Cardboard.   As soon as the Gear VR pay store opens up, this add-on will make its way over there, and I will be working on a way to bring it to the full desktop experience in the meantime.   To that end, I have launched a Steam Greenlight campaign in order to easily enable multiple add-ons, sequels, and so on on a platform that will be hopefully painless for players to use.   Also, who knows what GDC will bring re: Valve's headset.   If that turns out to be significant competition for the Oculus Rift, then I will of course bring Titans of Space and other experiences to that platform when possible.

Thank you Michael!  To anyone that happens to try the new Narration add-on, please let him know what you think on Twitter (@MikeMan444).

Titans of Space for Cardboard - Lessons Learned

Warning: long post ahead!


Well, this has been very interesting.

After a good long while of ignoring Cardboard as a legitimate platform, I finally took the time to dig into it.  I've been receiving many emails over the last year asking if there will be an Android/Dive/Cardboard version of Titans of Space, so I'm recognizing there is some degree of demand for this.

It's probably a lot easier now than it used to be to put together a Cardboard app built with Unity since there is now a sufficiently robust Cardboard SDK for Unity.  I appreciate the to-the-point simplicity it offers, which made things easy to test.  Google's developer console is a pleasure to use as well, with its professional Alpha/Beta/Production staging capabilities.  Also, Android is apparently *everywhere*, so I'm actually completely intimidated by the idea that I'm releasing an app that will potentially be seen by so many people.

I'm still not sure how I'll monetize all this VR stuff just yet.  Titans of Space has always been free and will continue to be on all platforms, but its sequels and add-ons will not be free.  However, most of those are still a ways off so I'm experimenting with some simple text advertisements / sponsorships in the loading screen and the end screen after the tour.  Nothing too major, but it's a start.

Now that Titans of Space has been ported for the Cardboard platform, it gives me great pleasure to see it featured in Google's Cardboard apps collection.  I consider this a huge win given the size of the userbase.


Here's what I learned and observed while porting Titans of Space to Cardboard:

1) Many phones used with Cardboard are quite forgiving of framerate.  In this case, I tested with a Nexus 5 phone.  It looks like an RGB display to me, so in a Cardboard-compatible headset it feels like it could be DK1 with a much narrower FOV.  Without the low-persistence display found in DK2/Gear VR, it's very blurry when quickly looking around.  However, since my framerate was varying between 30 and 60 FPS (depending on whether it was throttling clock speeds), the Nexus 5 display somewhat covers up most of the sub-60 FPS judder.  Easy breezy.  There's still a tremendous benefit to keeping a solid 60 FPS for a fluid experience, but at least it's not the end of the world when it's not.

2) Because Cardboard works with a ton of different Android devices, each with different display characteristics, it can be a challenge to account for both the black blacks of OLED displays and the dim gray backlight of other displays.  The starfield in Titans of Space can look completely different on one device versus another.  It's not bad either way, but I can imagine that this may complicate art and gameplay tuning for some apps out there.

3) The standard Google Cardboard viewer has tiny lenses and a low FOV.  For an experience like Titans of Space, this is unfortunate as so much of the experience is about looking around your environment.  It's much harder to notice things in the peripheral vision so that you know to look there.  It will be interesting to see what kind of reviews I get.   Browsing through the reviews of other apps is incredibly amusing and maddening, and I get the sense that there are many players out there that are happy to assign 1-star ratings for just about anything.  The upside is that there are many Cardboard-compatible headsets out there with larger lenses and a more comfortable faciaL interface.  Some even have straps!

4) Speaking of straps, since the standard Google Cardboard and many of its variants do not have straps, this changes things.  The player will have to hold the headset up with one hand, and if the player isn't used to holding up their arm this way, it can result in a shaky view and a tired arm for longer experiences.  The shaky view can be a little bit of an immersion breaker sometimes.   The overall player experience will vary quite drastically depending on the combination of device and headset they choose to use.

5) I'm unaware of any VR-enabled launcher out there for Cardboard, so we cannot rely on the user to be wearing the headset when the app starts.  So, it turns out that when your app starts head-tracking, it's important to immediately render a visible floor under the player and not just have an empty blackness down there.  If the player has set their phone down on their desk or lap, they won't see anything except maybe the vertical divider down the middle, and may cause some players to immediately give up thinking something is wrong with the app.

6) Like Gear VR, Cardboard VR is mobile, which means that care must be taken in orienting the player's forward direction.  Gear VR automatically reorients the view when putting the headset on and IMO this is a wonderful and unappreciated feature, and I would like Cardboard apps to do something similar.  Various Android devices means varied sensor capabilities, and of course drift is still not a completely solved problem when relying only on internal sensors.  Drift is very much an issue for seated cockpit experiences like Titans of Space, although I suspect this will be addressed in a future Cardboard SDK release.  Other than headtracking, Cardboard-compatible headsets only have one input -- the magnet switch.  If I were making an experience that was completely hands-free from start to finish, then sure, the magnet switch is a perfect way for the user to reset the view.  In this case, I need that input as a way of selecting buttons, so I took a cue from Google's Cardboard demo app, and decided to make tilting on the side result in reorienting the player's forward direction.  For headsets without straps this is super easy to do at any time.  For those with straps, I hope they have a controller or a swivel chair...

7) Without a VR launcher, you need an actual app icon now. I probably should hire a graphic artist at some point!

8) Unlike Gear VR, there isn't going to be a carefully controlled clock-speed for devices running a Cardboard app, and as a result the app's framerate can vary wildly depending on how the phone wants to throttle heavy demands on its processors.  Other than requesting the wake-lock permission to prevent the CPU from going to sleep, the best I could do is warn players in the description than they're going to need a powerful modern phone for best results.  The upside is that you can cram somewhat more complex scenes into a Cardboard, though it will heat up and run the framerate into the ground, depending on the device of course.  For short and sweet VR experiences, this free-for-all approach still makes things easier.

9) Out of the box, I didn't see an implementation of a neck model in the Cardboard SDK for Unity.  I might be blind, but I wasn't feeling my view move around with a virtual neck in-game.  I had to implement this myself by hacking the SDK a bit.  I hope Google includes this in a future SDK update as that's a critical feature in my eyes.  EDIT: I've been informed that simply having a CardboardHead as the parent of the StereoController and setting up the local position of the StereoController as the neck-to-eye offset should do the trick without having to rip into the SDK.

10) Multi-threaded rendering currently does not work with the Cardboard SDK.  I've been using Unity 4.6.1p5 if that makes any difference to someone reading this.

11) In the Gear VR version, I am making full-use of a 24-bit depth buffer.  The Cardboard SDK is hardcoded to use a 16-bit depth buffer, so I needed to change that in the SDK code.

12) Uploading an app larger than 50MB to Google Play requires splitting up the binary into two pieces.  Fortunately Unity makes this part easy.  Note that a while back, you could only download the first piece (< 50 MB) via Google Play, and your program has to download the rest from Google's servers.  I'm not 100% on this, but I think the requirement to manually download the expansion isn't necessary anymore, especially for the types of devices required to run a Cardboard app.

13) I finally opened up my old Dodocase viewer that I picked up at the Proto Awards last year, and found it to be a big improvement over the standard Google Cardboard viewer, mainly for two reasons:  The magnet switch is way easier to pull and therefore less of a strain to aim at something in VR while pulling the switch, and because it comes with a big black sticker to put where your forehead meets cardboard.   Seeing how these subtle differences had a big impact, I'm now quite curious about all the more robust headsets out there.   Note that there is a newer Dodocase viewer out now with capacitive touch for the switch!  Even so, this has nothing on Gear VR's superior touchpad and back button.

14) Headtracking latency is still pretty terrible on most devices.  However, I will admit that it's not as bad as I thought it would be on some of the newest phones out there.  It think it can be acceptable, especially for someone new to the idea of VR.

15) No Async Timewarp on Cardboard means that head-tracking loading screens are once again uncomfortable.  I needed to update my app to delay the start of VR mode until after the loading screen.

16) Access to a pay store is certainly a bonus!  See my next post for my first attempt at monetization.


So, working on a Cardboard port of a Gear VR title definitely highlights how different these two mobile VR platforms are.  I will admit that with the standard viewer and its low FOV, Cardboard can technically only barely be called VR, but now that there are a growing number of viewers with straps and larger lenses and FOV, I'm starting to warm up to calling it the "rowdy little brother of mobile VR", or something.

In any case, they both clearly have very different strengths, and their characteristics are evolving very rapidly.   Gear VR as a platform seems to me to be a fine piece of engineering and thoughtfulness, and is setting the bar and leading by example.   Cardboard as a platform feels like a raw and rapid expansion into an empty segment of the market, creating opportunity along the way.

Hope these observations were helpful, although it's probably all old news for the many Cardboard devs already out there.  This is basically my first time publishing something to an established mobile app store with millions of users.

Wish me luck!