v0.12.0
me3 v0.12.0
Windows Installation
Download the me3_installer.exe setup wizard.
Already have me3 installed? Update to the latest version by opening the run prompt (Ctrl + R) and running me3 update.
Linux Installation
curl --proto '=https' --tlsv1.2 -sSfL https://github.com/garyttierney/me3/releases/download/v0.12.0/installer.sh | shme3 - v0.12.0 - 2026-07-18
π Features
-
6593712 (host) Allow for user provided heap sizes in MB in #828
-
1c8d699 (host) Allow deferring after game props init
-
294e7ce (host-types) Add DLRF types and analysis
-
4facce8 (linux) Add Proton launch verb override via env variable in #810
Allows overriding the Proton launch verb to allow the game
to start alongside any existing tools that are already running
in the games own Proton prefix. -
dc25769 (linux) Add support for Proton 11 in #764
Fixes #763
-
5bc7c66 Forward extra arguments to game process in #836
Any arguments specified in me3 launch after the trailing
--will be
passed to the game during launch.Fixes #769
-
cfb4e35 Allow disabling console output in #837
Fixes #648
-
50dd1f2 Cli/profile prop overrides in #822
Allows specifying debug game property overrides from the cli/profiles.
-
73d83a4 Allow overriding properties via cli/profiles
π Bug Fixes
-
e4be580 (cli) Use normalize_virtually for pipe path on windows in #761
Fixes reaching an unimplemented function in Wine when running the
Windows binary of me3-cli under WINE. -
4365f37 (deps) Don't eliminate debug tracing events
-
2e39640 (host) Improve mem_patch stability
-
f95d8c6 (host) Use correct signature for Fd4StepFunction in #817
The incorrect signature led to the second parameter potentially being
cloberred by an arbitrary value from a hook routine, leading to crashes
or other undefined behavior. -
04765d0 (host) Don't expose fully qualified UTF-8 paths to the game in #806
Fixes #804
Uses a fake UNC path prefix
\\me3to indicate disk file paths
internally managed by me3. This is a significant change to how file
paths are handled and seen by the game and I would like this to be
tested thoroughly before merging.Elden Ring (and likely the other games) forward file paths converted
from UTF-16 to Shift JIS to the Scaleform UI middleware (which expects
UTF-8). This conversion can only be valid for the ASCII subset of UTF
and SJIS, and user paths that contain other characters are silently
truncated at the first character that failed to be converted. What's
worse is that the failed conversion does not nul-terminate the string.The conversion happens at
eldenring.exe+d7106d(1.16.2) and the
subsequent call consumes the string.The implementation in this PR leaves room for a future file reloading
feature (with generation based indexing).
-
266adf1 (linux) Create BHD stub in tmpdir, not cache dir in #831
Fixes the "File not found" errors that occur when we try to create a
temporary file under the host cache directory. Likely caused by the
TEMPORARY attribute used in the tempfile Windows implementation:
https://github.com/Stebalien/tempfile/blob/master/src/file/imp/windows.rs#L38 -
7ff662d (linux) Search compat tool roots for manifests in #827
Fixes #802
-
c998b06 (linux) Restore LD_PRELOAD injection for Steam overlay in compat tool launcher in #735
In
compat_tool.rs,setup_steam_linux_runtime_envbuildsLD_PRELOAD
withgameoverlayrenderer.sobut never sets it on the command, restore it
to fix Steam Input compatibility and the Steam overlay. -
e153f4f Include me3 profiles in taplo config
π Refactor
-
e57a48a (host) Don't use hook to set game properties in #816
Reworks the game property override logic to fetch
CSControlAPI::SetGamePropertyfrom DLRF data and use that instead of a
getter hook. This allows supporting overrides for all property types, so
that this functionality can be eventually exposed to users.As part of this, adds DLRF type definitions and a simple analysis for
finding theDLRuntimeClassregistry.Unfortunately, the game property map is not initialized during our
AfterMaindeferred execution step, so I had to add a third
AfterPropsInitstep that runs right after the map is constructed. This
is done without AOBs or RTTI by:- Searching for LEA xrefs to
Game.Debug.NearOnlyDraw. This is the
first property queried after constructing the map by all supported
games. - Inline hooking the LEA instruction using a
RawDetourand a
handrolled register context save/restore.
The total analysis time for this new approach (finding runtime classes
and hook point) for ER is just under 5ms on my machine.Tested successfully on all supported games.
- Searching for LEA xrefs to
-
895f4ba Don't pin AwaitedRequest in #825
π Documentation
-
670e0e8 Add code-signing policy in #835
Satisfies the terms of our SignPath sponsorship:
https://signpath.org/terms.html -
dcc3bb9 Disable Google Analytics in #821
The only valuable information we get from here is the regions our users
come from (for localization and internationalization) and the operating
system versions for support, the rest is being siphoned to Google for no
good reason.For the former we can rely on network metrics instead, and for the
latter we can use the Steam survey.