Community Wiki

Edit

GGPK

GGPK schema

Record Structures

struct GGPK {
    uint32 Length;
    char[4] Tag; // ="GGPK"
    uint32 Version;
    GgpkEntry[2] Entries;
}

struct GgpkEntry {
    uint64 offset;
}
struct FREE {
    uint32 Length;
    char[4] Tag; // = "FREE"
    Byte[Length-8] Data;
}
struct PDIR {
    uint32 Length;
    char[4] Tag; // ="PDIR"
    uint32 NameLength;
    uint32 TotalEntries;
    byte[32] SHA256Hash;
    wchar_t[NameLength] Name;
    DirectoryEntry[TotalEntries];
}

struct DirectoryEntry {
    int32 entryNameHash;
    uint64 offset;
}
struct FILE {
    uint32 Length;
    char[4] Tag; // ="FILE"
    uint32 NameLength;
    byte[32] SHA256Hash;
    wchar_t[NameLength] Name;
    byte[reminder] Data;
}

Sample Tree

Reference

Site Description
Path of Go Golang tools for reading PoE data files
LibGGPK3 Windows GUI tool to view Content.ggpk and export
libbun Ooz shared library (libooz.dll/liblibooz.so) for Oodle decompression and Bun library/tool with a C API suitable for FFI/interop - reads and extracts bundle contents from a Steam game directory or a PC Standalone GGPK. Tested on x64 Windows and Debian.
Original Ooz code by powzix/rarten, adapted into a library.

Bundle schema

Bundle schema

Dat schema

struct DAT {
    uint32 rowCounts;
    Data[rowCounts] rows;
    REFERENCE refer;
}

struct Data {
  blob row;
}

struct REFERENCE {
    char[8]; // 0xBB * 8
    blob reference;
}

Data Export

The game data does not have any official API, and only possible data can be analyzed from the game files.

Almost all data is stored in .dat64 files within Content.ggpk. But they only have data, no headers. You can start with the .dat64 format, the PoE dat schema project is the latest format. Or try to parse the .dat format from PoE Dat Viewer yourself. RePoE collects many common and processed .dat files and exports them to .json format.

Reference

Site Description
PyPoE Collection of Python Tools for Path of Exile, mostly used by wiki
RePoE Repository of Path of Exile resources for tool developers.
Poe Dat Viewer Web-base Poe Dat Viewer
PoE dat schema Source of truth schema for dat files.
Path Of Building Fork schema Source of Path Of Building Fork schema

PyPoe stable.py to spec.json

from PyPoE.poe.file.specification.data import stable
from json import dump
with open('D:/spec.json', 'w') as f:
    dump(stable.specification.as_dict(), f)

Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.