Ähnlich wie WAD ist PAK
ein Containerformat welches zur Speicherung der Half-Life Assets wie beispielsweise Modellen, Maps oder Audiodateien dient. Wie jedes andere Format der GoldSrc Engine wird es in der Little-Endian Byte-Reihenfolge gespeichert.
Das PAK
Format sieht drei Teile innerhalb einer Datei vor:
Der Header
beinhaltet grundlegende Informationen zur PAK
Datei, welche zur weiteren Nutzung der Datei benötigt werde. Seine Länge beträgt immer 12 Byte.
Byte offset | Typ | Inhalt | Beschreibung |
---|---|---|---|
0x00 - 0x03 | BYTE[4] | „PACK“ | Identifikation als PAK Datei |
0x04 - 0x07 | DWORD | Asset Directory Offset | Das absolute Offset zum Asset Directory in Bytes |
0x08 - 0x0C | DWORD | Asset Directory Size | Die Größe des Asset Directories in Bytes |
Das Asset Directory
ist eine Auflistung von einem oder mehr Einträgen, welche auf die einzelnen Assets verweisen. Das Asset Directory
reicht hierbei vom im Header
beschriebenen Asset Directory Offset
bis zum Ende der Datei. Ein Eintrag im Asset Directory
beschreibt ein Asset innerhalb des “Asset Image
“-Bereiches und eine feste Größe von 64 Byte und ist wie folgt aufgebaut:
Byte offset | Typ | Inhalt | Beschreibung |
---|---|---|---|
0x00 - 0x38 | BYTE[56] | Asset Name | Der Name des Assets. |
0x39 - 0x3b | DWORD | Asset Offset | Der absolute Offset zum Asset in Bytes |
0x3c - 0x3f | DWORD | Asset Length | Die Länge des Assets in Bytes |
Asset Name
muss nicht zwingend aus einem reinen Dateinamen bestehen. Es ist auch möglich virtuelle Ordner zu erstellen, indem man den Namen entsprechend mit / trennt. falls man Pfade speichert dürfen diese keinen führenden Slash beinhalten oder relative Pfade im Asset Name
genutzt werden. Der Asset Name
wird mit NULL terminiert.
Die Asset Images
sind die einfache Bytepräsentation der einzelnen Assets. Für jedes Asset Image
existiert ein Eintrag im Asset Directory
. Die Asset Images sind weder komprimiert, noch speziell ausgerichtet.