A Tale of Two Toolkits


We are making great progress towards our next version of PlanetVRium.  However, it’s been a long and bumpy road.

PlanetVRium was originally started back in November of 2019.  At that time, Unity 2018.x had their Long Term Support (LTS) version available, but not yet 2019.x LTS which was still under development.  And VR was still relatively new and niche.  Oculus Quest(TM), which eventually took over the VR headset market, had not yet been invented.  In 2019, the Virtual Reality ToolKit (VRTK 3.0) was the de facto toolkit for creating VR applications in Unity.  During the subsequent two years, until April 2022 when the first version of PlanetVRium was released, I had updated to newer versions of Unity 2019.x LTS, but not 2020.x, or 2021.x versions.  Unity had decided in 2020.x to completely redo the world of VR programming, and introduced Unity XR and XR Interactive (XRI) Toolkit which was still actively changing.  And there weren’t any good examples for using XR/XRI on the web or YouTube or even books.  But working with XR/XRI is completely different than working with VRTK.

As mentioned, Oculus Quest, and then later Quest 2, was released after PlanetVRium was started, but before it was released.  VRTK3.0 didn’t support these newer devices.  And in the meantime, VRTK4.0 was under development, but that seemed like a dead-end path, with XR/XRI coming directly from Unity.  And in any case, working with VRTK4.0 was still quite different from 3.0.  The code would have to change, regardless, I just needed to choose my path.

So during summer of 2022, I had refactored my code to try to isolate the VRTK3.0-specific code fragments into as few places as possible.  I got it down to two C# classes which needed VRTK3.0, and the remainder of my code was independent of any specific VR technology.  I felt that this was a “huge” achievement, and I internally called it Revision 0.6.  There weren’t any new features, only the same as what was available in the first revision, but the code had been rearranged so that I could make the jump into XR/XRI (hopefully) easier.

Also, I was able to release a new Revision 0.7 on SteamVR(TM) in August.  This new version had a few new Visual Experiences, plus some new features like Meteor Mode and 3D Light Year Zoom, as well as several bug fixes.  It is still the latest version, with nothing (yet) released since August 2022.  And now, here it is end of February as I write this note, with no externally-visible progress.

But, this refactoring allowed me to have two branches in my code: the VRTK3.0 with Unity 2019.x version, and another branch which was Unity 2021.x LTS with XR/XRI.  Since 95% of the code was identical between these two branches, I could focus on porting that remaining 5% to XR/XRI.  However, I also wanted to create additional content, so that I could release a new SteamVR version for my existing customers and to attract new customers.  So I was splitting my time.  Some days I would work on porting to XR/XRI, and other days working on new content.  But I was struggling with XR/XRI.  It wasn’t nearly as “fun” as the creation of new content.  Just “boring” stuff like trying to figure out how to get the buttons on the controllers to work with my existing code.

But recently, in the past 2 months or so, I finally had a breakthrough with XR/XRI!  I now have PlanetVRium mostly-working, but there are still some really bizarre bugs.  Bugs that don’t exist on the SteamVR version (Windows based) but exist on the Oculus Quest version (Android).  And these bugs are in the “95%” which is (supposed to be) device-agnostic.  So that is a bit frustrating, since debugging on Quest is really a pain in the butt compared to debugging with Unity and Windows-based VR apps.  It’s also a much slower development cycle, every simple code change needing to be compiled, and then the resulting .APK file uploaded to the headset, all of which takes 2 minutes or more.  Compared to Windows-based VR where I just hit the “Play” button in Unity and see the screen in my headset within 5 seconds.

Anyway … I wanted to rant and rave a bit about this frustrating journey and let you know WHY there haven’t been any new features released since August.  I’m so close to having something ready to release on Quest.  And I hope to have a new (3rd) version of PlanetVRium available on Steam on or before April 5th, which is our 1-year anniversary of the first release.  And I intend to be able to submit the same content to Oculus for their approval, thus opening this new hardware market for folks that don’t have a PC capable of running Windows-based VR.

If you ever plan to make a game/app yourself, note that it is REALLY hard.  There is so much to do, not only writing the code for your app, which has tribulations like mentioned above.  But also all the other stuff that goes into making a product: artwork, marketing, websites (sorry this website is a bit of a mess, but I’m trying), business/tax stuff, etc.  And once you get the first release out, there is ongoing maintenance, creating new features, etc. to be done.  I knew it would be hard, but it turned out to be even harder than I had imagined.  But, don’t let my pessimism in this article detract you – please see your vision through to completion.  It’s a lot of work, but very rewarding to create something for others to enjoy!  I’ve easily spent more than 1,000 hours working on PlanetVRium, but it was/is worth it.