Building from Source
Requirements
- Rust toolchain supporting edition 2024
- A C toolchain for the native dependencies pulled in by the GUI stack
Build
git clone <repo>
cd ue3-tools
cargo build --release
Binary at target/release/ue3-tools.
For iteration, cargo run -- <args> works normally:
cargo run -- --game-root /path/to/game list Interface.upk
Cross-compiling for Windows
The tree carries build artifacts for x86_64-pc-windows-msvc and x86_64-pc-windows-gnullvm, so
both targets are known to work:
rustup target add x86_64-pc-windows-gnullvm
cargo build --release --target x86_64-pc-windows-gnullvm
Dependencies
| Crate | Used for |
|---|---|
byteorder |
every binary read and write |
clap (derive) |
CLI parsing |
lzo1x |
package chunk decompression |
serde, ron |
serialization of package tables |
bitflags |
package flag sets |
eframe, egui_extras, rfd |
the GUI inspector and its file dialogs |
rusttype |
glyph rasterization for create-font |
flate2, anyhow, toml, libc |
declared for planned work |
The GUI is the heavy part of the build
eframe pulls in the whole windowing and GL stack. If you only need the CLI, that's the first
thing to put behind a feature gate.
Layout
src/
├── main.rs CLI dispatch
├── upkreader.rs package format + extraction driver
├── upkpacker.rs .uo → override blobs
├── upkprops.rs property decoding and encoding
├── pseudo.rs .uo emitter
├── pseudo_parse.rs .uo parser
├── schema.rs metatype deserializers
├── schemadb.rs lazy import-graph type database
├── versions.rs all VER_* / PKG_* / FUNC_* / CPF_* constants
├── ui.rs egui inspector
├── native/ per-class asset serializers
├── types/font.rs TrueType → UE3 font generation
└── utils/ decompression, DDS
Reference material
Development is checked against the UE3 source trees for the surrounding versions — the 2011 drop is
the most useful, with 2008 and 2013 for bracketing a layout change. Core/ and Engine/ supply the
authoritative serialization order; the UnrealEd sources are worth reading when working out what an
object's fields actually mean.