使用SubStance压缩贴图评估报告
11年的一篇老文档,很不错的技术当时和SubStance法国的技术一起测试,感觉他们假期好多天天休假。。。
目前XY贴图资源统计:
1.地形数据大小:
地形数据主要在Data\Scene 目录,其中地形基本贴图在Data\Scene\Texture目录下,未压缩43.9M,压缩后(zip)22M;场景物件贴图在Data\Scene\Model\Texture目录下总计337M压缩后195.3M;
地形VFS打包数据总计532M(目前大概80几张地图)。在地形数据中,大约50%是贴图数据,也就是说贴图约占266M;
2.UI数据的大小:
UI贴图都在Data\Imagesets目录下,未压缩344M,压缩后138.3M。为了效果需要,大部分贴图是tga格式,这样也不能使用Rudex压缩,Rudex有损;
3.特效数据的大小:
特效数据主要放在Data\Effect目录下,其中未压缩贴图有113M,压缩后28.9M;
4.Actor数据大小:
Actor数据主要在Data\Actor目录下,其中未压缩的贴图有135.4M,压缩后73.5M;
5.Avatar数据大小:
Avatar数据主要在Data\Avatar目录下,未压缩的贴图有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压缩包本身的性能安全非常依赖该公司;
- 优点是不会增加游戏安装时间,安装后客户端容量也会减小。