The Internet Vagabond

Oblivion on Linux: Lutris Edition

I love Oblivion. I’ve written before about setting up Oblivion on Linux using the Steam version, Proton and a handful of aliases: Part 1 covers most of the tooling setup, and Part 2 covers some mods I liked. This setup works, though it is a bit of a hassle to manage. It requires running the tools individually through aliases from a terminal, which can be intimidating and unfriendly. It also requires the Steam version of Oblivion.

When I recently decided to return to Cyrodiil and close some gates, I wanted to review my setup, and also my mod list. I discovered that Wrye Bash now does have a native Linux application (as does LOOT!). However, I opted to stick with using Wine and Windows versions of these applications due to a complication of modding Oblivion in general: the case-sensitive nature of the filesystem. On Linux, the filesystem is case-sensitive; on Windows, the filesystem is not case-sensitive. For modding, this means if you extract an archive with a Data/meshes folder, but your current setup has a Data/Meshes directory, on Linux you’ll end up with two directories: Data/Meshes and Data/meshes. There are solutions to this problem on Linux, namely using an EXT-4 filesystem. I don’t feel like reformatting my disks, and so I’ll let Wine handle it. It may mean a slight performance hit, but it’s Oblivion - there are always performance hits. If there aren’t performance hits, then you haven’t modded the game enough yet.

Setup: Game

I’ll be using Lutris to handle installing and launching the game. No more terminal aliases! I’m also using the GOG version of Oblivion. Lutris allows you to link your GOG account, and easily install games using Wine (or native versions, if available!). In Lutris, I install the game to my preferred destination, using the default GOG Wine install script. After installation, I launch the game once to generate some initial configuration files, and verify things work as expected. Before the next steps, there is a significant change: the Wine version. In order to use the latest version of Wrye Bash through Lutris, I had to change the Wine version from my Lutris default, wine-ge-8-26, to my latest system version, 9.22. There seems to be a Windows API which Wrye Bash relies upon which isn’t handled well in Wine versions previous to 9.

Lutris can also install from downloaded GOG installers, without having to link accounts. Make sure to download all the parts (for Oblivion, there are 3: a small EXE, and two BIN files). When installing, make sure all the downloaded files are in the same directory. In Lutris, click the + button to add a new game, and select “Install a Windows game from an executable.” Name the game as you wish, and add identifier the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe for the GOG version. It’ll pull down nice looking images. On the next screen, click the Install button next to “Setup file”, choose your desired directory, and then select the EXE downloaded from the three files above. Lutris will create the Wine prefix, and load the GOG Installer. Make note of the directory you chose above for installation (default will be in the Lutris game library directory, Lutris Hamburger Menu -> Preferences -> Storage -> Game Library), and substitute it accordingly below.

Assuming everything is setup and running, the last step here is to note where Lutris installed the game. The path to the directory will differ, but the directory structure should be similar to the below. The Lutris “Directory” (Right-Click -> Configure) value will bring you to the Wine directory (with drive_c), and from there will be the GOG Games directory (or possibly renamed; this can be changed during the GOG install process), and then the Oblivion directory.

Lutris
 |-> gog
  |-> the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe
   |-> drive_c
    |-> GOG Games
     |-> Oblivion
      |- Data
      |- Oblivion.exe
      |- ...

xOBSE

The Oblivion Script Extender is required for many mods, and should be considered essential for anything beyond a strict vanilla playthrough. Download the latest version, and extract it to the Oblivion directory. When you launch Wrye Bash (covered next), in the lower-left corner, on the icon bar, should be a green checkbox. Hovering over it will notify you that OBSE is enabled. Clicking that box will toggle OBSE. Generally, make sure it is enabled (checked).

At this point, before any other tools, when you double-click/Play Oblivion, it will launch the purely vanilla Oblivion that was installed above. To use OBSE, right-click Oblivion in Lutris, choose Configure, and on the “Game Options” tab, change the Executable by clicking the button with three dots (labeled “Select a file”) to obse_loader.exe. Save the changes, and re-launch.

Pre-Setup: Tools

Before setting up the modding tools, it is required to run Oblivion once. This will generate the INI file.

I also recommend adding the Wrye Bash bash.ini file detailed below before running Wrye Bash for the first time. By declaring where the executable for Oblivion is, Wrye Bash won’t try to automatically find it, which can cause some troubles or confusion.

Setup: Tools

I’ll be using the following tools. When possible, download the stand-alone version of the tool. To make things easy, I use the GOG Games directory for all the tools.

drive_c
 |-> GOG Games
  |- BethINI
  |- LOOT
  |- Mods
  |- Mopy
  |- Oblivion
  |- TES4Edit

Wrye Bash

Mod manager, and everything else launcher in this setup. One of the most exciting results of this setup is handling almost all modding management through the Wrye Bash UI. From the Project Link, download the stand-alone executable from the releases. I extract it to the GOG Games directory, which will create a Mopy directory. Within that will be the executable, Wrye Bash.exe. Next, in the Mopy directory, copy the bash_default.ini file to bash.ini. Make the following changes (or replace bash.ini with this information):

[General]
; -- Path to mod directory.
;    These are relative to the Oblivion directory.
sOblivionMods=..\Mods
sBashModData=..\Mods\Bash Mod Data
sInstallersData=..\Mods\Bash Installers\Bash

; -- Path to the Oblivion directory.
;    "C:" here is drive_c on our filesystem.
sOblivionPath=C:\GOG Games\Oblivion

; -- User directory stuff.
;    "C:" here is drive_c on our filesystem.
;    Make sure to replace YOUR-USERNAME with your username
sUserPath=C:\users\YOUR-USERNAME
sPersonalPath=C:\users\YOUR-USERNAME\Documents
sLocalAppDataPath=C:\users\YOUR-USERNAME\AppData\Local

[Tool Options]
; -- TES4Edit
;    Path is relative to the Oblivion directory.
sTes4EditPath=..\TES4Edit\TES4Edit.exe

; -- TES4LODGen
;    Path is relative to the Oblivion directory.
sTes4LodGenPath=..\TES4LodGen\Tes4LODGen.exe

; -- LOOT
;    Path is relative to the Oblivion directory.
sLOOT=..\LOOT\LOOT.exe

In this configuration, the relative paths are relative to the Oblivion directory (where the game executable is). For all remaining tool setup, modify the paths in this configuration to match the paths for the tool executable (or, rename the tool directories, which is what I prefer).

This is where the magic happens: within Lutris, right-click Oblivion and choose Configure. On the “Game Options” tab, change the Executable by clicking the button with three dots (labeled “Select a file”), and choose the Wrye Bash.exe executable in the Mopy directory. Save the configuration, and double-click/Play Oblivion. This time, Wrye Bash will start up (Remember: This will not work on versions of Wine older than 9!).

At this point, when you want to play Oblivion, you will open Lutris, and launch “Oblivion.” This will launch Wrye Bash. You can then click the Oblivion icon in the lower-left icon bar to launch the game. As additional tools are configured, they will appear in the lower-left icon bar (everything except BethINI). To use the tool, you’ll run it from Wrye Bash.

LOOT

LOOT handles mod load order. Another application with a native Linux version. I had previous run into some bugs, but everything looks to work as expected now. Despite that, I still download and use the stand-alone Windows version (the archive from the releases, not the EXE). I extract it to my GOG Games directory, and rename the directory (or edit the bash.ini file) so the executable is where my Wrye Bash configuration expects it.

If setup properly, when you run Wrye Bash, in the lower-left corner will be a bar full of icons, one of which will be a little treasure chest. Clicking it will launch LOOT. From there, sort the order, and then close LOOT. Wrye Bash will refresh, and you can continue on. LOOT will also notify you of any “dirty” mods, which can be cleaned using TES4Edit (see below).

TES4Edit

I’m still not a mod creator, so my uses of TES4Edit are limited to “quick cleaning.” From the project page or Nexus, download the latest version, and extract the archive to the GOG Games directory. Rename the directory or edit the bash.ini file so Wrye Bash can find it; restart Wrye Bash to verify. Wrye Bash doesn’t include a dedicated short-cut for the “Quick Auto Clean” option, instead you have to right-click on the TES4Edit short-cut (or the TES4LodGen short-cut), and choose “Quick Auto Clean”. Choose the mod to clean from the list, click OK, and let the program do its work.

TES4LODGen

This will generate LOD files ahead of time, allowing for more distant objects to be shown as you adventure around Cyrodiil. Download the archive, and extract it to where Wrye Bash expects it, either changing the directory name or updating the bash.ini file accordingly. After mod installation is complete, click the icon from the icon bar to generate the LOD files.

BethINI

BethINI helps manage the “oblivion.ini” file, providing sane options and a wizard for configuration. This is the only tool that is not run from Wrye Bash. However, it’s still pretty easy to work with. Download the stand-alone archive, extract it to the GOG Games directory.

To run the tool, in Lutris single-click on Oblivion. A bar should appear with some additional details about Oblivion, including some buttons: one will say “Play”, and one will look like a wine glass; each will have a small button with an up-facing arrow. Click the arrow button next to the wine glass button, and select “Run EXE inside Wine prefix.” Navigate into drive_c, then GOG Games, and into the directory you just set up for BethINI, and select BethINI.exe.

Wrye Bash does allow for custom application short-cuts, but it requires creating a Windows shortcut .lnk file, and I cannot figure out an easier way to do that than to just run it from Lutris.

Post-Setup: Tools

Verify each tool runs as expected. Conveniently, all the Bethesda DLCs are “dirty,” so LOOT will notify you, and then you can clean them. Run BethINI, generate LOD files, and run the game from Wrye Bash. Praise Todd.

Mods

Wrye Bash on Windows can install mods from an archive, but with this setup that functionality is unreliable. Instead, I extract the mod archives manually before installing them with Wrye Bash. For each mod that I want to use, I’ll create a directory in the Mods -> Bash Installers directory, and extract the mod archive into that directory. Then, within Wrye Bash, on the “Installers” tab, I can install mods as expected.

For actually using Wrye Bash, I recommend laulajatar’s guide. Obviously, you can skip the installation steps for both Wrye Bash and OBSE. There is also the Wrye Bash Manual.

Lutris Setup: Problems

The significant problem with this setup is no way to alt-tab away from the game. To make things even more inconvenient, playing in a windowed mode also doesn’t work, and shows only a black screen with audio. I haven’t done an exhaustive trial of options and mods yet to try and fix this, because it isn’t a major problem to me.

The second inconvenience is as I mentioned above, with Wrye Bash not installing mods directly from archives. Again, not a major problem to me.

I suspect that both of the problems can be resolved with some Wine tweaks.

Lutris Setup: Benefits

What this setup gets right is ease of use, and ease of replication. All tools (except BethINI, for now) and the game are run from Wrye Bash. No juggling multiple application entries, aliases, or special setups. Plus, all tools, mods, and the game itself are all within the Lutris directory, making multiple setups a breeze: just copy the directory. In Lutris, you can then duplicate the entry (Right-Click -> Duplicate), and edit the executable (Right-Click -> Configure -> “Game options” tab -> Executable) to point to the new directory.

Lutris Setup: Next-Steps

The most useful next step would be automating this process, by building a Lutris install script. Also, resolving the alt-tab and windowed problems above.

Bill Niblock 2025-01-09
[ gaming ]