前言:
眼前小伙伴们对“优化是什么东西”都比较重视,姐妹们都想要学习一些“优化是什么东西”的相关内容。那么小编也在网摘上网罗了一些对于“优化是什么东西””的相关内容,希望同学们能喜欢,咱们一起来了解一下吧!不知各位在玩游戏的时候是否有遇到过这种情况,明明你的电脑配置就还算给力,或者你玩的是统一规格的游戏主机或者航机,但你在玩特定游戏的时候就是会莫名其妙卡顿或掉帧,这个时候你可能就会吐槽这款游戏的优化也太烂了吧。但说到底游戏优化到底是什么?没错,这次我们就来聊什么是游戏优化。
游戏优化是什么?网络上有各种专业的解释,但这些夹杂着大量专有名词与专业术语的阐述,先不说大家能不能看得懂,我自己都快读睡着了。其实不管再怎么复杂,游戏优化的目的总归就两个字“不卡”,换句话来说让一款游戏不卡的技术就叫做优化。在玩游戏的时候,无论是操作上、流畅度、表现上、甚至是画面的观感上,只要你玩起来觉得有点卡卡的,那这款游戏可能就还存有优化的空间。当然,这是较为广义的优化,其中涉及到使用者界面和使用者体验。要详细地解释“游戏优化”问题,我们就得大致从“游戏为什么会卡顿”、“开发者们优化游戏有哪些手段”这些方面出发。
首先游戏为什么会卡顿?这就得从现代的电子游戏基本运作流程开始说起。无论你的游戏平台是手机、游戏机还是电脑,这些设备基本都包含了负责运算的CPU、GPU;临时储存设备(比如:内存条)、长期储存设备(比如:硬盘);用于输出画面的屏幕,以及像是键盘、鼠标、手柄、触控等这些形态不一的输入装置。
游戏下载好之后就会存在硬盘里面,当玩家按下开始游戏的时候,CPU就会把存在硬盘里可能会用到的资源翻到内存条里面,这个过程就叫做载入。接着CPU就开始处理逻辑运算,在这个瞬间,玩家按了什么按钮,按了按钮之后应该要发生什么事,都是在这里处理的。
当CPU处理好运算之后,就会根据运算的结果通知GPU该把哪些东西从内存条里面拿出来,一层一层地画到屏幕上,这个阶段叫做渲染。等到渲染完成之后,画面显示出来,也就是完成了一个帧。如果这流程哪里出了问题,像是CPU运算量过高或者GPU来不及绘制,以60FPS为例,画面就没有办法即时在六十分之一秒内做完,原本的一帧理论上只会出现0.0166秒,但这一帧可能停留了0.1秒,玩家就会觉得游戏卡了,这就是所谓的掉帧。
但如果一款游戏对于硬件的需求高于玩家使用的设备时,CPU和GPU就会长期处于一个需要花费高于预期时间才可以输出画面的状态,于是就会出现帧数不稳定的状况,游戏体验也就直线下降。对开发者来讲,无论是突发性的掉帧还是持续性的帧数不稳定,都是需要极力去避免的,毕竟要让玩家愿意花时间来体验你的游戏,只有做到不卡他们才有机会获得一个良好的游玩体验,而处理这些问题的行为就是优化。
那具体来说,开发者们会怎么做优化处理呢?从上一点可以知道解决掉帧问题是优化的首要目标,而掉帧的原因通常是CPU或GPU处理不过来,那我们就换CPU跟显卡,一张RTX3090不够就插两张,12代i7不够用就上i9,如果预算无上限,你组台天河计算机都可以。当然这是不切实际的,不是所有玩家都有能力负担一台高性能电脑,也不是所有平台都可以跟PC一样想换就换,所以我们需要反过来思考,如何在有限的硬件条件中让游戏顺畅地运行呢?我个人总结出三个大方向,分别是改变资源消耗的时机;尽量在不被注意到的情况下降低画面品质;以及烘焙。
先来说说改变消耗资源的时机,这主要是为了应付瞬间的掉帧。有的时候即时创造或者销毁一个物件,所需要消耗的资源是很高的,这就有可能导致在创造或销毁的瞬间画面卡顿。这个时候我们就可以导入“对象池”的概念,这个对象池有点类似于铅笔盒,作为一个好学生,身上少说也会带个三五支笔吧?但如果你不把它们全部放在铅笔盒里,而是直接丢进书包里,那每当你需要换一支笔的时候,你就得去翻书包,这样就很浪费时间对吧?
所以合理的做法当然是准备一个铅笔盒,把这些笔全部都放进去,每次需要用的时候就把铅笔盒拿出来放在桌上,想要换笔你就不用特意去翻书包了。“对象池”也是一样,设计师会把可能用到的东西在载入场景的时候一起带进来,如果需要用到很多同样的东西,就像铅笔盒里面会有好几支笔,这时就会把这些物件一次多载入几个进来,形成一个池。虽然这么做并不会降低创造物件的成本,就像大部分的时候你也不会同时用到铅笔和橡皮擦,但是在“Loading”画面中多等一帧,和你在游玩过程中卡顿的那一帧相比可划算太多了。这些物件在使用完毕之后也无需销毁它,只要把它关掉,丢回对象池里面,等到下次要用的时候再打开就好了,这样做也就很大程度上减少了瞬间掉帧的情况。
再来讲讲尽量在不被注意到的情况下降低画面品质。一款游戏如果想要最大程度地表现细节,它的模型面数肯定会稍微高一些,如果只是一个室内的场景,画面上只会有几个模型,那也就算了。可若换成森林、城市那种复杂的场景,只要稍微把摄影机拉远,画面上的模型数量就会非常的大,不做处理的话,这些模型所夹带的总面数就会非常多,GPU就很有可能来不及运算,进而发生持续性的掉帧。所以基于性能的考量,设计师通常会使用“LOD”去做处理。LOD的全名是Level Of Detail,顾名思义就是把细节分成好几个等级,距离摄影机比较近的模型就会以面数最高、细节最多的形态呈现,反之距离摄影机越远,模型就可以显示得越简陋。
还有一些比较狠的做法,会把动画的帧数调低,总而言之就是各种取巧,毕竟大部分游戏都会尽量让玩家的注意力,集中在离自己比较近的地方。何况远方的物件在屏幕上占据的像素点并不算太多,只要处理地够好,通常是不太会被发现的。当然这只是理想上的状态,实际上大多数的游戏,特别是开放世界类作品,只要你慢慢往前走,甚至是在原地旋转一下,视角或多或少地还是可以看出远方物件的闪烁、消失等异常情况。虽然说破之后会有些尴尬,但正因为有这些处理,玩家才可以在游戏中体验到广袤无垠的开放世界场景嘛。
最后再来讲讲“烘焙”。烘焙这两个字稍微有一点抽象,又怎么会跟烤面包扯上关系呢?烘焙其实是指把一个原本在即时运算中特别吃效能的功能,在开发阶段就先花时间算好,并保存起来,之后如果要再用到这个功能时,就不用再花大量CPU和GPU资源去即时运算了。我们都知道游戏的帧数最少也要30,所以游戏对即时运算的要求是非常非常高的。而在3D的世界中,光影的计算又是特别消耗效能,所以很多像是静态阴影、光照探针、法线贴图、镜面反射等等都会使用到烘焙。这样做的好处在于几乎不牺牲画面品质的情况下,就可以做到更好的效能控制。简单来说就是画面又好看、又不会卡。
但相对的,因为这是事先处理好的东西,所以只要烘焙的东西一被改变就会穿帮。比方说《漫威蜘蛛侠》里的高楼大厦,它的镜面反射就是事先算好,所以如果你看得够仔细的话,就会发现它的反射贴图呈现的影像,跟实际在大楼对面的物体是完全不一样的,在工地地板的水滩也可以穿透天花板看到天空的颜色,因此这算是一种有利也有弊的技术吧。
除了刚刚提到的三大方向之外,优化当然还有很多其他的种类。这三种只是比较经常使用的方式罢了,其他像是游戏容量、发热耗电量、集体占用量等方式,会根据开发平台、游戏类型、美术风格的不同,使用有其独特的优化方式。而且所谓的优化并没有一个绝对的标准,不是说为了极限压制效能,甚至不惜牺牲画质来获得更高的回报,试问如果厂家都把游戏压缩在480P的分辨率,游戏是都能流畅运行了,但你的眼睛答应吗?
因此,游戏优化更多时候是在品质和流畅度之间取得一个平衡,回归一切的原点,可以让玩家顺畅地游玩开发者的心血结晶,完全沉浸在他们所架构出来的世界里。不用去过分在意游戏的载体,不用再为了画质、设定而反复斟酌,也不会因为莫名的掉帧而被迫从游戏体验中抽离,让好玩的游戏变得更加好玩,这才是游戏优化最终的目的。
标签: #优化是什么东西