Jeffrey M. Barber

Tombstone

PackUnpack

Jun 2001 – Jul 2001 · age 19

What it was

A pair of Win32 console tools in C++ for packaging game assets, written over about a week of summer for a homemade engine. The packer read a five-line script, walked a folder tree, and wrote one pack file: a four-byte index length, an index of relative paths with offsets and sizes, then every file concatenated into a single blob. No compression, no magic number, trivially inspectable. The reader loaded the index into a binary tree, flattened it into a sorted list, and let a program open, seek, read and extract entries. A manager mounted up to 255 packs and stamped the pack number into the top byte of each resource ID, so one integer named any file anywhere. And when a loose copy of a packed file sat on disk, the reader quietly preferred it. Both tools built clean and round-tripped two sample textures. The engine never mounted them.

Wins, for the age

What it taught

Genealogy

Ancestors: Ant Colony: a tiled game world hungry for textures and assets on disk. Descendants: Z3D Warp Engine SDK: the same pack format, disk overrides and top-byte IDs, inside an engine DLL. Adama Platform: the storage instincts, grown up two decades later.

Epitaph

Here lies PackUnpack, which packed a folder into one file and, if you left the folder there, politely ignored the file. Engines have agreed with it ever since.