For years now, as a Linux user, I have been pretty staunchly in the camp of wanting to use OpenMW for all of my Morrowind needs. It is wonderful. But I've also had at least a passing interest in supporting the original engine and its enhancements under linux, if for no other reason than to muck about with the Construction Set. So, today I set out to get a playable copy of Tamriel Rebuilt running under MCP, MGEXE, and MWSE running on a modern linux system.
I started with some old PlayOnLinux scripts I wrote back in 2010, and modified at up until mid 2013 (10 years on OpenMW!)
It looked super scary to pick up from there, but in reality, times have changed, and DXVK has simplified things immensely and these days, I feel even the most up to date guides on reddit are doing too much!
So, please come with me on a journey.
First off, I am doing this on Archlinux, with everything updated. Wine v8.8 (And those of you wanting to use wine-staging, there are NO changes in the process)
There is a pair of packages that absolutely need to be installed upon your system aside from just Wine in order for Morrowind to run. These being the GStreamer 'good' plugins to provide Wine a way of playing MP3 files, and since Morrowind is a 32 bit application, we need to make certain to install the 32 bit versions of these plugins. I would expect for completeness, installing both the 64 bit and 32 bit versions of this is recommended. Winetricks allows us to install DXVK for Graphics API translation. On arch, I issue the following command:
pacman -S wine winetricks gst-plugins-good lib32-gst-plugins-good
This gives our arch system all the compatibility layers we need. Now I just run winecfg to create my
Wine prefix.
In the long ago times of the early 2010s, at this point I would utilize winetricks to install dotnet2, directx9, and force overrides on the devenum and quartz libraries. NO LONGER! Now, I simply install dxvk, and the internal version of mono in Wine takes care of the dotnet requirements.
winetricks dxvk
Next, we can go ahead and install Morrowind utilizing whatever method you wish. I install mine using Lutris connected to my GOG account. Unlike the steam version, this provides the Construction Set as well, and eliminates the need to worry about redating any game files.
After that, I used Wine to install the MCP (and turned on the standard options in the patcher), and MGEXE, which also provides MWSE, and the libraries needed for MWSE-Lua and CSSE.
Next, I relaunched winecfg, and manually set up three overrides:
d3d8 (native,builtin)
mwse (native,builtin)
csse (native,builtin)
These three allow first, MGEXE's DirectX 8 -> 9 proxy to work
Second, MWSE support to work under Linux
Third CSSE.
Finally, I added an Application override for 'TES Construction Set.exe', and turned on Wine's 'Emulate Virtual Desktop' option under the Graphics tab to allow myself to have an actually usable Construction Set environment.
After this, its just a matter of installing TD and TR. I copied this from my OpenMW install by rsyncing the '00 Core' directory from both into my Wine/Morrowind's Data Files directory. This led to a number of case sensitivity issues with the Meshes and Textures folders that I had to resolve. I highly recommend that if you are installing mods into this, you utilize Wrye Mash, MO2, or some other mod installation system to avoid these issues.
I also would likely recommend using Valve's proton over standard Wine to play Morrowind, if you are going to try and use the original engine. It may still have the one issue I ran into with my current setup, but I expect that alt-tab issues were fixed in Proton by Valve. Specifically, Alt-tabbing out of Morrowind in Fullscreen mode crashes all rendering under standard Wine.
However, barring that, it is playable, and all MWSE, and MGE tools work for dealing with configuration and distant land Importantly however, this also gives us a working modern enhanced construction set that works flawlessly under Linux.
Enjoy!
Comments
Case sensitivity workaround
There is a way to work around the case sensitivity issue by creating a FAT32 loop device and mounting it as the Morrowind game directory. This will cause all disk operations inside the Morrowind directory to be case insensitive like on Windows.
# 1. Create a 10 gb file called morrowind.img containing a virtual fat32 filesystem
sudo mkfs.vfat -C -F 32 ~/morrowind.img 10000000
# 2. Check if you have any existing "/dev/loopX" devices
lsblk
# 3. Attach the file to a new loop device. Replace X with a new number that didn't appear in the previous command.
sudo losetup /dev/loopX ~/morrowind.img
# 4. Back up your existing Morrowind installation. Your game might be installed somewhere else than mine.
mv ~/.steam/steam/steamapps/common/Morrowind/ ~/morrowind_backup
# 5a. Mount the loop device where your Morrowind installation was. Replace <user> with your username and X with the number you used in the losetup step.
sudo mount -o uid=<user>,gid=users,fmask=113,dmask=002,iocharset=iso8859-1 /dev/loopX "/home/<user>/.steam/steam/steamapps/common/Morrowind"
# 5b. Alternatively add a fstab entry to automatically mount the device on boot. Append the following line into /etc/fstab:
/home/<user>/morrowind.img /home/<user>/.local/share/Steam/steamapps/common/Morrowind auto loop,uid=<user>,gid=users,fmask=113,dmask=002,iocharset=iso8859-1 0 0
# 6. Restore your Morrowind installation
cp -r ~/morrowind_backup/* ~/.steam/steam/steamapps/common/Morrowind/
This worked for me. I am not liable if something goes wrong...
A simpler way around the case
A simpler way around the case insensitivity issue I found (and why I recommend installing Wrye Mash, et. al, honestly) is just installing the windows version of 7zip in your WINE prefix, and invoke it under wine to extract things (i.e `wine 7z x Z:\Downloads\<file>.7z`) when in the right directory.
Quick Update!
After playing around with the CS more in this configuration, I have definitely determined that the override for the CS to provide it with the virtual desktop is NOT the way to go, Windows meant to render on top of the big container window will get drawn underneath and be unraisable. Without the VD, your compositor/window manager can work around it as each window is drawn independantly.
This was really helpful,
This was really helpful, thanks!
I didn't use WryeMash. Already ran into a CaseSensitivitiy issue lol. (and it's not even the first time this has happened to me with MW)