MPQ

MPQ

MPQ 是 Blizzard 公司將遊戲數據包裝在一起的一種檔案格式,內容放置採取 Joliet 檔案格式 (MS-DOS 路徑型態+長檔案名稱),與 Unix/Linux 路徑型態不同。內部採取可壓縮設計,但對於不同檔案型態,其壓縮方式也不同。MPQ,也稱MoPaQ,是Mike O'Brien發明的一種壓縮檔案格式。MPQ內部包含了許多檔案,包括坐標算法、聲音、動畫、字元串、數字數據和故事情節信息。MPQs要求執行時先簡單預先輸入的各種各樣的任務數據然後實時放出。所有現代的暴雪遊戲中都使用storm存放重要功能,比如讀取MPQ,Battle .net和一些圖形化例程。

基本簡介

MPQ,也稱MoPaQ,是Mike O'Brien發明的一種壓縮檔案格式。在1996作為,MPQ套用在Diablo(暗黑破壞神)遊戲中。

然而它的著作權屬於 Blizzard 的父公司 Havas Interactive,並且在Mike O'Brien離開暴雪後繼續使用。正是MPQs由於在Diablo(暗黑破壞神)中的出色表現,使其繼續套用在Starcraft1&2(星際爭霸一&二), Warcraft 2/2X/3/3X(魔獸爭霸2/3及其資料片),Diablo 2(暗黑破壞神2), Lords of Magic(魔法大帝),World of Warcraft(魔獸世界)以及Diablo 3(暗黑破壞神3)中。

MPQ內部包含了許多檔案,包括坐標算法、聲音、動畫、字元串、數字數據和故事情節信息。明顯地,MPQ的潛力很大。要想利用MPQ,那么您就需要了解它。在有MPQ格式之前,一直使用的是WAR格式,在Warcraft 2,甚至在Warcraft 1中存放遊戲數據。然而WAR格式是簡單的,不精製的,是由缺乏經驗的程式設計師所編寫的檔案格式。檔案在檔案中僅使用參考序數和是否被壓縮做為唯一可選擇調用的方法。

儘管如此它仍然完成了它的任務。它提供了壓縮格式下的檔案調用。但很快缺點開始出現。調用時使用參考序數,意味著一長串檔案接口的名單必須被保留和被諮詢,當程式設計師需要使用其中一個檔案,那么則需要極長的時間,工作變得越來越繁瑣。當時這些問題並沒有那么嚴重,所以有人堅持使用WAR格式,但是一切在使用 Battle .net(網路對戰)後,問題變得不能接受。

主要特點

如被提及以前,MPQ格式一直被用做修正WAR的設計缺陷。但是他們也想增加一些全新的特點到MPQ。在暴雪的遊戲中,MPQ格式的特點總結為以下幾點:

1.Security. 安全

暴雪一定不希望在遊戲中玩家可以修改數據。或許他們提早知道MPQ格式可以為Starcraft使用。不管怎樣,安全是最重要的,由此他們顯然做了極大的努力去維護遊戲的安全性。

2.Efficiency. 效率

MPQs要求執行時先簡單預先輸入的各種各樣的任務數據然後實時放出。對於預先輸入數據,時間並不重要。但是實時放出就是另一件事了,其中的數據必須快速地被解壓使用。

3.Multilinguality.多語言的計算機處理

在最開始的時候,暴雪就計畫發布其遊戲在全球遊戲市場,因此他們儘可能的做到多語言。在創新時,他們決定設計多語種能寫入MPQ格式。

4.Expandability.擴展

顯然的,在遊戲中需要使用獨立的數據。太大的數據不僅是效率低並且減慢遊戲速度,如果補丁修改了,也是很麻煩的。暴雪明白這個道理,因而MPQ格式的要求就是有能力完全,高效率的,從多個檔案數據中調用需要的數據。

程式模組

相比在程式模組中複製函式,多數程式設計師喜歡把相同代碼放到shared libraries(共享程式庫)里。shared libraries是包含了任意程式功能的函式模組。不僅能避免多餘,並且能縮小程式大小。

正因為如此,暴雪使用一個稱為Storm的共享程式庫(PC機上為Storm.dll,MAC機為Storm.bin)。

所有現代的暴雪遊戲中都使用storm存放重要功能,比如讀取MPQ,Battle .net和一些圖形化例程。

當暴雪要發布新版本的遊戲,只需要增加功能到storm,無需改變原有功能。這意味著舊版本的遊戲只用升級新版本storm就可以了,這就是我們俗稱的安裝補丁。

就像所有共享程式庫,任何想使用它的程式都可以訪問到它的函式。這就是為什麼storm只包含MPQ讀取功能。

編寫功能

雖然 Storm 沒有包含任何編寫MPQ的功能。但是 StarEdit 包含,因為 SCM/SCX 檔案也是 MoPaQ檔案。但是這些函式被加密了,所以只有知識淵博的黑客們才可以使用。對於Blizzard 來說不幸的是,有一個這樣的黑客,他的名字是 Andrey Lelikov(aka Lelik)。他發現了一種訪問這些寶貴的函式的途徑,並把這個複雜的過程封裝在LMPQAPI.DLL(Lelik's MPQ API Library DLL)檔案中。該檔案自動破解StarEdit,將這些函式展示在所有的程式設計師面前。

價格術語

MPQ是minimum package quantity,即最小包裝個數

一般商品是要有內彩盒和外包箱,一個外包箱裡面容納多少內彩盒因工廠和產品類型而不同,一般是容納10個,也可以變化,但為了運輸方便和成本因素,有的工廠是有最小包裝量的,不能低於6個或者5個之類的。

相關詞條

相關搜尋

熱門詞條

聯絡我們