不知道大家在玩游戏的时候有没有遇到过这种情况。很明显你的电脑配置相当强大,或者你在玩统一规格的游戏机或者飞行器,但是在玩特定游戏的时候,你会莫名卡住或者掉帧,这时候你可能会抱怨这游戏优化太差了。但究竟什么是游戏优化?是的,这次我们将讨论什么是游戏优化。什么是游戏优化?网上有各种专业的解释,但都夹杂着大量的专有名词和专业术语。
事实上,无论多么复杂,游戏优化的目的始终是“不卡顿”两个字。换句话说,让游戏不卡顿的技术叫做优化。玩游戏的时候,无论是操作、流畅度、性能,甚至是画面的观感,只要你在玩的时候感觉有点卡顿,那么这款游戏可能还有优化的空间。当然,这是一个更广泛的优化,涉及到用户界面和用户体验。要详细解释“游戏优化”问题,我们得从“游戏为什么卡顿”和“开发者有什么方法来优化游戏”这两个方面入手。
为什么游戏一开始就卡死了?这得从现代电子游戏的基本操作流程说起。无论你的游戏平台是手机、游戏机还是电脑,这些设备基本上都包括负责计算的CPU和GPU;临时存储设备(如记忆棒)、长期存储设备(如硬盘);屏幕,以及各种输入设备,如键盘、鼠标、游戏手柄和触摸控制。
游戏下载后会保存在硬盘中。当玩家按下开始游戏时,CPU会将硬盘中可能使用的资源转移到记忆棒中。这个过程称为加载。然后 CPU 开始处理逻辑运算。此时,玩家按下了什么按钮,按下按钮后应该发生什么,都在这里处理。
CPU处理完运算后,会根据运算结果通知GPU该放哪些东西。席从记忆棒里拿出来,一层一层地画在屏幕上。这个阶段称为渲染。渲染完成后,显示图片,即完成一帧。如果这个过程出现问题,比如 CPU 计算太高或者 GPU 来不及绘制,以 60FPS 为例,图片无法实时在六十分之一秒内完成,原帧理论上只会出现。 0.0166秒,但是这一帧可能会停留0.1秒,玩家会觉得游戏卡住了,也就是所谓的掉帧。
但是如果一款游戏的硬件要求高于玩家的设备,那么长时间的输出画面,CPU和GPU就会处于比预期更长的状态,所以帧率就会不稳定。 ,游戏体验会直线下降。对于开发者来说,无论是突然掉帧还是持续帧率不稳定,都需要避免。有机会获得良好的游戏体验,处理这些问题的行为就是优化。
具体来说,开发者如何优化它?从前面的一点我们可以知道,解决掉帧问题是优化的首要目标,而掉帧的原因通常是CPU或者GPU无法处理,那么我们就要换CPU和显卡了。 1个RTX3090不够用,插2个,12代i7不够用。只用i9。如果预算不限,可以装一台天河电脑。当然,这是不现实的。并非所有玩家都有能力买得起高性能计算机,也不是所有平台都可以像 PC 一样进行更改。因此,我们需要反过来思考,如何利用有限的硬件条件。游戏运行流畅吗?我个人总结了三个大方向,即改变资源消耗的时机;试图在不被注意的情况下降低图片质量;和烘烤。
首先说一下改变资源消耗的时机,主要是为了应对瞬间掉帧。有时立即创建或销毁对象需要很高的资源消耗,这可能会导致屏幕在创建或销毁时冻结。这时候我们就可以引入“对象池”的概念了。这个对象池有点类似于铅笔盒。作为一个好学生,你应该随身携带三五支笔,对吧?但如果不是全部放在文具盒里,而是直接扔进包里,那每次换笔都得从包里翻一遍,很浪费时间吧?
所以合理的做法当然是准备一个笔盒,把这些笔都放进去,每次需要的时候拿出笔盒放在桌子上。 . “对象池”也是如此。设计师会带进来加载场景时可能用到的东西。如果您需要使用很多相同的东西,例如一个铅笔盒中有几支笔,那么您将一次将这些对象加载到几个中以形成一个池。虽然这样做并不会降低创建对象的成本,就像大多数时候你不会同时使用铅笔和橡皮擦,而是在“加载”屏幕中等待额外的帧,然后你就被卡住了在游戏的中段,比起那一帧来说,这是一笔不小的数目。这些对象在使用后不需要销毁。只需将它们关闭,将它们扔回对象池中,并在下次使用时再次打开它们。这将大大减少瞬间丢帧。健康)状况。
让我们谈谈在不被注意的情况下尽可能降低画质。如果一款游戏想要最大程度地表达细节,模特脸的数量肯定会略高一些。如果只是室内场景,屏幕上只有几个模型,那也没关系。但如果换成森林、城市等复杂场景,只要稍微拉远镜头,画面上的模型数量就会非常多。很可能来不及计算,会出现连续丢帧。因此,基于性能考虑,设计人员通常使用“LOD”进行处理。 LOD的全称是Level Of Detail。顾名思义,细节分为几个层次。离相机更近的模型会以人脸数量最多、细节最多的形式呈现。现在,相反,离相机越远,模型可以显示的越简单。
还有一些比较狠的方法,会减少动画的帧数。总而言之,就是各种套路。毕竟大部分游戏都会尽量让玩家的注意力集中在离自己更近的地方。更重要的是,远处的物体不会在屏幕上占据太多的像素。只要处理得好,通常是不会被发现的。当然,这只是一种理想状态。事实上,在大多数游戏中,尤其是开放世界作品中,只要慢慢地向前移动,甚至原地旋转,仍然可以从视角或多或少地看到远处的物体。闪烁、消失等异常情况。虽然说起来会有些尴尬,但也正是因为有了这些待遇,玩家才能在游戏中体验到广阔的开放世界场景。
最后说一下“烘焙”。烘焙这个词有点抽象。游戏怎么和烤面包有关?烘焙其实是指取一个原本在实时计算中效率很高的函数,在开发阶段花时间计算并保存。如果以后想再次使用该功能,则不需要花费大量的 CPU 和 GPU 资源。转到实时计算。我们都知道游戏的帧数至少是30帧,所以游戏对实时计算的要求是非常非常高的。在3D世界中,光影的计算是非常耗能的,所以很多东西比如静态阴影、光照探针、法线贴图、镜面反射等等都会用到烘焙。这样做的好处是可以在不牺牲画质的情况下实现更好的性能控制。简单来说就是画面好看不卡顿。
但恰恰相反,因为这是经过预处理的东西,只要把烤好的东西换掉,它就会磨损。比如《漫威蜘蛛侠》中的高层建筑,它的镜面反射是预先计算好的,所以如果你仔细观察,你会发现它的反射贴图呈现出来的图像和实际物体是一样的大楼对面。完全不同的是,工地地板上的水滩也可以透过天花板看到天空的颜色,所以这是一个有利有弊的技术。
除了刚才提到的三个除了方向,当然还有很多其他类型的优化。这三种方法只是用得比较频繁。其他方式如游戏容量、热量消耗、集体占用等,将根据开发平台、游戏类型、美术风格,采用自己独特的优化方式。
而所谓的优化也没有绝对的标准。并不是说为了限制压制性能,甚至不惜牺牲画质来获得更高的回报,如果厂商以480P分辨率压缩游戏,游戏就会流畅。跑步,但你的眼睛承诺?因此,游戏优化更多的时候是在品质和流畅性之间取得平衡,回归一切的本源,让玩家流畅发挥开发者的心血结晶,充分沉浸在自己打造的世界中。
不用太在意游戏的载体,不用考虑画质和设置,更不会因为莫名的掉帧而被迫退出游戏体验,让有趣的游戏更有趣。这是游戏优化的最终目标。