尤其是某些單機遊戲,解壓縮後的大小都是壓縮前幾倍大

即使是網遊,像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。為了遊戲運行時解碼速度快,這類資源通常都是簡單混淆一下,有的廠商,比如屎克威爾,更是改個文件名了事,這樣看壓縮率能不高麼。

良好的復用代碼是保證運行大型程序的高效率和穩定性的根本原因!

所以一個良好優化的遊戲或者程序,必然不會消耗過多的系統資源,內存還是磁碟!

越是大量復用代碼,遊戲或者程序的壓縮率就越高


推薦閱讀:
查看原文 >>
相關文章