2009年2月1日星期日

Nebula3 Zip文件系统

当应有程序需要打开并读取许多很小的文件时,游戏应用程序经常使用压缩文件来避免混乱和提高效率。Nebula2使用的是私有的压缩格式(NPK),Nebula3将使用标准的Zip文件。这有几个优点:

1.不需要自己编写工具去创建压缩包,可以任选一种zip软件。
2.简单的文件加密支持。
3.占用更小的磁盘空间。
4.更高的读取效率,因为效率瓶颈一般是磁盘的带宽,而不是解压速度。

这种实现也有一些缺点:

1.不支持写(这不是个大问题,NPK也不支持写的方式,游戏资源通常都是只读的)。
2.不能随机读取,这个有点麻烦,可以用更高级的实现来解决。方法是把要读取的zip压缩包中的文件整个解压到内存中,这样就能随机读取在内存中的文件拷贝了。

一旦zip压缩包通过IO::Server::MountZipArchive()加载起来后,读取zip压缩包的内容将是完全透明的。IO::Server::CreateStream()方法将检查URI是否是zip压缩包中的一个文件,在需要的时候返回ZipFileStream替代FileStream。应用程序一般使用返回的Stream对象并不需要关心这是个“真”文件或者是在zip包中的压缩文件。

原文: Nebula3's Zip file system

[声明]:限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;

没有评论:

发表评论