开发者虽然在努力解决,但说到底还是硬件的问题。
电子游戏看起来做的一年比一年好了。
就在过去的几个月中,我们见证了《地平线:黎明时分》、《荒野之息》以及《不义联盟2》给玩家带来的技术上的震撼;但是当游戏画面逐渐变好的同时,读盘时间这一“所有急性子玩家的梦魇”却丝毫不见改进。
它们在在那些发售前补丁中出现的时候简直太令人生厌了。所以我们拥有的那些更强力、更值钱的游戏设备究竟能不能有朝一日强到足够消灭这些等待时间呢?
我和一名程序员谈了这个事情,他解释道:虽然游戏中的内容现在已经越来越多了,但是我们用来处理这些内容的硬件设施并没有相应地进步。
“GPU和CPU的性能的提升远远超过了硬盘读写速度的提升幅度,”William Armstrong,一名曾经参与过制作《生化奇兵2》和《看火人》的程序员在邮件中这样回复我。硬盘的性能还在被物理法则所束缚,他说,因为数据的读写还是取决于电子和设备之间的相互作用。“这个过程会比纯电路要慢的多。”他说。“所有东西都比光要慢。”(译注:光是电磁波)
诚然,现在的硬盘读写速度确实比十几年前要快多了,现代的游戏机也有比之前的机型有更大的内存容量,但是这个提升并不成比例。Robert Dieterich,一名参与过制作《Elite Beat Agents》和《Lips》的程序员,就拿画面的材质——用来让游戏中的物体和环境显得更逼真——的大小举了个例子。
如果一位游戏开发者想要把材质的平均分辨率从1024x1024提升到2048x2048,数据大小就会是原来的四倍之多,如果是4096x4096就是16倍。
“如果换用固态硬盘的话,读取速度会大幅提升,但是花销也更大,读取速度还是赶不上游戏数据大小的增幅。”Dieterich说。
而且不仅仅是材质的大小,Armsrong说。“游戏的内容增加了,从而设置文件的大小也增加了很多。”他说。“诸如设置AI行为,动态物理效果,让每个物品都在存储读取系统里注册,等等。当游戏内容增加的同时,这些设置文件的大小也在增加。”
总之,由于数据大小和硬盘读写速度的不相称,游戏读取时间没增加就已经是万幸了。这是因为游戏开发者们会使用各种技术去隐藏或者减少读取时间。Dieterich说,读盘界面通常并不是读取过程的开始——它们通常是一系列后台进程的结尾,只是游戏开发者用来避免程序响应时间过长而制作出来的。
举例来说,在你真正开始游戏之前读取数据就会开始,这也是为什么有的游戏开头logo画面特别长还不能跳过。另外一些游戏会在你游戏的同时读取,或者用一些两者混合的手段。许多现代游戏也会在你游戏过程中逐渐地用数据生成一些数据,比如高清素材。换句话来说,也许一个墙的贴图并不是从一个bmp文件来的,而是从数学公式中实时计算得到。
但是,所有这些东西都有自己的麻烦之处;最有效的减少读取时间的方法是把一个部分所需要的素材打包,只在用到它得时候再读取它。游戏开发者可以根据玩家游戏的进程以及可能采取的行为来将这些素材分类打包;直白地来说,这种技术通常会在一个关卡开始前使用。
但是玩家的行为并不是总那么容易预测,尤其是现在越来越多的游戏开始采用开放世界设计。“玩家的目的地越难以预测,你越难以预计下一步玩家可能会用到什么样的数据。”Dieterich说。“这就是为什么你在开放世界游戏中进行快速旅行的时候可能会遇到读取画面,但是如果你手动走过去就不会有读取画面的原因。”
很多情况下,游戏开发者在开发完成之前都不知道自己的游戏到底能不能快速地进行数据读取。游戏开发就好像是在拼一幅巨大的、不断变换的拼图,每一个小拼图都可能在某个时刻带来麻烦,这可以说是有利有弊。
有时候在这个地方做出个小改动可能就会导致在别的地方读取时间大大增长或者产生崩溃的bug。当然,这也取决于游戏引擎的使用。有的引擎会减少读取时间,而且多数游戏引擎都是在游戏制作完成之前就投入使用的。所以读盘时间这一方面我们只能猜测长度如何,但是猜的可不一定准。
为了避免搞砸其他东西,开发者通常会在改进读盘时间的时候锁定其他所有内容。但问题在于,这种工作只能在游戏即将完成的时候在做,有的时候时间所剩不多。开发者只能解决其中一部分问题就匆匆让游戏上市。很明显读盘时间并不是一个最优先需要解决的问题。
“当你已经都快把游戏拷贝发往经销商的时候,你通常会把所有问题列一个表然后按照所花的时间以及解决带来的好处排列。”JP LeBreton,一名参与制作了《生化奇兵》和《太空基地DF-9》的设计师说。“在发售的关头,开发者通常会把游戏稳定性放在第一位——来确保游戏不会崩溃,并且有比较高的完成度——这些都比运行速度重要。”
“到发售的最后关头,你就好像是在赌玩家们会喜欢什么。”LeBreton说。“一个运行缓慢的游戏还是能玩,但是一个频繁崩溃的游戏就等于废了。”
近来,我们看到越来越多的开发者都会在游戏发售之后发布补丁,尤其是优化读取时间,因为只有当游戏发售之后开发者们才能有充足的时间去彻底解决之前遗留的问题。
“只要游戏一发售,我们就会收到成吨的反馈,在其中我们看到了许多反映读盘时间过长的意见。”Rand Miller说,他是发售于2016年的《冲仰异界》的总监。有些意见是来源于一些特殊的硬件问题,但是另一些则是来自于一些游戏开发组在开发过程中没有注意过的问题。“我们在进入游戏时载入的内容太多了,有些根本用不到。”他补充到。“所以我们将开头载入重新精简了一边然后发布了补丁。”
在更新《冲仰异界》的游戏引擎以及优化游戏在不同平台上的表现的同时,Miller和他的公司发现了很多他们之前做的不够好或者不够有效率的小问题。
“我们发现我们在读取游戏世界数据的时候也把所有动画数据读取了,”Miller说。“这导致了读取缓慢,但是这个问题需要我们重写角色互动的系统来解决。”美术部门发现可以压缩一些材质的大小,但是这也要一点一点来。
我又采访了其他两个游戏的制作人,这些游戏也发布了优化读盘时间的补丁,分别是潜行游戏《精灵鼠传说》以及奇幻RPG《矮人》,他们给出的答复也差不多。为了缩短读盘时间,游戏开发者必须从内而外全方位地了解他们的游戏。既便如此,还是要花很多时间和精力去解决这些问题。以《矮人》的制作团队为例,他们最近开始尝试在开发过程中就检查读盘时间的问题。
《矮人》在发售后补丁中大幅缩短了读盘时间,项目的创意总监说,他的工作室现在已经开始在游戏开发过程中就检查读盘时间了。“检查数据打包情况,优化内存使用,以及减少内存使用量都会变得很复杂,如果你在开发末期才关注这些问题。”Jan Theysen说到。“所以对于我们接下来的游戏,都会在开发过程中采用新的流程,让每个人都从自己的部分缩短读取时间。”
但是开发者实际上能在游戏开发完成前就做的事情并不多。只要我们还在磁碟上存储数据,那么我们就还会遇到读盘的问题,而那些补丁也会因此一直在发售后发布。
William Armstrong说,读盘时间就像一个普通bug,“一个会在网络环境中发生的bug,或者一个当你不按顺序接任务造成的任务bug。这些bug只有当游戏全部完工的时候才会显现出来。而通常来说,游戏其实都在发售前最后一点时间才做完。”
本文编译自:kotaku
原文标题:《Why Games Still Have Bad Loading Times》
原作者:Nathan Grayson
* 本文系作者投稿,不代表触乐网站观点。