MPQ

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

MPQs використовується в іграх Blizzard, і як правило містить файли даних гри, що включає графіку, звуки, та інформацію про рівні. Можливості формату включають в себе стиснення, шифрування, файл сегментації, розширюваний файл метаданих, криптографічний підпис та можливість зберігання кількох версій одного і того ж файлу для інтернаціоналізації та збереження специфічних відмінностей кожної платформи. MPQ архіви можуть використовувати різні алгоритми стиснення які також можуть бути об'єднані.

Індексування файлів[ред.ред. код]

Для того аби відповідати вимогам швидкодії які вимагають сучасні комп'ютерні ігри, файли індексовуються у хеш таблиці використовуючи швидкий, низько-зіткненневий хешувальний алгоритм. Покажчик певного файлу усередині хеш таблиці є хешом мало-літерної назви файлу поділеної на розмір хеш таблиці, що дозволяє швидко перевірити наявність файлу в архіві. Якщо ж декілька файлів усередині архіву мають тотожний хеш, такі зіткненневі файли будуть розташовані одне за одним у зростаючому покажчик-порядку (формуючи в такий спосіб зіткненневий хеш кластер). Для того аби ідентифікувати саме бажаний файл усередині хеш кластеру, кожен окремий запис збегігає 2 додаткових хеша мало-літерної назви файлу, кожен з яких використовує однаковий хеш алгоритм, але з іншим зерновим значенням, та іншим кодом локалізації та кодом платформи. Кінець хеш кластеру виявляється або шляхом виявленням порожнього запису у хеш таблиці або ж перетинанням усієї хеш таблиці (включно з діленням loopback'у) назад до початкового покажчика хеш таблиці.

Криптографія[ред.ред. код]

Блок таблиця (яка вміщає в себе інформацію стосовно того де розташований відповідний файл у архіві) так само як і хеш таблиця що використовуються для індексації файлів, закодовуються під час збереження. Криптографічний процес який використовується за промовчанням, використовує відомий алгоритм.

Ревізія[ред.ред. код]

Заголовний файл резервує місце для збереження даних про версію форматування. Warcraft III ігнорує версію форматування погоджувальних файлів .mpq які завантажує гра та вважає їх всіх 1 версією.

  • Версія 1 використовувалася до World of Warcraft.
  • Версія 2 додала простягнений заголовний файл до формату який містить дату для простягненої блок таблиці для того аби дозволити архіви більшого розміру.

Метадата архіву[ред.ред. код]

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

Нижче наведені відомі файли метаданих.

  • (Файли-списку): Містить список файлів архіву, по одній назві файлу в рядку. Може, а може і не бути вичерпним.
  • (Підпис): Містить слабкий криптографічний підпис архіву. Цей тип підпису не рекомендується.
  • (Атрибути): Містить розширені метадані файлу. В наш час[Коли?] відомими атрибутами файлу є дата створення, CRC32 контрольна сума та перевірочна сума MD5.

Стискання[ред.ред. код]

У сучасних MPQ архівах, кожен сегмент (або сектор) файлу може бути стиснутий з використанням комбінації алгоритмів стиснення. Заголовковий байт додається до кожного стисненого сектора аби вказати яке стиснення було використано. Порядок, в якому ці компресори застосовуються є хардзакодованим.

В даний час наступні алгоритми використовуються в іграх компанії Blizzard:

  • PKZIP (за ліцензією PKWARE). Перший доступний алгоритм стиснення .
  • Хаффман деревовидне стиснення в поєднанні з ADPCM стиснення у співвідношенні 4:1 (обидва вперше представлені у StarCraft). Пізніші алгоритми використовували стиснення з втратами і відповідно підходять лише для сирих вихідних даних PCM.
  • Zlib (вперше представлений у Warcraft III).
  • Bzip2 (вперше представлений у World Of Warcraft).
  • LZMA (вперше представлений у StarCraft II).

Так як є тільки один алгоритм стиснення був доступним коли MPQ-архіви були вперше використані у Diablo, ці архіви використовували інший прапорець архівних файлів метаданих аби вказати на стиснення та не використовували заголовковий байт стиснення.

Warcraft III CGI-ролики відео[ред.ред. код]

Рівневі-ролики з розширенням MPQ включені в Warcraft III і, незважаючи на розширення файлу, не є файлами MPQ. Швидше вони AVI файли, стислі за допомогою перейменованого Blizzard'ом, кодеку MPEG-4 , BLZ0 (який насправді є DivX). Ці файли можуть відтворюватися в звичайних медіа-плеєрів, за умови того що належні кодеки встановлено. Blizzard, ймовірніше всього, використовували MPQ розширення для цих файли, щоб приховати їх від гравців, які могли б зіпсував своє враження від гру, бачачи їх до того як вони пройшли відповідний рівень гри. Попри це, ролики World Of Warcraft використовували розширення AVI.

DBC (WDBC) файли колекції записів даних, що використовуються в World Of Warcraft є клієнтськими базами даних. Вони знаходяться всередині MPQ файлів гри. .DBC файли організовували клієнтську інформацію, необхідну для запуску гри правильно.

Використання в іграх[ред.ред. код]

Blizzard використовувала файл формату MPQ для архівування ігрових файлів у деяких з їх ігор, включно з:

Посилання[ред.ред. код]

Зовнішні посилання[ред.ред. код]

Спесифікації[ред.ред. код]

  • The MoPaQ Archive Format найточніша та найповніша специфікація незалежного розробника формату MPQ .
  • Inside MoPaQ — посібник до формату. (Не оновлюється, лише Win32, немає вихідного коду.).

Бібліотеки[ред.ред. код]

  • StormLib крос-платформенна C++ бібліотека високого рівня з відкритим кодом для маніпуляції архівів MPQ . Також підтримує перевірку підписів.
  • libmpq крос-платформенна C бібліотека (та пов'язані з нею інструменти) для видобування файліз з архівів MPQ.
  • jlibmpq java обгортка для libmpq.
  • MPQKit Mac OS X Objective-C каркас для маніпуляції архівів 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, програма що вміє відчиняти файли MPQ гри World of Warcraft аби переглядати файли які заархівовано у них, як наприклад файли формату .MD2 або файли .MS3D.