Skip to content

PAK File Format Rus

AlexKimov edited this page Jul 11, 2018 · 1 revision

Описание формата PAK

Date: 2018.07 | Version: 0.1 | Авторы: Александр Евдокимов

Глоссарий

integer - тип данных, целое, положительное число, размер в файле 2 (указывается) или 4 байта (по умолчанию).

byte - тип данных, целое, положительное число, размер в файле 1 байт.

string - тип данных, строка с завершающим нулем на конце (по умолчанию), иногда строка имеет фиксированную длины без нуля на конце (указывается).

-TODO-

Ссылки

  1. Шаблон формата PAK для программы 010 Editor. Открыть

Оглавление

1. Введение

2. Общая структура формата

3. Секции

  3.1 Заголовок файла

  3.2 Таблица файлов

  3.3 Файлы

1. Введение

Этот документ описывает структуру формата файла PAK, используемого в игре Век Парусников 2 (2001) и Рыцари морей (2002). Формат PAK содержит файлы игры: файлы моделей(.cff и .clf), файлы текстур (*.tf), файл карт (.map), а также исполняемые файлы (.exe) и некоторые другие.

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

2. Общая структура формата

Формат PAK разделен на 3 основные секции (см Табл. 1).

Таблица 1. Общая структура

Секция Ссылки
1 Заголовок файла См. 3.1 Заголовок файла
2 Таблица/дерево файлов См. 3.2 Таблица файлов
3 Файлы См. 3.3. Файлы

3. Секции

3.1 Заголовок файла

Файл PAK начинается с секции "Заголовок файла".

Таблица 2. Структура заголовка файла (Век Парусников 2)

Тип данных Описание Значение
1 integer Сигнатура файла "ENPAK"
2 byte Неизвестная переменная
3 byte Неизвестная переменная
4 byte Неизвестная переменная
5 - Пустые данные (19 байт) 0

Таблица 3. Структура заголовка файла (Рыцари морей)

Тип данных Описание Значение
1 integer Сигнатура файла "ENPAK"
2 byte Неизвестная переменная
3 integer Неизвестная переменная (2 байта)
4 integer Смещение (адрес) Таблицы файлов (2 байта)
5 - Пустые данные (19 байт) 0

3.2 Таблица файлов

Таблица файлов хранит данные о папках и файлах, а именно о названии файлов и папок, расположение файлов в секции файлов см. 3.3 Файлы и т.п. Таблица состоит из записей 3х типов: файл, начало папки, конец папки.

Таблица файлов по своей структуре является деревом, однако, в игре, помимо корневой папки, используется всего два уровня вложенности.

Таблицы данных в играх Век парусников 2 и Рыцари морей слегка различаются. Таким образом, для игры Век Парусников 2 см. Таблица 4 сначала считывается записи таблицы (Тип 0), отвечающие за открытие/переход в корневую папку, затем то же самое для рабочих папок и далее считываются записи таблицы, которые отвечают за файлы. В конце таблицы всегда будут записи закрывающие папки (Тип 2).

В игре Рыцари морей разработчики пошли по пути упрощения см. Таблица 5 и см. Таблица 6. Сначала считываются записи, отвечающие за папки, затем за файлы. Уровень вложенности папок также определяется именем файла, а принадлежность файлов той ли иной папке считывается в порядке их расположении в таблице, т.е., например, 5 первых файлов будут принадлежать первой папке, 10 вторых - второй и т.д.

Таблица 4. Структура записи таблицы файлов (Век Парусников 2)

Тип данных Описание Значение
1 byte Тип 1 - файл, 0 - начало папки, 2 - конец папки
2 integer Количество файлов/Размер данных
3 integer Смещение (адрес) файла
4 integer Неизвестная переменная
5 integer Неизвестная переменная 0
6 string Название файла

Таблица 5. Структура таблицы файлов (Рыцари морей): Папки

Тип данных Описание Значение
1 integer Количество файлов
2 string Название файла

Таблица 6. Структура таблицы файлов (Рыцари морей): Файлы

Тип данных Описание Значение
1 integer Размер файла
2 string Смещение (адрес) файла
3 integer Неизвестное значение
4 string Название файла

3.3 Файлы

Файлы хранятся последовательно в порядке в соответствии с таблицей файлов [см. 3.2 Таблица файлов](#3-2-Таблица -Файлов).