尤其是某些单机游戏,解压缩后的大小都是压缩前几倍大

即使是网游,像CF之类的游戏安装包4G,安装完也有15G大,接近四倍的压缩比例

为什么游戏安装包能保持较高的压缩率?


无损压缩率只取决于信息熵的大小。TXT、EXE和原始图像的冗余度很高,所以可以被大幅压缩。

已经经过高度压缩的JPG或者H264再压缩体积可能反而会增大。


泻药...

压缩的原理可以简单理解为:合并文件相同内容(文件与文件之间这些所谓「内容」是不可见的),记录合并项,还原合并内容(解压缩);举个简单例子:把视频文件复制1份,然后压缩这2个视频文件,压缩后就是1个视频的容量,因为两个视频完全一样,只需存储一个,解压缩时X2即可...

由于压缩率和游戏文件有直接关系,所以,并不是所有游戏都可以被狠狠压缩,就像彭明鑫说的那样,如果游戏文件多为无损图片,那么无损图是有极大的压缩空间的,即相同内容多可以被压缩,但是像JPG这种属于已经最大化压缩过的图像格式,则不能再进行压缩;包括MP3、ogg、wmv、bik等都属于不可压缩;基本上游戏文件里无损图像、模型、文本、音频、资料库都是可以被压缩的;这就要看这些可压缩文件的占有容量了;如果15G游戏,全是无损图像、模型、文本、音频、资料库等,那么压缩到4G很正常;

还有一些情况,许多像JPG/OGG这种无压缩率格式文件,虽然不能再压缩,但可以重编码,把JPG二次编码为BMP等图像格式,记录编码过程,再还原为之前完全相同的JPG文件,OGG-WAV-OGG同理;这样做的目的,并不是把原本很小的JPG扩大,而是重编码为BMP后,再次进行winrar等压缩,其容量会小于之前的JPG文件,这是一种可还原的编码演算法,不必深究;这种通常称为预压缩技术,主要用来解决非无损图像格式的压缩,也就是现在主流引擎下产出的高容量贴图游戏;CF一看就是老引擎产物;实际上画面越精细,越难被压缩,因为JPG贴图多,俗称堆贴图,为什么不是过去常用的DDS?因为害怕游戏占用空间超过100G!!然而用JPG,游戏可能只有20G,但是也变成了不可压缩,反过来看,实际上游戏本身已经给你精简容量了…

另外,现在的游戏文件都是经过加密封装的,例如许多音频文件打包成sound.data一个文件,运行游戏时,游戏会解压开这个文件包,读取里面不同的音频文件;所以你看不到这些文件格式,也不排除压缩软体无法突破加密进行相同内容合并,导致压缩率低下;

现在游戏容量普遍巨大的原因,就是随著4K显示器的问世,为了适应4K解析度,不得不将游戏贴图解析度扩大,然而为了尽量减少空间占用,所以普遍采用jpg这种压缩后的格式(同时导致压缩率低下),这样一个游戏30G,可能有15G是不可压缩的jpg贴图,10G是不可压缩的视频文件,2G通常为加密封装后的未知格式的音频文件(或许有一些压缩率),最后剩下3G为经过加密的各种模型及游戏程序,导致实际上最后能压缩动的只有那3G文件...可以单纯理解为,游戏容量的扩大是图片的扩大...

所以,老引擎做出的游戏通常很容易被压缩掉,也意味著游戏画面比较过时,反之亦然;


因为压缩包里都是些TGA,DDS这样的无损64位资源啊,一张2048的TGA至少5MB,压缩完大概0.8MB。为了游戏运行时解码速度快,这类资源通常都是简单混淆一下,有的厂商,比如屎克威尔,更是改个文件名了事,这样看压缩率能不高么。

良好的复用代码是保证运行大型程序的高效率和稳定性的根本原因!

所以一个良好优化的游戏或者程序,必然不会消耗过多的系统资源,内存还是磁碟!

越是大量复用代码,游戏或者程序的压缩率就越高


推荐阅读:
查看原文 >>
相关文章