Jul
30
2015
What a strange title for an article you might think. Well, let me elaborate: Ever since I first heard about Valve getting involved more seriously in VR and the first reports on demos with the HTC Vive, I knew that this was going to the real deal for the virtually real. Room-scale VR, in other words Virtual Reality where you can walk around freely in a room, is simply a completely different kind of experience compared to what we know from "just looking around" (Oculus DK1, Gear VR, Google Cardboard and friends) or "just looking around with a little bit of positional tracking" (Oculus DK2, Crescent Bay, Consumer Version - even though that does get close to room-scale). Fast, precise tracking over a large area is extremely important to be able to fully immerse in VR - and part of that is that tracking does not only cover your head but also your hands. So the controllers that come with the HTC Vive are really important for the overall experience. We're not just a head - we're a head and hands (and a few more things, of course, but head and hands are the most important).
So, I knew this was what I wanted to develop for primarily right from the start, and ironically, when Valve put up their application for the HTC Vive Developer Kit (DevKit is obviously an abbreviation for just that), I was in an airplane going to Seattle, where I spent a few days in Bellevue - not least to get in contact with Valve ... and at least I got a demo which totally validated what I already thought about the HTC Vive: It totally rocks.
But still, I signed up pretty much as early as possible. Like, many thousands of other developers. Long story short: Three months later, I still need to develop using an Oculus DK2 with Razor Hydra controllers because none of the DevKits that have so far been sent out found its way to my game studio. Which is really unfortunate because I have up to three full rooms dedicated to VR (see my office floor plan? I looked for exactly this kind of office as soon as I knew about room-scale VR ... because ... multiplayer!)
So when Julie Heyde, who also organized the awesome Shayla Games VR Jam, offered that I could jam with her DevKit in their office in Copenhagen, the only reason I hesitated for a moment was because I wasn't sure if I could conveniently transport my development machine (an Asus ROG G20, which is compact ... but ... not really compact enough to call it "convenient"). I accepted the inconvenience and booked the flight.
So now, after a sleepless night (still had to finish some stuff so I could take it with me ... which took ... well, the whole night), I'm here, sitting in a really nice office in Copenhagen with borrowed monitor, keyboard and mouse, my own awesome dev-pc (which really kind of upset the security people at the airport) ... and:
The uber-awesome HTC Vive Development Kit that every sane VR developer really really wants to have these days (in case you haven't been following the news: they're giving those away for free to select developers ... the "free"-part potentially also explaining why everyone and their dogs have signed up for those dev kits).
It took a few hours to actually get the Vive DevKit working. In fact, that had been my other concern aside of transporting that thing because there's quite some reports of lucky people that did get the DevKit but actually didn't get it working. In my case the issue apparently was that there were still some old drivers for USB-stuff that may or may not have once been connected to that computer. After removing this with USBDeview (and kind of taking a chance because I didn't know what was gonna happen in case I uninstalled some USB devices I really needed ... like mouse and keyboard), it finally worked.
And - kind of surprising after sending quite a few builds to people with Vive DevKits and always getting the unpleasant feedback "it doesn't work" - Holodance immediately worked with the HTC Vive. Well, at least kind of: I could use the headset, the controllers were there - but the game didn't get into the state where you could actually start playing.
Shame on me: I called a co-routine directly without encapsulating the call in StartCoroutine(...) ... I guess that's something only Unity developers will understand but for everyone else let me say: It's a rather dumb mistake that once you've made it will result in stuff you want to happen not happening ... mysteriously (but I did everything right ... right!?)