Library crate for working with Unreal Engine .pak files.
This crates support reading and writing most Unreal Engine .pak
files.
There are multiple APIs available to fit your use case.
PakReader
for lazily reading large (multiple GB).pak
files. This reader only parses the relatively small index when loading a file and single entries can then be extarcted or all entries can be lazily read via in iterator based API.PakWriter
for incrementally writing large.pak
files.PakMemory
which is an entirely in-memory representation of a.pak
file which allows arbitrary entries to be modified/added/removed. A file on disk can be loaded as aPakMemory
or an empty one can be created. Once finsihed it can be writtin to disk all at once.
Crate documentation is published to docs.rs/unreal_pak.
The crate can be added to a Rust project as a dependency by running the command cargo add unreal_pak
.
UE Version | Version | Version Feature | Read | Write |
---|---|---|---|---|
1 | Initial | ❔ | ❔ | |
4.0-4.2 | 2 | NoTimestamps | ✔️ | ✔️ |
4.3-4.15 | 3 | CompressionEncryption | ✔️ | ✔️ |
4.16-4.19 | 4 | IndexEncryption | ✔️ | ✔️ |
4.20 | 5 | RelativeChunkOffsets | ✔️ | ✔️ |
6 | DeleteRecords | ❔ | ❔ | |
4.21 | 7 | EncryptionKeyGuid | ✔️ | ✔️ |
4.22 | 8A | FNameBasedCompression | ❌ | ❌ |
4.23-4.24 | 8B | FNameBasedCompression | ✔️ | ✔️ |
4.25 | 9 | FrozenIndex | ✔️ | ✔️ |
10 | PathHashIndex | ❔ | ❔ | |
4.26-4.27 | 11 | Fnv64BugFix | ✔️ | ❌ |
Feature | Read | Write |
---|---|---|
Compression (Zlib) | ✔️ | ✔️ |
Encrypted Index | ❌ | ❌ |
Encrypted Data | ❌ | ❌ |
This crate was originally developed for use within unrealmodding and
therefore does not support every feature of .pak
files. If you are looking to use this crate for your project but
need a currently unsupported feature please open an Issue/PR and we will try to help you.
An example use of the crate can be found in the unreal_pak_cli tool source.