CU3ML
Crappy Unreal Engine 3 Mod Loader — a dinput8.dll proxy that hijacks a UE3
game's load order, re-derives the engine's internal layout at runtime by
disassembling the executable, and serves mod overrides without ever
repacking a single .upk.
Status
CU3ML resolves engine internals by disassembling the target at runtime instead of using known-good offsets, so behavior varies between game builds and isn't guaranteed to work at all. Keep backups, expect rough edges, and treat every hook as a controlled experiment against someone else's binary.
Why it exists
Most UE3 modding workflows repack .upk package files on disk — slow to
iterate on, easy to corrupt, and tied to a specific game build's export
table. CU3ML instead:
- Loads as a drop-in
dinput8.dllproxy, no game files touched. - Figures out the running game's internal structure by disassembling it
the first time it starts, instead of shipping a hardcoded offset table
per title — then caches what it found in
cu3ml.addrlistso later launches skip the scan. - Intercepts object loading in memory and substitutes mod content at
Preloadtime — the original.upkon disk is never modified. - Can append entirely new exports to a package's export map, so a mod can add objects a package never shipped with.
- Runs mod logic in an embedded Lua 5.4 VM with an
ue3binding table for loading objects, interningFNames, running engine console commands and rewriting localization. - Ships an optional ImGui manager window that opens before the engine finishes booting, for toggling mods and loader settings.
Where to go next
| I want to… | Read |
|---|---|
| Install CU3ML and try an existing mod | Getting Started |
| Package my own mod | Mod Format |
| Script against the engine from a mod | Lua Scripting |
| Change loader settings or command-line switches | Configuration |
| Toggle mods from a UI | Manager |
| Understand how the runtime disassembly works | Architecture |
| Build CU3ML from source | Building from Source |
| Something isn't working | FAQ |
At a glance
| Target | win-x64 / win-x86 |
| Proxy | dinput8.dll |
| Disassembler | Zydis |
| Scripting | Lua 5.4 via sol2 |
| Manager UI | Dear ImGui on Win32 + OpenGL 3 |
| Language | C++17 |
| Source layout | 22 translation units — see Architecture |
| Loader files | everything lives in the game's Mods/ directory |