iso格式作为单文件封装破解单机游戏的实用性简短探究
前几天网上冲浪的时候,看到某掌机群群友提出了一个很有意思的观点
按理来说,我们印象里的单机游戏都是以rar或者7z格式分卷下载下来以后,解压后成为单独的文件夹,然后在文件夹里找到文件的主程序运行才能进行游戏。
(相关资料图)
众所周知,现代大型3A游戏很多材质包和文件都是以小文件的形式存在的,数目众多大小不一的游戏文件很显然会在游戏移动和拷贝的时候拖延时间,因为在拷贝游戏的时候数量众多的小文件体现的是硬盘的随机读写性能。
这位群友的观点很有意思,ta的意思是对游戏文件夹进行封装处理,把单个游戏文件夹通过软碟通等软件封装成单个的iso文件(不做任何压缩,单纯使用拷贝模式进行封装)或者isz文件(isz格式相对比iso格式有数据压缩),这时游戏文件夹就是一整个文件了,在拷贝或者转移的时候就主要依靠硬盘的连续读写性能了,这对目前NVMe固态硬盘更友好,毕竟随便一个×4的固态硬盘的连续读写速率都能跑上1000M/s,而就算是目前顶级的的硬盘,4k随机读写性能也不见得能比的硬盘快多少。
那么这个封装游戏的方法对于游戏运行的体验有没有损失呢?帧数会不会因为性能损失降低?这就是我们争论的焦点。
对于这个问题,我设计了这样的实验:
1. 实验主要目的:用数个大型单机游戏作为测试对象,探究iso封装单文件格式相对于不封装的文件夹格式对单机游戏的CPU资源占用、硬盘io资源占用的影响以及最终对于游戏帧数和帧生成时间的影响。 2. 测试对象:游戏样本1《刺客信条英灵殿》、游戏样本2《古墓丽影暗影》、游戏样本3《最终幻想15基准测试》 3. 测试方法:将上述3个游戏分别使用软碟通进行处理,分别处理成A格式(无压缩的iso格式)、B格式(无处理的从网上下载的压缩包直接解压的原版文件夹格式),一共2种格式,在开启hwinfo64 Beta进行硬件运行情况监控、RTSS 、Fraps、OBstudio进行帧数统计、帧生成时间测算和录屏的情况下,分别从双击游戏图标开始计时,到游戏自带的基准测试运行结束(基准结果展示界面出现)为止,计算基准运行时间和收集统计数据。 4. 数据分析:对于一个游戏的两种不同格式的硬件运行情况和帧数统计进行对比并通过Excel绘制折线图分析,排除偶发性硬件问题检查有无异常及异常是否具有意义。 5. 测试平台:i3 9100F/2×8G DDR3 1600MHz/昂达H310C-SD3/技嘉GTX1660S/256G SATA SSD+1T SATA SSD+500G SATA HDD/先马领军535 额定400w 12v输出360w
先说结论:跟我们的刻板印象不同,目前的大型单机游戏对于硬盘顺序读写性能更看重,4k性能反而对游戏性能影响不大(或者是还没测到瓶颈)
再上截图
测试一:刺客信条:英灵殿
测试二:古墓丽影:暗影
测试三:最终幻想15基准测试
其中最终幻想15基准测试在文件夹格式下比在iso格式下分数高出约%,其它两个游戏在文件夹格式下和单文件iso格式下帧数下降并不明显。
讨论:
根据请教做文件系统的大佬的说法,这主要是随机读写、顺序读写和分区的BLOCK大小的影响,有的设备是顺序读写而且不同物理设备的BLOCK不一样,因此不同的文件格式本来就是给不同的硬件设计的。iso9660这个格式是很老的文件格式,如果游戏文件名里有些莫名其妙的奇怪的字符的话,以及如果游戏文件中有单个文件超过2G的文件很容易导致各种各样奇怪的问题。ISO9660这个文件格式是针对CD和DVD的存储介质设计的,而CD和DVD都是属于顺序读写,在固态硬盘下顺序读写性能强的时候体现不出瓶颈。
实际上国外的破解组挺多的都是发布一个torrent然后一个iso高压文件流通,在国内网盘二次分流的情况下,网盘服务商曾经有过不支持超大文件的问题,而且大文件存网盘流通的时候容易导致数据损坏,以至于现在网盘分流的游戏文件不少都是单个文件4G左右的多个分卷的rar格式,因为rar压缩格式支持5%的文件回复记录,对于游戏文件出现受损的情况更友好。
此外,基于连续读写不能成为瓶颈的推测,是否在某些优化不那么好的游戏或者游戏文件小文件更多的游戏上,以及某些开放沙盒世界地图一边游戏一边读图的情况下,会触及到iso单文件格式的短板?以及isz文件格式对于游戏文件实际上是有压缩的,这种情况的解压缩运算下会不会对CPU要求更高?这些猜测还有待进一步的测试确认。
单文件iso/isz格式目前Windows10、11系统都可以实现不需要第三方软件就能挂载虚拟光盘,综上所述确实可以作为一个存储单机游戏的一个方法,优点是单文件,只吃顺序读写,拷贝和转移速度更快;而缺点是需要对游戏文件夹进行二次处理,硬盘需要留出一部分周转空间进行处理。