Открыть сервисСервис

Пак — формат пакетирования файлов

Пак — формат упаковки файлов, разработанный в 1980-х годах для операционной системы MS-DOS и получивший распространение в среде IBM PC-совместимых компьютеров. Файл в формате .pak содержит набор обычных файлов, сжатых и объединённых в единый архив без служебной информации о файловой системе диска. В отличие от более поздних форматов ZIP или RAR, пак-файлы не содержат каталога в привычном виде: о содержимом архива можно судить по отдельным спискам-индексам, которые могут храниться внутри самого архива или поставляться отдельно.

История

Формат .pak появился в конце 1980-х годов и был популярен в среде MS-DOS. Он применялся в играх и программах, где требовалось быстро загружать ресурсы — графику, звук, уровни — с дисководов, работавших медленно. Сжатие данных в едином файле ускоряло чтение по сравнению с обращением к множеству мелких файлов на дискете.

Наиболее известным инструментом для работы с пак-файлами стал утилитный пакет PAK (не путать с одноимённым форматом), а также программы-аналоги, например PAKBLASTER и утилиты, входившие в состав разработческих сред. В русскоязычной среде формат стал известен благодаря играм, распространявшимся на дискетах и в составе сборников, например, серии игр от Apogee Software и других студий, выпускавших продукцию для DOS.

С распространением Windows и форматов ZIP, RAR и 7z использование пак-файлов постепенно сошло на нет. Тем не менее формат сохранился в нише ретро-игр и модификаций: многие эмуляторы и движки старых игр по-прежнему умеют читать ресурсы из .pak-архивов.

Устройство формата

Пак-файл представляет собой последовательность сжатых данных, за которой следует таблица индексов (или наоборот — в зависимости от версии формата). Каждая запись индекса содержит имя файла, смещение к данным и размер сжатого блока. Имена файлов в индексе хранятся в формате 8.3 (имя до восьми символов и расширение до трёх), что отражает ограничения файловой системы FAT, использовавшейся в MS-DOS.

Сжатие в классическом пак-формате выполнялось алгоритмом LZSS (вариант словарного сжатия) или, в некоторых реализациях, методом RLE. Алгоритм LZSS заменяет повторяющиеся последовательности байтов ссылками на предыдущие вхождения, что эффективно для графических и звуковых данных с большим количеством повторов.

Примерная структура пак-файла:

ЭлементОписание
ЗаголовокСигнатура формата и служебные параметры
ДанныеСжатые содержимые файлов подряд
ИндексЗаписи: имя файла, смещение, размер

В некоторых вариантах формата индекс расположен в начале файла, что позволяет читать список содержимого без сканирования всего архива.

Применение

Основная область применения пак-формата — компьютерные игры под MS-DOS. Внутри .pak-архивов хранились:

  • графические ресурсы (тайлы, спрайты, фоны);
  • звуковые эффекты и музыка;
  • данные уровней и карт;
  • тексты и диалоги.

Игровые движки читали ресурсы напрямую из архива, обращаясь к ним по именам из индекса. Это упрощало дистрибуцию: вся игра помещалась на несколько дискет, а установка заключалась в копировании пак-файлов на жёсткий диск.

В современной разработке термин «пак» используется в другом смысле — как обозначение набора файлов ресурсов в форматах, не связанных с классическим .pak. Например, движок Unreal Engine использует файлы .pak для хранения игровых ресурсов, а Unity применяет формат AssetBundle, иногда называемый паком. Эти форматы не имеют отношения к DOS-архивам, но название закрепилось за ними как обобщённое.

Работа с пак-файлами

Для чтения и создания пак-архивов использовались утилиты DOS, из которых наиболее известны:

  • PAK — базовая утилита для упаковки и распаковки;
  • PAKBLASTER — инструмент для анализа и извлечения ресурсов;
  • UNPAK — утилита обратной операции.

В эпоху Windows появились программы с графическим интерфейсом, поддерживающие формат .pak наряду с ZIP и RAR. Среди них — Total Commander с плагинами, 7-Zip (в ограниченной мере) и специализированные утилиты для ретро-игр.

Для эмуляции старых игр используются DOSBox и аналогичные эмуляторы, которые прозрачно работают с пак-файлами через драйверы виртуального диска.

См. также

  • ZIP (формат архива)
  • RAR
  • LZ77 и LZSS
  • MS-DOS
  • FAT (файловая система)

Источники

  • Форматы архивов: история и спецификации (материалы по ретро-компьютерингу)
  • Документация к утилитам PAK и PAKBLASTER для MS-DOS
  • Статьи о ресурсных форматах игровых движков (Unreal Engine, Unity)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru