Engine Fixes for Skyrim Special Edition

Installation

Install the Part 1 zip as you would any SKSE plugin, be that through your mod manager or directly to your data folder.

Install the Part 2 zip by extracting it to your Skyrim SE folder (the three dlls should be alongside SkyrimSE.exe, etc)

If you prefer SSE Fixes' version of the same fixes to this one, you can install them together and Engine Fixes will automatically disable its conflicting patches :)



INI Settings/Configuration

EngineFixes

VerboseLogging (default: false) - Enables more verbose logging in the log file.

CleanSKSECosaves (default: true) - Deletes SKSE cosaves with no matching save on launch.

Patches

DisableChargenPrecache (default: false) - "Precache Killer" function, duplicated from RaceMenu.

EnableAchievementsWIthMods (default: true) - Enables achievements when you have mods installed.

FormCaching (default: true) - Caches recently accessed forms. Similar to SSE Fixes.

MaxStdio (default: true) - Raises max file handle limit from 512 to 2048, which should fix "False Save Corruption" bug in most cases.

RegularQuicksaves (default: false) - Makes quick saves use the regular save handler.

SaveAddedSoundCategories (default: true) - Saves volume settings for mod-added sound categories to a separate ini file. This functionality is the same as Audio Overhaul for Skyrim SE's dll, but they will not conflict.

ScrollingDoesntSwitchPOV (default: false) - Makes it so using your scroll wheel won't swap between 1st/3rd person. See LE mod here﻿

SleepWaitTime (default: false) - Lets you change the time it takes to sleep or wait. See LE mod here﻿

SleepWaitTimeModifier (default: 0.3) - The in-game default time is 1.0; smaller values speed up the sleep/wait time, higher values slow it down

TreeLODReferenceCaching (default: true) - Requires FormCaching. Fixes the very slow Tree LOD function that causes framerate drops most noticeable in Riften. Similar to SSE Fixes.

WaterflowAnimation (default: true) - Decouples water flow animation from in-game timescale, so that decreasing/increasing your timescale doesnt mess with the water animation speed.

WaterflowSpeed (default: 20.0) - Sets the waterflow speed for the animation patch. The default of 20 is equal to the default timescale, and is probably OK unless you want the water to appear slower/faster for some reason.

Fixes

ArcheryDownwardAiming (default: true) - Fix a bug where projectiles sometimes don't fire properly if you're aiming downward. Ported from Cobb's LE fix (see here)

AnimationLoadSignedCrash (default: true) - Fix an improper unsigned/signed conversion. Should allow loading more animations before a CTD. If you use Animation Limit Crash Fix SSE I suggest disabling this to use that mod's fix instead.

BethesdaNetCrash (default: true) - Fixes a crash on startup caused by improper handling of non-ASCII characters in Bethesda.net HTTP response headers.

BSLightingAmbientSpecular (default: true) - Fixes a bug where lighting template Directional Ambient Specular & Fresnel Power are broken

BSLightingShaderForceAlphaTest (default: true) - Forces alpha testing in the lighting shader. Fixes object LOD reflections on water.

BSLightingShaderParallaxBug (default: true) - Fixes a bug with parallax lighting shaders

CalendarSkipping (default: true) - Fixes the bug listed under Notes on this page

DoublePerkApply (default: true) - Fixes a bug where NPCs in the player's cell will have their perk effects applied twice on game load

EquipShoutEventSpam (default: true) - Fixes a bug where the 'Equip Shout' script would fire a shout equipped event even if the equip failed.

GetKeywordItemCount (default: false) - Fixes the condition function "GetKeywordItemCount" returning incorrect values in some situations.

GHeapLeakDetectionCrash (default: true) - Fixes a crash where scaleform attempts to report a memory leak but the code doesnt exist in Skyrim

LipSync (default: true) - Fixes the lip sync bug, same as LE bug fixes.

MemoryAccessErrors (default: true) - Fixes a handful of out-of-bounds or use-after-free bugs. Required for experimental memory patches.

MO5STypo (default: true) - Fixes a typo in the ARMA (Armor Addon) form loader preventing 1st person female alternate texture sets from being loaded.

PerkFragmentIsRunning (default: true) - See Misc Fixes SSE's readme﻿ for details.

RemovedSpellBook (default: true) - See Misc Fixes SSE's readme﻿ for details.

SaveScreenshots (default: true) - Fixes save game screenshots being blank when TAA is disabled.

SlowTimeCameraMovement (default: true) - Fixes camera movement being slow during slow time effects.

TreeReflections (default: true) - Fixes tree LOD reflections. No conflict with ENB.

UnequipAllCrash (default: true) - Fixes a crash when invoking "Actor.UnequipAll" on an actor without an AI process.

VerticalLookSensitivity (default: true) - Makes vertical look sensitivity not tied to framerate.

WeaponBlockScaling (default: true) - Fixes weapon blocking so it correctly scales off of the blocking actor's weapon.

Warnings

DupeAddonNodes (default: true)

RefHandleLimit (default: true)

RefrMainMenuLimit (default: 800000)

RefrLoadGameLimit (default: 1000000)

Experimental

CellInit (default: true) - Fixes a rare crash where a form does not get converted from an id to a pointer.

MemoryManager (default: false) - Disables built-in memory manager for the game's largest heaps. This is the famous "Use OS Allocators" patch

from LE. UseTBBMalloc (default: true) - If you enable the memory manager patch, this will also replace standard malloc with tbbmalloc. This does nothing if the memory manager patch is disabled.

SaveGameMaxSize (default: false) - Expands maximum save game size from 64 MB (uncompressed) to 128 MB. If you have a long playthrough and your game starts crashing when you try to save, this might fix it. Marked experimental because I can't test it myself, but is most likely safe.

Credits

Source & Contributing

A WIP skse64 plugin for Skyrim Special Edition to fix bugs and patch issues.The majority of current work on this plugin (5.0+) is being done by Ryan, who deserves more credit than you can imagine :^)﻿The "_preload.txt" file is required to be in the directory if you want to use the memory manager patch, so if your Mod Manager warns you about it, make sure it gets added.For configuration see the INI Settings below. The defaults should be stable for all users.ADDN (Addon Node) forms have a node index that must be unique across your entire load order. A warning box will pop up if you have a conflict in your load order, and the conflicting mods will be logged to your Engine Fixes log file. To resolve this, you need to contact the mod author(s) whose mods have conflicts, and one of them will have to change which node index they are using. Please be courteous :)For detailed information on this engine limitation, see my reddit post ﻿.This will pop up a warning box if your reference handle limit is above the configured warning levels at your main menu and whenever you load a save game.Over the course of a 100+ hour game session, it is easily possible to build a large reference count in your save game, so the Main Menu limit is by default configured to 800k, which is 250k~ below the actual limit. If you don't intend to play long saves you can probably safely raise this warning limit.The load game limit is set to 1 million (48k below the limit). If your save game is getting dangerously close to the limit it is possible to reduce the references stored in it using ReSaver ﻿, but keep in mind this can cause things in your game world to disappear/respawn depending on your choices.Currently, the only solution to this issue is to either remove non-master plugins with large reference counts from your load order, or turn them into master plugins.Nukem - more stuff than I can mentionSniffleman/Ryan - Misc Fixes + CommonLibSSEmeh321 - research into tree LOD function (SSE fixes), bugfixes LE & port permissionssheson - skse plugin preloader for LE alongside mehhimika - scatter table implementation from libskyrim (LE), plus tons of research function/variable nameskassent - useful information from the source code of various skse pluginsKole6738 - cosave cleaner idea+codeLStewieAL - Things ported from here Source is available on Github ﻿. While I intend to look into some other known bugs, no promises. If you feel like tracking down a bug and theorizing a fix or even implementing one yourself, feel free to contribute; I'm willing to maintain it for future game updates.Preloader can be found here ﻿.tbb.dll and tbbmalloc.dll are Intel's Threaded Building Blocks ﻿ library.