This article summarises some basic knowledge about plugins.
Mods (and the game data of the vanilla game) consists of two basic file types: Plugins and assets.
Plugins with the extensions .esm, .esp, or .esl are a file type specific to the Creation Engine.* They can be created, viewed, and modified in the official Creation Kit and the community tool SSEEdit.
**All of Bethesda Game Studios’ games and Obsidian’s Fallout New Vegas are developed in the Creation Engine.*
Plugins populate the load order. Managing the load order and editing plugins for compatibility and consistency with each other is a major part of building a modded setup.
Plugins contain game data in the form of records. Each plugin can contain hundreds and thousands of records which are split up into a variety of categories. All vanilla records are defined in the five official master files:
Alvor is the blacksmith from Riverwood whom you meet after completing the prologue. Since this NPC (Non-Player Character) was part of the vanilla game, he is defined in Skyrim.esm.
His NPC record defines Alvor’s name, his appearance, voice, race, faction membership, inventory contents, outfit, and much more. Below, you can see the top of Alvor’s NPC record when viewed in SSEEdit.
Every record can be identified by its unique Form ID. Form IDs consist of 8 hexadecimal numbers (1-9 and A-F). The first two characters are the Index which changes depending on load order position while the remaining six characters are unique to the record.
Example: The Form ID for Alvor’s NPC record is 00013475
.
Skyrim.esm always loads first so its Index stays 00
and it is always followed by Update.esm with the index 01
. In the Skyrim LE days, it was possible to only one some of the DLC, so the Index of the remaining master files depended on which you owned.
If you only owned the Dragonborn DLC, this would be your load order:
In Skyrim SE, which contains all DLC, this is your load order:
The two-character Index creates an important limitation: The load order cannot exceed 256 ESM and ESP plugins.
The load order limit can be circumvented in two ways:
Since ESL plugins were added in Skyrim SE, merging has become largely redundant. ESLs will be discussed extensively further down on this page.
SSEEdit visualises plugins as layers which makes it easy to understand interaction between plugins. Each plugin contains one version of a record (either the original or a copy) which is equal to one layer.
Below, you can see a record that is defined in Skyrim.esm and modified in Update.esm:
The game only reads the final overwriting version of each record.
Both Skyrim.esm and Update.esm modify the same record, but only the layer from Update.esm will be loaded into the game because it is loaded last. Any previous layers will be completely ignored.
Because plugins overwrite each other according to the order they are loaded in and only one plugin can modify a record, it is important to ensure that the correct plugin is placed last.
The correct load order is crucial for mods to function as intended.
A conflict occurs when multiple plugins modify the same record in different ways. While SSEEdit will visualise conflicts in alarming shades of red and orange, not all conflicts are actually harmful. In fact, most conflicts are fully intentional and indeed unavoidable.
Below, you can see a perfectly harmless critical conflict arising from the fact that both Dawnguard.esm and HearthFires.esm modified the same Skyrim.esm record in different ways:
When two or more plugins make different modifications to the same record and you wish to keep (some) changes from all of them, you need to create a new patch. This means consolidating all desired changes in one final layer.
Master | Plugin A | Plugin B | Patch |
---|---|---|---|
Edit 1 | Edit 1 | ||
Edit 3 | Edit 3 | ||
Edit 4 | Edit 4 | ||
Original | Original | Original | Original |
This is why both load order and patches are required for building a functional setup.
When a plugin modifies a record defined in another plugin, a dependency is created.
Take our earlier example, Alvor: Any mod that changes his NPC record requires Skyrim.esm as a master because that is where the record originates. If Skyrim.esm were not present, this would create a missing master error which can create various problems, including crashes.
All plugins must have their master files loaded at all times.
There are three different types of plugins:
The plugin type is defined by:
You can view Plugin Flags in SSEEdit:
Hybrid plugins can be created by mixing plugin flags and file extensions:
The five official master files as well as any present Creation Club plugins are hard-coded to always load at the top of the load order. They are followed by ESMs and ESPs.
ESM
ESM-flagged ESP
ESM-flagged ESL
ESL
ESP
ESL-flagged ESP