The Elder Scrolls IV: Oblivion Remastered
Oblivion Remastered is a hybrid: an Unreal Engine 5 presentation layer wrapped
around the original Gamebryo simulation. modde models that split directly — the
plugin recognises both the UE pak ~mods layout (.pak / .ucas / .utoc)
and Bethesda-style .esp / .esm plugins, and its scanner walks both the
UE pak directory and a Data/ plugin tree. The game id is oblivion-remastered.
Overall status:
Partial. Deployment, scanning, conflict classification, Wine DLL-override detection, and save tracking all work, and the title is wired into the install pipeline (Steam/Heroic detection, Nexus, Wabbajack). What keeps it short ofDoneis the same ceiling as the other UE titles: no bespoke load-order editor for the ESP/ESM side, no pak-internal asset conflict resolution (conflicts are classified by filename, not by archive contents), and the install-method coverage is narrower than the mature Creation Engine games. See Supported games for the status baseline and Parity for the MO2/Vortex/Wabbajack comparison.
Engine and registration
| Field | Value |
|---|---|
| Display name | The Elder Scrolls IV: Oblivion Remastered |
| Game id | oblivion-remastered |
| Engine family | Unreal4 (UE5 layout; shares modde’s UE pak handling) |
| Project folder | OblivionRemastered/ (under the install root) |
| Steam App ID | 2623190 |
| Steam install dir | Oblivion Remastered |
| Heroic (GOG/Epic) | not registered |
| Nexus domain | oblivionremastered |
| Wabbajack name | OblivionRemastered → oblivion-remastered |
| Save profiles | enabled |
| Plugin system | yes (ESP/ESM are recognised alongside paks) |
The plugin is its own GamePlugin implementation rather than a plain instance
of the shared UE4 game type — that is what lets it carry the Bethesda plugin
extensions, the Gamebryo-style save layout, and the blended content policy.
Install detection
modde finds the install through the launcher integration, keyed on the Steam
App ID 2623190 (Steam install dir Oblivion Remastered). There is no
registered Heroic/GOG/Epic mapping, so detection is Steam-first; a manually
specified install path also works for non-Steam copies.
On Linux and macOS the game runs through Proton/Wine, so modde resolves the prefix-rooted paths (saves, and the Wine DLL overrides described below) under the Steam compat data tree (on Windows these are native paths, no prefix involved):
<steam>/steamapps/compatdata/2623190/pfx/drive_c/...
If you have never launched the game, that prefix will not exist yet. modde’s prefix-dependent lookups return “not found” in that case — launch the game once through Steam/Proton so Proton creates the prefix, then re-run.
Mod directory and deploy strategy
The deploy root for pak-style mods is the UE ~mods directory under the
project’s Content/Paks:
<install>/OblivionRemastered/Content/Paks/~mods
The leading tilde is load-bearing: UE’s pak mounter sorts ~mods after the
shipping paks, so mod paks override base content. modde deploys mods here the
same way it deploys for every other game — a profile’s enabled mods are linked
into the live game tree, and switching profiles re-links the set. Plugin-style
content (.esp / .esm) belongs in the game’s Data/ tree, which the scanner
also walks (see below).
What scanning finds
The scanner inspects two locations:
Content/Paks/~mods # UE pak mods
Data # Bethesda-style plugins
- Pak mods are discovered by grouping files that share a stem across the
.pak/.ucas/.utocextensions into a single mod (so a.pakand its sidecar.ucas/.utoccount as one mod, not three). These come from thepaks-modssource location at confidence0.9, with mod ids prefixedpak/. - Plugins are discovered as one mod per top-level
.espfile directly inData/(source locationData, confidence0.8, mod ids prefixedplugin/). No prefixes are ignored, so master files are listed too.
Each discovered mod also has a footprint used for matching against a known mod:
| Mod id form | Footprint path |
|---|---|
pak/<stem> | oblivionremastered/content/paks/~mods/<stem>.pak |
plugin/<stem> | data/<stem>.esp |
Conflict classification
Oblivion Remastered uses modde’s pak collision classifier (archive
extensions pak / ucas / utoc, default severity table). When two enabled
mods write the same relative path, the severity is decided by file type:
| Extension(s) | Severity |
|---|---|
esp, esm, dll, lua, ws | Dangerous |
pak, ucas, utoc (as archive members) | Dangerous |
ini, json, xml | Config |
dds, png, jpg, tga, nif | Cosmetic |
Conflicts are detected by overlapping deployed paths, not by cracking open pak archives — two paks that touch different in-game assets but never collide on a file path are not flagged. Texture/mesh collisions are reported but treated as cosmetic (last-writer-wins is usually fine); plugin and pak collisions are flagged as dangerous because they can change game logic or load behaviour. See Conflict detection for how severities drive the UI and resolution.
Save-breaking classification
Separately from path collisions, modde classifies each mod’s content to decide whether enabling or disabling it should invalidate save compatibility. For Oblivion Remastered:
- Save-breaking extensions:
esp,esm,pak,ucas,utoc,dll,lua - Save-breaking directories:
plugins,logicmods - Cosmetic extensions:
dds,png,jpg,tga,nif
This classification feeds the save-fingerprint logic below: only save-breaking mods contribute to the fingerprint, so swapping a texture pack will not trigger a false “incompatible save” warning, while toggling a plugin or a logic pak will.
Save tracking
Saves live under the Proton prefix, in the remastered Documents tree:
<steam>/steamapps/compatdata/2623190/pfx/drive_c/users/steamuser/Documents/My Games/Oblivion Remastered/Saves
The save tracker is non-recursive over that directory and matches two
extensions, .ess and .sav, excluding *.bak. Every match is filed under
the manual category and labelled by its relative filename. What the tracker
records per save is its path, category, label, and last-modified time — it does
not hash individual save files.
Save fingerprinting happens at the vault layer, and it fingerprints your mod set, not the save bytes: modde computes a SHA-256 over the sorted list of enabled save-breaking mods (per the classification above) and embeds it as a git commit trailer in each snapshot:
Mod-Fingerprint: a1b2c3d4e5f6
Save-Breaking-Mods: pak/some-overhaul, plugin/somequest
On restore, modde compares the snapshot’s fingerprint to your current profile and warns if save-breaking mods were added or removed since that save was taken. Oblivion Remastered opts into per-profile save layering, so each profile gets its own branch in the git-backed vault and profile switches capture/restore automatically. See Save management for the full vault, fingerprint, and restore workflow.
Plugins and load order
modde recognises the ESP/ESM plugin system (it is reported as a plugin-capable
game) and scans Data/ for plugins, so plugin mods are discovered, classified
as save-breaking, and conflict-checked by path. There is no dedicated
load-order editor for the Bethesda side of this title in modde today — load
order for plugins is managed by the game/community tooling you already use, and
pak ordering is governed by UE’s ~mods mounting. Treat plugin ordering as
out-of-band for now.
Installer specifics
When you add a downloaded archive, modde’s analyzer picks the layout:
| Archive shape | Detected method |
|---|---|
.pak / .ucas / .utoc files at the archive root | SingleFileSet — files stage straight into the resolved mod root |
A top-level Data/ directory | StripContentRoot { root: "Data" } — the Data/ wrapper is stripped before staging |
modde also recognises a bare archive layout for this game: an archive whose
root contains any of the directories data, mods, content, paks, or
~mods (matched case-insensitively), or root files with the extensions esp,
esm, pak, ucas, or utoc. That recognition lets it accept the loosely
packed archives common on Nexus for this title without a wrapper directory.
FOMOD installers are handled by modde’s generic FOMOD pipeline when an archive
ships a fomod/ModuleConfig.xml; that path is engine-agnostic and not specific
to this game. There is no REDmod or SMAPI path here — those belong to Cyberpunk
2077 and Stardew Valley respectively. See FOMOD installers
and the installer pipeline for the staging and
uninstall model.
Gaming tools that matter here
Mod loaders, ReShade/ENB-style injectors, and upscalers for this title ship as proxy DLLs dropped next to the shipping executable in:
<install>/OblivionRemastered/Binaries/Win64
modde detects which proxy DLLs are present from this set and surfaces them as Wine DLL overrides (see below):
dwmapi xinput1_3 d3d11 dxgi version winmm
That covers the usual suspects — generic ASI/loader proxies (version,
winmm), UE-loader proxies (dwmapi, xinput1_3), and the graphics-swapper
slots (d3d11, dxgi) used by ReShade and DLSS/FSR swappers such as
OptiScaler.
This game does not ship a curated OptiScaler profile in modde (unlike Stellar
Blade), so OptiScaler is installed and tuned manually as a dxgi/d3d11 proxy.
The named-executable and proxy-DLL machinery is fully supported regardless — see
Tools and executables for adding a launcher executable
with arguments, working dir, env, and DLL overrides, and capturing its output.
Linux and Proton notes
These notes cover the game’s runtime on Linux and macOS, where Oblivion
Remastered runs through Proton/Wine. On Windows the game runs natively — there is
no Wine prefix or WINEDLLOVERRIDES, the save directory is its native Windows
location, and proxy DLLs load directly. modde itself runs natively on all three
platforms.
- Run the game once first. The save directory and the proxy-DLL overrides
are resolved relative to the Proton prefix at
compatdata/2623190/pfx. If you have not launched the game, that prefix does not exist and prefix-rooted lookups will report “not found”. - DLL overrides are automatic from what is present. modde builds
WINEDLLOVERRIDESfrom the proxy DLLs it finds inBinaries/Win64(or in a mod’s staging dir), so Wine loads the native (mod) DLL instead of its built-in stub. You do not hand-write the override string. ~modsordering is a UE convention, not a modde trick. If a pak mod is not taking effect, confirm it landed inContent/Paks/~modsand not loose inContent/Paks.- Texture/mesh collisions are last-writer-wins. They are reported as cosmetic; if a visual mod loses to another, adjust which one deploys, since modde does not merge pak contents.
Worked example
CLI
# Detect installs and confirm the game is found
modde game list
# Install a Nexus pak mod by URL (domain resolves to oblivion-remastered)
modde mod install "https://www.nexusmods.com/oblivionremastered/mods/1234"
# Scan the live install for already-present mods (paks + Data plugins)
modde mod scan --game oblivion-remastered
# Inspect conflicts for the active profile
modde conflicts --game oblivion-remastered
# Adopt existing saves into a profile, then capture
modde save adopt --game oblivion-remastered --profile main
modde save capture --game oblivion-remastered --profile main -m "fresh start"
# Add OptiScaler (or any injector) as a dxgi proxy executable launcher
modde tool add-executable \
--game oblivion-remastered \
--name "Oblivion Remastered (modded)" \
--working-dir "OblivionRemastered/Binaries/Win64"
modde exec --game oblivion-remastered "Oblivion Remastered (modded)"
home-manager profile snippet
A minimal modde profile for this title via the home-manager module:
{
programs.modde = {
enable = true;
profiles.oblivion-remastered = {
game = "oblivion-remastered";
mods = [
# Nexus URLs or local archive paths; paks land in
# OblivionRemastered/Content/Paks/~mods, plugins in Data/.
"https://www.nexusmods.com/oblivionremastered/mods/1234"
];
};
};
}
modde installs the same way for every game — through your platform’s native package manager, a direct download, Cargo, or, if you use Nix, the flake and its home-manager module. The home-manager module additionally lets you declare this profile as code. See Installation for the full set of install channels.
See also
- Supported games
- Oblivion (the Gamebryo original) and the sibling UE titles in the per-game list
- Conflict detection
- Save management
- Deployment and the installer pipeline
- FOMOD installers
- Tools and executables
- Scanning
- Parity reference