在近期于佛罗里达州奥兰多市举办的虚幻引擎节2025活动上,虚幻引擎高级软件工程师阿里·阿恩比约恩松(Ari Arnbjörnsson)针对PC玩家的噩梦——卡顿问题进行了专题演讲。

Cover Image

过去几年里,我们不得不反复报道新发布的虚幻引擎游戏(公平地说,其他引擎也未能幸免)在PC端频发的卡顿问题。人们不禁要问:Epic究竟在如何应对?

这场名为《猎杀卡顿》的演讲核心正是解答该问题,同时为开发者提供最佳实践建议。阿恩比约恩松身着女巫猎手戏服登台,号召同行开发者“消灭卡顿”。

他归纳出七大类卡顿成因。第一类“场景流加载”实际上涵盖与游戏世界局部加载/卸载相关的所有卡顿行为。这位虚幻引擎工程师指出,滥用静态网格体(Static Mesh)构建静态场景是常见诱因。美术和关卡设计师常会拖入大量静态网格体(如桌椅、书籍、餐具等),这对小型游戏无碍,但在3A级大场景中可能引发灾难——它们会带来内存开销,并加重垃圾回收(GC)负担。

阿恩比约恩松建议改用实例化静态网格(ISM)或层级实例化静态网格(HISM)。也可使用“打包关卡Actor”功能将多个静态网格合并为更少Actor以降低开销。他随后介绍了Epic的改进方案:包括虚幻引擎5.5实验性功能“单元转换器”(能在运行时将静态网格转为实例化网格),以及虚幻引擎5.6引入的流加载性能优化。这些实验功能默认关闭,待完善后将正式启用。

第二类卡顿源自物理系统,因为内容团队往往忽视其优化。虚幻引擎5的Nanite技术让开发者误以为可随意使用复杂网格,实则不然。物理碰撞体应优先采用简单形状:球体(最快)、胶囊体、立方体,最后才考虑凸面体。对于不可交互的远景物体应彻底禁用物理。混沌物理可视化调试器(Chaos Visual Debugger)可辅助定位物理性能问题。

Epic在此领域的进展包括虚幻引擎5.5/5.6的异步物理初始化功能(仍属实验性质),该技术能将物理计算移出游戏线程。但工程师警告现阶段不宜投入商用——当物理场景膨胀时,问题可能以更严重形式复发。控制物理场景规模仍是开发者首要任务。Epic还持续通过改进多线程支持等方式优化混沌物理系统。

第三类“Actor生成卡顿”表现为:带有骨骼网格、动画等复杂组件的角色类Actor,其生成可能耗时数毫秒,若批量生成将导致明显帧率骤降。优化方案包括:限制每帧生成数量、延迟骨骼动画等组件的异步初始化、采用对象池复用机制替代反复销毁/创建。

阿恩比约恩松透露多家开发商曾要求Epic将对象池设为标准功能。但由于需适配各行业所有项目类型(虚幻引擎已不仅用于游戏开发),实现难度极大。现阶段建议开发者按类型自建对象池。

第四类堪称PC游戏卡顿元凶:管线状态对象(PSO)编译。DX12/Vulkan/Metal等现代底层API要求预先编译着色器。主机平台因硬件统一不受影响,但PC/移动端不可能预编译所有变体,实时编译必然引发卡顿。虽然游戏尝试通过PSO缓存包预编译,但对开放世界或程序化内容仍力有不逮。

虚幻引擎5.3虽已引入PSO预缓存,但阿恩比约恩松敦促开发者制定专属编译策略,并配合其开发的PSO缓存分析插件(可下载)进行性能剖析。Epic目前已为官方示例项目和《堡垒之夜》完善了PSO编译路径追踪。

第五类垃圾回收(GC)卡顿源于过多闲置UObject实例导致GC耗时激增。开发者应控制UObject数量并策略性调度GC时机。Epic正在开发“渐进式可达性分析”实验功能,将GC工作分摊至多帧完成,未来还将实现客户端版本的多线程安全增量GC。

第六类同步加载卡顿发生在游戏线程被资源同步加载阻塞时,这种长卡顿必须杜绝——必须使用异步加载。资源验证工具(如阿恩比约恩松的CommonValidators)可检测同步加载,部分工作室甚至直接从蓝图移除同步加载节点。Epic在引擎中增加了同步加载警告机制。即便意外发生,虚幻引擎5.4/5.5也能通过部分刷新异步队列来缓解影响。

最后一类蓝图与内容脚本卡顿,多由过多定时器、Tick更新、冗长序列或音频/骨骼动画系统过载引发。优化方案包括简化远景对象、关闭不必要Tick等。Epic则持续增强Unreal Insights工具,新增区域标记、截图等功能辅助开发者可视化性能瓶颈。

阿恩比约恩松总结强调:尽管软硬件不断进步,游戏开发仍需面对客观限制。唯有扎实优化与巧妙“造假”才能缔造最佳体验。愿此次演讲能唤醒开发者重视这一普遍问题,让游戏体验更臻流畅。


文章标签: #虚幻引擎 #游戏优化 #卡顿分析 #Epic #性能调优

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。