EGG 檔案格式,Evil Genius Game 檔案的簡稱,是一種由 Rebellion Developments 為遊戲資產打包而開發的專有壓縮檔案格式。它主要用於 Evil Genius 電玩遊戲系列。EGG 格式讓遊戲開發人員可以有效率地儲存和存取各種類型的遊戲資料,包括紋理、模型、音訊檔案和組態檔案。
EGG 檔案遵循特定結構來組織包含的檔案和元資料。檔案從包含檔案版本、檔案數量和檔案總大小等資訊的標頭開始。在標頭之後,有一個檔案配置表 (FAT),提供檔案索引,其中包含儲存在檔案中的所有檔案,以及它們各自的偏移量和大小。
EGG 格式的主要特點之一是它的壓縮機制。EGG 檔案中的遊戲資產通常使用 Rebellion Developments 開發的客製化壓縮演算法進行壓縮。這種壓縮有助於縮小檔案的整體大小,讓它在執行期間更有效率地分發和載入遊戲資產。壓縮演算法的具體細節並未公開,因為它們被視為專有資訊。
要存取 EGG 檔案中的檔案,遊戲或工具必須先解析檔案標頭以取得必要的元資料。這包括讀取檔案版本以確保相容性,並確定檔案中存在的檔案數量。然後處理檔案配置表以擷取每個檔案的偏移量和大小。
取得檔案元資料後,遊戲或工具可以尋找檔案中的適當偏移量,並讀取特定檔案的壓縮資料。然後使用對應的解壓縮演算法解壓縮壓縮資料,這會反轉檔案建立過程中套用的壓縮。解壓縮後,遊戲或工具可以根據需要使用提取的檔案資料,例如載入紋理、模型或音訊檔案。
EGG 格式也支援選擇性的檔案加密,以提供遊戲資產額外的安全層。當使用加密時,檔案中的檔案資料會使用對稱加密演算法進行加密。加密金鑰通常來自多個因素的組合,例如檔案密碼和其他遊戲特定參數。檔案資料的解密在解壓縮後使用適當的加密金鑰進行。
Rebellion Developments 提供軟體開發套件 (SDK) 給遊戲開發人員使用 EGG 檔案。SDK 包含協助建立、處理和提取 EGG 檔案的函式庫和工具。這些工具處理格式的低階細節,例如壓縮、解壓縮和加密,讓開發人員可以專注於將資產整合到他們的遊戲中。
使用 EGG 格式的一個優點是它可以在執行期間有效率地載入遊戲資產。透過將相關資產打包在單一檔案中,遊戲可以最小化磁碟 I/O 作業並改善載入時間。EGG 格式的壓縮也會縮小載入資產的記憶體使用量,讓記憶體使用更有效率。
然而,EGG 格式的專有性質可能會對模組社群和第三方工具造成挑戰。在沒有官方文件或逆向工程的情況下,要建立可以提取或修改 EGG 檔案內容的工具可能會很困難。這個限制可能會阻礙使用 EGG 格式的遊戲的模組、自訂內容或資產提取工具的開發。
儘管 EGG 檔案格式具有專有性質,但它已被證明是 Rebellion Developments 管理和分發遊戲資產的有效解決方案。它的壓縮功能、檔案組織和選擇性的加密功能非常適合 Evil Genius 遊戲系列的需求。隨著格式持續隨著新版本和更新而演進,它仍然是 Rebellion Developments 遊戲開發流程中不可或缺的一部分。
檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。
多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉 成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼與範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。
DEFLATE(被 gzip、zlib 與 ZIP 採用)把 LZ77 和霍夫曼編碼結合。其規格完全公開:DEFLATERFC 1951、zlib 封裝RFC 1950以及 gzip 檔案格式RFC 1952。Gzip 針對串流設計並明確不提供隨機存取。PNG 影像則把 DEFLATE 規範為唯一的壓縮方式(視窗最多 32 KiB),詳見 PNG 規格「Compression method 0… deflate/inflate… at most 32768 bytes」與W3C/ISO PNG 第二版。
Zstandard (zstd): 針對高壓縮率與極快解壓而設計的通用壓縮器。格式記載於RFC 8878(以及HTML 鏡像)和 GitHub 上的參考規格文件。與 gzip 類似,基本框架並不追求隨機存取。zstd 的絕招是字典:從語料擷取的小樣本能大幅改善許多小型或相似檔案的壓縮(參閱python-zstandard 字典文件與Nigel Tao 的示例)。各實作同時支援「非結構化」與「結構化」字典(討論)。
Brotli: 為網頁內容(如 WOFF2 字體、HTTP)優化,結合靜態字典與類 DEFLATE 的 LZ+熵編碼核心。規格載於RFC 7932,文件同時指出滑動視窗為 2WBITS-16,WBITS 介於 [10, 24](1 KiB-16 B 至 16 MiB-16 B),並且不嘗試隨機存取。Brotli 常在網頁文字上優於 gzip,解碼也相當快速。
ZIP 容器: ZIP 是一種檔案封存格式,可存放使用多種壓縮法(deflate、store、zstd 等)的項目。權威規格是 PKWARE 的 APPNOTE(參見APPNOTE 入口、托管副本以及美國國會圖書館的概覽ZIP File Format (PKWARE)/ZIP 6.3.3)。
檔案壓縮是一個減少檔案或檔案群大小的過程,通常用於節省儲存空間或加速網路傳輸。
檔案壓縮運作原理,透過識別並移除數據中的冗餘資訊。它使用演算法將原始數據編碼在較小的空間裡。
兩種主要的檔案壓縮類型是無失真及有失真壓縮。無失真壓縮可以完美地恢復原始檔案,然而有失真壓縮在一些資料品質的損失下能得到更大的壓縮程度。
一個常見的檔案壓縮工 具範例是WinZip,它支援多種壓縮格式包括ZIP與RAR。
在無失真壓縮中,質量保持不變。然而,在有失真壓縮中,可能會有顯著的質量下降,因為它刪除了一些較不重要的數據以便更大程度地減少檔案大小。
是的,相對於資料的完整性來說,檔案壓縮是安全的,尤其是無失真壓縮。然而,如同所有檔案,被壓縮的檔案也可能受到惡意軟體或病毒的攻擊,所以總是需要有專業的安全軟體以保護。
幾乎所有種類的檔案都可以被壓縮,包括文字檔案、圖像、音訊、視頻和軟體檔案。然而,壓縮程度可以因檔案類型而有顯著的不同。
ZIP檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。
技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。
解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。