the-internet-vagabond-dot-com/2021/11/20/oblivion-linux.html
2025-01-09 13:43:40 -06:00

392 lines
20 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 Part 1, Tools</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/2021/11/20/oblivion-linux.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>
<p>Oblivion holds a special place in my heart. I remember spending a summer in the
town I went to college in, and playing Oblivion almost every day while listening
to Dream Theaters <em>Systematic Chaos</em>. Back then, I wasnt aware of modding, so
it was literally just vanilla Oblivion for hours upon hours. I also used
Windows, so the game would run fine. Now, things have changed. The easier issue
to deal with is playing Oblivion on Linux. Thanks to Valve, Oblivion runs
excellent with Proton out of the box. The more challenging issue is mods, and
thats what this write-up is all about!</p>
<h1 id="vanilla-oblivion">Vanilla Oblivion</h1>
<p>Starting from the beginning, Oblivion is available on many platforms, but my
experiences here will assume the Steam installation. The primary difference will
be with respect to how the tools used to mod Oblivion are run. Ive got the
Game of the Year edition, which is Steam ID <code class="language-plaintext highlighter-rouge">22330</code>.</p>
<h1 id="modding-tools">Modding Tools</h1>
<p>Much of modding Oblivion is done with the help of additional tools. A mod
manager is used for installing and configuring the mods. There are several
options for Oblivion, and the one Ive been suggested and use is called <code class="language-plaintext highlighter-rouge">Wrye
Bash</code>. Mod load order is also important, and the tool Im using to help with
that is <code class="language-plaintext highlighter-rouge">LOOT</code>. Finally, <code class="language-plaintext highlighter-rouge">TES4Edit</code>, <code class="language-plaintext highlighter-rouge">TES4LODGen</code> and <code class="language-plaintext highlighter-rouge">BethINI</code> each helps with
performance and configuration.</p>
<p>I have the following directory structure setup for my mods:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>OblivionMods
|- Archives
|- Backups
|- Tools
|- WryeBash
</code></pre></div></div>
<p><em>Archives</em> is where I store the actual archives of the mods I use. <em>Backups</em> is
where I store any relevant backups for my Oblivion game, such as saves or
configuration files for the mods. <em>Tools</em> is where I put the executables for all
the tools I mentioned above. <em>WryeBash</em> is used to store the unarchived mods
(which it calls “projects”) and mod data that <code class="language-plaintext highlighter-rouge">Wrye Bash</code> uses.</p>
<p>Because each of these tools is run using Proton, I also have a set of aliases
configured. Similar aliases could be setup for using Wine instead. For each
alias, modify the paths accordingly for your setup. I should also note that Im
running Oblivion using <a href="https://github.com/GloriousEggroll/proton-ge-custom">Glorious Eggrolls
Proton</a>, version 6.16. I
havent experimented with different Proton versions to find the most performant
version, but if I do in the future, Ill mention it.</p>
<h2 id="wrye-bash">Wrye Bash</h2>
<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><code class="language-plaintext highlighter-rouge">Wrye Bash</code> is involved. I dont know how to use it fully. There are a few
guides that helped me learn how to use it enough to get mods installed and
configured though. The first, and very relevant, is at <a href="https://www.shrine-of-kynareth.de/wrye-bash-on-linux">Shrine of
Kynareth</a>. I referenced
this guide, and the
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab">other</a>
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-2-load-order-bashed-patch-and-savegame-profiles">written</a>
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-3-ini-edits-tools-and-tricks">guides</a>
to learn how Wrye Bash works and what to setup. I also learned some tricks from
the <a href="https://www.nexusmods.com/oblivion/mods/49898">Oblivion Comprehensive Modding Guide by
Dispensation</a>.</p>
<h3 id="setup">Setup</h3>
<p>The easiest option is to use the stand-alone executable from the GitHub releases
page. Extract the archive, and then use Proton to run the executable in the
<em>Mopy</em> directory. This is the alias I use; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-wrye='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/Mopy/Wrye\ Bash.exe'
</code></pre></div></div>
<p>Additionally, I copy the <em>Mopy/bash_default.ini</em> file to <em>Mopy/bash.ini</em> and set
the <code class="language-plaintext highlighter-rouge">sOblivionMods</code> to “Z:\path\to\OblivionMods\WryeBash”, <code class="language-plaintext highlighter-rouge">sBashModData</code> to
“Z:\path\to\OblivionMods\WryeBash\Bash Mod Data”, <code class="language-plaintext highlighter-rouge">sInstallersData</code> to
“Z:\path\to\OblivionMods\WryeBash\Bash Installers”, and <code class="language-plaintext highlighter-rouge">sOblivionPath</code> to
“Z:\path\to\steam\steamapps\common\Oblivion”. In Wine, <code class="language-plaintext highlighter-rouge">Z:</code> references your
local file system. Theoretically, because Wine is awesome, you may be able to
use Linux file system paths in the configuration, but I went with this.</p>
<h3 id="usage">Usage</h3>
<p>The guides above provide a very thorough explanation of use. Of note: <code class="language-plaintext highlighter-rouge">Wrye
Bash</code> in Wine does not like drag-and-drop actions, so dont do them. I dont do
anything special with my usage of <code class="language-plaintext highlighter-rouge">Wrye Bash</code>: run the alias, install mods from
the Installers tab, enable or disable mods from the Mods tab. I generally dont
do anything else.</p>
<h2 id="loot">LOOT</h2>
<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><code class="language-plaintext highlighter-rouge">LOOT</code> sets the proper load order for mods. There is a native Linux client, but
I ran into <a href="https://github.com/loot/loot/issues/1615">this issue</a> and decided to
just use the Windows version. The GitHub releases page includes a 7z archive
with a stand-alone executable, and thats what I used.</p>
<h3 id="setup-1">Setup</h3>
<p>Download the stand-alone executable, and extract it to <em>OblivionMods/Tools</em>.
This is the alias I use; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-loot='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/LOOT/LOOT.exe'
</code></pre></div></div>
<p>On first run, it should auto-detect the Oblivion installation and configure
everything accordingly. If it doesnt, there are instructions on the Homepage
for configuration.</p>
<h3 id="usage-1">Usage</h3>
<p><code class="language-plaintext highlighter-rouge">LOOT</code> is pretty straight forward. It references a master list of mods to
determine the optimal load order for all installed mods. I ran into an issue
where <code class="language-plaintext highlighter-rouge">LOOT</code> couldnt properly download the master list, and so as a work-around
I manually downloaded the master list, and then configured <code class="language-plaintext highlighter-rouge">LOOT</code> to use that
local file instead of the remote Git repository. Those instructions are covered
<a href="https://loot.github.io/docs/help/LOOT-FAQs.html#git-errors">in the FAQ</a>. If
everything works, and the list of mods is there, then you can run a sort, and
apply the changes. <code class="language-plaintext highlighter-rouge">LOOT</code> will inform you of any “dirty” mods, which you can use
the next tool the clear up. I ended up keeping <code class="language-plaintext highlighter-rouge">LOOT</code> open, while stepping
through the cleaning procedure for each mod, until everything looked happy.</p>
<h2 id="tes4edit">TES4Edit</h2>
<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><code class="language-plaintext highlighter-rouge">TES4Edit</code> is the Oblivion version of <code class="language-plaintext highlighter-rouge">xEdit</code>, which is an incredible tool. All
I use it for is to clean dirty mods. <code class="language-plaintext highlighter-rouge">LOOT</code> provides a link to the <a href="https://tes5edit.github.io/docs/7-mod-cleaning-and-error-checking.html#ThreeEasyStepstocleanMods">quick cleaning
guide</a>,
which gives us exactly the steps required.</p>
<h3 id="setup-2">Setup</h3>
<p>Download the latest build from GitHub, and extract it to <em>OblivionMods/Tools</em>.
This is the alias I use, which runs the “Quick Auto Clean” function; replace
paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit-quick='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4EditQuickAutoClean.exe'
</code></pre></div></div>
<p>TES4Edit is also useful for other, non-quick-clean functionality, so I have this
alias for that:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4Edit.exe'
</code></pre></div></div>
<h3 id="usage-2">Usage</h3>
<p>Run the quick-clean alias, select the problematic file, and click “OK”. Only one
file can be cleaned at a time.</p>
<h2 id="tes4lodgen">TES4LODGen</h2>
<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><code class="language-plaintext highlighter-rouge">TES4LODGen</code> will generate the relevant LOD files ahead of time. Apparently it
helps with performance in-game, but may result in slower initial load times when
starting the game.</p>
<h3 id="setup-3">Setup</h3>
<p>I downloaded the files from Nexus, and extracted the archive to
<em>OblivionMods/Tools/TES4LODGen</em>. Heres the alias; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4lodgen='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4LODGen/TES4LODGen.exe'
</code></pre></div></div>
<h3 id="usage-3">Usage</h3>
<p>Run the alias. The program should auto-find everything, do some magic, and will
eventually report that it has finished. At that point, you can close the
application.</p>
<h2 id="bethini">BethINI</h2>
<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. While not required, it does help with optimizations.</p>
<h3 id="setup-4">Setup</h3>
<p>I downloaded the files from Nexus, and extracted the archive to
<em>OblivionMods/Tools/Bethini</em>. If you use AutoHotKey apparently you can use that
to run it, but that doesnt make sense to me, so I went with the stand-alone
executable. Heres the alias; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-bethini='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/BethINI/BethINI.exe'
</code></pre></div></div>
<h3 id="usage-4">Usage</h3>
<p>Just like the rest, run the alias and answer the questions. <code class="language-plaintext highlighter-rouge">BethINI</code> will make
backups of the modified INI files before over-writing them.</p>
<h1 id="next-steps">Next Steps</h1>
<p>Once all the tools are assembled, and usable, the next step is mods! In my next
post, Ill cover some of my favorite mods. The third part will then be a
complete walk-thru of my installation of my full mod list.</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>
2021-11-28
<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>