Modding a Steam game on Linux: The Elder Scrolls V: Skyrim Special Edition
The Elder Scrolls V: Skyrim Special Edition is admittedly one of my favorite games, having poured 200 hours and still wanted to go back and play it again.
Vanilla game
According to Proton reports this game runs mostly pretty well without tweaks, so the first time I run it there was no tweaking or tinkering involved. The game spent 2 minutes compiling Vulkan shaders, detected optimal video settings and run.
Audio fix
However, a few Proton reports indicate that xact_x64 is
required to fix the issue where voices are missing and
indeed I experienced this myself. To fix this, install
this with winetricks:
$ WINEARCH=win64 \
WINEPREFIX=$HOME/.local/share/Steam/steamapps/compatdata/489830/pfx \
winetricks xact
$ WINEARCH=win64 \
WINEPREFIX=$HOME/.local/share/Steam/steamapps/compatdata/489830/pfx \
winetricks xact_x64
However, after installing these the game no longer runs and
there is no clear error message even in ~/.xsession-errors;
forcing the game to run on Proton 7.0-6 did the trick and
the Skyrim theme (vocal music) plays as soon as it starts.
Screen resolution
The game is old and conservative, so it runs at a mere 1920x1080 resolution despite having an ultrawide 3440x1440 display. The game is particularly known to work poorly with ultrawide screens, it is possible to set the game to run at 3440x1440 (full screen) but that will make UI elements at the bottom and top not accessible, including controller button hints and essential stats like gold and weight.
To set the change resolution, edit the SkyrimPrefs.ini
that is under your personal files, not the one that is
part of the game files:
$ cd; find . -name SkyrimPrefs.ini
./.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/Documents/My Games/Skyrim Special Edition/SkyrimPrefs.ini
./.local/share/Steam/steamapps/common/Skyrim Special Edition/Skyrim/SkyrimPrefs.ini
Edit the file under the .../steamuser/Documents/... path,
otherwise the changes will not be effective. Change these
lines
To run on 3440x1440 full screen:
Note
See Guide:Skyrim Configuration Settings and the Guide:SkyrimPrefs INI for full details on how to configure Skyrim.
Mods
There is only one Data folder to install mods in:
Backup Skyrim Special Edition
Through the journey of installing mods and other tools, is is
recommended to make backups of the entire game folder
(Skyrim Special Edition) to rollback changes when
(not if) something breaks.
To make multiple backups, each with a timestamp:
$ cd ~/.local/share/Steam/steamapps/common/
$ rsync -ruta \
"Skyrim Special Edition" \
"Backup of Skyrim Special Edition on $(date +"%Y-%m-%d-%H-%M-%S")"
Vortex mod manager (failed)
This Proton report recommends using Vortex mod manager installed through Lutris using the official install configuration. That sounds like it should be easy enough, but even better there is a detailed walkthrough to Manage Skyrim SE mods via Vortex Mod Manager in Linux.
This walkthrough recommend installing an old version of Vortex via a YML file breated by rockerbacon
$ wget -O ~/Downloads/vortex.yml \
https://github.com/rockerbacon/modorganizer2-linux-installer/releases/download/1.9.3/vortex.yml
$ lutris -i ~/Downloads/vortex.yml
The installation is a bit rocky; after installing a few components the installer seems to fail with exit code 256, but hitting Back and then Continue/Install again it actually works. It shows the instructrions to disable the Internet connection and after that it installs and launches Vortex just fine.
Add the Steam library under
Settings => Games => Add Search Directory
and enter the path based on / (root) as
/home/coder/.local/share/Steam/steamapps/common,
then do a full scan (Games => Scan => Scan:Full)
and that should show all your (installed) Steam games.
Add Skyrim Special Edition with the + sign on its
thumbnail, then go to MODS section and drop a file
in the Drop File(s) are to install mods manually.
Warning
DO NOT use the "SSE Engine Fixes" mod, it will mess up your audio.
SKSE
The Skyrim Script Extender (SKSE)
is a tool used by many Skyrim mods that expands scripting
capabilities and adds additional functionality to the game.
Once installed, no additional steps are needed to launch
Skyrim with SKSE's added functionality. You can start the
game using SKSE from skse64_loader.exe.
Using Vortex (failed)
Download the version
Compatible with Skyrim Special Edition 1.6.640 from Steam Skyrim Script Extender (SKSE64)-30379-2-2-3-1665515370.7z
and drop the file into Vortex, then click Install.
The whole Vortex window, or possibly a new, goes white and does nothing. After a while, it tries to go full screen, and still does nothing. No new files are installed.
Manual install (ok)
Extract and copy all SKSE files and folders to the Skyrim SE game folder, then rename executables:
$ 7z x Skyrim\ Script\ Extender\ \(SKSE64\)-30379-2-2-3-1665515370.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs AMD Ryzen 7 5800X 8-Core Processor (A20F12),ASM,AES-NI)
Scanning the drive for archives:
1 file, 748635 bytes (732 KiB)
Extracting archive: Skyrim Script Extender (SKSE64)-30379-2-2-3-1665515370.7z
--
Path = Skyrim Script Extender (SKSE64)-30379-2-2-3-1665515370.7z
Type = 7z
Physical Size = 748635
Headers Size = 7306
Method = LZMA:5m BCJ2
Solid = +
Blocks = 2
Everything is Ok
Folders: 15
Files: 536
Size: 4282404
Compressed: 748635
$ cp -a \
skse64_2_02_03/skse64_* \
~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition/
$ cp -a \
skse64_2_02_03/Data/Scripts/ \
~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition/Data/
At this point there are 2 ways to launch Skyrim using the SKSE loader. This Proton report recommends these launch options to launch SKSE without having to rename executables (which seems to break some mods):
$(echo %command% | sed -r "s/proton waitforexitandrun .*/proton waitforexitandrun/") "$STEAM_COMPAT_INSTALL_PATH/skse64_loader.exe"
However, these launch options require a custom proton version.
Also, in order to use the very desirable Sky UI mod, it is highly recommended to use Glorious Eggroll instead of the standard Proton release.
The simpler alterantive si to simply rename files:
Glorious Eggroll
Install Glorious Eggroll using the Manual method for Native Steam:
# make temp working directory
mkdir /tmp/proton-ge-custom
cd /tmp/proton-ge-custom
# download tarball
curl -sLOJ "$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .tar.gz)"
# download checksum
curl -sLOJ "$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .sha512sum)"
# check tarball with checksum
sha512sum -c ./*.sha512sum
# if result is ok, continue
# make steam directory if it does not exist
mkdir -p ~/.steam/root/compatibilitytools.d
# extract proton tarball to steam directory
tar -xf GE-Proton*.tar.gz \
-C ~/.steam/root/compatibilitytools.d/
Sky UI
Download the updated UI mod Sky_UI and install it manually (simple):
$ 7z x SkyUI_5_2_SE-12604-5-2SE.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs AMD Ryzen 7 5800X 8-Core Processor (A20F12),ASM,AES-NI)
Scanning the drive for archives:
1 file, 2783417 bytes (2719 KiB)
Extracting archive: SkyUI_5_2_SE-12604-5-2SE.7z
--
Path = SkyUI_5_2_SE-12604-5-2SE.7z
Type = 7z
Physical Size = 2783417
Headers Size = 300
Method = LZMA2:3m
Solid = +
Blocks = 1
Everything is Ok
Folders: 1
Files: 6
Size: 2931171
Compressed: 2783417
$ cp -a SkyUI_* \
~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition/Data/
At this point it becomes clear, not only from the game UI but also from every single forum thread, that a Bethesda.net account is required to even load mods in this game.
Sky UI keeps auto-disabling
I seem to keep running into
an old issue
where SkyUI_SE.esp disables itself automatically because it
has no masters listed, it's a bug with Skyrim Special Edition.
Adding Skyrim.esm as a master to the file will fix it, and
to do this you have to use
xEdit.
$ 7z x TES5Edit\ 4.0.4-25859-4-0-4-1636548544.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs AMD Ryzen 7 5800X 8-Core Processor (A20F12),ASM,AES-NI)
Scanning the drive for archives:
1 file, 14361776 bytes (14 MiB)
Extracting archive: TES5Edit 4.0.4-25859-4-0-4-1636548544.7z
--
Path = TES5Edit 4.0.4-25859-4-0-4-1636548544.7z
Type = 7z
Physical Size = 14361776
Headers Size = 4031
Method = LZMA2:27 LZMA:20 BCJ2
Solid = +
Blocks = 2
Everything is Ok
Folders: 3
Files: 180
Size: 112996891
Compressed: 14361776
$ cp -a TES5Edit\ 4.0.4 \
~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition/TES5Edit
$ cd ~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition
$ WINEARCH=win64 WINEPREFIX=$HOME/.local/share/Steam/steamapps/compatdata/489830/pfx wine \
TES5Edit/TES5Edit.exe \
-AllowMasterFilesEdit \
-IKnowWhatImDoing \
Data/SkyUI_SE.esp
This seems to fail, starts by showing an error message saying
Fatal: Could not open registry key: \SOFTWARE\Bethesda Softworks\Skyrim This can happen after Steam updates, run the game's launcher to restore registry settings
This keeps happening even right after launching the game from Steam. The UI does not show any hint of actually opening the file, not even the expected first-time warning.
Ultrawide UI
Complete Widescreen Fix for Vanilla and SkyUI 2.2 and 5.2 SE
$ unrar x Complete\ Widescreen\ Fix\ for\ SkyUI\ 5.2\ SE\ Alpha\ -\ 2560x1080-1778-2-0.rar
UNRAR 6.11 beta 1 freeware Copyright (c) 1993-2022 Alexander Roshal
Extracting from Complete Widescreen Fix for SkyUI 5.2 SE Alpha - 2560x1080-1778-2-0.rar
Creating interface OK
Extracting interface/bartermenu.swf OK
Extracting interface/containermenu.swf OK
Extracting interface/craftingmenu.swf OK
Extracting interface/dialoguemenu.swf OK
Extracting interface/giftmenu.swf OK
Extracting interface/inventorymenu.swf OK
Extracting interface/lockpickingmenu.swf OK
Extracting interface/magicmenu.swf OK
Extracting interface/map.swf OK
Extracting interface/messagebox.swf OK
Extracting interface/quest_journal.swf OK
Creating interface/skyui OK
Extracting interface/skyui/bottombar.swf OK
Extracting interface/skyui/configpanel.swf OK
Extracting interface/sleepwaitmenu.swf OK
Extracting interface/statsmenu.swf OK
Extracting interface/trainingmenu.swf OK
Extracting interface/tweenmenu.swf OK
Extracting widescreen_skyui_fix.esp OK
Extracting widescreen_skyui_fix.ini OK
Creating interface/exported OK
Extracting interface/exported/racesex_menu.gfx OK
All OK
$ cp -a interface \
~/.local/share/Steam/steamapps/common/Skyrim\ Special\ Edition/Data/
Then edit SkyrimPrefs.ini to change screen resolution.
At this point it becomes clear, not only is theoretically bad that a Bethesda.net account is required to even load mods, it is actually terrible in practice when 10 out of 10 times trying to load mods all you get is the infamous Couldn’t connect to the Bethesda.net servers error.
accounts.bethesda.net/en/linked-accounts shows the Steam account is linked, yet the error persists and there is nothing you can do but wait... forever?
The Elder Scrolls V: Skyrim (original)
The Elder Scrolls V: Skyrim original game is no longer available in Steam, and it can't even be launched by its game id:
This leads to a "No licenses" error pop-up and, maybe worse yet, Steam starts to check the game and re-download all or part of it. At least, it doesn't seem to have deleted mods.
Mod Manager
One recommendation to get modding with this game is to
Install mods using MO2 through steam tinker launch and make your skse data folder into a mod and install through MO2. Also having skse installed first will help it get auto detected by MO2.