-
Notifications
You must be signed in to change notification settings - Fork 2
Getting Started
xAstroBoy edited this page Apr 4, 2026
·
2 revisions
This guide walks you through setting up Quest UE4 Modloader and creating your first mod.
| Requirement | Details |
|---|---|
| Meta Quest | Quest 2, Quest 3, or Quest Pro |
| Developer Mode | Enabled in the Oculus app on your phone |
| Root Access | not required, but you could use it to replace the .so without sideloading the apk again |
| ADB | Android Debug Bridge (comes with Android SDK Platform-Tools) |
| Python 3.8+ | For deployment tools (optional but recommended) |
| Requirement | Details |
|---|---|
| Android NDK | r23c (23.1.7779620) |
| CMake | 3.22 or newer |
| Ninja | Latest version |
Get the latest release from GitHub Releases.
The release zip contains:
quest-ue4-modloader-vX.Y.Z/
├── libmodloader.so # The modloader binary
├── mods/ # Included mods
├── examples/ # Example mods for learning
├── tools/deploy.py # Deployment tool
├── LUA_API.md # API reference
└── README.md
# USB connection
adb devices
# Should show your Quest serial number
# Wireless connection (optional)
adb tcpip 5555
adb connect <quest-ip>:5555Option A: Using the deploy script (recommended)
# Edit tools/deploy.py to set your device IP/serial, then:
python tools/deploy.py all # Push modloader + all mods
python tools/deploy.py launch # Launch the gameOption B: Manual ADB push
# Push the modloader
adb push libmodloader.so /sdcard/UE4Mods/libmodloader.so
# Push mods
adb push mods/ /sdcard/UE4Mods/mods/
# Launch the game
adb shell am force-stop com.Armature.VR4
adb shell am start com.Armature.VR4/com.epicgames.ue4.SplashActivity# Check logs for successful loading
python tools/deploy.py log
# Or manually:
adb pull /sdcard/UE4Mods/UEModLoader.logYou should see lines like:
[ModLoader] v3.0.0-arm64 initialized
[ModLoader] Loaded mod: GodMode (v7.0)
[ModLoader] Loaded mod: DebugMenuAPI (v20.0)
...
Create mods/MyFirstMod/main.lua:
-- mods/MyFirstMod/main.lua
Log("MyFirstMod: Hello from my first mod!")
-- Wait for the game to fully load, then do something
ExecuteWithDelay(5000, function()
local pc = FindFirstOf("PlayerController")
if pc and pc:IsValid() then
Log("MyFirstMod: Found player: " .. pc:GetName())
end
end)python tools/deploy.py mods MyFirstMod
python tools/deploy.py launchpython tools/deploy.py log
# Look for "MyFirstMod: Hello from my first mod!"python tools/deploy.py forward # Set up port forwarding
python tools/deploy.py console # Open interactive console
> exec_lua return "Hello from bridge!"
> exec_lua local pc = FindFirstOf("PlayerController"); return pc:GetName()- Read Creating Mods for the full development guide
- Browse the Lua API Reference for all available functions
- Check the examples/ directory for more patterns
- Set up the Debug Menu API for in-game toggles
After installation, your device should have:
/sdcard/UE4Mods/
├── libmodloader.so # Injected at game launch
├── UEModLoader.log # Runtime log
├── config/ # ModConfig JSON files
│ ├── GodMode.json
│ └── ...
├── mods/
│ ├── DebugMenuAPI/
│ │ └── main.lua
│ ├── GodMode/
│ │ └── main.lua
│ ├── MyFirstMod/
│ │ └── main.lua
│ └── ...
└── sdk/ # Auto-generated SDK dump
├── Classes/
├── Structs/
└── Enums/