Getting Started
Inspect a package
ue3-tools upk-header Game/CookedPCConsole/Interface.upk
ue3-tools list Game/CookedPCConsole/Interface.upk
upk-header prints the parsed package summary — version, decoded flags, table counts, GUID,
generations, compression chunks. list prints every export in UE notation:
#312 Texture2D UI_Menu.Backgrounds.MainMenu
#313 SwfMovie UI_Menu.Movies.hud
Extract
ue3-tools --game-root /path/to/Dishonored/DishonoredGame \
extract Game/CookedPCConsole/Interface.upk
Always pass --game-root
Without it there is no schema database. Extraction still runs, but arrays and non-atomic
structs degrade to @bytes(...) hex, enum values print as raw bytes, no class/struct/enum
declaration files are produced, and textures stored in .tfc files cannot be resolved.
Extract a single object — the filter is a substring matched against both the UE full name and the derived filesystem path:
ue3-tools --game-root /path/to/game extract Interface.upk MainMenu output/
Skip all conversion and dump the raw serialized bytes:
ue3-tools extract Interface.upk MainMenu output/ --raw
What you get
Output is <output_dir>/<package stem>/ with the object's UE path mirrored underneath.
Texture2D UI_Menu.Backgrounds.MainMenu becomes:
output/
└── Interface/
└── UI_Menu/
└── Backgrounds/
├── MainMenu.uo ← properties + native block + sidecar refs
└── MainMenu.dds ← decoded texture payload
| Class | Sidecars written |
|---|---|
Texture2D |
<name>.dds |
SwfMovie, GFxMovieInfo |
<name>.gfx |
SoundNodeWave |
<name>.ogg / .wav / .mp3 / .xma, plus .raw.wav, .xbox360.*, .ps3.* |
Meta-objects (Class, ScriptStruct, Enum, Const, *Property) are emitted as
UnrealScript-shaped declarations instead of property dumps. They're reference material — the mod
packer skips them automatically.
Edit and pack
Edit the .uo text, or just drop a replacement .dds / .gfx next to it, then:
ue3-tools --game-root /path/to/game pack-mod output/Interface --out mymod/
mymod/
└── Interface/
├── UI_Menu.Backgrounds.MainMenu.bin
├── Interface.namemap
└── Interface.newexports ← only if new objects were referenced
That set is what a loader such as CU3ML consumes at runtime. See Building Mods.
GUI
ue3-tools --game-root /path/to/game ui
The GUI is read-only
It inspects and decodes, but it cannot extract or pack. Use the CLI for that.