This module covers the Skyrim Script Extender, including the importance of Skyrim versions as well as the installation of SKSE with Root Builder and of related mods.
Prerequisite(s): Mod Organizer 2, Root Builder
If you have any previous modding experience at all, you will likely have heard of the Skyrim Script Extender, or SKSE for short. Of all the mods and tools out there, the Script Extender is definitely among the most vital ones: It extends the scripting capabilities of the engine, allowing mod authors to implement features that would not have been possible otherwise.
A popular example of an SKSE-dependent feature is the Mod Configuration Menu, or MCM for short, which is part of the UI overhaul mod SkyUI. There are also a multitude of SKSE-based plugins which, among other things, fix engine-level bugs that could not have been addressed otherwise.
All updates to Skyrim SE change the main executable, SkyrimSE.exe, which requires the Script Extender to be updated in turn because it is version-dependent and will only work with the specific version of Skyrim SE it was compiled for. For example, SKSE SE version 2.0.20 functions only with the last pre-Anniversary Edition version of Skyrim SE, 1.5.97. The new SKSE AE was made for the post-AE versions of Skyrim SE.
Whenever Skyrim updates, the modding community tends to catch up within a few weeks to months. Staying indefinitely on an older version will eventually mean that you cannot use newer mods or update existing mods. Therefore it makes sense to move on to the current version once all (or at least most) of the mods in your setup have been updated.
(Full Skyrim SE version history with changelogs.)
The issue of version dependency not only affects SKSE and the base game, but also SKSE and SKSE plugins. While some SKSE-dependent mods only use functions added by SKSE in their scripts and do not require a specific version of SKSE to actually work, there are also the so-called SKSE plugins*. These files with the .DLL extension are dependent on a specific SKSE version the same way SKSE is dependent on a specific Skyrim SE version.
**SKSE plugins (DLLs) are not to be confused with Skyrim plugins (ESMs, ESPs, ESLs). The former are written in C or C++ and specific to the Script Extender. The latter are created in the Creation Kit or community-made tools, and specific to Creation Engine games.*
Before we install SKSE, we need to know which version of the game we are running by performing a Skyrim Version Check.
Please also follow the instructions for Update Proofing Skyrim.
Once we figure out which version of Skyrim we have installed, we know which version of SKSE to grab. The Script Extender is available on its official website and on the Nexus.
The current version of SKSE for AE, build 2.x.x, should correlate with the current Skyrim SE version, runtime 1.6.xxx.
SKSE is an unusual mod in that it consists of both root folder files and data folder files. We will use the Root Builder plugin in order to manage all parts of the mod in Mod Organizer 2.
For the next batch of mods, we will want a new separator:
To manage SKSE through MO2, we first need a new mod folder.
\Mod Organizer 2\mods\<Mod Name>\Root\
into the root folder when launching an application through Mod Organizer 2 and removes them after the application is closed again.\Mod Organizer 2\mods\Skyrim Script Extender\Root\
.***There used to be a third DLL, skse64_steam_loader.dll, that was part of SKSE but is no longer required as of SKSE 2.2.3.*
Back in Mod Organizer 2, the new Skyrim Script Extender mod will be greyed out because MO2 does not recognise the Root folder as a valid mod directory. This is just a UI limitation and nothing to worry about.
A minor disadvantage of adding SKSE in this fashion is that MO2 will not automatically recognise it. We need to set up the executable manually.
\Mod Organizer 2\mods\Skyrim Script Extender\Root\
and double-click the skse64_loader.exe.Going back to the downloaded SKSE archive, you will notice two folders inside: Data and src. The latter is short for “source”, meaning it contains the source code for mod authors which we do not need.
The Data folder contains scripts which are a required component of SKSE. Those scripts are regular assets belonging into the data folder and can therefore be handled by Mod Organizer 2 as usual. We can add them to the existing Skyrim Script Extender mod folder.
\Mod Organizer 2\mods\Skyrim Script Extender\
.When you now launch SKSE through Mod Organizer 2, the executable and two DLLs will be temporarily copied into the actual root folder by the Root Builder plugin.
Meanwhile, the scripts will be loaded in MO2’s virtual data folder and recognised by the game just as if you had installed them directly into the actual data folder. Unchecking the mod in MO2 is sufficient to completely disable it.
Two of SKSE’s features need to be enabled in an INI file:
iTintTextureResolution allows you to adjust the texture resolution of tint masks. By default, Skyrim’s tint masks (this includes war paints, make-up, or dirt masks applied to faces) can only have a resolution of 512 x 512 pixels which can look very blurry. Even if you install 2048 x 2048 pixel (2K) retextures, they will look like 512 x 512 in-game.
ClearInvalidRegistrations is intended to clean up orphaned OnUpdate() events and prevent saves from bloating or breaking as a result of uninstalling certain mods.
The SKSE INI must be located under \Data\SKSE\SKSE.ini
. We can use Mod Organizer 2 and create it from scratch.
Next, we need to populate our new INI file.
\SKSE\SKSE.ini
file.[Display]
iTintTextureResolution=2048
[General]
ClearInvalidRegistrations=1
Beyond the two settings that we added, there are other options that are largely relics of the SLE days.
One allows you to adjust memory allocation, but while memory was a real issue in Skyrim LE, the 64bit engine upgrade in Skyrim SE all but solved the problem. The settings were very recently enabled in SKSE for SE; however, most people use the memory manager from SSE Engine Fixes instead (another mod, to be installed soon).
[Memory]
DefaultHeapInitialAllocMB=
ScrapHeapSizeMB=
There is also an option to enable diagnostics. I am not entirely certain if this is valid in SKSE for SE to begin with (the changelog makes no mention of it), but it would be irrelevant anyway. What it logs are missing master files and missing plugins in a save. You will be able to see the former in Mod Organizer 2 and the latter upon attempting to load a save after disabling plugins that it relies on.
[General]
EnableDiagnostics=1
To alleviate the problem of SKSE and SKSE plugins breaking with every Skyrim update, meh321 (the author of a number of groundbreaking mods) released Address Library for SKSE. This modder’s resource allows SKSE plugins to become version independent from SKSE by storing their offsets in a separate database.
Finally, we should give SKSE a test run.
SKSE only functions properly if Skyrim SE is launched via skse_loader.exe.
Also remember that the game must always be launched via Mod Organizer 2 in order for it to recognise the virtual data folder.
Instead of opening the launcher, running the game through SKSE will bring you into the main menu directly.
Once you are in the main menu, open the console, a dev tool that will become quite handy, particularly for troubleshooting. You can bring it up by pressing the tilde key (location marked in blue below, in case you have trouble finding it):