Wednesday, April 12, 2017

Announcing 'Titans of Space PLUS' for Gear VR

I wasn't planning to go back to Mobile VR so soon!

Developing for mobile VR in general is full of challenges, and after spending a lot of time tweaking and optimizing the original Titans of Space on Gear VR, I yearned to be able to creatively pile on all the features and content I wanted.  Developing for PC VR once again was a breath of fresh air - I liked the quick prototyping, not having to worry so much about draw calls and thermal limits. On top of this, the retail headsets finally came out and they have been a joy to work with.

So, nearly a year ago I forked the code and began early access for Titans of Space 2.0 in order to achieve what I've always wanted to do with the project.  I sliced apart the project thinking I'd never take it back to mobile VR.   But, nearly a year later, I'm still not where I'd like to be yet and looking back, a lot of my time has been spent retooling, staying on top of SDK/Unity updates, and refining the user experience side of things.  I also have a busy family life and contract work to stay funded, so all of that time spent adds up.   And then, a shift!

Several factors have gradually changed my mind about mobile VR.  The userbase was growing and growing.  Oculus's submission and build channel processes have matured by leaps and bounds.  I picked up more experience with optimization.  The new sexy Gear VR orientation controller.  Both direct and indirect competition on PC that have bigger budgets and are able to move faster than I can. With PC VR's relatively small userbase, I'm competing for a player's time.  Time they are probably spending to play great games like Robo Recall or Elite Dangerous, for example. Titans of Space is not a game, so although it has found many happy customers in PC VR, it's a bit strange trying to compete against all that time spent in games.

So on a whim, I spent a week trying out the Titans of Space 2.0 project on Gear VR, and the whole process just went so well that I decided to jump back in with another 4 or 5 months of work.  The result is Titans of Space PLUS.  For many reasons, this is not an update to the original Titans of Space app.   And not everything from 2.0 can go back to mobile VR, but I managed to squeeze in far more than I expected this time around. Along the way I improved and streamlined a lot, added useful new features, squashed all the little things that always bugged me, did playtesting through friends and the FishbowlVR service, properly integrated voiceover, professional translations, a little facelift on some things, and a massive facelift on other things.  I even dared to change things that have been in there since the early prototype.  In many ways, PLUS on mobile is now a better experience than 2.0 on PC!   

Titans of Space 2.0 will continue to be the premium experience however.  Almost all of this work on PLUS will go straight back into 2.0 on PC, and then I am cutting a couple of planned features that I never talked about that I now suspect won't truly add value for the time and effort it will take to implement, and will focus on the finishing the real meat of it, which I will reveal later this year.  I'm very excited for that.

In closing, I wrote up a list of frequently asked questions on the app's site to help those that wonder things like:

What's the difference between PLUS and the original?
Why does it have a price tag?
Why buy this app instead of the other apps in this category?
If I have 2.0 can I get a key for PLUS?
If I bought the narration on Cardboard, can I get a key for PLUS?

And so on.

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.


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

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.


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
  • 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

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).