EGG 存档格式,Evil Genius Game 存档的简称,是一种由 Rebellion Developments 开发的专有压缩文件格式,用于打包游戏资产。它主要用于邪恶天才系列视频游戏中。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 管理和分发游戏资产的有效解决方案。它的压缩功能、文件组织和可选的加密功能使其非常适合邪恶天才系列游戏的需求。随着该格式不断发展,推出新版本和更新,它仍然是 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文件中的多个文件有效地被捆绑在一起成为一个单一的文件,这也使得分享变得更容易。
技术上,是的,尽管额外的减小大小可能是微不足道的甚至适得其反。压缩一个已经压缩的文件有时可能会增加它的大小,由于压缩算法添加的元数据。
要解压文件,你通常需要一个解压或解压缩工具,如WinZip或7-Zip。这些工具可以从压缩格式提取原始文件。