標籤:

使用SubStance壓縮貼圖評估報告

11年的一篇老文檔,很不錯的技術當時和SubStance法國的技術一起測試,感覺他們假期好多天天休假。。。

目前XY貼圖資源統計

1.地形數據大小:

地形數據主要在DataScene 目錄,其中地形基本貼圖在DataSceneTexture目錄下,未壓縮43.9M,壓縮後(zip)22M;場景物件貼圖在DataSceneModelTexture目錄下總計337M壓縮後195.3M;

地形VFS打包數據總計532M(目前大概80幾張地圖)。在地形數據中,大約50%是貼圖數據,也就是說貼圖約佔266M;

2.UI數據的大小:

UI貼圖都在DataImagesets目錄下,未壓縮344M,壓縮後138.3M。為了效果需要,大部分貼圖是tga格式,這樣也不能使用Rudex壓縮,Rudex有損;

3.特效數據的大小:

特效數據主要放在DataEffect目錄下,其中未壓縮貼圖有113M,壓縮後28.9M;

4.Actor數據大小:

Actor數據主要在DataActor目錄下,其中未壓縮的貼圖有135.4M,壓縮後73.5M;

5.Avatar數據大小:

Avatar數據主要在DataAvatar目錄下,未壓縮的貼圖有37.2M,壓縮後22.7M;

預計使用Rudex壓縮效果:

考慮到我們打包使用zip壓縮比較高,大部分貼圖又很小,估計使用Rudex能對打包數據減少30%。按照這個比例如果使用Rudex壓縮全部貼圖,目前安裝後可以節約255M(目前80幾張地圖以後可能會增長到140張,最多可能會節約500M),目前客戶端安裝大小可以從1.6G減少到1.35G。

但是因為我們最大的貼圖數據主要場景數據532M,貼圖是以二進位的方式保存在gmcf中,如果壓縮需要修改地圖的導出和讀取方式,編輯器和客戶端都需要修改。客戶端估計要1周左右,此外使用Rudex壓縮估計會造成地圖讀取性能10%的損耗;評估編輯器的修改測試大概需要3周以上;美術方面所有地圖數據要重新導出估計3天,目錄結構也要有所調整。如果僅僅對非地圖數據gmcf以外進行壓縮,客戶端僅能減少96M左右。

實現方式:

使用Rudex壓縮針對目前XY客戶端有兩種實現方式:

1.在安裝包中使用Rudex壓縮貼圖數據減少安裝包容量,在安裝時解壓Rudex壓縮包,解壓出的dds貼圖再和客戶端其他數據打成現在的VFS包;

  • 缺點是會大幅延長安裝時間(可能會超過10分鐘),安裝後客戶端大小沒有減小;
  • 優點是與遊戲本身沒有任何關聯,實現簡單並且非常安全。

2.在安裝時將遊戲數據分為非貼圖數據的VFS包和純貼圖數據的Rudex壓縮包;

  • 缺點是直接讀取Rudex壓縮包有5%的性能損耗(提供商數據),需要修改客戶端讀取打包資源以及自動更新的流程,維護兩種數據包的讀取和更新,Rudex壓縮包本身的性能安全非常依賴該公司;
  • 優點是不會增加遊戲安裝時間,安裝後客戶端容量也會減小。

推薦閱讀:

關於演算法競賽中快速乘的一些優化
【程序】Unity 性能 Review
請問將方陣做特徵值分解,再去掉對角陣中的較小特徵值,這種操作叫什麼?

TAG:压缩 | 优化 |