不知道作为玩家的你,是否有这样的疑问:为什么不少游戏的加载速度如此之慢?
其实,这与你的CPU和GPU性能没有绝对关系,哪怕硬件再快,当运行像《微软模拟飞行》这样的3A游戏时,也需要等待一段时间。
难道游戏开发者没有考虑硬件性能,对所有玩家都一视同仁吗?
当然不是,游戏加载速度与“优化”有很大关系,这是因为现代游戏引擎正在发挥平衡作用,它们需要在各种硬件上运行,无论它是RTX 3090还是GTX 1060,玩家都希望表现出色,这样就可能产生冲突。
现代游戏引擎通常有10种不同的分辨率和3种不同格式的材质数据,因此对于每个对象,它都需要读取、分配空间和解析相关对象的元数据,然后需要处理每个项目并将其与硬件配置进行比较,以决定加载哪些“资产”。
分配内存、从硬盘加载和解析数据是游戏加载的“三大*手”,每一个都很费时。以分配内存为例,你不能告诉虚幻引擎预先分配什么项目,告诉存档序列化工具预先解析对象的大小,这时电脑只能依赖虚拟内存。
解析数据也很要命,它通常从一个巨大的字符串开始,接着将标签解析为文本,将数字进行数据类型的处理和区分,或者处理为一个巨大的子对象树。这也是为什么一旦重新设计“解析器”,可能大幅提升游戏的加载速度。
举个例子,软件开发者T0ST做了一件很彪悍的事:他发现《洛圣都OL》花了很长时间解析一个JSON文件(包含线上购物和升级数据),这个解析器的设计很糟糕,它会产生一个缓慢的重复数据删除例程,导致载入时间过长。
于是,这哥们编写了一个.dll文件,并将其挂钩一些函数,最后注入游戏中,将加载时间从6分钟缩短至1分50秒。事后,R星为了表示感谢,奖励了他1万美元现金。
总而言之,加载速度与优化有关,但随着硬盘技术、CPU和GPU的升级,如今加载缓慢的游戏将在几年后加载得很快。