====== Half-Life PAK Archiv Spezifikation ====== Ähnlich wie [[glossar:wad|WAD]] ist ''PAK'' ein [[http://de.wikipedia.org/wiki/Containerformat|Containerformat]] welches zur Speicherung der Half-Life [[http://de.wikipedia.org/wiki/Asset|Assets]] wie beispielsweise [[glossar:model|Modellen]], [[glossar:map|Maps]] oder Audiodateien dient. Wie jedes andere Format der GoldSrc Engine wird es in der Little-Endian [[http://de.wikipedia.org/wiki/Byte-Reihenfolge|Byte-Reihenfolge]] gespeichert. Das ''PAK'' Format sieht drei Teile innerhalb einer Datei vor: * Header * Asset Images * Asset Directory ===== Header ===== 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 | ===== Asset Directory ===== 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** - Der ''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. ===== Asset Images ===== 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.