cancel
Showing results for 
Search instead for 
Did you mean: 

Morrowrift - Morrowind VR (CV1/1.3 alpha! v. 3.0.2)

superllama
Protege
6/6/16 - I finally rewrote the OP... editing this literally gave me a migraine but it's finally cleaned up! If you want to look at the old one for some reason, I archived it here pastebin.com/VDfZgTvB
*ahem* anyway.

DISCLAIMER
- Tested with Disk (GOTY) and Steam copies-- should theoretically work with other versions like the GOG version but this is untested (if someone can confirm that it works I'll remove this disclaimer)

WHAT THIS IS
This is a program that hooks into Morrowind + MGE 3.8.0 and, with certain settings disabled, adds fully playable (except character creation) support for the Oculus Rift.
This is different from configurations for vireio and vorpx because it actually decouples the view from the menu and draws the menu as a 3D projection, meaning you can look around separately from where you're aiming and lean forward to zoom in on game text, and it automatically levels your view pitch so you can play it standing up without getting dizzy.
It's written from scratch in C, so there are no dependencies other than Morrowind + MGE 3.8.0 and the Oculus Runtimes.
Here's a badly recorded gameplay video showing off the features (and bugs) in the already-out-of-date version 3.0 (one of the bugs in the video is already fixed!)
https://www.youtube.com/watch?v=rIMBYREr9yg
(NOTE: if somebody with a decent GPU and recording program wants to take a video of their game window running the latest version of Morrowrift, I'll put it here-- right now all my videos are laggy and ugly because my GPU is old and I don't know how to use OBS)

WHY 3.x?
You might be wondering how this is version 3 when it's so basic... short answer: this one is (theoretically) way more stable and optimized than before due to it using an entirely different structure and coding scheme. Long answer: the first one was DK1 only and was a direct fork of MGE, meaning you had to actually replace MGE with my DLL. Version 2 added DK2 support, and was an extra layer on top of MGE that worked the same way-- that is, by pretending to be DirectX. This version is a standalone program that injects a DLL directly into Morrowind much like VorpX or Vireio, except this program is specifically made for Morrowind/MGE and doesn't have any other dependencies.

WHY ALPHA? (BUGS)
There are still a multitude of bugs present in this version, some of which were even fixed in an older version, but as I've abstracted the code more and more in an attempt to make my edits more portable to other games, certain things got harder to fix. Here's a list of all known bugs that I can think of right now:

  • Overlay ZOrder Bug - Any game overlays (or at least steam) come up behind the main menu or HUD. If you're playing with a steam controller and you can't move the mouse on the main menu, try pressing Shift+Tab to see if you accidentally invisibly opened the steam overlay. Luckily it's completely usable in-game since the menu is transparent there.
  • Native Aspect Loss - The game is currently forced into a Rift-shaped aspect ratio, which applies to in-game menus too. I'd like it to obey the game's starting aspect ratio when it comes to drawing in-game menus eventually but that might not be possible if I want the mirror window to show both viewports correctly.
  • Race Selection Bug - The race selection menu is effectively unusable-- I recommend creating your character outside of VR mode and then running Morrowrift afterward and loading a save.
  • NPC Shadow Bug - You have to set Real-Time Shadows to None in-game or else NPC's will flicker like a banned pokemon episode if you're not staring straight at them. I think they use their own clipping planes and I'll have to locate those to transform them.
  • Weapon Clipping - Weapon/hand models have messed up clipping. Probably a similar cause as above.
  • Water Clipping - Water sometimes disappears when you're not aiming at it, and also looks pretty terrible with reflections and shaders turned off which is still required for the hack to work. Also, if you have Pixel Shaders turned on, water reflections don't look right and sometimes draws twice with incorrect headtracking.
  • Sky Movement - Positional headtracking affects clouds and stuff in the sky, which isn't really that big of a deal but looks stupid and can be a bit disorienting if you try to breakdance ingame (or anything else requiring a lot of positional movement). Also, the sun is rotated based on player aim instead of camera position.
  • Loading Freeze - Since the game renders the progress bar during frozen loading screens, the background freezes but still moves with your head which feels really weird. I honestly have no idea how to fix this.
  • Tracking Asymptotes - If you're looking straight up or down, the headtracking gets pretty weird and overdoes roll. This is because of some really old code I wrote back when I didn't understand quaternions, I'll fix it eventually.
  • Elusive Crosshair - The in-game crosshair is hard to see on most backgrounds, and since headtracking is decoupled from the menu it's easy to lose it. In the future I'll probably add a custom crosshair that renders on top of it and is easier to see.
  • Annoying Menu Placement - Not exactly a bug but a side effect of view auto-levelling still transforming the menu so the crosshair lines up correctly: if you're trying to loot something on the ground the menu will come up down there, which is a pain to read or use and also suffers from the trackign asymptote bug. In the future I'll probably fix this by leaving the game menu level and only transforming the aforementioned extra crosshair and weapon model based on in-game aim. I'm also planning on implementing a system eventually where recentering the view actually moves the crosshair to where you're looking, instead of the other way around, which will make it easier to find it.

Even aside from all that, I'm not 100% sure how well this will run on varying systems, so until a few people test it and confirm that it works, it'll be an alpha. Once enough people are able to run it (which may entail some bugfixing) and I improve the launcher a bit, I'll call it a Beta again.

DOWNLOAD
You can download 3.0.2 Here-- Google was yelling at me for uploading an EXE or something so I had to encrypt it so it wouldn't try to scan it. The password is simply "uh" because that was my reaction to Google taking my first upload down. (Just ask this scientician)

If you have a DK2 and you'd rather run the old unstable 0.8 version for some reason, you can still get it Here. There are instructions for using it somewhere in this old archived post.

SETUP
I recommend starting with vanilla morrowind (goty is fine) since I don't know how different mods (especially MGE and MWSE mods) will affect this. Once you've got it working you can start adding things in and making sure they don't break it.
The first thing you'll need to do is install and set up MGE 3.8.0.
Eventually I want to try to add support for MGE XE and some of the more popular shader mods, but that's a long way off.
Make sure your game has this message in the top left corner before proceeding.
If you're running the Steam copy of the game you'll need to set Morrowind.exe, Morrowind Launcher.exe, and MGEgui.exe to all run as Administrator before this will work.
Next, since this version is still a bit finicky, you have to make sure you run it with the right settings or it will probably just sit there and not draw anything, or render everything totally wrong. Unless you want your game to look that way (or like nothing), you'll need to disable the following MGE features in MGEgui:

  • Distant Land
  • Anti-Aliasing
  • Probably any mods adding shaders

I'm working on getting these features supported but it's very very difficult to do unless I actually modify MGE, and I'm trying to avoid doing that in this version in anticipation of someday retrofitting other games (yes, including skyrim) that don't have open source graphics extenders that I can just rewrite. That's the only reason the ancient DK1 beta version seen on my youtube channel had Distant Land-- I actually modified MGE to add support for it.
If the font size is too small for you, you can choose a lower resolution like 1024x768 and the in-game text will be bigger, but you may get extra aliasing if you do that. Some resolutions render incorrectly right now though like 1600x960.

RUNNING
Just make sure Morrowrift.exe and Morrowrift.dll are in the folder with Morrowind, and run Morrowrift.exe (not Morrowind or Morrowind Launcher). If you're running a Steam copy of the game, you need to make sure Morrowrift.exe is set to Run as Administrator.
If you need the Steam Overlay for any reason (for instance if you use a Steam Controller) You should be able to add Morrowrift.exe to steam as a non-steam game too and still have steam inject its overlay, and if you want to do it with an actual Steam copy of the game you may have to Steam itself as Administrator before it will let you do this (and you still have to add Morrowrift as a non-steam game and run it that way). This may not work for everyone but I was able to run both steam and non-steam copies of Morrowind with Rift support and Overlay support simultaneously.
One caveat with the Steam Overlay though-- for some reason it draws underneath the Morrowind menu right now, so if you accidentally open it on the main menu or during a cinematic, you won't be able to see it. If you can't move the mouse on the main menu try hitting Shift+Tab and see if steam overlay was open invisibly behind the menu.

COMMAND LINE ARGUMENTS
If you run Morrowrift.exe with -nolevel you can disable the auto pitch levelling, but I don't really recommend it since it can make you dizzy. However if you absolutely cannot stand the menu moving up and down all the time when you aim independent of your head position, this feature can be disabled.

This is currently the only command line argument but I'll probably add more options as time goes on, depending on what needs to be customized.

DONATE
If you love my project and want to throw in some motivation for me to continue to add new features, new hardware support, and maybe even new games someday, you could make a Paypal Donation and give me a great excuse to work on this project instead of other stuff 😛

PLANS
First things first, I need to fix bugs. If I can get distant land, anti-aliasing, shaders, and MGE XE working well, I'll consider it a major, major victory. Once I have at least MGE working perfectly I may also try to tackle Oblivion and Skyrim support alongside of MGE XE, since they'll have similar shader setups. MGE XE has the benefit of being open source so I can actually look directly at how it works, which may help me structure the code so it works with newer games.
As a side goal, I'd also like to implement SteamVR support instead of just Oculus support to my codebase. Right now I'm saving up for a GTX 1070 and HTC Vive so I can do this, so that's probably what any donation money will go towards. My current GPU is an old GTX 770 which can barely even run things on the DK2, so if I'm going to get a Vive which has no Async Timewarp I'll definitely need a better GPU to go with it.
If I do get a Vive, another pie in the sky goal would be to hack the game so much that your hands and weapon are drawn based on motion controls, and one of the four weapon moves is performed depending on how you move your hands. This would be so insanely awesome I'm kind of afraid to even mention that I'm planning to try it, since it's probably nearly impossible, but hey, I can dream.
299 REPLIES 299

nrb
Honored Guest
Anyone else experiencing this bug:

https://youtu.be/-lvBc4oZo4w

Not shown is objects textures being very low resolution on interiors, sometimes also exteriors. Seems to "blinK' back into normal textures when a menu/console is open.

I'm using
-win 7 64
-latest oculus runtime
-mge 3.8.0b
-non-steam GOTY morrowind.

superllama
Protege
"LordJuanlo" wrote:
I'm trying hard but can't make it work. First I tried to copy all game files to a new folder using MGE 3.8.0, following your advice, but Oculus Rift mode didn't kick in. After that I redownloaded the game from Steam, installed MGE XE (0.9.10), ran config and made sure AA was disabled. Now the game launches in Oculus Rift mode, but when I load my saved game or try to start a new one, it crashes. I checked the d3d8.dll and it referes to d3dx9_43.dll so it should work, but it always crashes. I have distant land disabled, no shaders... everything is at default. Not sure what to try next... is there some log file that may be useful to you superllama?

I also tried your 2.1 DLL without success.

Sounds like the Steam Overlay crash... I fixed that halfway last night but it caused some extra flickers. Feel free to try this alternate d3d9.dll I'm attaching that fixes that specific bug, though I warn in advance the fix is only partial, and even if it does work it'll be essentially unplayable (or headache inducing at least) with all the shadow glitches in XE-- I'd suggest trying MGE 3.8.0 again with the attached DLL unless you can find a way to disable shadows and distantland in XE.

"nrb" wrote:
Anyone else experiencing this bug:

https://youtu.be/-lvBc4oZo4w

Not shown is objects textures being very low resolution on interiors, sometimes also exteriors. Seems to "blinK' back into normal textures when a menu/console is open.

I'm using
-win 7 64
-latest oculus runtime
-mge 3.8.0b
-non-steam GOTY morrowind.


I have seen that happen a couple times but not nearly as frequently as shown in your video... I wonder if there's some MGE setting that affects how frequently that happens? I'm pretty sure it has something to do with my menu reprojection hack (if it doesn't happen in 2.1 that would confirm this), especially since it's gotten slightly more frequent since I added timewarp and even more frequent when steam overlay is open.

Definitely something I'll be trying to solve, but in the meantime messing with your MGE settings and seeing how they affect things could be helpful. If any MGE settings do affect it it would probably be the Mag and Min filters, Mipmap filter, Anisotropic filtering level, and Mipmap LOD bias. Mine is set to Anisotropic/Linear/8x/-1 respectively for each of those... I'll do some more experimenting with those settings and see if I can make it happen more often and maybe figure out why it's doing it. It could also be some renderstates I put in place for the transparency in the menus-- if that does turn out to be the case then it might be a simple fix when I get another chance to work on it a bit (but tonight I have homework >_<).

I'll be taking a look at some of these issues more over the weekend, I really hope I can at least fix the texture glitches and steam overlay support so everyone can play at least as well as I can. After that I'll probably go straight for leveling the camera pitch (I may have an idea on how to do this already), and focus on Distant Land, Shadows, and XE support last since those are all cosmetic.

Anonymous
Not applicable
I was going to buy morrowind in the last steam sale for £2.80 just so i could play it in the rift with this dll, however i didn't buy it in time, it's now £14.99, so unsure if it's worth it.

Would someone post some rift gameplay footage please?

superllama
Protege
I'm not sure if there are any tools that record direct mode... but I might throw together a quick dk2 mirror window thread for recording purposes later, since it would make sense for me to update the original post in the thread with footage from the latest version instead of the ancient one from 2013 😛

Right now the main thing it doesn't do is auto-level the game view-- if you look up and down with the mouse it can get kind of disorienting because it feels like you're rotating the entire room when you do that. I'm hoping to fix this tomorrow, though, so looking up and down moves your menu/crosshair/weapon but not your camera. It also doesn't support the Steam Overlay correctly yet so if you do buy the steam version you might need to disable the steam in-game overlay to stop crashes.

LordJuanlo
Protege
I just tried the new DLL file you have provided but it didn't help. I'm not sure if it's really a Steam Overlay problem, because I have disabled it for this game and it's still crashing. Anyway, I tried again with both MGE 3.8 and MGE XE and the Oculus mode only kicks in with XE (I have distant land disabled by the way).

I guess I'll have to wait for newer versions of Morrowrift, but if there is anything I can do to help you, please let me know.
Comunidad española de RV / Spanish VR Community

superllama
Protege
If oculus mode isn't even kicking in at all in 3.8.0 it's possible that something is wrong with MGE itself... if you take my d3d9 and d3dx9_30 dll's out and run MGE normally are you able to get distantland working?

superllama
Protege
Just finished Version 2.4 - should've fixed a lot of the flickering issues and stopped the crashes related to the steam overlay, plus the camera is now auto-levelled so the view doens't tilt up and down with the mouse, just the menus/crosshair. I'm hoping to make that toggleable very soon with some sort of config file, in the mean time if you want a version with specific things disabled or the menu smaller or something like that just PM me and I'll recompile it with the settings changed. Once I get it loading those values from a config file though that won't be necessary.

Currently working on a minor tweak that lets you recenter only your yaw and auto-set pitch and roll to zero by pressing Shift+Pause or Shift+Insert, since it's tough to get your view set just right sometimes with the way it currently works. That'll probably be released as 2.4.1 in a few hours.

Once the config file is done I'll see if I can make it so you can set hotkeys like that yourself.

EDIT: Finished 2.4.1-- fixed a major issue with positional headtracking and made the recenter key only affect yaw and position (though if you still want to recenter pitch and roll you can use shift+pause or shift+insert-- for example if you're playing the game laying down for... some reason).

Download it here: https://drive.google.com/file/d/0B9o_WD ... sp=sharing

jameswards
Honored Guest
Hey Super,

I thought perhaps we should continue our discussion here on the forums just so others can maybe learn from my trials and errors, that way your focus isn't diversified with Morrowrift development across two discussion fronts.

So far I have been successful to get your .DLL going and I currently play it with Xpadder and a 360 controller. I have managed to map (Shift + Insert) Macro to the right bumper to reset the orientation, as Xpadder doesn't support the Prntscreen key, however this is a good alternative.

I find that there is still quite a bit of grey texture flickering, however, when I press the Esc key this becomes resolved when the menu overlary appears, but the grey texturing on in game objects and terrain appears again when the Esc menu dissapears again. Does this happen with anybody else? Or is it just me with a setting I should have turned off?

Also, I find that I need to disable the cross hair on Morrowind, otherwise the cross hair gives me a bad case of double vision/ cross eyed, and puts my eyes under incredible strain. The only problem with this cross hair disable method, is that it becomes incredibly difficult to pick up items and target enemies now.

I believe the best thing needed for effective interaction in Morrowind utilizing the DK2 will be to have direct HMD tracking to the mouse. Is there an efficient way to track mouse movement with the headset? I know there was a tracking script somewhere that was open source to achieve this result, and I think it would be perfect for Morrowind. That way I know if I was looking directly at an enemy, the invisible cross-hair would also be on the target too. Right now it behaves sort of independently like a tank turrets aiming direction, independent from it's directional movement.

If I can find the name of that script I will link it here.

Keep up the good work Super!

LordJuanlo
Protege
Just tried the new version, still crashing on my computer with MGE XE. As far as I can tell, MGE is working because the game accepts the custom resolutions I enter on MGEgui. However I'm not sure if distant land is working, apparently there is no difference with it enabled or disabled, although I'm at the very start of the game.
Comunidad española de RV / Spanish VR Community

jameswards
Honored Guest
Ok sorry guys, I got my suggestion successfully running and it doesn't really improve the gameplay lol

You can try the mouse bound to head tracking option if you like to see for yourself, here's how I got it going.

1. Download Freepie: http://andersmalmgren.github.io/FreePIE/

2. Install Freepie.

3. Replace the files in Freepie installation directory with these new ones ( New oculus SDK won't work with Freepie otherwise) : http://www.malcolm-s.net/files/vr/OVRFr ... DK0601.zip

4. Copy and paste this script in FreePie and run: https://www.snip2code.com/Snippet/23759 ... -Map-head-

def update():
global yaw
global roll
global pitch
yaw = oculusVR.yaw + math.pi
roll = oculusVR.roll
pitch = oculusVR.pitch

if starting:
yaw = 0
roll = 0
pitch = 0
enabled = False
oculusVR.update += update

deltaYaw = -1*filters.delta(yaw)
deltaPitch = -1*filters.delta(pitch)
deltaRoll = filters.delta(roll)

if (enabled):
deltaYaw = -1*filters.delta(yaw)
deltaPitch = -1*filters.delta(pitch)
deltaRoll = filters.delta(roll)

mouse.deltaX = deltaYaw*600
mouse.deltaY = deltaPitch*1000

diagnostics.watch(yaw)
diagnostics.watch(roll)
diagnostics.watch(pitch)
diagnostics.watch(deltaYaw)
diagnostics.watch(deltaPitch)

# Things didn't seem to work properly with this, I left it in case someone else knew better
#if math.fabs(deltaYaw) >= math.pi:
# deltaYaw = 0

toggle = keyboard.getPressed(Key.Z)

if toggle:
enabled = not enabled

5. Press "Z" on the keyboard when you Run Script to turn the script on and off.

6. Tweak your X and Y sensitivity in the Morrowind Controll Settings.