Command Reference

ue3-tools [--game-root <DIR>] [-v|--verbose] <COMMAND>

Global flags

Flag Effect
--game-root <DIR> Root of the game install. Indexed recursively at startup: .upk / .u / .umap by lowercased file stem, and .tfc separately. Required for schema resolution, TFC texture payloads, schema-resolve, create-font, and creating new properties during pack-mod.
-v, --verbose Streams schema-database misses and redirector follows to stderr; makes pack-mod log every successful object.

upk-header <PATH>

Prints the parsed package summary. Decompresses in memory as a side effect, so it doubles as a decompression smoke test.

decompress <PATH>

Writes <stem>.decompressed.upk next to the input — every chunk inflated, compression fields cleared, StoreCompressed flag removed. The result is a valid package that every other command reads faster. Only LZO-compressed packages can be inflated.

list <PATH>

Prints #<i> <Class> <Package.Group.Object> for every export.

names <PATH> [OUTPUT_PATH]

Prints the name table and writes one name per line to OUTPUT_PATH (default names_table.txt).

extract <UPK_PATH> [PATH] [OUTPUT_DIR] [--raw]

Argument Meaning
PATH Substring filter against the UE full name or the derived filesystem path. Omit to extract everything.
OUTPUT_DIR Default output. A subdirectory named after the package stem is created inside it.
--raw Write untouched serialized export bytes. No .uo, no sidecars, no property decoding; the schema database isn't built even with --game-root.

Sidecar files written next to each .uo depend on the class — see Asset Payloads.

schema-dump <UPK_PATH> [--class-filter <SUBSTR>]

Runs the metatype deserializers over every export and prints a one-line summary each:

#  312 Class Engine.Actor  →  Class super=-47 children=0x1a4 class_flags=0x00080000 CDO=#313 ifaces=2

Ends with parsed / skipped (non-meta) / failed counts. Doesn't need --game-root.

schema-resolve <STARTING_PKG> <FULL_PATH>

Requires --game-root — exits with an error without it. Resolves a fully-qualified path through the schema database and prints the resolved reference, its entry summary, its full superclass chain, and its direct children.

ue3-tools --game-root /path/to/game schema-resolve engine "Class Engine.Actor"

On failure it prints every recorded miss instead — the fastest way to find out which package your --game-root is missing.

pack-mod <EXTRACTED_DIR> [--out|-o <DIR>]

Finds every .uo under EXTRACTED_DIR, groups by the pkg= header token, and writes override blobs per package: one .bin per object, a .newnames file listing appended names, and a .newexports manifest when new export slots were needed. Declaration-only files are skipped automatically.

Default output is <EXTRACTED_DIR>/overrides (or an existing overrides / Overrides subdirectory). See Building Mods.

create-font <FONT_FILE> <FONT_NAME> [OUTPUT_DIR] [options]

Requires --game-root. Rasterizes a TrueType font into UE3 font pages and writes the .uo + .dds pair for a Font (or MultiFont) export and its backing Texture2D exports. FONT_NAME is the dotted path of the target export, e.g. MyPkg.MyFont. OUTPUT_DIR defaults to output.

Option Default Meaning
--type <1-2> 1 1 generates a Font; 2 generates a MultiFont
--resolutions <F32,...> none (480,720,1080 for --type 2) Comma-separated target resolutions; only used by --type 2
--size <F32> 16.0 Point size
--dpi <U32> 72 Glyphs are rasterized at size × dpi / 72
--tex-width <U32> 512 Page width
--tex-height <U32> 512 Page height
--x-pad <I32> 1 Horizontal glyph padding
--y-pad <I32> 1 Vertical glyph padding
--chars <STRING> see below Characters to include
--unicode-range <SPEC> none Hex codepoint ranges, comma-separated: XXXX or FROM-TO, e.g. 0020-007E,0400-04FF
--remapped <BOOL> automatic Force dense packing with a CharRemap table (true) or one slot per codepoint (false)

Character set. --chars and --unicode-range are merged. If neither yields any characters, a built-in default is used: printable ASCII, Ukrainian Cyrillic, and —, «, », ©, ™. Codepoints above U+FFFF are ignored.

Remapping. When --remapped is omitted it turns on automatically if any codepoint is >= 0x80. A non-remapped font needs one slot per codepoint up to the highest one, so a sparse high range produces a large, mostly empty array (a warning is printed above 4096 slots); remapped fonts pack densely instead.

ui

Opens the GUI. Honours --game-root and --verbose. It is an inspector (packages, exports, imports, names, UO code, hex, schema tree, texture preview) with a mod workspace that can build a mod from selected objects — see Getting Started.