Unreal Engine 4.12 Released!
June 1, 2016

UNREAL ENGINE 4.12 正式发布!

作者 Alexander Paschall

此版本内含虚幻引擎 4 的数百个更新,以及 GitHub 虚幻引擎开发者社区提交的 106 项改良!特此对虚幻引擎 4.12 版本的贡献者们表达诚挚谢意:

aninda、amcofi、Artem V. Navrotskiy (bozaro)、Beau Hardy (psychogony)、Black Phoenix (PhoenixBlack)、Brent Scriver (FineRedMist)、Cedric Neukirchen (eXifreXi)、Céleste (CelPlays)、chendi (cdsama)、Courtland Idstrom (Frugality)、David Palacios (Hevedy)、DavidNSllva、Erik (erikbye)、esdasuka、Frank Force (KilledByAPixel)、Graham Hughes (graehu)、Grimmick、Hannah Gamiel (hgamiel)、Hongjun Han (h27han)、Ian Fox (MaideCa)、jamendxman3、James Baxter (TheJamsh)、Jarl Gullberg (Nihlus)、Jason (Abatron)、Jeremy (JeroMiya)、Jorge Martins (SNikon)、Kartik (i64)、Kim Sang Kyun (skkim-ginno)、Konstantin Zaitcev (kosz78)、Leon Rosengarten (lion03)、M3d10n、MacAndor、Maik Klein (MaikKlein)、Manny (Manny-MADE)、Marat Radchenko (slonopotamus)、Mathew Wadstein (MWadstein)、Lucyberad、Matthias Hölzl (hoelzl)、MAVRIN (artemavrin)、Maxim Pestun (maxpestun)、mbehensky、meChiel、mfortin-bhvr、mipg、Narendra Umate (ardneran)、Nikola Dimitroff (nikoladimitroff)、Pablo Zurita (pzurita)、phoboz-net、Pierre-Luc Loyer (plloyer)、Piotr B?k (Pierdek)、projectgheist、Rama (EverNewJoy)、Robert Chubb (SaxonRah)、Robert Khalikov (nbjk667)、Robert Segal (robertfsegal)、RobertTroughton、Ryan Nielson (RyanNielson)、Samuel Groß (saelo)、Sasha Petrovich (xulture)、Sébastien Rombauts (SRombauts)、Stephen Whittle (stephenwhittle)、Taces、Temaran、Tim Lindeberg (timlindeberg)、Tobias Mollstam (mollstam)、wdhwg001、Will Stahl (merlin91)、WymzeeLabs、Yohann Martel (ymartel06)、Zelex。

全新内容

Sequencer 在虚幻引擎 4.12 版本中已开放使用!它是完全非线性的实时过场和动画工具,与 Matinee 一脉相承。它拥有诸多强大功能,如自动设置关键帧、过场摄像机和实时游戏进程录制。利用 Sequencer 可将序列自由组织为随意数量的资源,便于在大型动画项目中进行分工协作。打开现有的 Matinee 动画后可将其导入 Sequencer,它同样支持 Matinee。

此版本中加入了VR 编辑器(VR Editor),可先睹为快!此功能极具前瞻性,配合运动控制器的使用可在虚拟世界中尽情徜徉。沉浸在 VR 世界中时,还可选择并移动 actor、放置新物体、甚至访问编辑器的 UI。此功能当前要求 HTC Vive 或 Oculus Touch 开发机。在 Editor Preferences 的 Experimental 部分打开“Enable VR Editing”即可小试牛刀。

Windows 平台的 C++ 程序师需注意:虚幻引擎现要求 Visual Studio 2015。支持 Visual Studio 2015 的所有桌面版,包括(免费的)Express 版和 Community 版。敬请更新版本。

在每个新版本中,我们将尽力推出渲染、VR、动画、音频和移动设备方面的重要新功能、以及性能优化和已知问题的修复。希望大家尽情享受虚幻引擎 4.12!

主要功能

新鲜出炉:Sequencer

Sequencer 结合了非线性编辑器和 3D 动画编辑的功能,可生成游戏中的过场,以及电影、电视和可视化预览的镜头序列。

非线性工作流

Sequencer 的非线性工作流可助您以创意和可重复的方式进行镜头构成和编辑。您能轻松地对特定镜头进行修改 - 如改变灯光颜色或添加雾气元素;或回滚到上一次拍摄,以便对序列组成方式进行试验。此外,它的精心设计使多个美术师可同时对多个镜头进行处理。在启动程序的 Learn 选项卡中查看 Subway Sequencer 项目,了解运行中的 Sequencer。

  • 以传统非线性编辑包的方式组织镜头。
  • 创建替代镜头,轻松回滚。
  • 进行针对所有镜头的调整,生成镜头特定的 actor。
  • 功能设计便于协同工作。

直观的用户界面

用户界面的设计源自 Matinee 和传统 3D 软件包的精华部分。此界面有助于清晰准确地查看、编辑和组织动画数据。用户创建 3D 资源时将发现界面直观而熟悉。

  • 基于 actor 类型自动创建轨迹。
  • 标准化键盘快捷键。
  • 自动设置关键帧。
  • 内置轨迹和键编辑/创建控件。
  • 用户可自定义轨迹的颜色。
  • 可使用插值行为定义关键帧的形状和颜色。
  • 可使用文件夹和标签进行整理。

过场摄像机和过场视口

借助全新过场摄像机 actor 和摄像机绑定 actor,影片制作者和新用户们可轻松构建出真实的摄像机镜头。利用全新的精简视口可方便地查看制作样片的镜头序列。

  • 自带属性的过场摄像机 Actor 能模拟真实世界中的摄像机。
  • 可自定义镜头和胶片板设置。
  • 焦距。
  • 可视化跟踪。
  • 摄像机升降架和摄像机导轨 Actor。
  • 过场视口。
  • 内置时间轴和走带机功能键。
  • 显示帧数,便于分辨镜头切入/切出点。
  • 合成的叠加和取景助手。

序列录制

利用序列录制可对游戏进程进行录像,并即刻将录制的内容放置到镜头中。在回放之前的录像时还可继续进行录制。

新鲜出炉:虚幻 VR 编辑器(预览)

全新的“VR 编辑器”模式使您沉醉在虚拟世界中的同时在关卡中导航并进行编辑。可以选择并移动物体,甚至可以抓取“世界场景”,对整个关卡进行自由拖动、旋转或缩放!在 VR 中结合运动控制器的使用即可对物体和透视进行一对一控制。

在 VR 中可访问到熟悉的编辑器功能(如内容编辑器),并使用变形小工具对物体进行精准放置。使用对齐工具可将全部资源精确对齐。

用双手进行抓取并拉伸可将世界场景极限放大。利用此操作可轻松地对关卡的精致细节进行查看和编辑。

此功能仍为早期预览,因此需要开启 Editor Preferences 的 Experimental/VR 部分的“Enable VR Editing”。开启后将出现新的“VR Mode”工具栏按钮,点击即可即时切换到 VR 模式!VR 编辑器(VR Editor)可在任意项目中使用,在新加入的“VR-Basic”中(在 File -> New 选项中访问)可找到用于试验的简单项目。

重要提醒:VR 编辑器模式要求运动控制器和世界场景以及 UI 形成互动,因此您需要配备 HTC Vive 或带触摸控制器的 Oculus Rift 开发机。

敬请注意:该功能仍处于早期试验阶段,我们仍在努力将其完善。请上手试用,并将您的反馈告诉我们!以下链接包含大量虚幻 VR 编辑器的附加信息:

新鲜出炉:Daydream VR 支持

我们非常高兴地在此宣布:虚幻引擎 4.12 版本支持全新的 Google Daydream 平台!Daydream 是令人眼前一亮的全新移动 VR 平台,可在其认证的智能手机上呈现高精度的 VR 体验。UE4 完全支持 Daydream 平台,以及套装中包含的运动控制器。

即使您尚未获得 Daydream 开发者套件也可立即开始工作!使用相同插件可开发 Google Cardboard 的应用程序。Daydream 认证手机的专属功能在其他安卓设备上为关闭状态。

在编辑器的 Plugins 窗口中打开“Google VR”和“Google VR Controller”即可开启支持。

新鲜出炉:平面反射

我们现在支持实时平面反射啦!

此功能的原理是从反射方向对场景进行再次渲染,因此使用此功能时开销极大。然而其反射精度远高于屏幕空间反射。

左图:含画外泄露的屏幕空间反射,右图:平面反射 先在 Rendering 项目设置中开启“Support global clip plane for Planar Reflections”,然后重启编辑器即可使用平面反射。将一个平面反射 Actor 放进场景中。附近的所有反射材质将自动受到平面反射的影响,它们的法线将被用于反射扭曲,模拟出波纹效果。

此新功能仍存在一些限制:

  • 无法控制反射通道中启用的渲染功能。
  • 反射通道中的动态阴影和雾气尚无法正常使用。
  • 只支持恒定的粗糙系数,其在平面反射组件上进行指定。
  • 平面反射可用于移动平台,但使用平面反射的材质需要勾选材质属性下“Mobile”部分的“Planar Reflections”标记。

新鲜出炉:高精度反射

在此版本中,我们添加了诸多全新渲染功能,以便达到逼真的表面反射效果!

我们希望达到精度极高的清晰反射,以获得更加真实的车漆效果。需要对几个地方着手改善:从几何体数据的处理和编码方式到启用场景的高分辨率反射获取。

高精度静态网格体顶点法线和切线编码 - 获得高精度反射的最重要因素是顶点法线和切线的表现准确度。我们添加了一个选项,使法线和切线以 16 位每信道矢量进行编码。因此开发者可在高精度和顶点缓冲编码占用的额外内存之间进行权衡。该选项(Use High Precision Tangent Basis)在 Static Mesh 编辑器的 Build Settings 部分中。

自定义天空立方体贴图和反射探头的分辨率- 达成高精度反射的第二部分是实际反射的内容 - 场景和局部反射。天空光照和反射探头使用的烘焙立方体贴图分辨率之前在引擎中为硬编码。而在最新版本中,开发者可基于性能、内存和精度权衡选择最合适的分辨率。注意:天空光照的立方体贴图分辨率可进行单独设置,而反射探头的立方体贴图分辨率为项目统一设置。因 GPU 内存的要求,设置高分辨率可能对性能造成极大影响。

自定义反射探头的立方体贴图 - 开发者现在也可为每个反射探头指定单独的立方体贴图。这能创建出细节更丰富的自定义立方体贴图,可增强局部反射的效果(或对其进行微调)。

高精度 GBuffer 法线编码 - 最后还有一个选项用于选择高精度 GBuffer 法线编码格式,使其他技术中的 SSR 依托于高精度法线。高精度 GBuffer 法线编码将法线矢量编码为 3 信道,每信道 16 位。此编码方式要求更高的 GPU 内存,将对性能产生影响。

新鲜出炉:双法线透明涂层着色模型

新版本中,您可使用多个带透明涂层材质的法线贴图获得真实的表面着色效果(如碳纤维)。

左图:旧 UE4 透明涂层,中图:带底面法线的新 UE4 透明涂层,右图:真实照片

透明涂层着色模型现可为透明涂层图层下的表面指定一个法线贴图。这样即可获得更加准确的复杂模型材质,如图中的碳纤维(由透明涂层图层和下方几何体表面构成)。

此选项须通过项目设置打开:Rendering -> Clear Coat Use Dual Normal。启用此功能后,整体透明涂层材质的开销将变大,主渲染代码也会增加部分开销。

如需使用,必须在材质图表中放置一

  • 个 *Clear Coat Bottom Normal* 节点。须在此处插入第二个法线计算的输出。

新鲜出炉:支持 OSVR(预览)

由于 OSVR 团队的努力,UE4 现支持 OSVR,上手即用!

OSVR 软件平台允许多种 VR/AR 设备和外通过助通用层和引擎对话。如需了解平台和支持设备的更多信息,请访问 http://www.osvr.org/

新鲜出炉:Vulkan 移动渲染器(预览)

此版本中有使用 Vulkan 图形 API 的移动渲染的早期预览。

上图是三星 Galaxy S7 Unpacked 发布会上展出的以 Vulkan 渲染的 ProtoStar 演示。当前只添加了移动渲染功能。

新鲜出炉:高精度移动后期处理

现可在移动设备上使用带颜色分级的电影级色调映射器!

现可在 ES3.1 支持的移动设备上使用高精度高斯景深!

新鲜出炉:移动设备上增强的阴影

移动渲染器现已支持单一静态光照的动态级联阴影贴图!

静态定向光照现可从可移动物体投射整个场景的动态 CSM 阴影,与场景中静止物体投射的预计算阴影进行正确的混合。CSM 阴影不会出现调制阴影中的双重阴影,在为多个物体投射阴影时此方法速度较快。

  • 此功能使用了一个额外的纹理采样器,但可通过项目设置将其禁用:Rendering -> Mobile -> Combined Static and CSM Shadowing,即可将采样器空出供材质使用。
  • 接收组合阴影的组件需要勾选 Receive Combined Static 和 CSM Shadows from Stationary Lights 标记。

新鲜出炉:高端安卓和 iOS 设备上的 GPU 粒子

高端移动设备现已支持带矢量场的 GPU 粒子!

  • 此功能要求移动设备支持 32 位浮点渲染目标(需 MRT 支持)。
  • 支持 A8+ 的苹果设备(iPhone 6、iPad Air 2、iPad Mini 4 以及更新的机型)。
  • 支持带 Adreno 4xx 和 Mali-T7xx GPU 的安卓 6.0 设备(Galaxy Note 4、Note 5、S6、S7、Nexus 6P 等)。

新鲜出炉:烘焙蓝图到 C++(预览)

为减少蓝图执行的 VM 开销,我们添加了一个新功能,可将蓝图打包为本地源代码。此功能仍在试验阶段,请勿用于发布的游戏中。欢迎多多尝试,给我们提供宝贵的反馈!

  • 在项目的 Packaging Settings 中可将其在编辑器中启用:Experimental => Nativize Blueprint Assets。
  • -NativizeAssets 作为参数传入 UAT BuildCookRun 脚本也可将其调用。
  • 生成的源代码作为插件保存在项目的 intermediate 文件夹中,路径为:…\Intermediate\\NativizedAssets\
  • 在 [BlueprintNativizationSettings] 下的游戏 DefaultEditor.ini 文件中可将部分蓝图排除出操作过程。
  • 蓝图的通用“类型”可被排除:+ExcludedBlueprintTypes=/Script/UMGEditor.WidgetBlueprint
  • 特定资源也可被排除:+ExcludedAssets=/Game/Blueprints/MyBlueprint

新鲜出炉:草地和植物可延展性

可延展性系统新增了一个植物可延展性设置。地形的草地和植物密度可基于当前的可延展性设置进行自动减少,设置在运行时可进行更改,因此游戏中便可加入植物细节设置滑条。

草地地形自动包含在植物可延展性中,但必须在 FoliageType - Scalability 部分下的 Enable Density Scaling 选项中选中 Foliage。在不带碰撞的“细节”植物上(如小石块和灌木丛)可将其启用。在带碰撞的植物类型上(如树木)应将其禁用,因为移除资源后碰撞仍然存在于游戏中。应用到每个可延展性等级中草地和植物的密度标度由 BaseScalability.ini 文件中 [FoliageQuality] 部分的 “grass.DensityScale”和“foliage.DensityScale”变量进行配置,可在游戏的 DefaultScalability.ini 文件中对其进行覆写。

新鲜出炉:iOS UMG 的网络浏览器控件

UMG 网络浏览器现已支持 iOS 平台!

Chromium 用于桌面平台的网页浏览器控件,但 iOS 和安卓使用的是本机 WebKit 控制(对齐匹配 UMG 布局),可尽量控制可执行文件大小、增加性能。

新鲜出炉:扭曲矫正动画节点

新增的扭曲矫正(Twist Corrective)节点可基于骨骼间的相对扭曲驱动曲线值(如变形目标)。例如,当角色颈部向左或向右扭曲过大时,即可对颈部应用一个变形目标,形成更自然的效果。

可使用骨骼名称和局部轴指定基础框架(Base Frame)和扭曲框架(Twist Frame),并将扭曲法线(Twist Normal)指定为扭曲的轴。增量角范围 [Ref Pose Delta Angle, Max Angle] 将被映射到使用命名曲线的 [Mapped Ranged Min, Mapped Ranged Max]。

新鲜出炉:全景导入器

通过全景导入可将在 Max / Maya / Blender 中创建的场景完整导入编辑器里的关卡内。

导入后将新建一个场景的 FBX 资源,因此可进行再导入,形成场景的迭代。虚幻引擎 4.11 中已有一个早期版本,支持只包含静态网格体的场景。4.12 版本中的功能较为完善,现可导入包含骨骼网格体的场景。前往 File > Import Scene 选择 FBX 场景进行导入即可使用此功能。

新鲜出炉:Actor 合并

现可在关卡视口中轻松完成网格体 actor 的合并。此功能有助于减少绘制调用,获得更佳的性能。

静态网格体合并范例:*左图* 关卡视口中合并前效果 / *右图* 静态网格体编辑器中合并后效果 Actor 合并功能已是引擎的完整功能,可在该路径下访问 - Window/Developer/Miscellaneous。UI 面板已延展和更新,以便支持层级 LOD 系统合并路径的最新修改。

新鲜出炉:像素查看器

点击场景中的像素后,新增的像素查看器(Pixel Inspector)工具将显示构成此像素色彩的材质和渲染状态。

场景中的像素显示出奇怪的颜色时,您心中是否会升起一个问号?如果有一个工具能告诉您构成像素颜色的材质输入,是不是特别棒?像素查看器派上用场啦!

在工具栏的 Developer Tools 下可找到像素查看器。点击 Enable Pixel Inspector 复选框,然后将鼠标移至任意编辑器视口(关卡、材质、蓝图…)查看下列内容。按下 Esc 键后像素查看器将停止查看,即可对查看过的像素进行分析。

新鲜出炉:平台 SDK 更新

在每个更新版本中,我们都将更新引擎,以支持平台合作伙伴的 SDK 版本。该版本带来了主机平台、HTML5 和安卓平台的更新。

  • Xbox One:更新至 2016 年 3 月的 XDK。
  • Playstation 4:更新至 PS4 SDK 3.508.031。
  • HTML5:更新至 Emscripten 1.35.0。
  • Android:更新至 NDK 11c。Android 1R4 安装程序的新 CodeWorks 替代了之前的 AndroidWorks 1R1(访问路径为 Engine/Extras/AndroidWorks)。

新鲜出炉:屏蔽栏变量

整数属性现可被认作位掩码,可选择性地与封装位标记数值的枚举形成关联。在 C++ 和蓝图中均可使用!

  • 本机属性可以“Bitmask”元数据标记,而蓝图编辑器中添加的变量则拥有一个“Bitmask”复选框。
  • 位掩码变量拥有不同的“Default Value”界面,便于您检查多个位元(与 Set 节点相同)。
  • 已添加支持位掩码操作的新节点:“Make Bitmask”和“Bitwise NOT”。

新鲜出炉:电视安全区调试

开发主机游戏时,UI 不能过于靠近电视屏幕的边缘。我们添加了一个简单的工具,确保这个问题不会发生。

编辑 DefaultEngine.ini 文件、将以下内容添加到 [SystemSettings] 或将其输入命令控制台:

*r.DebugSafeZone.Mode* 控制调试显示覆盖图(0..2,默认 0)

  • 0:不显示安全区覆盖图
  • 1:显示游戏安全区的覆盖图
  • 2:显示动作安全区的覆盖图

*r.DebugSafeZone.OverlayAlpha* 控制调试显示覆盖图的不透明度(0..1,默认 0.3)

在本机不支持安全区的平台上,可模拟出安全区,以便在编辑器中进行快速/简单测试:

  • r.DebugSafeZone.TitleRatio 控制 FDisplayMetrics 中的游戏安全区边缘
  • r.DebugActionZone.ActionRatio 控制 FDisplayMetrics 中的动作安全区边缘
  • 这些数值的范围为 0 到 1,默认数值 1 代表显示区域 100% 安全。典型的测试数值约为 0.9

新鲜出炉:内置合成动画

现可将一个 AnimComposite 嵌入另一个 AnimMontage 或 AnimComposite,便于以更加灵活的方式创建自定义动画资源。在下图中,TEST_Montage 包含 TEST_AnimComposite,而 TEST_AnimComposite 又包含多个其他的动画序列。

新鲜出炉:可为碰撞网格体选择 LOD

现可选择静态网格体在“复杂”(每个多边形)碰撞中使用的 LOD。不便使用“简单”(凸包)碰撞时,即可利用此法为网格体导入或生成一个简单的碰撞体。此方法可增强行为和性能,并极大降低高多边形模型上的内存使用。

新鲜出炉:网格体默认碰撞

静态网格体组件现支持默认碰撞,即意味着它们将使用静态网格体资源的碰撞设置。此功能可减轻工作量 - 在中央位置指定碰撞信息即可,在地图中放置静态网格体时无需单独设置碰撞。以穹顶网格体为例,禁用资源上的碰撞后,每个实例中的碰撞均被禁用。

如有其它需求,将静态网格体组件上的设置设为默认以外的选项即可在单独实例上覆盖旧设置。

新鲜出炉:角色移动速度篡改保护

作弊玩家喜欢利用漏洞获取不公之利,网络游戏通常成为他们的目标。常见游戏通用漏洞会利用作弊软件加快游戏客户端上的时间进程。如果游戏使用未修改的角色移动功能,则容易受此漏洞影响,作弊玩家在游戏中将获得更快的移动速度。

新版本为玩家移动添加了可配置的时间差异检测和解决(aka 速度篡改保护),防止这类漏洞的出现。

检测的工作原理是:接收到上一步移动后,服务器便会将客户端的时间戳差量与已知的服务器权威时间差量进行对比,并持续对差异进行记录。时间差异达到可配置阈值时,便会触发检测,并选择性触发解决逻辑 - 解决的工作原理是用服务器时间覆盖客户端在未来报告的差量时间,并将部分移动差量用于“偿还”被窃取的时间(即检测到的总时间差异),直至时间差被填补。

时间差异保护默认关闭,新增的可配置选项位于 GameNetworkManager 中 - 基础数值保存在 BaseGame.ini 文件中,可在项目特定的 game config 文件中被覆盖。

新鲜出炉:网络复制优化

我们新增了一个称为“自适应网络更新频率”的功能,在没有变化产生时不进行多余的 actor 复制尝试,以节约 CPU 周期。此系统将获知 actor 上属性发生变化的频率,并随时间进程动态适应 actor 的网络更新频率。

使用该新功能可达成批量复制性能优化!

新鲜出炉:网络回放中的自定义数据

在新版本中,回放可保存普通网络流之外的信息。使用此功能可极大地增强角色移动组件中的位置平滑。因位置数据为单独保存,我们便可在流中进行前瞻,以便设置角色出现位置的时间,使其出现在既定的准确点上,与特效和其他事件构成良好排列。

查看 ACharacter::PreReplication,了解此功能的使用方法。ChangedPropertyTracker.SetExternalData 用于保存特定帧上 actor 所包含的数据。查看 CharacterMovementCompoment.cpp 后即可发现我们使用 UDemoNetDriver::GetExternalDataArrayForObject 获取此附加信息。

新鲜出炉:动态音类调整覆盖混音

UE4 混音(UE4 Sound Mixes)是对音类属性进行动态调整的实用工具。然而在此版本之前存在一个较大限制 - 混音资源自身在游戏进程中无法动态变化。绕开此限制的一个方法是创建大量只存在音量大小差别的混音。之后在游戏进程中会播放这些静态混音,将游戏的音类耦合到游戏状态中。这个应用策略复杂且容易出错,无法将游戏状态流畅连续地映射到音类调整上。

在 4.12 版本中,混音使用一个名为“Set Sound Mix Class Override”的新蓝图函数,从蓝图动态覆盖其音类调整。

混音内部的音类调整数值将在特定的渐强时间对指定的数值进行插值。如特定音类不存在于混音之中,音类将追加到混音并从 1.0 开始对目标数值进行插值(例如从未应用到已应用)。借助此功能,声效设计师能在混音音量和动态游戏进程事件或游戏状态之间形成紧密整合。.例如,现在即可将音类的属性和游戏状态紧密耦合起来:车辆的行驶速度、地图上的精确位置、actor 体力值等级、玩家恐惧等级,等等。借助此功能还可在 Slate 中为游戏编写一个音量首选面板,无需编写 C++ 代码手动覆盖音类音量并写入到静态资源数据。

使用新蓝图函数“Clear Sound Mix Class Override”即可移除覆盖。如音类调整数值未被覆盖,此函数将对原有数值进行插值。如音类原本不在混音之中,则调整数值将在渐弱时插值到 1.0,完成后将自动从混音中移除。

新鲜出炉:音频本地化(预览)

4.12 版本增强了对音频本地化(对话声波和对话声音资源)的支持。希望您尽量多试用,为我们带来宝贵的意见反馈。

  • 此版本将从对话声音资源中收集语音文本,保存到 PO 文件中,以便和其他以资源为基础的文本一同进行翻译。
  • 新增的数个 commandlet 使对话声音资源的录制和导入十分便捷(它们也整合到了本地化主控面板中)。
  • ExportDialogueScript - 导入每个语种的 CSV 文件(包含每行对话及其相关文件名)。
  • ImportDialogueScript - 导入副本编辑的每个语种 CSV 文件,并利用录制的对话更新翻译。
  • ImportLocalizedDialogue - 导入每个语言录制的 WAV 文件,生成本地化对话和声音资源。

新鲜出炉:Xbox One 上的异步计算

现已支持 Xbox One 上的异步计算。此方法允许 GPU 利用绘制时的空闲资源执行其他工作,在 GPU 上获得更快的整体帧长。当前反射场景和 SSAO 通道已使用此方法,未来版本中会支持更多功能使用。

新鲜出炉:地形碰撞改良

地形现支持简化的玩家碰撞。利用全新的简单碰撞 Mip 等级设置可选择用于简单碰撞的地形 LOD 等级。碰撞 Mip 等级数值仍然用于指定细节碰撞所使用的地形 LOD 等级。

现可为运行时创建的样条网格体生成碰撞。

分类更新明细(此处保留原文条目了,如有问题欢迎 跳转至论坛 讨论交流)

AI

  • New: Ability System's attributes' v-logging is now controlled by a console variable, g.debug.vlog.AttributeGraph.
  • Note that this also means it can be disabled for the entire project if added to DefaultEngine.ini.
  • New: Added new option to Environment Query system (EQS) to do tests using depth rather than breadth.
  • New: Added a blueprint function to set named parameters for use when running an EQS query from blueprints.
  • New: Added a query count warning threshold to detect and report large numbers of queries being made in EQS.
  • By default this is disabled, but easily enabled through a config file value change to QueryCountWarningThreshold and QueryCountWarningInterval in Game ini files (e.g. BaseGame.ini, DefaultGame.ini, etc.).
  • New: EnvQueryContext_BlueprintBase no longer requires the Querier Actor to be non-NULL. It also now specifies a Querier Object (which is a UObject* and can be NULL). The new Querier Object is available through all of the blueprint-implementable functions on the context which return location(s) or actor(s): Provide Single Actor, Provide Single Location, Provide Actors Set, Provide Locations Set.
  • Bugfix: AI perception system stability and performance improvements.
  • GetHostileActors function no longer retrieves actors already forgotten by AI.
  • Perception stimulus of a expired actors is marked accordingly, but not removed.
  • Bugfix: Fixed a bug in EQS that occasionally reset the scoring equation on query asset load.
  • Bugfix: AI perception system no longer notifies listeners of information from senses they're not registered for.
  • AIController’s SetFocus function will now implicitly clear any location focus at the same priority.
  • EQS tests' "Sweet Spot" feature has been renamed to "Reference Value".
  • EQS’s "Average Instance Response Time" stat now uses milliseconds instead of seconds.

Behavior Tree

  • New: Added support for using service nodes directly on behavior tree tasks.
  • New: Behavior Tree editor will now always display nodes' execution index, rather than child index.
  • Bugfix: Forced stopping of Behavior Tree no longer results in failure if the active task required latent abort mechanics.
  • Bugfix: Behavior tree search does not skip over branch when restart request comes in while task is aborting.
  • Bugfix: Fixed a bug that was preventing "On Value Change" BT decorator observation mode from working as expected.
  • Bugfix: Using undo on decorators or services will not corrupt behavior tree data.
  • Bugfix: Execution index displayed on nodes of behavior tree now update correctly after move or undo operations.

Debugging Tools

  • Bugfix: EQS debugger stores data properly when a subsequent Option is the one that produces the end result.
  • Bugfix: Visual Log now grabs logged element's "snapshot" even if it's not an Actor.
  • General Visual Logger stability improvements.

Navigation

  • New: Added acceleration-driven path following, controlled by the "Use Acceleration For Paths" flag in movement components.
  • New: Added support for using Tri Mesh Collision as navigation obstacles.
  • New: Navmesh markup for Nav Modifier Component will now combine all relevant shapes of its parent actor instead of creating simple box.
  • Bugfix: Fixed a bug in navigation filters that could result in differences in how navigation areas work in development versus debug builds.
  • Bugfix: Crowd simulation state of agent is now being set correctly.
  • Bugfix: Multiple blocking hits in geometry conforming for NavWalking movement mode will now be handled correctly.
  • Bugfix: Memory leak removed from crowd simulation manager.
  • Bugfix: Navigation export works correctly for destructible meshes without collision.
  • Bugfix: Fixed navigation updates of attachments when actor is being moved in editor world.
  • Bugfix: Navmesh raycasts no longer fail due to 2D checks performed on the last node.
  • Bugfix: Path Following Component block detection no longer results in testing against different a mechanism than requested.
  • Bugfix: Smart navlink initialization on map load works properly.

Animation

  • New: Added ability to force-reset states as they are re-entered even if they haven't completely blended out.
  • New: Added "Teleport To Explicit Time" option to Sequence Evaluators. Defaults to true to maintain prior behavior. If true, does NOT advance time, so that notifies are not triggered, root motion is not extracted, etc. If false, will advance time, triggering notifies, extracting root motion if applicable, etc. Note: Using a sync group forces advancing time regardless of what this option is set to.
  • New: Added a new node, Copy Bone Delta, that accumulates or copies the transform of a source bone relative to its original reference position.
  • New: Added a new version of the shader complexity viewmode that also shows quad overdraw cost.
  • New: Added an error message to Persona viewport when additive ref pose animations have a 0 scale.
  • New: Added bone name display to titles of anim dynamics nodes.
  • New: Added duplicate slot option to Montages.
  • New: Added editable fixed bounds for skeletal meshes, exposed getters to blueprints.
  • New: Added flag to Skeletal Mesh Component Initialize to initialize to ref pose instead of ticking the anim instance. This option reduces spawn time for Skeletal Mesh Components.
  • New: Added functionality for driving named parameters from animation data using the bone-driven controller.
  • New: Added "Test Skeleton Curve Names for Use" menu option to Persona to list all curves on all animations that don’t drive a morph target or material parameter. Helps users identify possible candidates for removal to improve performance.
  • New: Added processing to animation blueprint compiler and animation instance to store and double-buffer internal machine state weights on the instance. They can be queried cross-machine without issue.
  • New: Added retargeting for variable-referenced sequences in animation blueprints.
  • New: Allowed curve renaming in Curve Track to work for existing Curve Names. The existing curve will just take the new UID/Name, and preserve everything else. Added a warning when trying to rename a curve to a name already in use in current sequence.
  • New: Animation Retargeting supports scale and root motion.
  • New: Import Material Curves now has a "Set Material Drive Parameter On Custom Attribute" option which can be used to set material parameter flags automatically when importing curves.
  • New: The "Look At" node will now accept a socket as the target.
  • New: Top-level state machines are now reinitialized when they become relevant. This matches the behavior of nested state machines.
  • New: Retargeting a skeleton now copies sockets as well.
  • Bugfix: Fixed an issue with not serializing metadata in the Anim Montage or Anim Composite.
  • Bugfix: Fixed a crash when trying to convert curves to metadata after importing an anim sequence.
  • Bugfix: BlendSpace now merges the weights of identical samples. In addition to being an optimization, this fixes an issue with evaluating marker-based syncs in the same sample with different data.
  • Bugfix: Fixed issue with different materials with same parameter name not working in Animation Curves.
  • Bugfix: The "Linear" alpha blend option now returns a clamped Alpha value. Unclamped values could cause negative transition weights in state machines.
  • Bugfix: Animations now record off-screen correctly when using the RecordAnimation command.
  • ZERO_ANIMWEIGHT_THRESH conditional checks are abstracted out by new IsRelevant and IsFullWeight functions in FAnimWeight.
  • Added compression-related asset registry tags for anim sequences.
  • Added filtering to animation node asset pickers so that the wrong type of animation can not be set on an existing node.
  • Added indicator displayed on animation nodes when they use the "fast path".
  • Added invalid cached curve data test to Skeletal Mesh Component’s Refresh Bone Transforms evaluation logic so invalid cache data will not be used.
  • Anim graphs are now debuggable in the Persona graph editor.
  • Bugfix: Anim blueprint exposed value handlers no longer hold function references to TRASHCLASS.
  • Bugfix: Garbage collection and undo/redo issues with anim instance proxy have been resolved.
  • Bugfix: Fixed values not being copied correctly when layered blend per bone was accessed from a struct in the "fast path".
  • Bugfix: Split pins now working as anim graph node inputs.
  • Bugfix: Fixed a number of animation 'fast path' corner case issues:
  • Bitfield pins are now properly supported.
  • Object pins are now properly supported in cooked games.
  • Bugfix: Fixed a crash that could occur when attempting to paste a state machine node inside the state machine itself.
  • Bugfix: Fixed a number of crashes when editing animation blueprint state machines and issues that could cause state machine subgraphs to erroneously get marked as read-only.
  • Bugfix: Bone transforms are no longer harvested from a pose when the bone isn't valid for the current LOD.
  • Bugfix: Fixed blendspace players only reporting normalized time when using a time getter in an anim graph transition.
  • Bugfix: BP notifies are now displayed in the "Add Notify" context menu when they derive from an abstract base class.
  • Bugfix: Merged skeletal meshes no longer crash when composed ref pose matrices are accessed before the mesh is finalized.
  • Bugfix: Persona animation preview tooltip no longer crashes when switching between blendspaces with different numbers of samples.
  • Bugfix: Custom blend graphs no longer appear inappropriately as read-only after a copy/paste operation.
  • Bugfix: Fixed duplicate slot names in anim slot groups.
  • Bugfix: Incorrect bone transforms are no longer being pushed to the renderer during Set Skeletal Mesh. This presented as motion blur artifacts in the editor.
  • Bugfix: Fixed INF being generated (which turned into NaNs) when bone scales were close to zero.
  • Bugfix: Fixed invalid state for Skeletal meshes having their mobility set to static.
  • Bugfix: "Prev Marker not found in GetMarkerIndicesForPosition" assert no longer triggers during marker sync animation ticking.
  • Bugfix: Animation objects are no longer inappropriately Garbage Collected in game. Also added an optimization to recording curves so that we don't add keys except when finishing record.
  • Bugfix: Cache Bones are properly called from State Machines when needed.
  • Bugfix: Fixed missing scaling curves when exporting an animation to FBX.
  • Bugfix: Notifies are now triggered correctly when the server calls Montage_JumpToSection.
  • Bugfix: Notifies within anim sequences within montages now correctly trigger even if the notify is at time 0.
  • Bugfix: Slave Component's Morphtarget works with Master Pose Component. Slave Components can also override their own Morphtarget.
  • Bugfix: Fixed some pins in older animation blueprints being non-transactional.
  • Bugfix: Fixed uninitialized baked animation object indices so writing out CDO/defaulted versions is deterministic.
  • Bugfix: Modifying bones in Persona that are not part of the currently viewed LOD no longer crashes.
  • Bugfix: Fixed a crash when trying to look up sync group indices by name on child Anim Blueprints.
  • Bugfix: Fixed animation blueprints getting flagged for bytecode-only recompile, which fails to reinitialize the script instance.
  • Bugfix: Fixed a bug in montage segment lookup where we would compare against the segment animation start time and not the segment start time.
  • Bugfix: Get Instance Asset Player Time no longer returns normalized time for blendspace assets.
  • Morphtarget DeltaTangentZ is no longer of type PackedNormal. It is now of type FVector, because values range from -2 to 2.
  • Removed component reregistering logic from Set Skeletal Mesh. This allows Set Skeletal Mesh to preserve the current pose across mesh changes.
  • Set initial position for animation playback to the end of the animation when dragging an animation with a negative play rate into a level.
  • Standalone games now benefit from parallel anim update if possible.

Audio

  • New: Added ability to get currently active reverb from blueprints.
  • New: Added ability to set preferred audio device in windows platform project settings.
  • New: Added ability to enable or disable subtitles from blueprints.
  • New: Added ability to set a custom trace channel for audio occlusion trace calls.
  • New: Enabling asynchronous audio occlusion ray tracing by default.
  • New: New console command "AudioMemReport" generates a detailed audio report.
  • New: Previewing sounds in content browser and sound-cue preview are exempt from master volume and always play at full volume
  • Bugfix: Fixed playing anim montage with negative scale in the level viewport.
  • Bugfix: Fix for 2D sounds having attenuation applied.
  • Bugfix: Fix memory reporting issue on PS4
  • Bugfix: Looping sounds no longer stop looping when none of the children are playing a sound. This could happen if a random node had a disconnected pin, for example.
  • Bugfix: Reverb fixed on PS4.
  • Improvements to ogg-vorbis decoding:
  • Reducing CPU hitches due to audio decompression of Ogg-Vorbis by making initial file info parsing asynchronous.
  • Moved real-time asynchronous ogg-vorbis decoding task management to audio device thread, fixes real-time decoding buffer under-runs.
  • Can now play real-time decoded audio through loading screens and other times when main-thread perf hitches.
  • Made multiple improvements to quality-of-life features of the SoundCue editor for DialogueWave assets.
  • No longer duplicating compressed AT9 audio assets on PS4.
  • Updated tooltip for sound concurrency resolution StopLowestPriority so that it indicates that the system will stop the oldest sound if all sounds are the same priority.
  • Updated Oculus Audio SDK to 1.02.

Automation

  • New: Added BuildPatchTool to the binary build.
  • New: UAT will automatically look for Build\NoRedist\Keys.txt in the project directory. If it exists, all pak files will be signed using those keys.
  • Bugfix: Fixes for UAT where server staging targets wouldn't have their target directories cleaned properly beforehand, resulting in redundant data being left behind.
  • Bugfix: UAT VersionUpdater utility now won't touch the target file if nothing was actually changed
  • Bugfix: Added UnrealPak location so that MakeFeaturePacks node can run correctly on Mac.

Blueprints

  • New: Added a conversion node that will allow pin connections between related struct types (routing a child struct into a parent struct pin). This also resolves a crash that could occur from direct connections.
  • New: Added a feature where duplicated Blueprint graphs are automatically opened and focused.
  • New: Added a MakeHitResult node.
  • New: Added a new "copy" node, for guarding reference outputs against unwanted modifications.
  • New: Added a warning and new name for copy pasted event nodes, to better communicate that the copy will not be triggered with the original.
  • New: Added collision generation for spline mesh components which are created or updated at runtime.
  • This is not intended for realtime collision changes while a spline moves around like a tentacle, but it should work for spline meshes that are procedurally generated or otherwise created through blueprint.
  • Note: Spline mesh components are "static" by default. To spawn them at runtime you may need to alter their mobility to "movable" in the details panel or the "add component" blueprint node.
  • New: Added a commandlet for rerunning the conversion step for all assets listed in a manifest, syntax is "-run=NativeCodeGen platformname1 platformname2", eg "C:\MyProject\MyProject.uproject -run=NativeCodeGen windowsnoeditor”.
  • New: Added draw time and additional color options to Blueprint "Line Trace” functions.
  • New: Added Is Valid Index node to Blueprint array library.
  • New: Added Make Plane From Point And Normal to the Blueprint math library.
  • New: Added new EulerInterp and DualQuatInterp options to "Lerp (Transform)" node.
  • New: Added nodes to convert formatted strings into Vectors, Rotators, and Floats.
  • New: Added Random Bool With Weight node to generate a random result based on a percent value.
  • New: Added the ability for users to fully expand tree views in the MyBlueprints panel by holding shift while clicking an arrow.
  • New: Step Over and Step Out have been added as key mappings, although no actual inputs have been configured yet. To make use of the new functionality, either review or remap the keys assigned in editor preferences to step in/step over/step out in Editor Preferences/General - Keyboard Shortcuts/Play World.
  • New: Asset name is now displayed in the cook log for blueprint compile errors.
  • New: GUIDs are now used to identify properties created from blueprints. This grants more effective retention of user values.
  • New: Hooked up lots of new icons for component classes.
  • New: Macros can now have local variables of type 'wildcard'.
  • New: Project Settings now includes a new Cooker option for enabling a potentially-faster path for dynamic instancing of Blueprint Actor types with multiple components at runtime.
  • The option is titled "Cook Blueprint Component data for faster instancing at runtime."
  • The option is off by default, but can be turned on to potentially boost performance in a cooked build when Blueprint Class instances (Actors) with several components are dynamically spawned at runtime.
  • New : Added a filter to show only replicated properties of a Blueprint.
  • Bugfix: Fixed editor crash during Blueprint recompilation before Play In Editor.
  • Bugfix: An issue preventing users from using debugging keys in blueprints to step through and debug blueprints has been resolved. Graphs no longer lose focus when stepping through blueprints.
  • Bugfix: Blueprints based on classes other than Actor will now correctly be detected as data only.
  • Bugfix: SpawnActor/ConstructObject nodes correctly update their hovertext when the Class pin is changed.
  • Bugfix: Scale no longer changes while drag-scaling inside the Blueprint editor's preview viewport. This is accomplished by not applying near-zero delta values.
  • Bugfix: Ease node properly handles interpolation between values other than 0 and 1.
  • Bugfix: Editing the default value of a struct variable no longer causes pins to disconnect.
  • Added information to the Blueprints search tool to distinguish between out-of-date and unindexed Blueprints.
  • Corrected inconsistent function names in Blueprint Editor.
  • Bugfix: The PostConstructLink chain is correctly terminated when relinking a Blueprint class.
  • Bugfix: Fixed a Blueprint compiler error that could occur when switching an interface function's output to an input.
  • Bugfix: Fixed a bug that could cause a crash after force-deleting a Blueprint referenced by another.
  • Bugfix: Fixed a bug that could cause a crash when searching Blueprints after switching the Editor language setting.
  • Bugfix: Using local object variables inside a Blueprint function no longer crashes.
  • Bugfix: Custom collision channels will no longer become out of sync with their associated names.
  • Bugfix: Blueprint compiler error no longer occurs when using a SpawnActor node for an actor with a struct member exposed through the node.
  • Bugfix: Fixed a bug that would leave collapsed graph nodes in an invalid state, after undoing the deletion of one.
  • Bugfix: Fixed a bug that would prevent variable references in an interface function from showing up in a Blueprints search.
  • Bugfix: Arrays of TimerHandles will no longer be cleared when trying to remove a single item.
  • Bugfix: Blueprint functions within Blueprints that implement an interface are now searchable.
  • Bugfix: Blueprint nodes added through keyboard shortcuts can now be undone.
  • Bugfix: When Playing in Editor with a dedicated server running in-process, cosmetic function calls will no longer be skipped.
  • Bugfix: Fixed a bug where malformed variables were being created through a pin's "Promote to variable" option.
  • Bugfix: Blueprint function parameters now correctly display their default values.
  • Bugfix: Blueprints modified by a variable node's "Replace variable with..." option are correctly marked as needing compile.
  • Bugfix: The "Set Members in [Struct]" node now correctly handles literal structs referenced by the output pin.
  • Bugfix: Fixed a cook error that could occur when a Blueprint interface wasn't completely loaded before the Blueprint that uses it.
  • Bugfix: Fixed a cook error that could occur when collapsing a split pin with a debug watch on one of the values.
  • Bugfix: Fixed a crash that could occur when adding, selecting, or removing a Blueprint node.
  • Bugfix: Fixed a crash that could occur when applying instance changes to a Blueprint (when the Blueprint contained an array of text elements).
  • Bugfix: Fixed a crash that could occur when changing a Blueprint struct array to use a different struct type.
  • Bugfix: Fixed a hole in cyclic dependency loading, where other Blueprints could be loaded at the wrong time through the text import process (config files, etc.).
  • Bugfix: Blueprint classes now properly inherit "HideCategories" metadata.
  • Bugfix: Blueprints correctly handle promoting their functions while removing an interface.
  • Bugfix: Invoking Redo while transaction buffer is empty no longer causes a crash.
  • Bugfix: Fixed inconsistent transform scale behavior after replacing the root component via drag-and-drop in the Blueprint editor.
  • Bugfix: Searches for Blueprint event references now include places that the event is called.
  • Bugfix: Actor-based Blueprint classes utilizing one or more latent function call nodes (e.g. Delay) in the event graph no longer crash in editor after recompiling.
  • Bugfix: Loading a project with a struct and Blueprint that cyclically depend on each other will no longer cause a crash.
  • Bugfix: Per-instance customizations on an actor made from a blueprint which has severe compile errors will no longer be lost when the blueprint compile errors are resolved.
  • Bugfix: Property edits to inherited components no longer cause a blueprint to be non-data-only
  • Bugfix: The Components tree view will once again update after an undo/redo of a component attachment action in the Blueprint Editor. This was accidentally broken in the previous version.
  • Bugfix: Editor no longer crashes when a component with 'Within' markup is added to a Blueprint.
  • Bugfix: Blueprint Editor will no longer crash when renaming a component to the name of a component that was previously added and then reverted via the undo command.
  • Bugfix: Fixed the root cause of a potential runtime assertion when attempting to dynamically spawn Actor-based Blueprint Class instances with one or more nested default subobjects created through native parent class construction.
  • Removed a misleading load warning (complaining about property/value mismatches) that could occur when loading cyclic content.
  • Improved logic for detecting mouse clicks on pins with short descriptions, including unlabeled exec pins.
  • Improved "RInterpTo" and “RInterpTo_Constant” node documentation.
  • Improved the error message for CreateEvent nodes that wrap an event/function that no longer matches the expected signature.
  • Made load error messaging more descriptive for failed imports of Blueprint-owned component objects on level load.
  • Moderately improved Blueprint search times.
  • Optimized ComponentTypeRegistry startup.
  • Revised FObjectInitializer::InitProperties() and the PostConstructLink chain for Blueprint Class types to create a faster path for Blueprint class instancing.
  • Some blueprint validation logic has been moved to run after the execution graph is pruned, preventing unused nodes from blocking packaging.
  • The "Delete Unused Variables" feature now considers the "Get Class Defaults" node and will remove any variable output pins that are not connected.
  • The "Get Class Defaults" node will now update properly in response to structural Blueprint Class changes (for example, adding & removing variables).

Core

  • New: Added allocation verification helpers to help with tracking down freeing the same pointers multiple times.
  • New: Added ChangeExtension function to FPaths to change the extension of a given filename.
  • New: Added memory-only output device that will be used by default in shipping configs that have logging enabled.
  • Added command line param -logtomemory to force memory log in other configs.
  • Added command line param -nologtomemory to force file log in test and shipping.
  • Memory log will be dumped to file on exit (in non-shipping configs) and always attached to crash reports.
  • New: Added SCOPE_SECONDS_ACCUMULATOR which will time its scope in seconds and record with the supplied accumulator stat.
  • New: Added settings to improve control over viewport behavior.
  • You can control if the viewport locks the mouse on acquire capture.
  • You can control if the viewport acquires capture on the application launch (first window activate).
  • New: Added some extra stats to the pakfile group.
  • New: Added the ability to filter out command line arguments from the logs.
  • New: Added the ability to limit the number of old ini files kept on disk by the engine. Currently defaults to 10 and is configurable via [LogFiles] MaxLogFilesOnDisk ini setting.
  • New: The 'dumpnonframe' stat command now takes an optional group name, which will be used to filter the output.
  • New: Non-inline bulk data can be written out to a separate ubulk file alongside the original uasset when cooking.
  • This stops us breaking file read contiguity when using pak files by having to skip over that unread bulk data in order to reach the next file.
  • Enabled with UseSeperateBulkDataFiles=True in the [Core.System] section of the project’s engine ini file.
  • New: Allows apps to ensure that they were run via the Launcher.
  • New: Changed crash reporter to respect command line parameter filtering when it is enabled via the project define.
  • New: Changed how FNames are serialized to remove the wasted load time costs due to previously loading FName entries.
  • New: FMath::FindDeltaAngle has been deprecated and split into FindDeltaAngleRadians and FindDeltaAngleDegrees. The original function used radians.
  • New: GitHub 2041 : Allow FMaintenance::DeleteOldLogs in USE_LOGGING_IN_SHIPPING configuration.
  • New: Improved performance of cancelling IO requests.
  • New: Improvements and optimizations to pak signing system.
  • Store encrypted CRCs of each 128kb chunk of the pak file in a separate sig file alongside the pak file.
  • Background decrypt the signatures where possible.
  • New: Integer properties are now properly converted when deserializing if they were saved as a different integer type, e.g. saved as int16, loaded as uint32.
  • New: Material expression objects that are not required in cooked build will now be stripped from cooked packages.
  • New: Module for games to make sure they were ran through the launcher, so they are up to date.
  • New: New command line switch for UnrealPak, "-TestEncryption", which runs some tests on asymmetric key signing functionality..
  • New: Optimizations for FBigInt.
  • New: Plugins for projects can now be optional. Project will not fail to load if they are not found.
  • New: Prevented cheating via ConsoleVariables.ini.
  • New: Programs will also look for plugins in the project directory if the project file is specified in the command line.
  • New: UnrealSync has been removed from the codebase.
  • New: When DirectoryWatcher fails to move a file, it will now log the remaining disk space.
  • New: When the graphics driver crashes, the engine will now assert so that we can send a crash report.
  • CrashReportClient will now attempt to initialize Slate Renderer multiple times before it gives up, in which case it will send the crash report in unattended mode.
  • New: Added ability to set an exit status in a UE4 program (only implemented on Linux).
  • New: Added server performance counters for disk space and free memory.
  • New: Ini overrides are now usable in Shipping builds on servers.
  • New: Order of XGE tasks is guaranteed in case of more than 10 builds.
  • New: Idle time can be excluded from from FPS charts.
  • New : Reflection Capture Component, Sub UV Animation, Sound Node, and Material Expression will no longer be loaded on dedicated servers.
  • Bugfix: Config files will no longer save out with actual game directory paths. Copying the project to another folder will no longer result in warnings and errors.
  • Bugfix: The cooked asset registry now contains sublevel map references in dependency graph data.
  • Changed the warning message when no external profiler DLLs are available into a more friendly log message (it is not an error situation).
  • Bugfix: Crash fixed when parsing encryption key strings.
  • Bugfix: Fix for a rare crash where a package linker would be freed half way through EndLoad(), but before it was actually finished.
  • Bugfix: Fix for an issue for cancelling package loads when there are still packages queued. (Credit to Takeshi Hida of Namco Bandai Studios.)
  • Bugfix: Fix for parsing of the "NoLoadTrackClear" command line parameter.
  • Bugfix: Recursive calls in the profiler now report correct stats.
  • Bugfix: Fixed a crash with saving a level >2GB in size, though there may be other crashes remaining.
  • Bugfix: FLinkerLoad manager fixes:
  • GetLoadersWithNewImportsAndEmpty function no longer empties the wrong array.
  • DissociateImportsAndForcedExports function imports only in non-cooked builds.
  • Bugfix: Corrected bad data in min/max/average inclusive times in the profiler and added min/max/average number of calls. Also fixed event graph tooltip not displaying correct values.
  • Bugfix: Compile button no longer disappears.
  • Bugfix: MD5Hash LexicalConversion::FromString now produces correct results.
  • Bugfix: Fixed shutdown crashes due to illegal StaticClass usage.
  • Bugfix: The time reported when hot reload is triggered via the IDE is now accurate.
  • Bugfix: Fixed UnrealHeaderTool.exe's error code when -warningsaserrors is specified.
  • Bugfix: The "-unversioned" flag is no longer ignored when cooking.
  • Bugfix: Mirroring by using negative scale on an attachment or Skeletal Mesh Component is fixed. Note that because Skeletal Mesh Components are animated, this can cause a performance hit.
  • Bugfix: The function NewObject(Outer, ExplicitClass) will now assert if ExplicitClass is not actually a subclass of T. This avoids potential memory corruption.
  • Bugfix: Fixed incorrect asset loading in Cooked game data.
  • Bugfix: The engine will no longer display message boxes when a D3D device is removed/lost if the engine was running in unattended mode.
  • Bugfix: Unreal Automation Tool will no longer eat backslashes when parsing the command line.
  • Bugfix: Fixed loading PortalRPC and related modules on the server.
  • Bugfix: Fixed FPS charts being generated wrong during multiple runs.
  • Memory profiler loads real-world captures in reasonable time (minutes instead of hours).
  • Reduced memory usage by the profiler by about 50%.
  • Reduced peak memory usage when async loading by 5.5x to 10x.
  • Improved asset registry redirector resolution to account for circular dependencies.
  • Improved live connection handling in the profiler.
  • Tagged Properties that were previously serialized but are no longer (typically because they were made transient) will no longer be loaded, even if their type has also changed.
  • When loading an object with duplicated lazy object pointer GUID, the engine will no longer generate a new GUID. Instead, It will invalidate the old GUID to avoid non-deterministic cooked builds.
  • Increased server FPS cap from 120 to 1000.
  • When running -server, shaders will not be compiled.

Editor and Tools

  • New: Added a warning message when an Hierarchical LOD cluster exceeds 65536 vertices for mobile target-platform projects.
  • New: Added aggressive filtering to the session frontend profiler with the 'AF' checkbox next to the filter text. This rebuilds the stats tree, removing non-matching options and reparenting stats of identical names such that thread time for a particular stat is visible in a single tree row.
  • New: Added an option ("r.SaveUncompressedEXRFrames") to save uncompressed high res screenshots.
  • New: Added AssetUserData support to Animation and Texture assets.
  • New: Added bake and reduce selected keys or whole curve to the curve editor tools.
  • New: Added ScanFilesSynchronous to the Asset Registry interface, which is useful to force scan specific files that you have a TAssetPtr or StringAssetReference to.
  • New: Added support for a scene depth picker. It's currently used for focus depth sampling for the new Cinematic Camera Actor.
  • New: Added the ability to choose the world in the scene outliner.
  • New: Added view mode for visualizing Hierarchical LOD system behaviour.
  • New: Alt-Tab between multiple PIE windows should behave much closer to how Alt-Tab between standalone games would behave.
  • New: Made curve editor colors consistent for X, Y, and Z channels. The colors are red, green, and blue respectively. All other curves are gray by default.
  • New: Many improvements to the Rebuild Lightmaps automation script (map checkouts, better errors, email notifications, etc.).
  • New: Map text box in the editor now converts paths to long package names making them more portable.
  • New: Now allow AssetUserData-derived Objects to be added to assets in the editor via details panel.
  • New: Polished Hierarchical LOD outliner and behaviour.
  • New: 'Recently Used Levels' and 'Favorite Levels' now hold long package names instead of absolute paths. This makes them project relative, which means they will remain valid even if the project location changes.
  • New: Separated input and output snapping in the curve editor into two different toggles.
  • New: SplineComponents now have a debug render feature, allowing them to be visualized in-game in non-shipping builds, or in-editor even when not selected.
  • This can be enabled with the Splines show flag (or 'show splines') from the console.
  • It can also be enabled or disabled per-instance with the SetDrawDebug function on SplineComponent.
  • New: The editor now supports many new methods of opening new asset editors. You can choose where tabs open with a great deal more options in Editor Preferences > Appearance > Asset Editor Open Location. This will reset the 'always open asset editors in new windows' option, it completely replaces and enhances that option.
  • New: The eye dropper in the color picker can now be cancelled by pressing Esc, or completed by clicking the Left Mouse Button.
  • New: UnrealGameSync: Mouse wheel rotations no longer switch projects if the selected project box has focus.
  • New: UnrealGameSync: Pressing Ctrl-C with a change selected will copy the changelist number to the clipboard.
  • New: UnrealGameSync: Status panel now shows the currently selected stream, and clicking on it gives a menu allowing fast-switching to another stream.
  • Bugfix: Fixed an issue where .ini files could have a double extension (.ini.ini).
  • Bugfix: Pasting multiple lines of text into a string or text field in the property matrix no longer leaves the "\r" character in windows platforms.
  • Bugfix: Fixed color properties not receiving the correct values in Sequencer.
  • Bugfix: Drag-and-drop preview actor now appears at the proper scale.
  • Bugfix: Editor no longer emits a log warning when selecting an actor while in Simulate mode.
  • Bugfix: Child Actors can no longer be picked for an Actor reference property in the details panel.
  • Bugfix: Curve editor no longer crashes when box selecting outside the bounds of the viewport.
  • Bugfix: Fixed a bug that caused PIE standalone games to launch in fullscreen.
  • Bugfix: Trying to reset an interface array property with empty entries no longer causes a crash.
  • Bugfix: Viewport settings are correctly saved when shutting down the editor.
  • Bugfix: Fixed an issue where text properties wouldn't notify or transact (for undo) correctly when they were edited.
  • Bugfix: Modifier keys are registered correctly on PC even if both the modifier and another key were pressed in same frame.
  • Bugfix: Color picker’s size is fixed to prevent it from being off-screen.
  • Bugfix: Crash in Curve Struct Customization when no objects were selected for editing.
  • Bugfix: Fixed crash which could occur when diffing blueprints if the SkeletonGenerated class for a particular revision was null.
  • Bugfix: Ensure no longer fires when editor mode input handlers activate other modes.
  • Bugfix: Fixed issue where Editor would attempt to launch on iOS if the project was both a code project and used plugins.
  • Bugfix: Merge Actor functionality will now combine material sections in the final mesh.
  • Bugfix: Fixed rare crash in FlushPressedKeys on PIE shut down.
  • Bugfix: Fixed rare tooltip related crash.
  • Bugfix: Slate numeric drop-down now updates from combo box values if text is selected.
  • Bugfix: Slate throttling no longer prevents viewport resizes from working properly.
  • Bugfix: Fixed the "Make collection from referenced assets" feature in the Reference viewer.
  • Bugfix: The class picker filter’s behavior now matches all other in-editor filters.
  • Bugfix: Fixed various crash bugs in the mesh painting tool.
  • Bugfix: Levels will no longer be dirtied when launching standalone from the editor.
  • Bugfix: Moving parent & grouped child actors no longer results in deltas being applied twice.
  • Bugfix: Fixed some Sequencer tracks incorrectly replaying all keys in reverse when looping forward or backward.
  • Bugfix: Undo/Redo after using Replace Actors no longer crashes.
  • Bugfix: Updated ExampleLibrary included in Third Party Plugin example so that it can be built and loaded on Mac.
  • Bugfix: Now only .FBX or .T3D files are accepted as importable types. Previously, an unsupported type would lead to an editor crash.
  • Made the Config Editor button more visible.
  • Bugfix" Fixed a potential crash when managing your favorite levels.
  • Bugfix: Fixed a crash when changing Media asset path.
  • Updated the VR In-Editor Tutorial.
  • UnmappedTexelsPercentage is now 100-based.
  • When a custom build step is used, if it's async, we now advance the build step upon completion. Otherwise, we just continue to work on the same async build step.
  • The Landscape In-Editor Tutorial now makes sure you have a Landscape before allowing the tutorial to continue to the next step.
  • The auto-reimport settings have been changed so that "Detect Changes on Startup" defaults to true. There is a prompt every time a new source asset has been detected, so the user can veto the auto-reimport if desired.
  • Added Vulkan Preview Enable to Experimental and hide it if Vulkan support is not compiled.Clarified the function of the "Import" option in the File menu. This, and “Import Scene”, have now been combined into a single option 'Import Into Level'.

Content Browser

  • New: Added built-in type category for Media assets.
  • New: Added UI action for creating new content browser folders.
  • New: Sorting asset type categories alphabetically.
  • Bugfix: Downgraded an assert in Path View’s Load Settings function to avoid a common crash when a saved path no longer exists.
  • Bugfix: Fixed a crash when pasting a path containing a class into the asset view of the Content Browser.
  • Bugfix: Fixed a rare crash re-importing a mesh into the content browser.
  • Disabled 'Show in Explorer' context menu option (in Content Browser) for newly created/unsaved assets.

Landscape

  • New: Added ability to expand landscape bounds.
  • New: Added support for baking landscape material world position offset into collision for collision mip settings other than 0.
  • New: Added support for Landscape grass to use the landscape's static light/shadow maps through the "Use Landscape Lightmap" setting in the Landscape Grass Type. This doesn't look quite as good as dynamic lighting and shadowing, but it is much much cheaper.
  • New: Landscape can now use material world-position offset in static lighting calculations. This can be enabled via "Use Material Position Offset In Static Lighting" on the landscape actor.
  • New: "Random Scale" option for Landscape Grass. Works just like the random scale options for foliage.
  • New: PNG heightmaps are now supported in world composition's tiled landscape import.
  • New: You can now set a different LOD for Landscape simple collision and full detail collision. If the simple collision LOD is not set or is set the same as the full collision LOD, they will use the same collision object (as before).
  • Added better input filtering for "Landscape Layer Blend" material node. Now it won't allow "texture object" (etc.) to be connected, and the height inputs won't accept material attributes (only the layer inputs).
  • Added warnings when trying to use the Landscape Visibility Tool without the landscape material having a "Landscape Visibility Mask" node. Just add the "Landscape Visibility Mask" node to the material and link it to the "Opacity Mask" output (doesn't matter that it's disabled, and you can leave the material as "opaque" blend mode) and Landscape will handle the rest.
  • Bugfix: Fixed bounds calculation for landscape splines. This fixes the issue with the first landscape spline point being invisible and later points flickering.
  • Bugfix: Crash fix when undoing following component whitelist changes that were made with [+]/[-] + [Click].
  • Bugfix: Landscape components being perfectly flat no longer causes bounding size to be 0.
  • Bugfix: Landscape and foliage tools now work in orthographic viewports.
  • Bugfix: Landscape editor updates viewports properly in non-realtime mode.
  • Bugfix: Landscape grass now updates when using a material instance as the landscape material and changing parameters.
  • Bugfix: Landscape spline lines show up properly on flat landscapes.
  • Bugfix: Fixed layer allocation issues when undoing after a layer is fully painted away on a component This could cause multiple layers to be allocated to the same texture channel, with very bad visual results.
  • Bugfix: Fixed LODFalloff setting on landscape getting reset when using the "Change Landscape Component Size" tool.
  • Bugfix: Removed stalls when choosing layer infos in the "New Landscape" dialog by not loading layer infos that aren’t needed.
  • Bugfix: Fixed up broken references between Landscape Render and Collision components on load. This was causing a few issues ranging from crashes to collision not updating when sculpting.
  • Bugfix: Fixed a crash when calling Editor Apply Spline with a null spline component. The function also no longer does anything in PIE (it's for Blutilities, not runtime).
  • Bugfix: Fixed a crash when entering landscape mode with a landscape selected while simulating. Landscape infos are no longer created for PIE/Simulate landscapes, as they were empty anyway.
  • Bugfix: Loading landscape projects that use tessellation no longer causes a crash.
  • Bugfix: Fixed shader compile errors when applying a speedtree material to a landscape spline.
  • Grass will no longer tick in-game if there is no grass on a given landscape.

Material Editor

  • Bugfix: Fixed a crash which would occur when pasting a material function call node from one project into another in which it is not defined.
  • Bugfix: Landscape layer blend nodes now updating connections correctly when an input is changed from weight/alpha (one input) to height blend (two inputs) or vice-versa.

Matinee

  • New: Added "Enable Group" option so that you can disable certain groups if you want.
  • New: You can play multiple animations at the same time if the slot nodes are in different groups.
  • Bugfix: Fixed incorrect audio playback when scrubbing before stopping playback.
  • Bugfix: Dragging a selection box outside of the Matinee window will no longer crash the editor.

Cascade

  • Bugfix: Fixed crash when using "Convert to Seeded" in Cascade.

Persona

  • New: "Bone Draw" was on/off but now it has the options All, Selected, or None. The default is Selected.
  • New: Added CPU skinning option to Persona.
  • Bugfix: Pose evaluator customizations are now processed at the correct times. Properties will no longer be re-added after being removed from the details panel, which was leading to duplicate entries.
  • Bugfix: Reported triangle count no longer duplicates count of cloth sections when set to show detailed mesh stats in Persona.
  • Fixed crash when accessing selected graph nodes after doing an evaluator conversion in Persona.
  • Fixed naming error in rotation multiplier node.
  • Auto Adjust Floor to Mesh is now saved to config file.

Project Browser

  • Bugfix: Fixed an issue when creating a copy of a project whose version is older than the current engine version. Previously, the copy would still be attempting to access assets from the original project, and would fail to package.

Static Mesh Editor

  • Bugfix: "Generate KDOP Collision" will no longer generate bad collision data.
  • Bugfix: Fixed crash in auto-convex collision tool when running on very small meshes.

Foliage

  • New: Added foliage scalability group.
  • By default the foliage scalability option will alter the rendered density of landscape grass between 0% (low) and 100% (high).
  • It can also alter the density of any foliage types which opt-in to the behaviour via the "Enable Foliage Density Scaling" option in the FoliageType. This is recommended for foliage which doesn't have a gameplay-relevant effect
  • Note: Foliage density scaling only applies in-game (including PIE), not in the editor, for both usability and technical reasons. Grass density scaling will still happen in-editor.
  • Note: "Low" foliage setting will remove all grass and detail foliage.
  • New: Added the ability to filter procedural foliage by BSP, StaticMesh, Landscape, or Translucent.
  • You can now specify vertex color masking rules for each color channel when painting foliage.

Cooker

  • New: Improved parallelisation of the cook commandlet by allowing packages to be saved while shaders / textures are caching.
  • New: Resave lighting commandlet now supports building lighting as an option. Requires a video card installed on the machine to run.
  • Bugfix: Fixed deterministic cooking issues caused by StaticMesh NavCollision import, class flags which were saved into cooked packages, and UParticleRequiredModule (which was dependent on load order).
  • Bugfix: Content will no longer be marked as modified when garbage collecting.
  • Commandlet tweaks made to Fixup Redirects and Cook-on-the-fly Server.

Sequencer

  • New: Sequencer functionality unlocked in UMG.
  • Event Tracks are now available.
  • You can now call a PlayTo() function to play to a specified time in the animation.
  • Bugfix: It is now possible to render out 4K image sequences using Matinee or Sequencer.
  • Bugfix: The color gradient for color tracks now matches the colors in the color picker.
  • Bugfix: Scrubbing attached audio tracks no longer causes a crash.

Gameplay Framework

  • New: Added "cheatscript" functionality to CheatManager. This enables users to combine a set of console commands into a single script accessible via a single command.
  • New: Actor and Component OnClicked/OnReleased events can now be triggered by more than just Left Mouse Button.
  • PlayerController now contains a list of keys that will trigger a OnClick/OnReleased event if the cursor is over an Actor/Component that implements the event.
  • OnClick/OnReleased events now have an additional argument that specifies which key was responsible for the event.
  • New: Actor delegates OnTakeAnyDamage, OnTakePointDamage, OnActorBegin/EndOverlap, OnBegin/EndCursorOver, OnClicked/Released, OnInputTouchBegin/End/Enter/Leave, OnDestroyed, and OnEndPlay have all had a new parameter added to allow binders to know which Actor the event occurred on in cases where a single event entry point is bound to multiple Actors.
  • New: A "Strength Over Time" Curve Float parameter has been added to Constant Force root motion source for scaling constant force over its duration.
  • New: Added support for tag redirectors on Gameplay Tag structs. It works the same as Tag Containers using the GameplayTagRedirects section of Engine.ini. Invalid gameplay tags (which are no longer in the tag dictionary) will now warn at load time.
  • New: Added "Velocity Mode On Finish" setting to Apply Root Motion Move To Force ability task node. Can now choose to set character velocity to a specific value when root motion ends.
  • New: Added AbilityTask_WaitAttributeChangeRatioThreshold for triggering logic when the ratio of two attributes matches/stops matching threshold comparison.
  • New: Added AbilityTask_WaitAttributeChangeThreshold that triggers when the state of an attribute starts/stops matching some comparison threshold.
  • New: Added a