Oculus Rift DK2

edited 2015 Aug 23 in General
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.
  • 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.
«1

Comments

  • Does point two mean 'standard' crouching will be added to Dday?
  • Vermil wrote:
    Does point two mean 'standard' crouching will be added to Dday?
    At this stage I'm not planning actual new gameplay features such as crouching. It seems feasible, though, to use the Rift also for crouching (and likely a nice bit of calisthenics, too, if you use it a lot :) ).

    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.
  • Yesterday I rewrote Doomsday's Oculus interface code. With the new higher-level LibOVR API, it turned out quite a bit nicer since the SDK now handles all the details of the sensor fusion and even the rendering of the barrel distortion. However, I'm still at the stage where all I'm getting is a blank screen — next step is to start debugging; there are plenty of small details that could be wrong.

    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.
  • Looking foward to trying it out! really apreciate all the hard work that goes into this.
  • After a full day of tinkering, examining the LibOVR sources, and probing OpenGL state in a debugger, I found the reason for the blank screen. It was another case of "don't enable mipmapping if you don't have any mipmap levels." Sure enough, I was setting the correct mipmapping (none) however no one told this to the underlying OpenGL texture object.

    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.
  • The big issues have now been solved. I had a particularly tricky time applying the tracked head position, because it needs to be relative to the player's "body" angle instead of the view angle. However, we're turning the player mobj (i.e., body angle) along with the head direction for aiming, so this had to be canceled out when moving the head position.

    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.
  • skyjake wrote:
    On the plus side, though, peeking around corners is working nicely.
    LOL, the introduction of stealth into our favorite id games port? An optional duck feature could lead to a new game play mode. I think a vr deathmatch in Hexen would be awesome since it has some pretty large, open maps.
    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.
  • Sounds awesome!

    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!
  • what if the HUD was lowered so when in VR you only see it when you look down?
  • This is one of the reasons that I've personally been very sceptical about how VR will actually work in practice, when implemented as an optional feature in a game. Massively changing the game mechanics to suit VR is IMO an admission that VR doesn't quite work out how they hoped it would. The last thing I want is for every game to end up playing the same in terms of player mechanics simply because they have to support VR.
  • "&#91 wrote: »
    Elchtest2"]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.)
    There isn't one yet, but I agree it would be useful to slow down the player when using VR. I will most likely add an option for that in the future.
    You mentioned the PS3 controller. Does it also work with the XBox 360 controller?
    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...
    RABID wrote:
    what if the HUD was lowered so when in VR you only see it when you look down?
    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...)
    DaniJ wrote:
    Massively changing the game mechanics to suit VR is IMO an admission that VR doesn't quite work out how they hoped it would.
    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.
  • I wasn't thinking of DOOM or 2.5D games specifically. Its a general problem that affects all games. Retrofitting VR to an old game like DOOM necessarily means changing the game mechanics in such a way that the VR user gets a different experience.

    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.
  • For HUD I've seen something cool in Doom 3. The remaning ammo is placed on the 3D weapon. That feels very naturally in VR.
    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.
  • Personally, I don't think I would change game mechanics that much to suit VR. Don't get me wrong, I am one of the greatest fans of getting VR into these games. I think maybe I was the first to bring up OR support but it doesn't matter.
    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.
  • RABID wrote:
    what if the HUD was lowered so when in VR you only see it when you look down?
    I second this idea- except instead of forcing the person to look down maybe allow the User to set the position of where he/she would like the floating HUD to be (like having the HUD float above them and they just have to look up to see it). MineCrift, the Minecraft + VR mod, implemented this very well. < See eVRydayVR's video on it for example: http://youtu.be/iJPK_ankcJE?list=UUTlgIRnl3viQb1zCJqFJwqw >
  • For anyone looking to use an Xbox360 controller xpadder let's you mapmap any keystroke to any bottom on the controller. It's great for games without native gamepad support
  • It shouldn't be necessary to use utilities like Xpadder with Doomsday as there is native support for joysticks and gamepads built in. I recall it worked OK after a lot of manual config tweaking the last time I tested it. I've not tested this since the SDL2 upgrade though. Its definitely due for a rewrite in any case.
  • "&#91 wrote: »
    Elchtest2"]For HUD I've seen something cool in Doom 3. The remaning ammo is placed on the 3D weapon. That feels very naturally in VR. [...]
    Would be cool to have weapon models for (classic) Doom with that.
    I agree, but that requires specially crafted HUD weapon models. The current ones are all over the place when it comes to their scale (too large, usually); I'm not using them at all for the time being.
    I don't remember if in Doom it is on or off, but head bobbing should be off in VR to avoid motion sickness.
    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.
    sh0ofly wrote:
    except instead of forcing the person to look down maybe allow the User to set the position of where he/she would like the floating HUD to be (like having the HUD float above them and they just have to look up to see it).
    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.
  • skyjake wrote:

    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.
    ive mentioned the movement in another thread, how after you release the movement key your character continues to slightly slide foward. Changing that (not FIXING that, because its how doom is supposed to work ;))would be a great improvement for VR.
  • I think any change to gameplay, even just for VR, has to be carefully considered.

    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.
  • Vermil wrote:
    I think any change to gameplay, even just for VR, has to be carefully considered.

    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.
    don't forget that original doom didn't have the ability to look up and down or jump. Now I'd never play without it. What if any VR related options were on a seperate menu and could be turned on or off allowing better custom controls to VR players?
  • If it is not so already then for VR mode triple buffering should be disabled (latency) and vsync turned on.
  • Welp, today's build was not too successful; will fix and run again tomorrow... The Ubuntu 12.04 builds will be replaced with 14.04, though.

    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.
  • edited 2014 Aug 26
    skyjake wrote:
    Welp, today's build was not too successful; will fix and run again tomorrow...
    No rush! It's amazing to even imagine a classic game like Doom being run on the rift. :) But I had two other ideas for the HUD that will increase immersion (thus reducing sickness). They don't need to be implemented right away, but I feel these fixes would vastly improve the experience 10 fold!

    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 ).
  • sh0ofly wrote:
    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.
    Totally agree. I will likely end up implementing depth checks that move the HUD closer when facing a wall/obstacle; however this is not a trivial thing to implement so it'll take a few builds before I'll get around to it.
  • Progress update: viewtopic.php?f=7&t=1875#p12373

    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...
  • Could you please give a quick update on the latest DK2 progress. What works, what doesn't? What will work soon?

    Thanks!
  • Just tried build 1385 with DK2, SDK 0.4.2, firmware 2.12. Tried Ultimate Doom. Looks like it didnt detect the HMD. No 3D&VR mode settings anywhere. Also the window did not open in the extended mode monitor (=> dk2 screen).
  • So far I've been working with LibOVR 0.4.2 (firmware 2.12) on Mac and Windows. This information is up to date: How to use the Oculus Rift

    Neither platform is working as well as I'd like:
    • On Windows, I've only managed to get the Extended Desktop mode working. When using Direct mode, it just renders to the main window and the HMD remains turned off, although everything is detected correctly and no errors occur. This could be because we're using OpenGL (the Oculus SDK utilities use Direct3D and work flawlessly), or because my hardware is not fully suitable for VR rendering (Intel Iris on a MacBook Pro). Performance is a bit sluggish.
    • On the Mac, LibOVR only supports the Extended Desktop mode. Everything works fairly nicely in duplicate monitor mode, although from the looks of it the HMD is not in Low Persistency mode (lots of ghosting). Don't exactly know why that happens; the demo scene in OculusConfigUtil does work correctly.

    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.
  • just played it with the DK2 and it looks awesome!! only issues are it doesn't save settings after i exit a game (i have to go back and reset it to use the rift when i launch a new game) and the cross-hair doesn't move, it just stays stuck on the screen regardless of where aiming. this is the most fun ive had with DOOM since it first came out. thanks for all your work on this :D
Sign In or Register to comment.