UE4项目优化02-性能诊断评估02过程

在本章中,您将学习:

  • 成为虚幻引擎项目的医生
  • 粉碎好的理论
  • 隐藏对象-性能分析的关键步骤

采取科学的方法

您和您的团队刚刚对该场景进行了另一次测试。帧速率是一个随机的混乱。对于竞争性多人游戏,平均帧时间很少会低于所需的16 ms限制。但是,您注意到,穿过黑暗的地下迷宫的游戏片段比照明良好的宫殿房间要好得多。最坏的情况是宽敞的大理石宝座大厅。

您有一些线索,但似乎有太多因素影响最终结果。也许您已经走过了有关衡量绩效的章节?然后,您需要处理一些硬数据。你是做什么?

我鼓励您表现得像科学家。他们拥有一种可能会派上用场的工具- 科学方法。它与弗朗西斯·培根(Francis Bacon)著名的较早的哲学哲学有很多共通之处。从有关归纳推理的文章中:

推断可以分为四个阶段:

观察:收集事实,没有偏见。
分析:对事实进行分类,确定规律性模式。
推论:从模式中推论事实之间关系的概括。
确认:通过进一步观察测试推论。

您观察到,在地下迷宫中,每帧时间比在宫殿大厅中要好。知道这一点,您可以分析事实并寻找模式。不在乎数字-而是寻找一般趋势。在此阶段,请搁置您所听到的大多数优化建议。

从观察推论

在宫殿场景中发现了大多数低fps,而在迷宫中看到了最高的。有例外,但没有太多打破常规。地下走廊比宫殿房间更快。是因为宫殿房间比迷宫一次能看到更多的灯光吗?还是与裸露的地下城墙相比,它们的材料更多样?这是推理阶段,您可以在其中定义(并写下)发现的潜在规则。

推理过程看起来如何?首先,我始终检查我正在检查的场景中的帧速率是否受CPU或GPU限制。使用评估性能中的提示进行检查。然后,您可以寻找以下方面:

CPU:

  • 涉及很多物理相互作用的时刻或地方
  • 蓝图每帧(又称每个刻度)执行大量指令
  • 基于骨骼和基于蓝图的动画
  • 可以同时看到很多物体和不同材质的地方(这会导致更多的绘图调用)
  • 启用了用作遮挡物的小型静态对象(遮挡剔除旨在通过测试可见性来减少GPU的工作量,但在这种情况下,收益小于测试成本)

显卡:

  • 灯光较多的地方,尤其是相交的地方
  • 灯光和重物投射阴影
  • 许多微小的物体会投射阴影
  • 质量设置(尝试使用“ 中型”而不是“ 史诗”,看看会发生什么)
  • 大量可见的材料和复杂性
  • 同时可见大量和不同纹理的大小
  • 产生大量粒子或使用照明/阴影的发射器
  • 远景观叶

如果您不确定如何测试这些方面,请不要担心,只需跳过它们即可。在下一章中,您将从上面的列表中了解所有内容。

确认预测

写下潜在的问题根源之后,是时候确认或放弃这些预测了。要检查每个地方的大概照明成本,您可以打开“ 光复杂度” 视图模式访问每个区域。要检查每种材料所需的指令数量,您将使用“ 着色器复杂度”模式。在本书的后面,您将学到各种各样的工具来使观察结果更精确- 使用GPU Visualizer进行概要分析是最重要的工具。

如果其中任何一个显示过度使用了灯光或着色器说明,那么您确认了您的假设。否则-重新开始。

尝试验证您的假设

但是我们不只是观察者,对吗?我们也疯狂地研究着这个项目。因此,让我们添加最后一个步骤,该步骤通常受人类的限制,但在游戏项目中却非常受欢迎:一个实验。这就是将真正的蛋头从涂白假冒者中分离出来的秘密。我们检验我们的假设!

隐藏物件

确认或放弃预测的最佳过程是什么?有一种方法不能简单地被超越。基本上,隐藏或禁用问题的可疑原因。

这样做将使您立即检查您的预测是否正确。显示选择的数字指标,例如stat UnitGraph(显示每帧毫秒数随时间变化)。在场景中进行所需的更改,并观察其对帧速率的即时影响。

有几种禁用渲染对象或效果的方法。最简单的方法是防止对象在游戏中显示。选择一个或多个对象,然后转到“ 属性”→“渲染”并选中“游戏中隐藏的Actor”。您也可以在编辑器中玩游戏时这样做。按此[F8]按钮可从正在运行的游戏中弹出,在“ 大纲视图”中选择对象而不是视口,然后更改设置。然后通过F8再次按视口返回游戏。

请记住,有时禁用对象可能会导致性能下降,而不是改善性能。这是因为某些网格充当了其后面对象的遮挡物。当隐藏墙壁或天花板时,您可以在它们后面显示整个场景。

您也可以一次隐藏整个类别。在编辑器中播放[~]时,在视口中按,然后键入。这将提出一个自动完成列表,您可以使用向上和向下箭头进行浏览。选择一个命令,然后按。常用命令包括:show[Enter]show

  • show DirectionalLights
  • show DirectLighting
  • show InstancedGrass, InstancedFoliage
  • show InstancedStaticMeshes,
  • show Landscape
  • show PostProcessing
  • show ScreenSpaceReflections
  • show StaticMeshes
  • show Translucency
  • show VolumetricLightmap (自UE 4.18开始)

控制功能质量

视口工具栏中的“设置”菜单提供对另一个工具的访问:“ 引擎可伸缩性设置”。可能的值范围从低到电影。在您在静态网格物体和发射器中手动设置LOD(细节级别)之前,某些滑块(如Foliage)不会执行任何操作。其他诸如后期处理和阴影直接影响功能的质量。这些按钮不是很复杂,但是非常适合快速测试。

还可以通过控制台命令在游戏中快速调整阴影和后期处理的质量:

  • sg.ShadowQuality X(其中X0到4之间的数字)
  • sg.PostProcessQuality X(其中X0到4之间的数字)

我们可以使用值完全禁用功能0。

下一步

现在,您已经准备好在项目中查找一般故障源。在本书的后续部分,您将学习如何使用概要分析,查看模式和其他工具。您将能够将它们添加到流程的分析和确认部分。

那么下一步是什么?它正在学习引擎和硬件之间发生了什么。这对于理解分析提供的精确信息至关重要。我还敦促您参与自己的项目,因为您将从自己的实验中学到很多东西!

Author: incg_UE4

Leave a Reply

Your email address will not be published. Required fields are marked *