the-internet-vagabond-dot-com/2025/01/09/oblivion-lutris.html
2025-01-09 13:43:40 -06:00

470 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Oblivion on Linux: Lutris Edition</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2025/01/09/oblivion-lutris.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="oblivion-on-linux-lutris-edition">Oblivion on Linux: Lutris Edition</h1>
<p>I love Oblivion. Ive written before about setting up Oblivion on Linux using
the Steam version, Proton and a handful of aliases: <a href="/2021/11/20/oblivion-linux.html">Part
1</a> covers most of the tooling setup, and <a href="/2021/12/09/oblivion-linux-2.html">Part
2</a> 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.</p>
<p>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 <strong>not</strong>
case-sensitive. For modding, this means if you extract an archive with a
<code class="language-plaintext highlighter-rouge">Data/meshes</code> folder, but your current setup has a <code class="language-plaintext highlighter-rouge">Data/Meshes</code> directory, on
Linux youll end up with two directories: <code class="language-plaintext highlighter-rouge">Data/Meshes</code> <em>and</em> <code class="language-plaintext highlighter-rouge">Data/meshes</code>.
There are solutions to this problem on Linux, namely using an EXT-4 filesystem.
I dont feel like reformatting my disks, and so Ill let Wine handle it. It may
mean a slight performance hit, but its Oblivion - there are <strong>always</strong>
performance hits. If there arent performance hits, then you havent modded the
game enough yet.</p>
<h2 id="setup-game">Setup: Game</h2>
<p>Ill be using <a href="https://lutris.net">Lutris</a> to handle installing and launching
the game. No more terminal aliases! Im also using the <a href="https://www.gog.com/en/game/elder_scrolls_iv_oblivion_game_of_the_year_edition_deluxe_the">GOG version of
Oblivion</a>.
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,
<em>wine-ge-8-26</em>, to my latest system version, 9.22. There seems to be a Windows
API which Wrye Bash relies upon which isnt handled well in Wine versions
previous to 9.</p>
<p>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 <code class="language-plaintext highlighter-rouge">+</code> button to add a new
game, and select “Install a Windows game from an executable.” Name the game as
you wish, and add identifier
<code class="language-plaintext highlighter-rouge">the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe</code> for the GOG
version. Itll pull down nice looking images. On the next screen, click the
<code class="language-plaintext highlighter-rouge">Install</code> 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,
<code class="language-plaintext highlighter-rouge">Lutris Hamburger Menu</code> -&gt; <code class="language-plaintext highlighter-rouge">Preferences</code> -&gt; <code class="language-plaintext highlighter-rouge">Storage</code> -&gt; <em>Game Library</em>), and
substitute it accordingly below.</p>
<p>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 -&gt; Configure) value will bring you to the Wine directory (with
<code class="language-plaintext highlighter-rouge">drive_c</code>), and from there will be the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory (or possibly
renamed; this can be changed during the GOG install process), and then the
<code class="language-plaintext highlighter-rouge">Oblivion</code> directory.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Lutris
|-&gt; gog
|-&gt; the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe
|-&gt; drive_c
|-&gt; GOG Games
|-&gt; Oblivion
|- Data
|- Oblivion.exe
|- ...
</code></pre></div></div>
<h3 id="xobse">xOBSE</h3>
<ul>
<li><a href="https://github.com/llde/xOBSE">Project Link</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/37952">Nexus Links</a></li>
</ul>
<p>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 <code class="language-plaintext highlighter-rouge">Oblivion</code> 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).</p>
<p>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 <em>Configure</em>, and on the “Game Options”
tab, change the <em>Executable</em> by clicking the button with three dots (labeled
“Select a file”) to <code class="language-plaintext highlighter-rouge">obse_loader.exe</code>. Save the changes, and re-launch.</p>
<h2 id="pre-setup-tools">Pre-Setup: Tools</h2>
<p>Before setting up the modding tools, it is required to run Oblivion once. This
will generate the INI file.</p>
<p>I also recommend adding the Wrye Bash <code class="language-plaintext highlighter-rouge">bash.ini</code> file detailed below before
running Wrye Bash for the first time. By declaring where the executable for
Oblivion is, Wrye Bash wont try to automatically find it, which can cause some
troubles or confusion.</p>
<h2 id="setup-tools">Setup: Tools</h2>
<p>Ill be using the following tools. When possible, download the stand-alone
version of the tool. To make things easy, I use the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory for
all the tools.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>drive_c
|-&gt; GOG Games
|- BethINI
|- LOOT
|- Mods
|- Mopy
|- Oblivion
|- TES4Edit
</code></pre></div></div>
<h3 id="wrye-bash">Wrye Bash</h3>
<ul>
<li><a href="https://github.com/wrye-bash/wrye-bash">Project Link</a></li>
<li><a href="https://wrye-bash.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/22368">Nexus Link</a></li>
</ul>
<p>Mod manager, and <strong>everything else</strong> 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 <code class="language-plaintext highlighter-rouge">GOG Games</code> directory, which will create
a <code class="language-plaintext highlighter-rouge">Mopy</code> directory. Within that will be the executable, <code class="language-plaintext highlighter-rouge">Wrye Bash.exe</code>. Next,
in the <code class="language-plaintext highlighter-rouge">Mopy</code> directory, copy the <code class="language-plaintext highlighter-rouge">bash_default.ini</code> file to <code class="language-plaintext highlighter-rouge">bash.ini</code>. Make
the following changes (or replace <code class="language-plaintext highlighter-rouge">bash.ini</code> with this information):</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[General]</span>
<span class="c">; -- Path to mod directory.
; These are relative to the Oblivion directory.
</span><span class="py">sOblivionMods</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span>
<span class="py">sBashModData</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span><span class="se">\B</span><span class="s">ash Mod Data</span>
<span class="py">sInstallersData</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span><span class="se">\B</span><span class="s">ash Installers</span><span class="se">\B</span><span class="s">ash</span>
<span class="c">; -- Path to the Oblivion directory.
; "C:" here is drive_c on our filesystem.
</span><span class="py">sOblivionPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\G</span><span class="s">OG Games</span><span class="se">\O</span><span class="s">blivion</span>
<span class="c">; -- User directory stuff.
; "C:" here is drive_c on our filesystem.
; Make sure to replace YOUR-USERNAME with your username
</span><span class="py">sUserPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span>
<span class="py">sPersonalPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span><span class="se">\D</span><span class="s">ocuments</span>
<span class="py">sLocalAppDataPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span><span class="se">\A</span><span class="s">ppData</span><span class="se">\L</span><span class="s">ocal</span>
<span class="nn">[Tool Options]</span>
<span class="c">; -- TES4Edit
; Path is relative to the Oblivion directory.
</span><span class="py">sTes4EditPath</span><span class="p">=</span><span class="s">..</span><span class="se">\T</span><span class="s">ES4Edit</span><span class="se">\T</span><span class="s">ES4Edit.exe</span>
<span class="c">; -- TES4LODGen
; Path is relative to the Oblivion directory.
</span><span class="py">sTes4LodGenPath</span><span class="p">=</span><span class="s">..</span><span class="se">\T</span><span class="s">ES4LodGen</span><span class="se">\T</span><span class="s">es4LODGen.exe</span>
<span class="c">; -- LOOT
; Path is relative to the Oblivion directory.
</span><span class="py">sLOOT</span><span class="p">=</span><span class="s">..</span><span class="se">\L</span><span class="s">OOT</span><span class="se">\L</span><span class="s">OOT.exe</span>
</code></pre></div></div>
<p>In this configuration, the relative paths are relative to the <code class="language-plaintext highlighter-rouge">Oblivion</code>
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).</p>
<p>This is where the magic happens: within Lutris, right-click Oblivion and choose
<em>Configure</em>. On the “Game Options” tab, change the <em>Executable</em> by clicking the
button with three dots (labeled “Select a file”), and choose the <code class="language-plaintext highlighter-rouge">Wrye Bash.exe</code>
executable in the <code class="language-plaintext highlighter-rouge">Mopy</code> directory. Save the configuration, and
double-click/Play Oblivion. This time, Wrye Bash will start up (<strong>Remember:</strong>
This will not work on versions of Wine older than 9!).</p>
<p>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, youll run it from Wrye Bash.</p>
<h3 id="loot">LOOT</h3>
<ul>
<li><a href="https://github.com/loot/loot">Project Link</a></li>
<li><a href="https://loot.github.io/">Homepage</a></li>
</ul>
<p>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 <code class="language-plaintext highlighter-rouge">GOG Games</code>
directory, and rename the directory (or edit the <code class="language-plaintext highlighter-rouge">bash.ini</code> file) so the
executable is where my Wrye Bash configuration expects it.</p>
<p>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).</p>
<h3 id="tes4edit">TES4Edit</h3>
<ul>
<li><a href="https://github.com/TES5Edit/TES5Edit">Project Link</a></li>
<li><a href="https://tes5edit.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/11536">Nexus Link</a></li>
</ul>
<p>Im 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 <code class="language-plaintext highlighter-rouge">GOG Games</code> directory. Rename the directory or edit
the <code class="language-plaintext highlighter-rouge">bash.ini</code> file so Wrye Bash can find it; restart Wrye Bash to verify. Wrye
Bash doesnt 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.</p>
<h3 id="tes4lodgen">TES4LODGen</h3>
<ul>
<li><a href="https://github.com/TES5Edit/xLODGen">Project Link</a></li>
<li><a href="https://tes5edit.github.io/docs/16-xLODGen.html">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/15781?tab=description">Nexus Link</a></li>
</ul>
<p>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 <code class="language-plaintext highlighter-rouge">bash.ini</code> file accordingly. After mod installation is complete, click the
icon from the icon bar to generate the LOD files.</p>
<h3 id="bethini">BethINI</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/46440">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">BethINI</code> 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, its still pretty easy to work with. Download the stand-alone archive,
extract it to the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory.</p>
<p>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 <code class="language-plaintext highlighter-rouge">drive_c</code>, then <code class="language-plaintext highlighter-rouge">GOG Games</code>,
and into the directory you just set up for BethINI, and select <code class="language-plaintext highlighter-rouge">BethINI.exe</code>.</p>
<p>Wrye Bash does allow for custom application short-cuts, but it requires creating
a Windows shortcut <code class="language-plaintext highlighter-rouge">.lnk</code> file, and I cannot figure out an easier way to do
that than to just run it from Lutris.</p>
<h2 id="post-setup-tools">Post-Setup: Tools</h2>
<p>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.</p>
<h2 id="mods">Mods</h2>
<p>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, Ill create a
directory in the <code class="language-plaintext highlighter-rouge">Mods -&gt; Bash Installers</code> directory, and extract the mod
archive into that directory. Then, within Wrye Bash, on the “Installers” tab, I
can install mods as expected.</p>
<p>For actually using Wrye Bash, I recommend <a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab">laulajatars
guide</a>.
Obviously, you can skip the installation steps for both Wrye Bash and OBSE.
There is also the <a href="https://wrye-bash.github.io/docs/Wrye%20Bash%20General%20Readme.html">Wrye Bash
Manual</a>.</p>
<h2 id="lutris-setup-problems">Lutris Setup: Problems</h2>
<p>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 doesnt
work, and shows only a black screen with audio. I havent done an exhaustive
trial of options and mods yet to try and fix this, because it isnt a major
problem to me.</p>
<p>The second inconvenience is as I mentioned above, with Wrye Bash not installing
mods directly from archives. Again, not a major problem to me.</p>
<p>I suspect that both of the problems can be resolved with some Wine tweaks.</p>
<h2 id="lutris-setup-benefits">Lutris Setup: Benefits</h2>
<p>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 -&gt; Duplicate), and edit the executable (Right-Click -&gt; Configure -&gt;
“Game options” tab -&gt; <em>Executable</em>) to point to the new directory.</p>
<h2 id="lutris-setup-next-steps">Lutris Setup: Next-Steps</h2>
<p>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.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2025-01-09
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>