Tuesday, November 11, 2014

Titans of Space update, plus tough Gear VR decisions

Titans of Space has been updated to v1.70 for the Oculus Rift DK2.  Changelog and download links can be found here.   There are a lot of changes in this update, the highlights of which are: improved performance, a smoother experience, some planets and stars getting another facelift, support for more languages, a new zoom mechanic, a few new options, etc.   It is built against Oculus' new Unity plugin 0.4.3.1, which is working extremely well, and requires Oculus Runtime 0.4.2 or newer.

Along the way, most of these updates have also made their way into the Gear VR version.   I am still working out of the same Unity project for both platforms, and I am constantly switching back and forth so this helps a lot with ensuring that everything that is implemented for one platform ends up working for both -- unless it is too expensive a feature, in which case it's just desktop-only for now.

VR demands a smooth, high framerate experience, and for a mobile device like the Gear VR, this means that when starting out with a desktop experience and cutting it down to work for mobile, sacrifices have to be made.   I've been careful to sacrifice things that players probably won't notice, but in the pursuit of player comfort and very long play times, I made the decision to sacrifice something else -- a feature I thought I would never ever cut.

When I announced that Titans of Space was ported to Gear VR, it was running just fine, barely cruising above 60 FPS, but play times were short due to thermal constraints.  In fact, I wasn't sure how many players were going to be able to get through the whole tour in one sitting, especially the players that were most interested in learning about space, who would take their time.  Those are the very players that would be punished by short play times as it would abruptly alert them that their device is overheating and to take a break from VR for a while.   I was working on a fancy system to help these players pick up where they left off, but was a risky feature that wasn't always working as intended since the tour consists of a lot of moving parts, and starting the tour at in the middle was a tough thing to QA.

To combat the short play times, I was looking at deeper optimizations, and considering cutting more and more important features, and the farther this process went, the more depressing it was to see the original experience turned into a shell of its former self.

So I axed stereoscopic 3D.

"Blasphemy!" I thought to myself.  "You call yourself a VR developer?"

And yet, I think it will turn out to be the best move I've made.   Suddenly I had a bunch of breathing room to put critical features back into the app.  Suddenly I could turn on chromatic aberration correction!  Suddenly, the stars all came into sharp focus and I realized that the Gear VR's optics are extraordinary -- text is completely clear all the way to the sides.  Suddenly, the app could be played for a very very long time (I still don't know what the limit is, if any).   Suddenly, I was happy about the overall experience once again.   The funny thing is, some players that have tested this didn't even notice there was no stereo 3D.   It's actually quite playable, and comfortable.   It probably won't trigger any existential crises when players look down at their own body in VR, but it should still be an enjoyable & educational experience all the same.   This is only a temporary measure, after all.

Of course, not all experiences are going to need to do this.  I started with an existing experience that targeted desktop VR, and with a project like that, it's a struggle to cut it down to size for mobile.   For those building new experiences from the ground up with mobile in mind, I expect to see them playing great in stereoscopic 3D.

I'm really looking forward to seeing if the Gear VR comes to faster devices in the future.  It's amazing that just when I thought we have topped out with mobile tech -- the CPU speeds, the graphics power, the resolution -- it was all a silly race with no significant purpose except to have something to market, until now.  Now there are clearly some very real benefits to every new step forward in mobile tech, like being able to flip the switch to get stereo 3D back. :)

UPDATE (Nov 20th): After receiving some encouragement from other developers, and poking around a bit, I'm happy to report that the Gear VR version will have a 3D Cockpit option right out of the gate. It makes reading text in the cockpit more pleasant, and of course it's always nice to see the volume of your own body. It currently runs right on the edge of 60 FPS so I'm keeping it an option for now until I can be sure that it gives every player a totally smooth experience.   Over time, I'll be adding more and more to the 3D rendering until the whole thing is full stereo 3D again.