Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games
2,888
stars
2,099
commits
C++
primary language
Sep 11, 2026
updated
Lua scripting system platform, C++ Modding API, SDK generator, blueprint mod loader, live property editor and other dumping utilities for UE4/5 games.
.usmap mapping files for unversioned properties.umaps in-editorThe goal of UE4SS is not to be a plug-n-play solution that always works with every game. The goal is to have an underlying system that works for most games. You may need to update AOBs on your own, and there's a guide for that below.
The easiest installation is via downloading the non-dev version of the latest non-experimental build from Releases and extracting the zip content to {game directory}/GameName/Binaries/Win64/.
If your game is in the custom config list, extract the contents from the relevant folder to Win64 as well.
If you are planning on doing mod development using UE4SS, you can do the same as above but download the zDEV version instead.
If RE-UE4SS is installed via proxy DLL, the following command line options are available:
--disable-ue4ss - Temporarily disable UE4SS without uninstalling by launching the game with this argument.--ue4ss-path <path> - Specify a custom path to UE4SS.dll. Supports both absolute paths (e.g., C:\custom\UE4SS.dll) and relative paths (e.g., dev\builds\UE4SS.dll relative to the game executable directory). Useful for testing different UE4SS builds without modifying installation files.RE-UE4SS supports the following environment variables:
UE4SS_MODS_PATHS - Semicolon-separated list of additional mods directories to load. Paths are processed in reverse order (first entry has highest priority), similar to the PATH variable. Example: C:\SharedMods;D:\GameMods;E:\TestMods.Generating UHT compatible headers
Creating Compatible Blueprint Mods
Unreal Engine Modding Discord Server Invite
git submodule update --init --recursive
Make sure your Github account is linked to your Epic Games account for UE source access.
Do not use the --remote option because that will force third-party dependencies to update to the latest commit, and that can break things.
You will need your github account to be linked to an Epic games account to pull the Unreal pseudo code submodule.There are several different ways you can build UE4SS.
The build modes are structured as follows: <Target>__<Config>__<Platform>
Currently supported options for these are:
Target
Game - for regular games on UE versions greater than UE 4.21LessEqual421 - for regular games on UE versions less than or equal to UE 4.21CasePreserving - for games built with case preserving enabledConfig
Dev - development buildDebug - debug buildShipping - shipping(release) buildTest - build for testsPlatform
Win64 - 64-bit windowsTo build UE4SS with CMake, use the following commands:
# Configure with Ninja (recommended for faster builds, single-configuration)
cmake -B build_cmake_Game__Shipping__Win64 -G Ninja -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
# Build with Ninja
cmake --build build_cmake_Game__Shipping__Win64
# Or configure with MSVC (multi-configuration, allows switching configs without reconfiguring)
cmake -B build_cmake_Game__Shipping__Win64 -G "Visual Studio 17 2022"
# Build with MSVC (requires --config flag)
cmake --build build_cmake_Game__Shipping__Win64 --config Game__Shipping__Win64
CMake allows you to configure various build options. Here are some useful options:
By default, UE4SS generates a proxy based on C:\Windows\System32\dwmapi.dll. To change this, set the CMake variable:
cmake -B build -DUE4SS_PROXY_PATH="<path to proxy dll>" -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
By default, UE4SS has profiling disabled (None). To enable profiling, you need both a profiler flavor AND a build configuration that includes STATS:
# STATS are enabled by default in Dev and Test builds
cmake -B build -DPROFILER_FLAVOR=<Tracy|Superluminal|None> -DCMAKE_BUILD_TYPE=Game__Dev__Win64
[!NOTE] Profiling requires STATS support. By default,
DevandTestconfigurations include STATS, whileShippingandDebugdo not. You can manually enable STATS for any configuration by adding compile definitions:cmake -B build -DPROFILER_FLAVOR=Tracy -DCMAKE_BUILD_TYPE=Game__Shipping__Win64 -DCMAKE_CXX_FLAGS="-DSTATS"
| Command | Description |
|---|---|
cmake -B <build_dir> -G <generator> | Configure the project with a specific generator (Ninja or "Visual Studio 17 2022") |
cmake --build <build_dir> | Build with Ninja (single-config generator) |
cmake --build <build_dir> --config <mode> | Build with MSVC (multi-config generator, --config required) |
cmake --build <build_dir> --clean-first | Clean and rebuild (add --config <mode> for MSVC) |
cmake --build <build_dir> --target <target> | Build a specific target (add --config <mode> for MSVC) |
cmake --build <build_dir> --verbose | Build with verbose output (add --config <mode> for MSVC) |
CMake has built-in support for generating Visual Studio solutions:
cmake -B build -G "Visual Studio 17 2022"
Then open the generated .sln file in the build directory.
Alternatively, Visual Studio 2022 has native CMake support - you can open the folder directly in Visual Studio and it will automatically detect the CMakeLists.txt file.
Most modern IDEs (CLion, Visual Studio Code with CMake Tools, etc.) have native CMake support. Simply open the project folder and the IDE will automatically detect and configure the CMake project.
Note that you should also commit & push the submodules that you've updated if the reason why you updated was not because someone else pushed an update, and you're just catching up to it.
UE4SS supports cross-compilation from Linux to Windows using two approaches: xwin (recommended) or msvc-wine.
x86_64-pc-windows-msvc target:
rustup target add x86_64-pc-windows-msvc
xwin downloads and packages the Microsoft CRT headers/libraries and Windows SDK headers/libraries needed for cross-compilation, without requiring a Windows installation.
# On Ubuntu/Debian
sudo apt install clang lld llvm
# On Arch Linux
sudo pacman -S clang lld llvm
cargo install xwin
Download the Microsoft tools and SDK using xwin (this only needs to be done once):
xwin --accept-license splat --output ~/.xwin
This will download approximately 300MB and can take a few minutes.
Set the XWIN_DIR environment variable:
export XWIN_DIR=~/.xwin
# Configure with xwin-clang-cl toolchain (uses clang with MSVC-compatible flags)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-cl-toolchain.cmake
# Or use xwin-clang toolchain (uses clang with GNU-style flags)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-toolchain.cmake
# Build
cmake --build build_xwin
# Set XWIN_DIR
export XWIN_DIR=~/.xwin
# Build with xwin-clang-cl
./tools/buildscripts/build.sh --toolchain xwin-clang-cl
# Or build with xwin-clang
./tools/buildscripts/build.sh --toolchain xwin-clang
# Build specific configuration
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --build-config Game__Debug__Win64
# Clean build with verbose output
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --clean --verbose
msvc-wine uses actual MSVC tools running under Wine. This provides maximum compatibility but requires more setup.
# On Ubuntu/Debian
sudo apt install wine wine64 winbind
# On Arch Linux
sudo pacman -S wine samba
Install msvc-wine following the official instructions.
By default, this installs to ~/my_msvc/opt/msvc.
Make sure the msvc-wine tools are in your PATH:
export PATH="$HOME/my_msvc/opt/msvc/bin/x64:$PATH"
Set the Wine prefix (optional):
export WINE_PREFIX=~/.wine
# Configure with wine-clang-cl toolchain (clang-cl under wine)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-clang-cl-toolchain.cmake
# Or use wine-msvc toolchain (MSVC cl.exe under wine)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-msvc-toolchain.cmake
# Build
cmake --build build_wine
# Build with wine-clang-cl
./tools/buildscripts/build.sh --toolchain wine-clang-cl
# Or build with wine-msvc
./tools/buildscripts/build.sh --toolchain wine-msvc
# Build specific configuration
./tools/buildscripts/build.sh --toolchain wine-clang-cl --build-config Game__Debug__Win64
Cross-compiled binaries will be in the build directory under <BuildMode>/bin/:
build_xwin_Game__Shipping__Win64/
└── Game__Shipping__Win64/
└── bin/
├── UE4SS.dll
├── dwmapi.dll (proxy DLL)
└── ... (other files)
When using wine-based toolchains, you can debug crashes and issues using Wine's debugger.
# Debug a running program
winedbg ./path/to/game.exe
# Debug a crash dump
winedbg crash_2024_12_26_07_39_15.dmp
WINEDEBUG=-all to reduce Wine's debug output during builds (already done by build.sh)winbind or samba installedIf you want to update git submodules, you do so one of three ways:
git submodule update --init --recursive to update all submodules.git submodule update --init --recursive deps/<first-or-third>/<Repo>.
Do not use the --remote option unless you actually want to update to the latest commit.cd into the submodule directory for that dependency and execute git checkout <branch name or commit>.
The main dependency you might want to update from time to time is deps/first/Unreal.All contributors since the project became open source: https://github.com/UE4SS-RE/RE-UE4SS/graphs/contributors
(top 30 of 52)
C++
97.5%
Lua
1.2%
Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games
2,888
stars
2,099
commits
C++
primary language
Sep 11, 2026
updated
Lua scripting system platform, C++ Modding API, SDK generator, blueprint mod loader, live property editor and other dumping utilities for UE4/5 games.
.usmap mapping files for unversioned properties.umaps in-editorThe goal of UE4SS is not to be a plug-n-play solution that always works with every game. The goal is to have an underlying system that works for most games. You may need to update AOBs on your own, and there's a guide for that below.
The easiest installation is via downloading the non-dev version of the latest non-experimental build from Releases and extracting the zip content to {game directory}/GameName/Binaries/Win64/.
If your game is in the custom config list, extract the contents from the relevant folder to Win64 as well.
If you are planning on doing mod development using UE4SS, you can do the same as above but download the zDEV version instead.
If RE-UE4SS is installed via proxy DLL, the following command line options are available:
--disable-ue4ss - Temporarily disable UE4SS without uninstalling by launching the game with this argument.--ue4ss-path <path> - Specify a custom path to UE4SS.dll. Supports both absolute paths (e.g., C:\custom\UE4SS.dll) and relative paths (e.g., dev\builds\UE4SS.dll relative to the game executable directory). Useful for testing different UE4SS builds without modifying installation files.RE-UE4SS supports the following environment variables:
UE4SS_MODS_PATHS - Semicolon-separated list of additional mods directories to load. Paths are processed in reverse order (first entry has highest priority), similar to the PATH variable. Example: C:\SharedMods;D:\GameMods;E:\TestMods.Generating UHT compatible headers
Creating Compatible Blueprint Mods
Unreal Engine Modding Discord Server Invite
git submodule update --init --recursive
Make sure your Github account is linked to your Epic Games account for UE source access.
Do not use the --remote option because that will force third-party dependencies to update to the latest commit, and that can break things.
You will need your github account to be linked to an Epic games account to pull the Unreal pseudo code submodule.There are several different ways you can build UE4SS.
The build modes are structured as follows: <Target>__<Config>__<Platform>
Currently supported options for these are:
Target
Game - for regular games on UE versions greater than UE 4.21LessEqual421 - for regular games on UE versions less than or equal to UE 4.21CasePreserving - for games built with case preserving enabledConfig
Dev - development buildDebug - debug buildShipping - shipping(release) buildTest - build for testsPlatform
Win64 - 64-bit windowsTo build UE4SS with CMake, use the following commands:
# Configure with Ninja (recommended for faster builds, single-configuration)
cmake -B build_cmake_Game__Shipping__Win64 -G Ninja -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
# Build with Ninja
cmake --build build_cmake_Game__Shipping__Win64
# Or configure with MSVC (multi-configuration, allows switching configs without reconfiguring)
cmake -B build_cmake_Game__Shipping__Win64 -G "Visual Studio 17 2022"
# Build with MSVC (requires --config flag)
cmake --build build_cmake_Game__Shipping__Win64 --config Game__Shipping__Win64
CMake allows you to configure various build options. Here are some useful options:
By default, UE4SS generates a proxy based on C:\Windows\System32\dwmapi.dll. To change this, set the CMake variable:
cmake -B build -DUE4SS_PROXY_PATH="<path to proxy dll>" -DCMAKE_BUILD_TYPE=Game__Shipping__Win64
By default, UE4SS has profiling disabled (None). To enable profiling, you need both a profiler flavor AND a build configuration that includes STATS:
# STATS are enabled by default in Dev and Test builds
cmake -B build -DPROFILER_FLAVOR=<Tracy|Superluminal|None> -DCMAKE_BUILD_TYPE=Game__Dev__Win64
[!NOTE] Profiling requires STATS support. By default,
DevandTestconfigurations include STATS, whileShippingandDebugdo not. You can manually enable STATS for any configuration by adding compile definitions:cmake -B build -DPROFILER_FLAVOR=Tracy -DCMAKE_BUILD_TYPE=Game__Shipping__Win64 -DCMAKE_CXX_FLAGS="-DSTATS"
| Command | Description |
|---|---|
cmake -B <build_dir> -G <generator> | Configure the project with a specific generator (Ninja or "Visual Studio 17 2022") |
cmake --build <build_dir> | Build with Ninja (single-config generator) |
cmake --build <build_dir> --config <mode> | Build with MSVC (multi-config generator, --config required) |
cmake --build <build_dir> --clean-first | Clean and rebuild (add --config <mode> for MSVC) |
cmake --build <build_dir> --target <target> | Build a specific target (add --config <mode> for MSVC) |
cmake --build <build_dir> --verbose | Build with verbose output (add --config <mode> for MSVC) |
CMake has built-in support for generating Visual Studio solutions:
cmake -B build -G "Visual Studio 17 2022"
Then open the generated .sln file in the build directory.
Alternatively, Visual Studio 2022 has native CMake support - you can open the folder directly in Visual Studio and it will automatically detect the CMakeLists.txt file.
Most modern IDEs (CLion, Visual Studio Code with CMake Tools, etc.) have native CMake support. Simply open the project folder and the IDE will automatically detect and configure the CMake project.
Note that you should also commit & push the submodules that you've updated if the reason why you updated was not because someone else pushed an update, and you're just catching up to it.
UE4SS supports cross-compilation from Linux to Windows using two approaches: xwin (recommended) or msvc-wine.
x86_64-pc-windows-msvc target:
rustup target add x86_64-pc-windows-msvc
xwin downloads and packages the Microsoft CRT headers/libraries and Windows SDK headers/libraries needed for cross-compilation, without requiring a Windows installation.
# On Ubuntu/Debian
sudo apt install clang lld llvm
# On Arch Linux
sudo pacman -S clang lld llvm
cargo install xwin
Download the Microsoft tools and SDK using xwin (this only needs to be done once):
xwin --accept-license splat --output ~/.xwin
This will download approximately 300MB and can take a few minutes.
Set the XWIN_DIR environment variable:
export XWIN_DIR=~/.xwin
# Configure with xwin-clang-cl toolchain (uses clang with MSVC-compatible flags)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-cl-toolchain.cmake
# Or use xwin-clang toolchain (uses clang with GNU-style flags)
XWIN_DIR=~/.xwin cmake -B build_xwin \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/xwin-clang-toolchain.cmake
# Build
cmake --build build_xwin
# Set XWIN_DIR
export XWIN_DIR=~/.xwin
# Build with xwin-clang-cl
./tools/buildscripts/build.sh --toolchain xwin-clang-cl
# Or build with xwin-clang
./tools/buildscripts/build.sh --toolchain xwin-clang
# Build specific configuration
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --build-config Game__Debug__Win64
# Clean build with verbose output
./tools/buildscripts/build.sh --toolchain xwin-clang-cl --clean --verbose
msvc-wine uses actual MSVC tools running under Wine. This provides maximum compatibility but requires more setup.
# On Ubuntu/Debian
sudo apt install wine wine64 winbind
# On Arch Linux
sudo pacman -S wine samba
Install msvc-wine following the official instructions.
By default, this installs to ~/my_msvc/opt/msvc.
Make sure the msvc-wine tools are in your PATH:
export PATH="$HOME/my_msvc/opt/msvc/bin/x64:$PATH"
Set the Wine prefix (optional):
export WINE_PREFIX=~/.wine
# Configure with wine-clang-cl toolchain (clang-cl under wine)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-clang-cl-toolchain.cmake
# Or use wine-msvc toolchain (MSVC cl.exe under wine)
cmake -B build_wine \
-G Ninja \
-DCMAKE_BUILD_TYPE=Game__Shipping__Win64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/wine-msvc-toolchain.cmake
# Build
cmake --build build_wine
# Build with wine-clang-cl
./tools/buildscripts/build.sh --toolchain wine-clang-cl
# Or build with wine-msvc
./tools/buildscripts/build.sh --toolchain wine-msvc
# Build specific configuration
./tools/buildscripts/build.sh --toolchain wine-clang-cl --build-config Game__Debug__Win64
Cross-compiled binaries will be in the build directory under <BuildMode>/bin/:
build_xwin_Game__Shipping__Win64/
└── Game__Shipping__Win64/
└── bin/
├── UE4SS.dll
├── dwmapi.dll (proxy DLL)
└── ... (other files)
When using wine-based toolchains, you can debug crashes and issues using Wine's debugger.
# Debug a running program
winedbg ./path/to/game.exe
# Debug a crash dump
winedbg crash_2024_12_26_07_39_15.dmp
WINEDEBUG=-all to reduce Wine's debug output during builds (already done by build.sh)winbind or samba installedIf you want to update git submodules, you do so one of three ways:
git submodule update --init --recursive to update all submodules.git submodule update --init --recursive deps/<first-or-third>/<Repo>.
Do not use the --remote option unless you actually want to update to the latest commit.cd into the submodule directory for that dependency and execute git checkout <branch name or commit>.
The main dependency you might want to update from time to time is deps/first/Unreal.All contributors since the project became open source: https://github.com/UE4SS-RE/RE-UE4SS/graphs/contributors
(top 30 of 52)
C++
97.5%
Lua
1.2%