Oculus Rift DK2
Well, the DK2 is sitting on my desk now, so I thought it would be good to have a thread dedicated to it. Everything is ready for me to start revising Doomsday's Rift support.
Here are my first impressions of the DK2 compared to DK1.
I should have some time to start working on this later this week. I'll post here as I make progress.
Here are my first impressions of the DK2 compared to DK1.
- The display is definitely better. The resolution is noticeably higher, although by no means perfect. Colors are more vivid and there is less ghosting when looking around.
- Head position tracking makes a huge difference, especially when one is sitting down. I can see this having the most value in small/closed VR environments, like when sitting in a vehicle. The position tracking cone is also quite long (~2m), so that one can get up and walk around a little to examine the surroundings. There aren't (m)any fine details in Doom maps to take a closer look at, but it should be doable to use this in Doom for ducking incoming projectiles.
- The new SDK has a fully redesigned API, so I'll be basically rewriting all the code that interfaces with the Rift. The good part is that the SDK now takes care of the barrel distortion effect, so that should make things simpler for us.
I should have some time to start working on this later this week. I'll post here as I make progress.
Comments
The whole ducking thing (sidestep or vertical) will have to be tested/tuned with actual gameplay, though, as the bounding boxes for both the player and the projectiles may not currently be small enough so that moving within the Rift tracking area is sufficient. It is important that movements in the virtual environment are 1:1 proportional to the real world.
I'm going to make the VR mode switch a bit more automatic, so that if one launches Doomsday with the Rift connected, it automatically uses the correct rendering mode. Likewise, without the Rift it'll automatically revert to normal rendering.
Having solved this hurdle, I now have the Doomsday window contents again drawn properly distorted for the Rift lenses. Next I have to re-tweak all the UI/player sizing factors for the DK2 display.
I am revising the composited UI (which includes the game HUD) so that it appears as a large screen in front of the player, in 3D space, rather than something attached to the lenses. This way the effective display area is bigger as you can turn and move your head to look at the UI. Even with the DK2's better resolution, small details like fonts are still so pixel-y that it helps to be able to use a larger area for the UI.
I then proceeded to plug in (well, connect over Bluetooth) my PS3 controller for gameplay testing. A gamepad is probably the best controller for VR at the present time, particularly as movement and turning can be done at great accuracy using the thumb sticks. However, when it comes to the projectile ducking thing, turns out the scale of the Doom world in relation to the player is such that simply by moving in the tracking cone of the Rift you won't be able to avoid getting hit. The projectiles are simply too large. On the plus side, though, peeking around corners is working nicely.
Have you connected with any other OR owners to test multiplayer vr? I'm still waiting for the consumer version myself, but getting impatient. If my finances were better I'd go ahead and get the dk2 and a consumer one later, but alas it's not possible for me.
I remember from talks about TF2 in VR, that the very high player speed seems to cause some problems as it doesn't feel so nice to run at 30 mph. Doom guy is also pretty fast. Is there or will there be an option to adjust his walking speed? (Some levels might not work anymore if you are too slow.)
You mentioned the PS3 controller. Does it also work with the XBox 360 controller?
Thanks!
It depends on whether SDL2 supports it (I would imagine it does — I recall at least DaniJ using an XBox controller in the past). I don't have an XBox controller so I haven't tried it myself...
That's essentially how it works. The status bar / ammo count is at the lower edge of your vision when looking forward, and when you look down you see it. (Of course there are countless other ways to set this up also...)
The thing is, VR is by nature so different compared to Doom 2.5D gaming that changing the game mechanics is virtually required. The best you can do is reinterpret the original game experience inside the new virtual space, extending it according to your best judgement. But it should be understood that the end result will be by necessity quite different from the original feel of the game.
However when designing a new game with the goal of supporting VR there will be considerable pressure to normalize the game experience. If one configures the play mechanics so that they feel correct for VR this inherently means normalizing them with regard to things like movement speed, etc.
Screenshot: http://www.abload.de/img/doom3bfg2012-10-1711-ktjt6.png
Would be cool to have weapon models for (classic) Doom with that.
Doom guy speed: Great! Thanks!
Xbox 360 contoller: I will test it with your DK2 release.
I don't remember if in Doom it is on or off, but head bobbing should be off in VR to avoid motion sickness.
The motion sickness due to speed should be looked at as a side affect of being a super hero. I imagine that boots of speed will cause problems but, that's part of the immersion if you think about it. Having a certain power has it's drawbacks, the hero must learn over time what his limits are and use certain powers sparingly. Not sure about the bobbing as a factor seeing I don't have an DK2 or even a 1. These things already have variables that can be adjusted via cvars. In the end, it's all in how you look at things, you want total immersion? You have to realize that there are limits, period. All heroes go thru this.
Yeah the first time I tried the Rift with head bobbing enabled, it was really quite harsh! Wouldn't want to experience that for any lengthy periods of time. Doomsday's defaults for the Rift have a tiny bit of bobbing for flavor, so it still feels okay but doesn't lose the Doom style.
Thanks for the video. After spending some time with the current Doomsday VR HUD, I agree it could be somewhat more like in that video. I'll make some adjustments. Eventually this will be configurable with cvars.
All my latest DK2 work will be available in Monday's build (assuming it's successful). I'm still continuing work on it, though, so comments and improvement ideas will be appreciated.
I'm thinking of the baggage ZDoom now has to carry because it's creators played with the gameplay at the beginning. Ideally, VR should be adapted as well as possible to the Doom engines existing control features (i.e like looking around with the Oculus Rift can be linked to many Doom engine games ability to look up/down), rather than adapting Doom to VR (i.e leaning around corners may be a novel new feature in DK2, but...).
I agree with DaniJ basically.
EDIT: On Windows, the situation is a bit more complicated, actually. Since we are using Visual Studio Express, the LibOVR included in the Oculus SDK has a missing dependency (Microsoft's ATL). For the time being, we would have to recompile LibOVR with a different version of ATL that can be downloaded separately. It's a bit of a hassle. However, it seems the ATL dependency is pretty trivial; I am optimistic a future update to the Oculus SDK will not have this dependency, allowing it work with the Express edition of VS out of the box.
Anyway, it'll take some time to sort this out.
I was watching AlongCameJosh's video on Doom with the DK1 and I noticed the HUD is attached strictly to his gun/head. (http://youtu.be/jth16CxOh7I?t=1m10s). Basically I feel that the gun sprite can remain stuck to the players view still (if you're keeping aim head to fire controls), but the information on the HUD should be attached to the body and floating in the air above, below, or just generally somewhere the player can manually look when they need to check. Not to have to reference Minecrift again, but they also had an option to either attach the camera to the players head (like seen in the video above) or attach the camera to the front of the player. I found it much more immersive when the HUD was an actual presence in the world instead of a board stuck below your vision you couldn't clearly focus on.
I've tried playing TF2 with DK2 support and it's very disorienting because of the HUD looks like it's far away but when a player, wall, or whatever comes close to you; your mind cannot compute the depth differences. The key for a successful HUD is having physical presence in the game (it exists!) like if the HUD looks 5 feet in front of you and a player is 3 feet in front of you, the player should overlap the HUD in a 3D space. Same goes for a wall, the HUD is 5 feet and the wall is literally inches from your face: the HUD either needs to physically interact and come closer OR (the more easier method) just clip through the wall and cannot be seen until the player moves away.
So basically proper depth perception of the HUD (realistic in environment) and a HUD that isn't always attached to your FOV. The Oculus Rift itself is easier to focus in the middle so it encourages players to look around. Sadly, you cannot just look down with your eye balls because it looks... blurry (those who have a rift know what I'm talking about :P ).
I'm hoping the next Windows build will work better. However, it seems the UI scaling is not working quite right on Windows (too squished vertically). I'll keep tweaking things...
Thanks!
Neither platform is working as well as I'd like:
These issues could be due to some weird incompatibility that LibOVR has with Doomsday's graphics code: Doomsday's OpenGL context is managed by Qt and in the version of Qt we're using, the OpenGL code is obsolete (compatibility profile only, etc.). Fortunately the next release of Qt (5.4) contains updated OpenGL context management, so it might help us out.
I'm letting this stay as is for now, as I don't have any more tricks up my sleeve to try and get this working any better. Anyone willing to hack the code themselves is of course welcome to do so, if they happen to have better hardware than me for the job. When Qt 5.4 is out, I'll update Doomsday's OpenGL context code and we'll see what happens.