PackCraft
Create, open, append to and extract Zip, Tar, Tar.gz, Tar.lz4 and Tar.oodle archives at runtime from files or memory, with async Blueprint nodes.
Highlights
All 10 features βPackCraft packs and unpacks archives while your game or tool is running. Choose an archiver class (Zip, Tar, Tar with GZip, Tar with LZ4 or Tar with Oodle), create or open an archive on disk or in memory, add entries from files or byte arrays, list them and extract them again.
For the common cases a single async node is enough: Archive Directory, Archive Files, Unarchive Directory and Unarchive Files run on a background thread and report success, progress and failure through output pins. Zip archives can be reopened to append entries, and in-memory archives give you the finished bytes for uploads or save data.
Use it to export and import save games, ship and load mods and user-generated content, bundle logs and screenshots for bug reports, or unpack downloaded data packs. Raw GZip, LZ4 and Oodle compression of byte arrays is included.
PackCraft is part of the Alpha XP utilities collection for Unreal Engine 4.27 and 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against clean UE 4.27 and UE 5.8 projects.
Key features
- Zip (Zip64 on disk), Tar, Tar + GZip, Tar + LZ4 and Tar + Oodle (UE 5) archivers with
- Archives in files or entirely in memory
- Append entries to existing zip files
- Async Archive/Unarchive Directory and Files nodes with progress, success and failure pins
- Add entries from files, directories (recursive) or byte arrays
- Extract single entries, lists of entries or whole directories
- Entry info: name, index, sizes, directory flag, creation time
- Per-entry compression levels 0 to 10
- Raw GZip, LZ4 and Oodle buffer compression on a background thread
- Central error event and dedicated log category
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| PackCraftBase | Function library | 18 | The base class for the archiver. Do not create it manually! |
| PackCraftRaw | Function library | 2 | Raw archiver class. Works with various archives, especially those specific to the engine, such as Oodle, LZ4, GZip, etc. |
| PackCraftUtilities | Function library | 1 | Provides general purpose utility functions for archivers |
| PackCraftZip | Pack Craft Base | 1 | Zip archiver class. Works with zip archives |
| Async action nodes | Latent Blueprint nodes | 4 | Latent node with success / failure output pins. |
Callable runs when executed Β· Pure no exec pin, returns a value Β· LatentAsync finishes later and fires its outputs
PackCraft 1
| Node | Type | Available on | Description |
|---|---|---|---|
| Create Archiver(meta: PARAM() β Pack Craft Base | Callable | Static | Create an archiver to archive/unarchive files and directories |
Create 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Create Archive In Storage(Archive Path: String) β Boolean | Callable | Object | Create an archive in the specified path. The file will be created after calling the "CloseArchive" function |
| Create Archive In Memory(Initial Allocation Size: Integer) β Boolean | Callable | Object | Create an archive in memory |
Open 3
| Node | Type | Available on | Description |
|---|---|---|---|
| Open Archive From Storage(Archive Path: String) β Boolean | Callable | Object | Open an archive from storage |
| Open Archive From Memory(Archive Data: Array of Byte) β Boolean | Callable | Object | Open an archive from memory |
| Open Archive From Storage To Append(Archive Path: String) β Boolean | Callable | Pack Craft Base | Open an archive from storage to append |
Close 1
| Node | Type | Available on | Description |
|---|---|---|---|
| Close Archive() β Boolean | Callable | Object | Close previously created/opened archive |
Get 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Get Archive Data() β Boolean, Archive Data | Callable | Object | Get archive data created in memory |
| Get Archive Entries() β Boolean, Num Of Archive Entries | Callable | Object | Get the number of the archive entries |
| Get Archive Entry Info By Name(Entry Name: String) β Boolean, Entry Info | Callable | Object | Get information about the archive entry by name |
| Get Archive Entry Info By Index(Entry Index: Integer) β Boolean, Entry Info | Callable | Object | Get information about the archive entry by index |
Add 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Add Entry From Storage(Entry Name: String, File Path: String, Compression Level: Pack Craft Compression Level) β Boolean | Callable | Object | Add entry from storage. In other words, import the file into the archive |
| Add Entries From Storage(On Result: Pack Craft Async Operation Result, On Progress: Pack Craft Async Operation Progress, File Paths: Array of String, Compression Level: Pack Craft Compression Level) | Callable | Object | Add entries from storage. In other words, import files into the archive |
| Add Entries From Storage Directory(On Result: Pack Craft Async Operation Result, Directory Path: String, Add Parent Directory: Boolean, Compression Level: Pack Craft Compression Level) | Callable | Object | Add entries from storage. Must be used for directories only |
| Add Entry From Memory(Entry Name: String, Data To Be Archived: Array of Byte, Compression Level: Pack Craft Compression Level) β Boolean | Callable | Object | Add entry from memory. In other words, import the data in-memory into the archive |
Extract 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Extract Entry To Storage(Entry Info: Pack Craft Entry, File Path: String, Force Overwrite: Boolean) β Boolean | Callable | Object | Extract entry to storage. In other words, extract the file from the archive to storage |
| Extract Entries To Storage(On Result: Pack Craft Async Operation Result, On Progress: Pack Craft Async Operation Progress, Entry Info: Array of Pack Craft Entry, Directory Path: String, Force Overwrite: Boolean) | Callable | Object | Extract entries to storage. In other words, extract the file from the archive to storage |
| Extract Entries To Storage Directory(On Result: Pack Craft Async Operation Result, Entry Name: String, Directory Path: String, Add Parent Directory: Boolean, Force Overwrite: Boolean) | Callable | Object | Extract entries to storage. Must be used for directories only |
| Extract Entry To Memory(Entry Info: Pack Craft Entry) β Boolean, Unarchived Data | Callable | Object | Extract entry into memory. In other words, extract the file from the archive into memory |
Utilities 1
| Node | Type | Available on | Description |
|---|---|---|---|
| Parse Directories(File Path: String) β Array of String | Callable | Static | Parse directories from path. It is assumed that the path is given to the file. |
Raw 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Compress Raw Data Async(Raw Format: Pack Craft Raw Format, Compression Level: Pack Craft Compression Level, Uncompressed Data: Array of Byte, On Result: Pack Craft Raw Memory Result) | Callable | Static | Asynchronously compress raw data |
| Uncompress Raw Data Async(Raw Format: Pack Craft Raw Format, Compressed Data: Array of Byte, On Result: Pack Craft Raw Memory Result) | Callable | Static | Asynchronously uncompress raw data |
Async 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Archive Directory(Archiver Class: Pack Craft Base, Archive Path: String, Directory Path: String, Add Parent Directory: Boolean, Compression Level: Pack Craft Compression Level) β On Success, On Progress, On Fail | Async | Async | Asynchronously archive entries from a directory |
| Archive Files(Archiver Class: Pack Craft Base, Archive Path: String, File Paths: Array of String, Compression Level: Pack Craft Compression Level) β On Success, On Progress, On Fail | Async | Async | Asynchronously archive entries from file paths |
| Unarchive Directory(Archiver Class: Pack Craft Base, Archive Path: String, Entry Name: String, Directory Path: String, Add Parent Directory: Boolean, β¦) β On Success, On Progress, On Fail | Async | Async | Asynchronously unarchive entries in a directory to storage |
| Unarchive Files(Archiver Class: Pack Craft Base, Archive Path: String, Entry Names: Array of String, Directory Path: String, Force Overwrite: Boolean) β On Success, On Progress, On Fail | Async | Async | Asynchronously unarchive entries to storage |
Events & delegates
Bind these in Blueprint (drag off the object β Bind Event) or with AddDynamic in C++.
| Event | Parameters | When it fires |
|---|---|---|
| On Error | Error Code (Pack Craft Error Code), Error String (String) | Bind to know when an error occurs while running the archiver |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| macOS | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| PackCraft | Runtime | Default |
Technical details
| Code modules | PackCraft (Runtime) |
|---|---|
| Blueprints | 0 Β· C++ classes: 11 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: Not verified |
| Target build platforms | Win64 |
| Third-party software | Yes |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 11 + 1 structs |
| Blueprint nodes | 26 |
| Events | 1 |
| Documentation | Documentation.html (in the download) |
| Download | PackCraft.zip Β· 334 KB |
| Version | v1.0.0 |
Third-party components
- miniz (development snapshot of 2024-08-05; Source/ThirdParty/miniz), Copyright 2013-2014 RAD Game Tools and Valve Software; Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC, MIT License
- microtar (tar header and record handling, adapted; Source/ThirdParty/microtar), Copyright (c) 2017 rxi, MIT License
Both are shipped as source code compiled into the plugin (miniz and microtar are included by the PackCraft module), carry their notices inline, and send no data to their authors. The full attributions accompany the Third Party Software declaration submitted to Epic.
What's in the download
| File | What it is |
|---|---|
| PackCraft 4.27.zip | Plugin build for Unreal Engine 4.27 |
| PackCraft 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the PackCraft folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable PackCraft under Edit βΊ Plugins and restart the editor.
- Right-click in any Blueprint graph and search PackCraft β or include the public headers from C++.
- Package for your target platform (Windows, macOS).
Good to know
Built and verified warning-free for Unreal Engine 4.27 and 5.8. Oodle archives and Oodle raw compression need UE 5 (they report an error on UE 4.27); Blueprint byte arrays are limited to 2 GB, larger data uses the C++ TArray64 overloads. Developed and maintained by Alpha XP.
Everything included
- Zip (Zip64 on disk), Tar, Tar + GZip, Tar + LZ4 and Tar + Oodle (UE 5) archivers withβ¦
- Archives in files or entirely in memory
- Append entries to existing zip files
- Async Archive/Unarchive Directory and Files nodes with progress, success and failure pins
- Add entries from files, directories (recursive) or byte arrays
- Extract single entries, lists of entries or whole directories
- Entry info: name, index, sizes, directory flag, creation time
- Per-entry compression levels 0 to 10
- Raw GZip, LZ4 and Oodle buffer compression on a background thread
- Central error event and dedicated log category
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review PackCraft β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99