MPQ-Archiv
Aus Mappedia
Ein MPQ-Archiv ist eine Datei, die für gewöhnlich die Endung *.mpq besitzt und funktioniert ähnlich wie ein konventionelles Archivformat wie zum Beispiel *.zip oder *.rar. Blizzard Entertainment entwickelte es, um damit das Vorgängerformat WAR abzulösen. Erstmals benutzt wurde es in Diablo, und von da an für alle Spieledateien aller folgender Spiele, sowie für die Kartendateien von Starcraft und Warcraft III.
Inhaltsverzeichnis |
[bearbeiten] Geschichte
[bearbeiten] Vorgänger
Vor dem MPQ-Archiv verwendete Blizzard das WAR-Format (Warcraft Archive). Dieses war extrem simpel, und in sofern wäre es für Hacker einfach gewesen, das Archiv zu modifizieren. Ausserdem gab es Performance-Probleme mit größeren Zahlen von Daten. Mit der Entwicklung von Diablo, wurden diese Probleme so schwerwiegend, dass ein neueres Format entwickelt werden musste.
[bearbeiten] Entwicklung
Entwickelt wurde das Format im Jahr 1996 von Mike O'Brien. Der Name des Dateiformat ist aus dessen Namen abgeleitet: Mike O'Brien Pack, das ck wird zu q verkürzt, also Mopaq. Daraus wurde dann die Dateiendung *.mpq.
[bearbeiten] Verwendung
Das Format hat sich bereits in Diablo bewährt, und wurde in allen folgenden Spielen von Blizzard verwendet. Das Format wurde in dieser Zeit praktisch nicht verändert. Der Entwickler Mike O'Brien hat Blizzard mittlerweile verlassen. Das Copyright liegt bei Blizzards Mutterunternehmen Vivendi, und darf daher weiterhin in allen Spielen von Vivendi und seinen Tochterunternehmen exklusiv verwendet werden.
[bearbeiten] Hacking
Ursprünglich war es nicht möglich MPQ-Archive zu modifizieren, oder zu lesen. Blizzard wollte dies auch unter allen Umständen verhindern, um Cracker fern zu halten. Die universale Bibliothek storm.dll, die mit jedem neueren Spiel von Blizzard geliefert wird, hat daher nur die Fähigkeit MPQs zu lesen. Diese Funktionen sind verhältnismäßig einfach zu bekommen. Die Funktionen zum Erstellen neuer MPQ-Dateien und zum Modifizieren, kamen erst mit dem Erscheinen von Starcraft, und dem Programm StarEdit, dem Editor dieses Spiels. Mit sehr komplizierten Methoden gelang es Hackern, diese Funktionen zu bekommen, und den ersten MPQ-Editor zu schreiben.
[bearbeiten] Technische Details
Das MPQ-Archiv wurde entwickelt, um einige große Probleme seines Vorgängers zu lösen. Die zentralen Vorteile von MPQ sind:
- Sicherheit
- Es wurden große Anstrengungen darin investiert, dass das Format von niemandem verändert werden könnte. Das Format ist allerdings geknackt worden, wodurch es möglich wurde eigene MPQ-Editoren zu programmieren.
- Effizienz
- Das Format sollte eine große Menge Dateien tragen können, und gleichzeitig sollten einzelne Dateien einfach auffindbar sein. Das Ergebnis sind unter anderem die (listfile)-Datei, in der optional die Pfade aller enthaltenen Dateien gespeichert werden können und die Implementation von Hash-Wert-Suchalgorithmen, die aus den Dateipfaden bei einer Suche Hashwerte erzeugen und nach diesen in der Hash-Tabelle des Archivs suchen.
- Mehrsprachigkeit
- Ein MPQ-Archiv kann Dateien in mehreren Versionen in unterschiedlichen Sprachen tragen.
- Erweiterbarkeit
- Es ist möglich, aus mehreren Archiven parallel zu lesen, damit nicht alle Dateien, die ein Spiel verwendet, in einem einzigen großen Archiv liegen müssen. Dadurch ist die Wartung einfacher, da Patches einfach in einem separaten MPQ gespeichert werden können, die dann die originalen Dateien überschreiben. Ausserdem kann man in den Archiven einer Karte noch nachträglich Spieledaten überschreiben.
- Kompression
- Jede Datei eines MPQ-Archivs kann komprimiert werden.
- Die von Blizzard genutzten Kompressions-Algorithmen
- PKZIP (Erster Kompressions-Algorithmus)
- Huffman & ADPCM
- zlib (Ab Warcraft III)
- bzip2 (Ab World Of Warcraft)
[bearbeiten] Programmierung
Es gibt zwei bekannte Bibliotheken zur Verwendung des MPQ-Formats. Zum Einen die SFmpqapi, welche erst vor kurzem (am 14. Juli 2008) als Open Source freigegeben und zum Anderen die StormLib. Während die SFmpqapi nicht besonders gut auf andere Betriebssysteme als Windows portiert wurde, ist die StormLib funktionstüchtig plattformübergreifend. Beide werden über die Programmiersprache C++ angesprochen.
[bearbeiten] Weblinks
- Inside MoPaQ (englisch)
- Nathanmx' MPQ Documentation (englisch)
- SFmpqapi-Neuigkeiten (englisch)
- StormLib-Referenz (englisch)

