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

virror
Explorer
Looks really cool!
Any chance for a beta release any time soon? : D

superllama
Protege
I'll probably release a beta dll today if I can confirm that everything works when distant land and shadows are shut off (these two things seem to be causing all the crashes and glitches I've seen so far). I just demoed my rift to a friend using Morrowrift and the first thing he did was stab a guy and go to jail-- when he clicked go to jail it crashed the game, though that may have had to do with distant land since MGE seems to like turning it on at random points... I think I partially generated the distant land data though so I'm going to actually turn it off and try again. If I can play it for a while without crashing, I'll throw my d3d8.dll up for you guys to try. Again, make sure distant land and npc shadows are turned off while playing. Also make sure you don't have any weird MGE shader mods either.

One random note: in the video my view distance was turned down and I didn't realize it-- I turned it up later with no effect on fps, so that's good news. Until distantland works you should be able to run this on maximum vanilla view distance without too much trouble (mine is even running a crazy texture mod and doing fine).

EDIT: Nope, still crashing sometimes even with distantland turned off. Might take a while to troubleshoot this.

EDIT 2: Turns out the crashing happens whether I use my dll or not-- looks like my MGE installation is corrupted and I'll need to reinstall morrowind, lol.

EDIT 3: Aha! Seems the problem was that I was building the dll from r212 (3.8.2 unstable) and trying to use it with my downloaded binaries which were from 3.8.0, which is apparently a lot older. Just downloaded the correct source and now I'll see if it works right with the rest of the mod.

MannyLectro
Explorer
You are my hero !!
Rift 3d models available here : viewtopic.php?t=1514

superllama
Protege
I just got it to work with distant land turned on as long as you turn off water reflection and shadows. Judging by the ash storms I just had to endure, weather effects seem to be working too. I'm getting 20-40 fps when outside with distant land set at 10 and no other mods installed-- a little low but better than it could be, and if you really want performance you can turn distant land down or off, though I will try to optimize it if I can. Indoors, I'm getting a perfect 60.

One annoying problem is that during the black loading screens it renders some random distant land on top of the black screen-- I can't really fix it until I can detect the black loading screen but this will probably be fixed at the same time as the shrunken screenquads problem.

Due to the fact that to my knowledge the entire game is now playable through Morrowrift provided the settings are set up right, I went ahead and stuck the dll up in a folder on my website for you all to try. I compiled it for the current stable version of MGE (3.8.0) using revision 87 from their source code repository. Right now the three biggest things you should be aware of when playing it are:
1) shadows MUST be turned off in morrowind's in-game options or else all npcs will render very wrong.
2) the rendered crosshair is currently disconnected from the logical crosshair because of menu zoom and will not always point to the thing you think it's pointing to.
3) distant land renders completely wrong when you're on the dock at the very beginning of the game, but it looks like it works everywhere else-- plus the player's head in chargen is rendered full-screen for some reason. I recommend that if you're starting a new character, do it before installing Morrowrift and then load your save-- unless it's extremely important to you to see a life-sized Jiub.

BETA DLL
So without further ado, here's the link: http://llama.cerberusstudios.net/morrowrift/
CONTROLS: Press the pause/break key to recenter the screen.
First thing you should do is use your existing installation of MGE 3.8.0 (and if you haven't installed that yet, do so) to set things up to work right-- set resolution to 1280x800 fullscreen, make sure distant land is set to something reasonable and has reflections and blur turned off, disable any weird shaders that might case problems, and go in-game and turn off npc shadow rendering in options. Next, rename the d3d8.dll in your morrowind folder to d3d8.old, and drop my dll in its place. Finally, run morrowind and get your rift and headphones on, and it should be playable without taking them off from then on unless you need to find keys. Also, sometimes it will hang when exiting-- just ctrl+alt+delete and end the process, I'm not sure why it does that but MGE has always had issues with that iirc.

Ananas
Explorer
Cool! Works well, the floating HUD is clear and visible and everything is readable. Though, I have couple problems/suggestions:
Is it possible to disable vertical mouse movement? This way the vertical camera rotation would happen only with Rift, and you wouldn't get disoriented when using mouse to turn and accidentally look too much up and down with it. You seem to have the mouse and head movement completely separate?
And the second thing is for some reason I get 25-40 fps outdoors, which is too low for me with Rift. It doesn't matter if I have Distant Lands draw distance at 10 or 1, or even completely off. Tried settings other things such as AA or fog but it's always around 30. Setting the desired fps to 60 rises the fps to 50-60 outdoors which is ok, but then the draw distance is pretty bad. Do you have any information why this would happen?

superllama
Protege
That's pretty weird that you'd get fps that low even with distant land turned off-- do you have any texture replacers or anything that might mess with fps? Also what fps do you normally get outside using ordinary MGE?
As for the mouse, I do plan to add alternate control schemes that allow the disabling of vertical movement etc using a dinput.dll hack, as well as the ability to translate head movements into mouse movements under certain circumstances. RIght now since I'm only overriding d3d8.dll I can't do that yet, but it is planned for later.

Ananas
Explorer
Nice to know the control schemes are in planning.

Hmm this was weird. Without your d3d8.dll and without MGE I got an fps of 50-60 outdoors. With MGE and Distant Lands it was stable over 60, no matter how small or big the draw distance.
But when I try it with your .dll the fps drops drastically. It might also be problem at my end, I've had problems installing Morrowind and I've messed with MGEXE before, but now I replaced it with MGE to get your .dll to work.
Let's see if someone else here tries it and what's his results.

virror
Explorer
Awesome!
Now ere did i put that Morrowind disk...

superllama
Protege
Just to confirm-- if I set my distant land to 2 then I get 50-60 outdoors, and if I set it to 5 I get 35-50, so I'm still really confused about why your game is lagging so badly even with distant land turned off. Possibly a graphics card difference or something? I suppose there's a chance I could have used something that works better on my gpu than most-- I guess experimentation will have to be done to figure it out, assuming you can't fix it by reinstalling.

EDIT: Here's something i didn't think to ask-- where are you in the game when you got this bad fps? After playing for a while I noticed that I could get 40+ at Arkngthand with 20 distant land cells, but when I went to Suran I got 15fps even if I turned it down to 15 cells. There are a lot more trees in Suran, so that could be causing it.

Ananas
Explorer
It's perfectly playable when I set the desired fps to 75, it'll stay mostly at 60.
Also is there any button for recentering the view? It tends to drift a bit.