UE4SS Setup Guide for Subnautica 2
UE4SS (Unreal Engine 4/5 Script System) is a powerful scripting framework that lets you write Lua mods and inject blueprint mods into Unreal Engine games. For Subnautica 2 it's the go-to loader for lightweight scripting and blueprint content.
What UE4SS Enables
- Lua mods — scripts that hook into game events, modify properties, spawn objects
- Blueprint mods — visual scripting content dropped in as
.pakfiles - Live viewing — built-in object inspector lets you explore live game objects
- Console unlocking — expose the UE5 developer console in-game
Step 1 — Download UE4SS
Get the latest stable release from GitHub:
Download UE4SS_v*.zip (not the source code zip).
Step 2 — Find the Binaries Folder
For Subnautica 2, UE4SS goes inside the game's Win64 binaries folder, not the root:
Subnautica2\
└── Subnautica2\ ← inner game folder
└── Binaries\
└── Win64\ ← extract UE4SS here
To find it: Steam → Right-click game → Browse local files → navigate into Subnautica2\Binaries\Win64\.
Step 3 — Extract UE4SS
Extract the zip so the files land directly in Win64\:
Win64\
├── dwmapi.dll ← the injection hook
├── UE4SS.dll
├── UE4SS-settings.ini
├── Mods\ ← your Lua mods go here
└── ue4ss\ ← UE4SS runtime files
Step 4 — First Launch
- Launch Subnautica 2 normally via Steam.
- An UE4SS console window should appear alongside the game (if
GuiConsoleEnabled = 1in settings). - The in-game UE5 dev console is also unlocked — press ~ (tilde) or F10 to open it.
Step 5 — Installing a Lua Mod
Each Lua mod lives in its own folder under Mods\:
Mods\
└── MyMod\
├── Scripts\
│ └── main.lua ← mod entry point
└── enabled.txt ← create this to enable the mod
To enable a mod, make sure enabled.txt exists in its folder (it can be blank). Delete or rename it to disable without uninstalling.
Step 6 — Using the Object Dumper (for mod devs)
Press F11 in-game to open the UE4SS GUI. From there you can:
- Browse all live UObjects in memory
- Inspect component hierarchies
- Find class names for use in your Lua scripts
Common UE4SS Lua API Examples
-- Print to the UE4SS console
print("Hello from my mod!")
-- Hook a function on BeginPlay
RegisterHook("/Script/Engine.Actor:ReceiveBeginPlay", function(self)
print("Actor spawned: " .. self:GetName())
end)
-- Find an object by class
local player = FindFirstOf("SubnauticaPlayerCharacter_C")
if player then
print("Found player: " .. player:GetName())
end
Troubleshooting
| Issue | Fix |
|---|---|
| UE4SS console doesn't open | Check dwmapi.dll is in Win64\, not game root |
| Mod not running | Confirm enabled.txt exists in the mod folder |
| Game crashes | Check UE4SS log at Win64\UE4SS\Logs\ |
| Wrong class names | Use the Object Dumper (F11) to find the real names |
Video References
Back to: Getting Started →