MPQ

Материал из Циклопедии
Перейти к навигации Перейти к поиску

MPQ (Mo’PaQ, сокращение Mike O'Brien Pack, названный так по имени автора) — архивный формат файла, используемый в играх компании Blizzard Entertainment. MPQ в основном содержат игровые данные, включая графику, звук и уровни.

Формат включает в себя сжатие, шифрование, файловую сегментацию, метаданные, криптографическую подпись и возможность хранения нескольких версий одного и того же файла, что позволяет использовать MPQ вне зависимости от платформы, обеспечивая переносимость формата. Сжатие возможно множеством различных алгоритмов.

Оглавление архива[править]

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

Шифрование[править]

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

Версии[править]

В заголовке файла зарезервировано место для указания версии формата. Warcraft III игнорирует информацию о версии, так как умеет работать только с версией 1.

  • Версия 1 использовалась до World of Warcraft.
  • Версия 2 содержит дополнительный заголовок, содержащий данные для расширенной таблицы блоков, обеспечивающей поддержку архивов больших размеров.

Архивные метаданные[править]

Архивы MPQ не содержат специальных структур для хранения метаданных, кроме тех, которые необходимы для доступа к файлам. Вместо этого действуют соглашения по особому наименованию файлов и структуры каталогов.

Известные файлы, хранящие метаинформацию:

  • (listfile): Список файлов в архиве, одно имя на каждой строчке. Может быть неполным.
  • (signature): Содержит слабую криптографическую подпись архива. Этот тип подписи считается устаревшим.
  • (attributes): Содержит расширенные метаданные. Известно о наличии полей, содержащих дату создания файла, контрольные суммы CRC32 и MD5.

Сжатие[править]

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

На данный момент используются следующие алгоритмы::

Поскольку при первом использовании MPQ в Diablo использовался только один формат, в тех архивах использовался другой флаг для указания использования сжатия, а байт, определяющий алгоритм, не использовался.

Видеовставки Warcraft III[править]

Видеовставки в Warcraft III, хоть и использовали расширение MPQ, не являлись архивами. Это просто обычные AVI, сжатые MPEG-4 кодеком BLZ0 (который на самом деле DivX). Эти файлы воспроизводятся обычными видеоплеерами, если в системе установлен нужный декодер. Вероятно, Blizzard переименовала их в MPQ, чтобы скрыть от игроков во избежание спойлеров, так как, просмотрев ролики в обход игры, можно было узнать дальнейший сюжет и концовку. Тем не менее, World of Warcraft для видео использует расширение AVI.

Использование в играх[править]

Blizzard использует MPQ для хранения игровых данных во многих своих играх:

Источники[править]

  1. Phillip Katz, Computer Software Pioneer, 37, The New York Times (май 2000 года). Проверено 14 июля 2011.

Ссылки[править]

Спецификации[править]

Библиотеки[править]

  • StormLib — высокоуровневая кроссплатформенная C++ библиотека с открытым кодом. Поддерживает проверку цифровых подписей.
  • libmpq — кроссплатформенная библиотека на C с открытым кодом (также дополнительные инструменты) для извлечения файлов из MPQ.
  • jlibmpq враппер на Java для libmpq.
  • MPQKit — фреймворк на Objective-C под Mac OS X для работы с MPQ. Также поддерживает работу с подписями.
  • MpqLib — объектно-ориентированная .NET 3.5 библиотека для работы с MPQ.

Программы[править]

  • MPQDraft, программа с открытыми кодами с Sourceforge, позволяющая работать с MPQ.
  • MPQ Extractor — распаковщик для Mac OS X.
  • Ladik’s MPQ Editor, Редактор MPQ для Windows, Storm.dll, StormLib, библиотеки для чтения и записи MPQ.
  • WoW Model Viewer, программа для открывания World of Warcraft-овских MPQ и просмотра содержащихся там файлов.
П:
Игры
Книги
Архив Warcraft

Of Blood and Honor (2001) · Месть орков (англ. Day of the Dragon) (2001) · Повелитель кланов (англ. Lord of the Clans) (2001) · Последний Страж (англ. The Last Guardian) (2001)

War of the Ancients Trilogy

The Well of Eternity (2004) · The Demon Soul ·  (2004) The Sundering (2005)

Прочие

The Sunwell Trilogy (2005—2007) · Cycle of Hatred (2006) · Rise of the Horde (2006) · Tides of Darkness (2007) · Beyond the Dark Portal (2008) · Night of the Dragon (2008) · Ashbringer (2008—2009)

Вселенная

Описание мира · Расы мира · Персонажи мира

Другое

Warcraft III World Editor · DotA · Wowhead · Лирой Дженкинс · фильм

Fuchs-starcraft planets.png
Вселенная StarCraft
Компьютерные игры

StarCraft (Insurrection · Retribution · Brood War) · Ghost · StarCraft II (Wings of Liberty · Heart of the Swarm · Legacy of the Void)

Настольные игры

StarCraft Adventures · StarCraft: The Board Game (Brood War)

Расы

Терраны · Протоссы · Зерги

Персонажи

Арктур Менгск · Джим Рейнор · Зератул · Самир Дюран · Сара Керриган · Эдмунд Дюк

Прочее

Вторая Великая Война · Планеты и локации · Профессиональные соревнования по StarCraft · Редактор StarEdit · Battle.net · Список медиапродукции