魔头
查看详细资料
TOP
侠客
魔神至尊
下山豹
魔王撒旦
大侠
原帖由 @MacPhisto 于 2020-7-18 16:12 发表 为了优化加载速度,就要牺牲空间。如果要省空间,就要容忍更慢的加载,这个是矛盾是逃不掉的。
原帖由 @342401 于 2020-7-18 16:44 发表 这并不是虚幻5的问题,而是越逼近高拟真,高细节带来的必然结果,实际上,虚幻5相对于现在的游戏已经使用了高强度的压缩手段了,比如现在的大部分主机游戏,为了加快读取,甚至打包的还是原始未压缩的模型格式,如果按照虚幻5演示这种规模细节,使用原始未压缩的模型格式,游戏体积就不是两三倍的增长,而是十倍二十倍的增加,现在普通的50g游戏,到了ps5就是1t,2t。下一世代游戏,体积增加是必然的,但是压缩格式使用和改进也会优化包体大小,最终的结果大概是三百到五百GB的游戏成为3a主流。
天外飞仙
原帖由 @342401 于 2020-7-18 16:46 发表 加载速度跟大小不矛盾,实际上,压缩格式的使用和进化,会同时带来游戏大小和加载速度的缩减
原帖由 @MacPhisto 于 2020-7-19 00:55 发表 我说的“牺牲空间”是指开发者为了加快loading而采用的数据冗余。 比如,假设游戏里有5种素材A,B,C,D,E,有3个关卡X,Y,Z。 那么,如果是从“节省存储空间”的角度出发,游戏文档里应该只有A,B,C,D,E这5种素材,每个素材只出现一次。 然后在X,Y,Z关卡里,保存每个关卡用到了哪些素材,注意每个关卡保存的是素材的编号,而不是素材的内容本身。 但这样做的坏处是,假设X关的素材是A,B,E,而Y关的素材是B,D,E,读取X或者读取Y时会出现大量随机读写。磁盘IO就会成为性能瓶颈。 因此常用的优化方式是数据冗余。也就是说,在生成X关的数据是,把"A,B,E"这三种素材的实际内容打包为一份连续的数据,存储在X关里。 同样,在生成Y关时,把B,D,E的实际内容打包为一份连续的数据存储在Y关。 这样,在读取Y时,只需要顺序读取一次B,D,E到内存就可以了,不存在IO随机读写。 这也是为什么现在的游戏体积越来越大,COD有200G并不是因为COD真的有那么多素材,而是因为相同的素材被复制了很多份,目的是为了加快loading速度。 这也是为什么压缩算法的作用不大。因为文档体积增大的根本原因是开发者为了提升loading速度,宁愿采取数据冗余,牺牲体积。 而压缩算法本身解决不了“IO随机读写永远比顺序读写慢”这个特性。