Unreal Engine 4.14 Released!
2016.11.15

虚幻引擎 4.14 版发布!

作者 Alexander Paschall

此版本包含 Epic 的数百项更新,以及 GitHub 虚幻引擎开发者社区提交的 71 项改良!特此对虚幻引擎 4.14 版本的每位贡献者表达诚挚谢意:

Adam Moss(adamnv)、Alan Edwardesa(alanedwardes)、Andreas Axelsson (judgeaxl)、Andreas Schultes(andreasschultes)、Andrew Armbruster(aarmbruster)、Artem V. Navrotskiy(bozaro)、Audiokinetic Inc.(audiokinetic)、BaxterJF、CA-ADuran、Cameron Angus (kamrann)、Cengiz Terzibas (yaakuro)、Christian Hutsch (UnrealEverything)、CodeSpartan、Cuo Xia (shrimpy56)、Damir Halilovic(DamirHalilovic)、dcyoung、Deniz Piri(DenizPiri)、Dennis Wissel(dsine-de)、Dominic Guana(jobs-git)、Dorgon Chang(dorgonman)、dsine-de、Filip Brcic(brcha)、Hakki Ozturk(ozturkhakki)、Hannah Gamiel(hgamiel)、Hao Wang(haowang1013)、Jarl Gullberg(Nihlus)、Jason(Abatron)、Jeff Rous(JeffRous)、Jeremy Yeung(jeremyyeung)、Jørgen P. Tjernø(jorgenpt)、Josh Kay(joshkay)、jpl-mac、KashiKyrios、Kory Postma(korypostma)、Kyle Langley(Vawx)、Laurie(Laurie-Hedge)、Lei Lei(adcentury)、Leszek Godlewski(inequation)、Marat Radchenko(slonopotamus)、Matthew Davey(reapazor)、Matthias Huerbe(MatzeOGH)、Matthijs Lavrijsen(Mattiwatti)、mbGIT、Michael Geary(geary)、Michail Nikolaev(michail-nikolaev)、Moritz Wundke(moritz-wundke)、Narendra Umate(ardneran)、Nelson Rodrigues(NelsonBilber)、null7238、Paul Evans(paulevans)、PjotrSvetachov、projectgheist、Rama(EverNewJoy)、rcywongaa、rekko、Ryan C. Gordon(rcgordon)、sangpan、Sébastien Rombauts(SRombauts)、Shihai(geediiiiky)、stfx、straymist、Theodoros Ntakouris(Zarkopafilis)、tmiv、ungalyant、Webster Sheets(Web-eWorks)、x414e54、yehaike、YossiMHWF、Yukariin、Zachary Burke(error454)、Zhiguang Wang(zhiguangwang)

全新内容

虚幻引擎 4.14 版本包含一个针对 VR 进行优化的全新前向着色渲染器,在游戏中启用清晰的多重采样抗锯齿。全新的接触阴影(Contact Shadows)功能可渲染出复杂物体的美丽阴影细节。此版本中还加入了一个全新静态网格体自动 LOD 生成(automatic LOD generation)功能。此功能不需要第三方库。

我们还简化了动画工具,以便提高生产效率,为Sequencer(UE4 的非线性动画工具)添加了诸多新功能,并对载具、布料和动画进行了改良。

移动开发者的好消息:现在可以在兼容的安卓设备上使用 Vulkan!此外我们还添加了多项全新移动渲染功能,如从场景色彩和深度进行读取,以及在 UI 上绘制 3D 物体。

Windows 平台上的 C++ 程序员现可使用 Visual Studio "15” 进行开发。仍然支持 Visual Studio 2015。

主要功能

新鲜出炉:带 MSAA 的前向着色渲染器

全新的前向着色渲染器结合了高精度 UE4 灯光功能和多重采样抗锯齿(MSAA)支持!前向渲染器拥有 MSAA 和启用每个材质优化的选项,非常适用于 VR。

Robo

前向渲染器的工作原理是将灯光和反射捕捉剔除到一个视锥空间网格。前向通道中的每个像素在对其产生影响的灯光和反射捕捉上迭代,对它们带有的材质进行着色。静态光照的动态阴影为提前计算,并被打包到屏幕空间阴影遮罩的通道中,以便高效利用多个阴影投射功能。启用 Rendering Project 设置中的“Forward Shading”并重启编辑器即可使用前向渲染器。

前向着色

支持的前向渲染功能包括:

  • 完整支持静态光照。包括来自可移动物体的动态阴影,此阴影将和预计算环境阴影混合
  • 混合的多个反射捕捉(带视差矫正)
  • 部分场景的平面反射,将合成到反射捕捉中
  • D-Buffer 贴图
  • 预计算光照和天光
  • 无阴影的可移动光照
  • 胶囊体阴影
  • 兼容实例化立体

前向着色暂不支持以下功能:

  • 屏幕空间技术(SSR、SSAO、接触阴影)
  • 投射阴影的可移动光照
  • 动态阴影半透明度
  • 从静态光照获取环境阴影的半透明度
  • 光照函数和 IES 配置文件
  • 透明覆盖
  • D-Buffer 贴图上的 MSAA、动态模糊、动态阴影和胶囊体阴影

Robo

前向渲染器支持多重采样抗锯齿(MSAA)和随机采样抗锯齿(TAA)。在多数情况下 TAA 更为可取,因为它能移除几何体锯齿和反射锯齿。在 VR 项目中,头部追踪引起的恒定亚像素运动会造成不必要的模糊。MSAA 方为更佳选择。

选择使用 MSAA 的项目将需要编译内容,以减轻反射锯齿。“Normal to Roughness”功能有助于弱化细节法线贴图上的反射锯齿。静态网格体的自动 LOD 生成可抹平远处模型上的特征,有助于弱化小三角形导致的锯齿。

在我们的测试中,使用 MSAA(替代 TAA)提高了约 25% 的 GPU 帧时。实际开销将依内容而定。

在 Rendering 项目设置中设置默认抗锯齿方法即可使用 MSAA:

控制台变量“r.MSAACount”控制每个像素计算的 MSAA 采样数。“r.MSAACount 1”拥有特殊含义并可返回随机采样抗锯齿,便于在抗锯齿方法之间切换。

性能

进行一些渲染时,前向渲染器的速度比延迟渲染器更快。可在每个材质上禁用的功能可以实现最大的性能提升。默认情况如下:只有最近的反射捕捉应用时不带视差矫正,除非材质使用高精度反射、高度雾按每个顶点计算、平面反射只应用到启用的材质上。

在 Epic 最新的 VR 游戏《Robo Recall》上平衡这些选项。在使用 NVIDIA 970 GTX 显卡的情况下,前向渲染器比延迟渲染器的速度快约 22%。

新鲜出炉:接触阴影

接触阴影(Contact Shadows)可在物体上实现高细节动态阴影。

下图中的常春藤只是一些扁平的片,但由于材质中输出的 Pixel Depth Offset,其自身形成的阴影十分真实。

接触阴影功能针对深度缓冲在屏幕空间中添加一个短光线投射,了解像素是否从给定光照被遮挡。这能够在几何体的连接点处形成锐化的细节阴影。通过其他算法所形成阴影的接触点可能出现缺失或模糊,存在多种原因。通常这是由于缺乏分辨率或深度偏差。无论原因如何,全新的接触阴影功能能够以较小的开销填补空缺。

接触阴影可用于设置光照上的 Contact Shadow Length 属性。此属性控制屏幕空间中光线投射的长度。如设为 1,则光线投射将穿过屏幕。如设置的值较大,精度和性能将会下降。因此在实现需要的效果时请尽量将长度保持在最短。

接触阴影的另一个使用情况是从任意光照的视差遮蔽映射获得自阴影。这需要在材质中输出像素深度偏移。此动画显示了一个视差遮蔽映射的表面,接触阴影的长度设为 0.1。

新鲜出炉:自动 LOD 生成

虚幻引擎最新版本可以自动减少静态网格体的多边形数量来创建 LOD!

上面的动画显示了自动生成的五个 LOD。每个 LOD 的三角形数量均为上一个的一半。

自动 LOD 生成使用名为二次网格体简化的功能。网格体简化器将把生成的两个顶点合并,以计算与边缘发生重叠的视觉差的量。它将选取视觉影响量最小的边缘,然后与之重叠。执行此操作时,它将选取最佳位置放置新合并的顶点,并移除沿边缘重叠的三角形。它将继续以此方式重叠边缘,直到达到所要求的三角形目标数量。

此网格体简化器将维持 UV,包括生成的光照图 UV、法线、切线和顶点颜色。UV 被维持后,则可使用相同的材质,且所有 LOD 均可共享相同的光照图。

控制所生成 LOD 的高级设置在静态网格体查看器中的 LOD Settings 下。

“LOD Group”包含预设列表。可根据项目在 BaseEngine.ini 文件的 [StaticMeshLODSettings] 下进行修改。我们建议为项目设置好类别并尽量使用 LOD 群组,而不对每个 LOD 的细节进行控制。

需要注意一个重要设置:“Auto Compute LOD Distances”。因为算法了解每个边缘重叠所添加的视觉差量,所以它可以用此信息决定可接受的距离误差量。这意味着它也将自动为每个 LOD 计算所使用的屏幕尺寸。

如需了解每个 LOD 自动生成的细节,可在 Reduction Settings 中进行查看。请注意:此功能当前只可用于静态网格体,尚不支持网格体代理 LOD 生成。

新鲜出炉:预计算光照情景

最新版本现支持同一几何体在多个光照设置下的预计算光照!这在 VR 和建筑视觉表现的使用实例中尤为重要,因为这些项目要求尽量高的精度和性能。

在上例中,定向光照、天空光照和天空盒已放置到一个名为 DayScenario 的光照情景关卡中。街灯已被放置到 NightScenario 中。

使用光照情景的方法:

  • 右键点击 Levels 窗口中的子关卡并将其改为 Lighting Scenario。当光照情景关卡为可见时,其光照图将被应用到世界场景。
  • 在光照情景关卡上变更到蓝图的关卡流送方法
  • 将网格体和灯放置到此关卡中并构建光照
  • 在不变关卡的关卡蓝图的 BeginPlay 中,在需要激活的光照情景关卡上执行一个 Load Stream Level。

限制:

  • 在游戏中一次只存在一个可见光照情景关卡。
  • 光照情景关卡出现后,来自所有子关卡的光照图数据均会被放置在其中,因此白天时只加载 DayScenario 光照图。所以,光照图将不再由子关卡进行流送。
  • 让光照情景关卡出现时将强制进行反射捕捉更新,将导致加载时间变长。

新鲜出炉:逐像素半透明光照改良

在延迟渲染器中,全新的前向着色功能现可用于半透明表面,从多个灯光处获得反射高光、从视差矫正反射捕捉获得基于图像的反射。

新鲜出炉:全分辨率皮肤着色

UE4 现支持下表面轮廓着色模型的全分辨率皮肤着色。这可生成表面细节(如毛孔和皱纹)的高保真度光照。

棋盘格渲染皮肤(左图)、全分辨率皮肤(右图)(注释:头部模型由 Lee Perry-Smith 创建)

表面细节 - 棋盘格(左图)、全分辨率(右图)

之前,皮肤上的光照使用棋盘格图案展示,一半像素包含弥散光照、另一半像素包含反射光照。光照在最终的下表面轮廓全屏通道中重组。此方法可生成下表面光照的良好效果(原始即为低频),但它可能导致表面细节光照的保真度较低。

新方法将把包含弥散和反射光照信息的每个像素打包到 RGBA 编码中。利用它可在最终的下表面轮廓全屏通道中重建全分辨率光照,通过随机采样抗锯齿获得表面细节的更佳效果和更稳定的表现。

兼容性 全分辨率皮肤着色需要至少 64 位的场景色彩格式(带完整透明通道)。默认的 FloatRGBA 场景色彩格式可正常使用,但不支持 FloatRGB 之类的 32 位表示。如场景色彩格式与全分辨率皮肤不兼容,则会退回以棋盘格为基础的光照。使用 r.SSS.Checkerboard 控制台变量可覆盖此行为。可以使用的数值为:

0:禁用棋盘格(全分辨率)

1:启用棋盘格(旧行为)

2:自动(默认)-

如场景色彩像素格式支持,将使用全分辨率 限制 全分辨率皮肤着色是一个近似,但毫无意义。它在多数情况下均工作正常,但因编码方法不同,特定材质特征可能出现问题。以下材质尤为如是:

  • 金属材质
  • 自发光材质

这些特征将正常工作,但由于打包 RGBA 弥散/反射编码的缘故,输出与棋盘格之间可能存在差异。制作材质时可以解决特定问题:将不需要进行皮肤着色的区域的不透明度设为 0 即可。为进行着色,不透明度为 0 的像素将作为默认光照。

注解: 出于性能原因,以此方式对具有透明度的像素进行遮罩为可取之法——因为下表面后期处理将略过这些像素。

性能注意事项

如游戏拥有 64 位场景色彩格式,全分辨率下表面光照的处理速度通常比棋盘格更快(由于纹理提取数量更少)。而如果游戏拥有 32 位场景色彩,减少纹理带宽所换取的性能益处较大(但这取决于硬件)。

新鲜出炉:反射捕捉精度提升

使用反射捕捉时,引擎将混合来自反射捕捉的间接反射和来自光照图的间接弥散。因为反射立方体贴图只在空间中的一个点捕捉,这将有助于减少泄露,但光照图会在所有接收物表面进行计算并包含本地阴影。

左图带光照图混合,右图则不带

混合在不平表面效果较好。但在平滑表面上,来自反射捕捉的反射与来自其他方法的反射(如屏幕空间反射或平面反射)不相匹配。

十分平滑的表面上将不再进行光照图混合 粗糙度为 .3 的表面将获得完整光照图混合,粗糙度 .1 及以下的表面将逐渐淡出至无光照图混合。这允许反射捕捉和 SSR 进行更好的匹配,过渡更不明显。

下图的镜头展示了前后的镜面表面反射。注意 SSR 和反射捕捉之间墙壁反射的区别。在动态效果下穿帮尤其明显,因为它将随摄像机一同运动(由于存在 SSR 限制)。

这会对现有内容产生影响 - 在反射泄露在平滑表面的情况下,泄露将更为明显。 为解决此问题,可放置更多反射探头减少泄露。关卡最小应拥有一个大型球体捕捉。也可通过渲染项目设置恢复旧的光照图渲染行为:

新鲜出炉:Visual Studio“15”支持

虚幻引擎 4.14 版本自然支持即将推出的 Visual Studio“15”。仍然支持 Visual Studio 2015。可从微软 Visual Studio 网站的“Preview”处获取 Visual Studio“15”。

如您已安装 Visual Studio 的多个版本,可在“Editor Preferences”的“Source Code”部分选择使用的版本。

新鲜出炉:从 Actor 创建静态网格体

现在可以右键点击关卡视口中的 actor 并将其当前状态转换为一个新的静态网格体资源。这个方法甚至可用于骨架网格体,因此可以从摆好姿势的角色上获取网格体。

新鲜出炉:NVIDIA Ansel 支持

UE4 4.14 新增了对 NVIDIA Ansel 摄影的支持!Ansel 是 NVIDIA 退出的一款新工具,便于玩家在游戏中进行截图。在 Ansel 模式中时,游戏将暂停,玩家可控制摄像机构图,然后进行截图。可抓取多种截图,从 HDR 到 360 立体均可。在 NVIDIA 网站中查阅更多详情

Ansel 现已作为全新的 UE4 插件公开。在项目中启用插件后,即可在 standalone 游戏会话中访问 Ansel。

(在网页浏览器中查看 Ansel 360 捕捉)

我们也在 Player Camera Manager 类上公开了函数,以便游戏对 Ansel 捕捉行为进行自定义。游戏可能需要限制摄像机运动的距离、禁用 UI 元素、禁用/启用特定的光照或后期处理效果,等等。感谢 Adam Moss 和 NVIDIA 提供实现。如要开始使用此功能,请查阅 Ansel 插件文件夹下的 ‘Ansel_integration_guide.html’ 文档。官方 UE4 Ansel 文档将不日推出。

新鲜出炉:改良缆绳组件(Cable Component)

缆绳组件插件已更新新特性,包括碰撞支持和附着物体或效果的套接字。

缆绳组件现包含以下新特性:

  • 包含摩擦设置的简单碰撞
  • 尝试减少弯曲的刚性设置
  • 缆绳每端的套接字
  • 将任意一端设为“自由”的功能

新鲜出炉:UI 字体外框

UMG 和 Slate 的字体现在拥有一个可应用的任选外框。

指定字体的控件可以变更外框设置、颜色、或外框所使用的材质。

外框上字体材质的使用方法与其他字体材质的使用方法相同,唯一的区别是对外框指定的材质只能应用到外框。字体材质可在外框上使用,创建出许多不同效果。

新鲜出炉:可编辑的 Map 与 Set 属性

现可在 Details 面板中编辑 Map 与 Set 属性

Sets 和阵列相似,但无法在一个集中两次拥有相同元素,且元素的排序无法保证。然而在一个 set 中进行查找确定其是否包含元素的速度十分之快。

Maps 拥有一个键和一个值,可在 details 面板中对这二者进行编辑。和 Sets 相同,所有的键必须独一无二,元素的排序不保证留存。然而,元素值的查找速度非常快(只要明确它是一个键)。

新鲜出炉:材质中的矢量 Noise

Noise 材质图表节点包含数个适用于过程着色的函数,生成一个单值(标量)结果。|

| | | | | |

| Cellnoise | Vector Noise | Gradient | Curl | Voronoi |

新的 Vector Noise 节点添加数个 3D 或 4D 矢量结果。这些函数存在运行时开销,因此建议它们开发出一个查找后,使用 4.13 版本中加入的 Draw Material to Render Target 蓝图特性将所有或部分计算烘焙到纹理中。这些材质图表节点允许过程查看在引擎中的最终资源上开发,是用外部工具应用到引擎中资源、创建过程生成纹理的另一种方法。这些新函数包括

1.Cellnoise:为 3D 网格中的每个单元返回一个随机色彩(即从数学下截断应用至节点输入)。特定位置的结果固定不变,是为材质增加随机性的好方法。该 Vector Noise 节点的计算开销极低,因此不需要将其烘焙到纹理中提升性能。

2.Perlin 3D Noise:用 3D 矢量输出计算 Perlin Simplex Noise 的一个版本。每个输出组件在范围 -1 到 1 之间。同时计算三个 noise 通道的开销比合并三个标量 noise 函数结果的开销更低。

3.Perlin Gradient:计算标量 Perlin Simplex Noise 的分析 3D 梯度。输出为四个通道,前三个(RGB)为梯度,第四个(A)为标量 noise。这适用于表面上的凹凸贴图和流型贴图。

4.Perlin Curl:计算矢量 Perlin Simplex Noise(又称 Curl Noise)的分析 3D 旋度。输出为一个 3D 签名旋度矢量。这适用于流体或粒子流。

5.Voronoi:将相同 Voronoi noise 作为标量 Noise 材质节点进行计算。标量 Voronoi noise 在 3D 空间中散布种子点并返回到最近点的距离。Vector Noise 版本返回 RGB 中最近种子点的位置,以及 A 中到该点的距离。尤其是配合 Cellnoise 使用后,这能形成每个 Voronoi 单元的一些随机行为。下图是一个简单的石床材质,使用 Vector Noise / Voronoi 的距离组件调制一些表面的凹凸、混合裂缝中的苔藓,以及种子位置和 Vector Noise / Cellnoise,用于变更每块岩石的色彩和凹凸高度。

 

Perlin Curl 和 Perlin Gradient 可在倍频中被一同添加(只作为常规 Perlin noise 容器)。对于更复杂的表达式而言,有必要计算表达式结果的梯度。为进行协助,可放置表达式计算为一个材质函数,并将其结合助手节点 Prepare3DDerivCompute3DDeriv、或 GradFrom3DDeriv/CurlFrom3DDeriv 进行使用。它们使用位于四面体图案中的基础表达式的四个求值来近似这些基于导数的操作。例如,此网络使用梯度从一个凹凸高度函数计算凹凸法线。

新鲜出炉:PhysX 3.4 升级

虚幻引擎现使用 NVIDIA PhysX 最新的 3.4 版本。这改善了刚体和场景查询的性能和内存使用(尤其是多核性能)。

这个版本的 PhysX 支持运动物体上的连续碰撞检测(Continuous Collision Detection)(CCD),可在高速运动的刚体之间形成精确的碰撞。在下方的 Robo Recall 测试关卡动画中,玩家挥舞武器反弹迎面而来的子弹。

可立即在 UE4 中使用的新特性:

  • 运动物体的连续碰撞检测(CCD)(见上方动画)
  • 加速运动物体更新
  • 加速凸包制作

在未来版本中,我们将加入更多 PhysX 最新版本中拥有的新物理特性。

新鲜出炉:动画编辑器改良

与动画相关的工具被拆分为单独的资源编辑器,无需再在多个模式中使用一个编辑器。

还进行了多项其他改良。每个编辑器的常用功能基本均显示在视口和改良的骨架树中。

  • 骨架网格体编辑器的布局和资源细节面板均有修改,材质和 LOD 部分的修改较大。
  • 骨架编辑器的布局已作调整,骨架树已进行优化。
  • 动画编辑器的布局已作调整,可在资源浏览器中选择性地添加和移除栏目。
  • 动画蓝图编辑器的布局已作调整,更接近标准蓝图编辑器的布局。动画预览编辑器现在可以选择性地将对预览属性均进行的修改应用到类默认上。

资源快捷工具栏

使用改良的资源快捷工具栏可在共享骨架的相关动画资源之间切换。

录制移至传送功能按钮

之前的版本中,录制通过工具栏上的一个按钮进行。最新版本中,录制按钮已移至传送功能按钮中(与 Sequencer 相似)。

预览场景设置

通过“Scene Setup”菜单即可在每个编辑器中编辑场景中的物体和它们的动画。使用该功能可以应用预览动画、设置不同的预览网格体(这是针对骨架或单个动画),并附加额外的网格体。额外的网格体现可指定为单独的纯编辑器资源。这些资源将定义作为主网格体从属进行驱动的一套骨架网格体。

新鲜出炉:动画曲线窗口

在最新版本中,使用动画编辑器中的全新专属窗口即可便利地对动画曲线进行调整。编辑时即可进行即时预览。

在之前的版本中只能在动画资源上配置曲线,而在最新版本中可在骨架上进行设置。

新鲜出炉:Child Actor 模板

通过 Child Actor 模板即可自定义添加到蓝图的子 Actor 组件的属性。

添加子 Actor 组件后,拥有 Actor 的蓝图编辑器的 Details 面板中便会出现一个可展开模板。可从此处访问子 Actor 的全部属性,包括公开变量。例如,Blueprint_A

  • 包含一个 PointLight 组件(使用公开变量驱动其色彩),然后将该蓝图设为 *Blueprint_B* 中的一个子 Actor 组件,即可从 *Blueprint_B* 的 Details 面板中调整颜色变量。

这是一项重大改良。之前的版本中用户被限制在子 Actor 组件的默认属性中,只能通过游戏脚本进行更新。

新鲜出炉:默认动画蓝图

现可指定动画蓝图到骨架网格体。动画蓝图在组件中被指派后,该骨架网格体将固定运行。无论网格体是在动画工具中查看、只是一个 Sequencer 过场,或只是放置在关卡中,均可对固定应用的动画动态或其他控制器进行设置。

这将使动态、控制器、IK 或其他动画蓝图特性与网格体产生关联,无需在每个动画蓝图中进行复制即可在此网格体上进行使用。

“后期处理”动画蓝图也拥有其原生特性和蓝图更新步骤,因此参数可被读取或计算,以便在动画图表中使用。

新鲜出炉:VR 中的地形编辑

在新版本中可使用 VR 运动控制器创建并设计地貌,并绘制地形材质。

可在快捷菜单的“Modes”面板中打开地形编辑工具。然后从 UI 中选择笔刷并开始绘制!长按运动控制器上的“Modifier”按钮即可消除。

新鲜出炉:载具改良

新版本中轮胎力的应用点已发生变化。之前的版本中,轮胎力的应用点位于载具的质量中心。新版本中轮胎力的应用点位于轮胎的质量中心,更容易实现车辆的载荷摆振。

此外我们还添加了简单轮式载具移动组件(Simple Wheeled Vehicle Movement Component),无需复杂的引擎和传动模拟即可实现车轮悬挂和轮胎摩擦。利用此组件可轻松在单个轮胎上应用扭矩。在新版本中,继承自 Wheeled Vehicle Movement Component 的全部组件均可在任意组件上使用,无需依赖于 Wheeled Vehicle Actor。

已有内容的 Deprecated Spring Offset Mode 将自动设为 true,以维持之前的行为。变更 Suspension Force Offset 即可对此行为进行进一步调整。

新鲜出炉:安卓 Vulkan 改良

在虚幻引擎 4.14 版本中可发布支持 Vulkan 的游戏。

  • UE4 支持带 Vulkan 驱动的 Android 7(Nougat)设备,以及运行最新 OTA 更新的三星 Galaxy S7。
  • Android 设备上的 UE4 Vulkan 渲染器已修复许多渲染问题。
  • 在不支持 Vulkan 的 Android 设备上运行时,渲染器将自动撤回 OpenGL ES。
  • 现可使用设备配置文件启用或禁用特定设备和驱动版本上的 Vulkan 支持,以及到 ES 3.1 和 ES 2 的撤回。这使得 UE4 游戏可在 Vulkan 实现不完整或损坏的手机上禁用 Vulkan 支持,转而使用 OpenGL ES。

新鲜出炉:支持移动设备的自定义深度

新版本的移动渲染通道中已支持自定义深度。自定义后期处理材质现在可从场景深度、自定义深度以及场景色彩取样。

需要后期处理,因此必须启用移动 HDR。但在当前版本中,移动 MSAA 启用时该功能无法正常工作。

新鲜出炉:移动设备场景捕捉改良

在最新版本中,渲染场景进行捕捉时,移动设备支持输出 Inverse Opacity 和 Depth 值的 Scene Capture Source 设置。

  • “SceneColor (HDR) in RGB, Inv Opacity in A”选项可用于将带半透明度的物体渲染为纹理,然后在场景或控件蓝图上进行透明混合。
  • 同样,使用结果纹理时深度值可用作遮罩。
  • 生成不透明度数据存在一些开销,因此可以在不需要不透明度时使用“SceneColor (HDR) in RGB, Inv Opacity in A”优化性能。
  • 场景捕捉现可在不支持浮点目标的设备上正常使用,如 Android 6 之前的 Galaxy S6。

新鲜出炉:布料蒙皮改良

我们在引擎中加入了计算模型对模型布料蒙皮数据的功能。因此无需使用导出为 .apx 或 .apb 文件的渲染数据,而使用 UE4 已拥有的渲染数据。从 APEX 导出资源选取模拟模型,并在此模型上重新蒙皮渲染数据。这意味着最终数据的效果应和最初导入的数据一样好。

这将带来一些益处。之前法线可能存在显示错误(见下图),并且限制在一个 UV 通道上。全新蒙皮系统将这两个问题一举解决。

新鲜出炉:材质属性节点

持续不断的更新改善了材质属性的可延展性,使材质属性更加易读,且不易出现错误。

  • GetMaterialAttributes - 此节点是 BreakMaterialAttributes 的精炼替代品
  • SetMaterialAttributes - 此节点是 MakeMaterialAttributes 的精炼替代品
  • BlendMaterialAttributes - 这个新节点使材质属性结构的混合更为便捷。

Get 和 Set 节点的主要改良是引脚为选择性添加,与默认公开全部属性的 Break 和 Make 节点不同。这使得图表可避开需要手动连接每个属性引脚的老工作流程。选择一个节点将在细节面板中显示当前引脚的列表,可展开或移除此列表。例如,下图中的材质函数抓取一个属性集,然后将基础色彩(Base Color)和粗糙度(Roughness)混合到一个光亮的红色表面。

为使图表更加简洁,这些节点利用许多后端变更,对项目可能需要添加的自定义材质属性形成前向兼容。缺失的属性将被自动检测,用户可以对错误进行处理,在项目之间共享材质更为可行。在节点上非显式排列的属性(包括材质图表创建后添加的属性)将通过主 Material Attributes 引脚传递。新引脚添加 Make 和 Break 节点后,所有图表均需要手动更新。

新的 Blend 节点将实现使用一个遮罩的多个属性集的混合,这是结合材质细节层使用时的常见操作。下图实例平均地混合了红色和绿色材质(定义为函数),一个节点将为结果应用透明层。

Blend 节点默认为所有使用 Alpha 输入的材质属性执行线性插值。利用此节点的复选框可退出顶点/像素层面的混合,更易于控制纯顶点或纯像素遮罩数据的使用。与前文提到的 Get 和 Set 节点相似,Blend 节点将自动处理新属性的添加或移除,使程序员在注册属性时指定自定义混合行为。

新鲜出炉:材质中的预蒙皮本地位置

在新版本中,材质可访问骨架网格体的参考动作位置,以在每个顶点的输出中使用。这可在动画角色上形成局部效果。该节点可在静态网格体之间共享,也可在返回标准本地位置的网格体之间共享。下面的图表实例在局部空间中创建了一个网格图案,它在动画中和骨架网格体之间保持相对关系。

新鲜出炉:Sequencer 镜头导入/导出改良

影片录制时可以对每个镜头进行帧处理。新版本中,在每个镜头的开头和末尾可多渲染主序列的帧。通过剪辑决定列表(EDL)即可将这些额外的帧剪入和剪出。此列表可在外部视频编辑包中使用,调整镜头之间的剪辑。

新鲜出炉:摄像机升降架改良

新版本调整了摄像机升降架的行为,可模拟物理升降架的运动。

  • 摄像机升降架绕 Z 轴和 Y 轴的旋转量为 0。
  • 添加升降架绕 Z 轴和 Y 轴旋转量的锁定开关。它们默认为不锁定,因此摄像机将和地面保持水平。

新鲜出炉:Sequencer 音频录制

在新版本中,录制序列时可通过话筒录制音频。

新鲜出炉:Pose Driver 改良

Pose Driver 节点使骨骼基于一套“范例动作”驱动动画的其他方面。在此版本中,该节点可驱动骨骼变形以及变形目标。例如基于手臂的旋转驱动护肩骨。此外还添加了使用驱动骨平移的选项(而不使用其方向)。已改良调试绘制,显示每个“目标”动作和骨骼当前与其之间的接近程度。

新鲜出炉:虚拟骨骼

新版本中加入了对骨架添加“虚拟骨骼”的功能。无法对虚拟骨骼进行蒙皮,但其会在骨架上两个现有骨骼之间被约束。骨架上每个动画的虚拟骨骼数据将自动生成。例如,可添加一个关节(手的子项),但其会受到手掌关节的约束。与套接字不同,此关节可作为一个目标(即 IK 目标或查看目标)在动画蓝图中使用,或在 AnimBP 中对其进行修改,以便之后使用。

这有助于改善角色迭代时间。之前的版本中,如果需要变更 IK 或瞄准的目标关节层级,需要在引擎外进行操作,DCC,然后导回所有动画修复带新关节的动画数据。而利用虚拟骨骼可跳过这些步骤,在引擎中执行全部工作。然而这需要对动画数据进行重新压缩,将关节重新纳入动画数据中。如需了解虚拟骨骼的更多实际使用,请查阅“Paragon 中使用的动画技术”。它的出现让重新定位目标或变更控制器参考帧变得更容易,用于 Paragon 中的定位和斜坡变形。

新鲜出炉:变形目标调试视图模式

利用全新的变形目标调试视图模式(Morph Target View Mode)可更容易地确定每个变形目标所影响的顶点。

新鲜出炉:子动画蒙太奇

基于父蒙太奇创建子蒙太奇,以便替换动画片段,同时保持整体时间设置。可用于为行动添加变量,同时保证其不会影响到游戏进程。

新鲜出炉:MIDI Device 插件

新版本包含与音乐硬件交互的全新“MIDI Device”插件。

这是一个简单 MIDI 界面,从连接到电脑的设备上接收 MIDI 事件。当前只支持输入。这是它在蓝图中的使用方法:

  • 使用插件 UI 启用“MIDI Device”插件,然后重启虚幻编辑器。
  • 在 Blueprint RMB 菜单中查找“MIDI Device Manager”。
  • 调用“Find MIDI Devices”选择中意的设备。
  • 打开“Found MIDI Device”结构体查看可用内容。
  • 然后对所需设备调用“Create MIDI Device Controller”。将其保存在一个变量中。(将对对象的引用保存在变量中十分重要,否则它将被垃圾回收,无法接收事件!)
  • 在 MIDI Device Controller 上将自己的事件绑定到“On MIDI Event”事件。存在至少一个要接收的新 MIDI 事件时,它将在每个游戏 Tick 上调用。
  • 对传入事件的数据进行处理,使项目正常运行!

新鲜出炉:地形镜像工具

新版本中的地形镜像工具可将几何体复制到镜面平面,创建斜向对称的多人游戏地图。

新鲜出炉:网格体材质槽导入改良

新版本中的材质流程已修改,可对静态和骨架网格体中每个材质的使用进行更大程度的控制并获得更多信息,改善导入网格体时材质排序的不一致。

列表中的每个元素为带下列信息的材质槽

  • 槽名称
    • 槽名称用于在重新导入时匹配材质。网格体被重新导入时,将在 FBX 文件中寻找此名称,以确定匹配到现有材质的哪个部分。在之前的版本中,这依赖于索引排序,容易出现顺序混乱。
    • 在此修改前导入网格体的材质槽将设为空。在此修改后导入网格体的材质槽将默认设为导入的材质名。
  • 材质资源引用
  • 原始导入的材质名(在提示文本中)

在蓝图和 C++ 中,现可使用材质槽名检索材质槽(不使用硬编码索引)。调用 Set Material By Name 在骨架网格体或静态网格体组件上设置动态材质。如网格体上的材质排序发生变化,使用名称查找(不使用索引)可确保游戏代码正常工作。

新鲜出炉:平台 SDK 升级

在每个更新版本中,我们都将更新引擎,以支持平台合作伙伴的 SDK 版本。

  • Xbox One:升至 August 2016 QFE 2
  • Playstation 4:升至 PSR SDK 4.008.061
  • HTML5:升至 Emscripten 1.36.13
  • macOS:现支持 10.12 Sierra, Xcode 8.1
  • iOS/tvOS:现支持 iOS10/tvOS10, Xcode 8.1

新鲜出炉:移动下载/补丁蓝图库

全新移动补丁应用蓝图库包含移动游戏从云端网站下载并安装游戏内容和补丁(而非从 App Store 上进行初始下载)的所有必备功能。

这些功能可确定是否有更新游戏内容、开始下载、跟踪进程、处理错误,并在最后安装成功下载的内容包。此外还包含检查存储空间和 WiFi 连接的功能,以便蓝图在这些情况下提醒用户。支持 Android 和 iOS。

新鲜出炉:Kindle Fire 的 Amazon GameCircle 插件

新版本中包含全新在线子系统 GameCircle(Online Subsystem GameCircle)插件!

支持 GameCircle 成就、排行榜、好友和 Amazon 内购。启用此插件后,即可在 Plugins 类目下访问全新的 Amazon GameCircle 项目设置面板。针对 Fire TV 的 AndroidManifest.xml 变更可在此处启用。

新鲜出炉:实时 GPU 分析工具

UE 4.14 包含一个实时 GPU 分析工具,可提供主要渲染类型的逐帧数据。输入控制台命令“stat gpu”即可使用。也可通过 Viewport Options 下拉菜单中的“Stat”子菜单将数据在编辑器中打开。

这些数据为累积式,非层级式。因此不需要从事件树向下寻找即可看到主要类型。例如,阴影投影为所有光照的全部投影(在所有镜头中)的总和。

游戏运行时,通过屏幕上的 GPU 数据即可简单了解到 GPU 负载情况。数据也可用于即时测量变化带来的影响。例如修改控制台变量时,即时修改编辑器中的材质、或修改并重新编译着色器(重新编译着色器已修改)。

游戏运行时,GPU 数据可录入到一个文件中,以便之后进行分析。和现有数据相同,可使用控制台命令“stat startfile”和“stat stopfile”即将数据录入到一个 ue4stats 文件。在 Unreal Frontend 工具中打开文件即可查看数据。

使用 UnrealFrontend 对 GPU 进行分析。总共会显示后期处理和基础通过时间

数据在代码中被声明为浮点计数器,如:

DECLARE_FLOAT_COUNTER_STAT(TEXT("Postprocessing"), Stat_GPU_Postprocessing, STATGROUP_GPU);

渲染线程上的代码块即可通过 SCOPED_GPU_STAT 宏(这些宏引用那些数据名)进行 instrument。这与 SCOPED_DRAW_EVENT 的工作方式相似。例如:

SCOPED_GPU_STAT(RHICmdList, Stat_GPU_Postprocessing);

未显式 instrument 的 GPU 工作将包含在一个包罗 [unaccounted] 数据中。如数据非常高,则说明丢失的工作需要一些额外的 SCOPED_GPU_STAT 事件。与绘制事件不同,GPU 数据为累积式。可以为相同数据添加多个输入,这些输入在帧上进行聚合。

在一些 CPU 受限情况下,GPU 时间设置可能受到 CPU 瓶颈(气泡)影响(此时 GPU 在等待 CPU 同步)。如果绘制线程时间很高,且出现异常情况,则需要考虑这点。在 PlayStation 4 上,我们将命令列表提交之间的时间从时间设置中移除,纠正了这些气泡。在未来的版本中,我们将把此功能延伸到其他主流渲染 API 上。

新鲜出炉:合并 Actor 纹理图谱改良(实验性)

新版本中推出了一个新选项生成加权(二进制)图谱纹理(替代每个材质平均加权的图谱纹理),从而改善了合并 actor 和组合材质时纹理空间的应用方式。

(左图:平均加权的材质。右图: 二进制法) 新功能首先计算单个材质的重要性(根据其采样的最大尺寸纹理)。之后这些值用于计算材质应占据空间量,并迭代式地将每个纹理添加到图谱纹理。这使图谱纹理对输入材质更具有代表性,因为它在计算它在图谱纹理中占据的最终空间时会把原始纹理数据的大小考虑在内。

新鲜出炉:在 Linux 上支持 Android

由于社区用户呼声较高,新版本已在 Linux 上支持 Android。设置所需 NDK 和 SDK 工具最简单的方法是使用 NVIDIA 提供的 CodeWorks for Android(Linux 平台)。此外需要安装 OpenJDK 1.8;设置 JAVA_HOME 指向安装。请注意:新版本尚未在 Linux 上支持 Android Vulkan。

新鲜出炉:媒体播放器编辑器

新版本中,用户可从电脑上拖放文件到媒体播放器的视口中,无需创建 FileMediaSource 资源即可预览视频文件。

  • 已添加一个解码器性能数据标签。输出取决于用于播放的玩家插件。

新鲜出炉:移动 VR 多视图

现在可以在支持设备上使用移动多视图通道!移动多视图和桌面上的实例化立体,为 CPU 上的立体渲染提供了一个优化通道。

如需使用此功能,在 Project Settings 下的 VR 部分将其启用即可。为使功能正常工作,应将 Android 编译设置设为 OpenGL ES2、禁用 Mobile HDR,并禁用实例化立体。当前版本中,此功能兼容基于 Mali 的主流 GPU。如打包时开启了此功能但 GPU 不兼容,其在运行时将被禁用。

此功能仍在实验性阶段,我们还需要验证它与更多功能和设备之间的兼容性。

如上图所示在 Project Settings 菜单中启用移动多视图,然后重启编辑器使变更生效。

新鲜出炉:SteamVR 和 PSVR 分层

新版本已支持 SteamVR 和 PSVR 分层!它的工作方式和 Oculus Rift 插件完全相同——使用 Stereo Layer 组件。

新鲜出炉:VR 加载影片

引擎新版本支持 Oculus、GearVR、SteamVR 和 PSVR 上的加载影片。影片在渲染线程上运行,可掩盖加载内容时的帧率小问题。如需使用启动画面,可设置一个纹理使用“Set Splash Screen”节点,或选择在使用“Enable Auto Loading Splash Screen”节点加载地图时使其自动出现。

新鲜出炉:PSVR 支持多个帧率目标

新版本支持 PSVR 的原生 90Hz 到 90Hz 投射和 120Hz 到 120Hz 投射!这意味着可选则更高的帧率运行,将延迟和投影穿帮最小化。引擎将把帧率锁定在选择上,但使用者仍需努力保证帧率的稳定!

新鲜出炉:Windows 多点触控

使用触控屏时,将在 Windows 7、8 和 10 上生成触控事件。拥有此功能后,即可在全新的 Windows 平板上实现触控游戏和体验。此外,无需部署到目标设备即可对移动游戏的触控操作进行测试。

新鲜出炉:快速异步加载系统(实验性)

打包版本现可使用全新的事件驱动加载器(Event Driven Loader),效率远高于之前使用的流送代码。使用 EDL 后,游戏的加载时间将缩短约 50%,多数情况下加载速度极快。事件驱动加载器加载资源的代码路径统一。这意味着所有包均使用新的异步路径,不再使用旧的块路径。EDL 当前仍为实验性功能,默认为禁用,但可通过项目设置轻松开启。

新鲜出炉:Game Mode 和 Game State 类简化

新版本中添加了全新 Game Mode Base 和 Game State Base 类,作为现有 Game Mode 和 Game State 类的父项。所有游戏必需的核心功能位于 Base 类中,而旧版本和射击游戏特有的功能位于 Game Mode/Game State 中。新创建的项目将继承自 Base 类,而已创建的项目将默认使用旧版本中的类。此外,一些新函数已对蓝图公开。

这项修改是一个长期的更新工作,使旧的游戏性类更容易被理解,并编入所有类型项目的子类。所有范例均已更新使用 Base 类(Shooter Game 除外),而 Shooter Game 将说明如何在旧的类中使用射击游戏特有的功能。新版本将继续支持 Game Mode/Game State,使用者应将把适合自身游戏的版本编入子类。

新鲜出炉:网络复制加速

新版本中,从服务器到连接客户端复制属性的方式已进行内部重构。

我们已对代码进行修改,以便高效低在诸多连接之间高效地共享属性复制工作。在此修改之前,我们只共享无条件属性(以 DOREPLIFETIME,而非 DOREPLIFETIME_CONDITION 注册的属性)的工作。而现在,我们共享所有类型属性的工作。这意味着属性发生改变(需要被发送)时需要执行检查工作的频率将大幅降低。

内部测试的结果显示降低率已高达 40%。还有更多工作需要完善,但我们同时也希望告知大家开发进度,分享好消息!

Release Notes

AI

  • New: Added an “Enable AI System” flag to the World Settings that controls whether the AI System will be created for the given map.

  • Bugfix: Fixed an issue with AI Sense Sight’s time slicing unintentionally skipping queue-aging if the given time limit was reached.

  • Bugfix: Fixed an issue basing whether the AI should turn or not by comparing the current desired rotation vs the last update's desired rotation. The AI should be turning based on whether or not the current desired rotation is different from the rotation of the Pawn.

  • Improvements for the consistency of loudness usage in AI Sense Hearing.

  • Minor cosmetic fix to EQS test scoring function’s preview.

  • Selecting Geometry trace mode will no longer project onto the Nav Mesh first in the Projected Points EQS generators.

Behavior Tree
  • New: Expanded the BT Decorator Is At Location function with an option to use AI Data Provider.

  • New: Multi-node comments are now supported in the Behavior Tree editor. This is similar functionality to the Blueprint editor.

  • Bugfix: Fixed an issue with BT Decorator Compare BB Entries function so that it works regardless of the order of the supplied BB keys.

  • Bugfix: Blackboard key synchronization mechanics correctly handle more edge cases and complex inheritance scenarios.

  • Bugfix: Fixed an issue in propagation of persistent Blackboard keys resulting in these keys missing or being doubled in child Blackboard assets.

  • Bugfix: Fixed an issue for derived Blackboard sometimes getting post-load mechanics run before their parents.

Navigation
  • Bugfix: Aborting previous movement requests as part of requesting a new one no longer resets the agent’s current velocity.

  • Bugfix: Blueprint “AI Move To” function no longer uses the default AI Controller’s navigation filter.

  • Bugfix: Fixed navigation export for landscape not handling mirroring and async gathering correctly.

  • Bugfix: Fixed an issue with navigation export for the capsule component.  

  • Bugfix: Navlink’s “Snap to cheapest area” mode now works correctly with dynamic navmeshes.

  • Bugfix: Navmesh generation no longer gets stuck in an infinite loop.

  • Bugfix: Fixed an issue with parameters of vehicle RVO avoidance.

  • Bugfix: Fixed an issue with Path Following Component for “Has Reached” not using the Goal’s Radius when “Use Nav Agent Goal Location” is set to false. When “Use Nav Agent Goal Location” is set to true, we want to avoid using the Goal’s location on the navmesh, but instead the acceptability of a radius should be based on the Goal’s radius.

  • Path Following Component distinguishes between partial and full paths in terms of acceptance radius used. This will make partial paths behave as expected with non-trivial big acceptance radii.

  • Layer limit for navmesh generation has been increased.

  • Update Move Focus will only clear the focus if the path following component is idle. This keeps the AI rotated in the correct direction when movements get paused.

Animation

  • New: Added “Strip Animation Data On Dedicated Server” option to Animation Settings. This will remove all compressed data from cooked server data. Disabled by Default.

  • New: Added “Aim Offset Look At” node. Aim Offset node that drives its inputs automatically from a Target Location and a Source Socket.

  • New: Added Conversion settings to the Alembic import process. This enables the following:

    • Inverting UV Channels.

    • Applying a conversion matrix to the Alembic File.

    • Presets for Autodesk Maya and 3DS Max.

  • New: Added “LegIK” Anim node, which supports two or more bones per limb with min compression rotational constraint.

  • New: Added logic to separate overlapping notifies onto separate tracks. Notifies can no longer end up hidden from the user by occupying the same time on the same track.

  • New: Added the option to copy selected Morph Target names to clipboard.

  • New: Added a start time to Montage Play node and Play Slot Animation as Dynamic Montage.

  • New: Added the ability to skip empty “preroll” frames when importing an Alembic file and improved the frame information for the Import Options UI.

  • New: The animation “Sequence Length” property can now be read in Blueprints.

  • New: Added the ability to open Anim Montage to open asset from the context menu of the segment.

  • New: Added ability for selected Morph Target to view the modified vertices while in the Persona.

  • New: Added option to now insert current pose to the Pose Asset with Insert Pose.

  • New: Added SmartName Deterministic Cooking:

    • SmartName discards GUID during cooking and DisplayName becomes the identifier during cooking.

    • The GUID created nondeterministic cooking causing patch size to become huge without any actual data change.

  • Bugfix: Fixed a crash when attaching slave components with differing bone counts.

  • Bugfix: Fixed a crash with retargeting Additive Animation Montage.

  • Bugfix: Fixed a crash when routing a wire through multiple re-route nodes in an Animation Blueprint.

  • Bugfix: Fixed a crash in “Get Post Curve” when importing a pose to pose asset.

  • Bugfix: Fixed a crash when retargeting Anim Blueprint with “Allow remapping to existing assets” was enabled.

  • Bugfix: Fixed a crash when calling “Set Animation Mode” on a component with no Skeletal Mesh.

  • Bugfix: Fixed an issue when re-creating a skeleton due to a merge conflict it will add all Skeletal Meshes back to the skeleton so that it recreates all hierarchy.

  • Bugfix: Fixed an issue with invalid bound calculation in Calculate LOD Count.

  • Bugfix: Ensure the runaway loop counter gets reset when processing parallel animation.

  • Bugfix: Fixed an issue for fast path struct copy being broken for Vectors.

  • Bugfix: Fixed an issue for warning triggered by calling “Get Bone Transform” before the master pose component has been registered

  • Bugfix: Fixed an issue where layered blend per bone odd/even connection counts alternately working/not working

  • Bugfix: Fixed an issue with offset of the floor mesh in Persona when Auto-Alignment was enabled.

  • Bugfix: Fixed an issue with pose flickering on LOD change when using “Layered Blend by Bone” node.

  • Bugfix: Fixed an issue to stop empty states being created when dragging montages into State Machines.

  • Bugfix: Fixed an issue with Anim Instance “Is Running Parallel Evaluation” check to correctly test if the Skeletal Mesh Component still references the Anim Instance being used.

  • Bugfix: Fixed an issue with “generated” string appearing for a Skeletal Mesh LOD that was previously auto-generated but had been reimported from an FBX.

  • Bugfix: Fixed an issue with displaying one more frame for an animation.

    • For example, for 30 frames, it was displaying 0-30, which is incorrect and should be 0-29.

    • To avoid confusion, now it doesn’t display key count. It will display the last frame number, so it will look different, but the data is still the same.

  • Bugfix: Fixed an issue with a number of cases where sub-instance animation instance functions weren’t being correctly passed through the main instance.

  • Bugfix: Fixed an issue with “auto” check box in the Morph Target panel.

  • Bugfix: Fixed an issue with functionality of “show uncompressed animation” option in Persona viewports.

  • Bugfix: Fixed an issue with entries in the Anim Curves tab losing “auto” state when hidden/reshown.

  • Bugfix: Removed errant asterisks in the tooltips on the “Rotation Multiplier” node.

  • Bugfix: Fixed incorrect tooltips on the “Hand IK Retargeting” node.

  • Bugfix: Fixed an issue in montages where the wrong section was updated with changes from a Details panel when clicking on a different section.

  • Bugfix: Fixed an issue when duplicating an Anim Sequence that has been layer-edited would apply the layer twice.

  • Bugfix: Fixed an issue where Geometry Cache objects would not be visible in Standalone (packaged) builds.

  • Bugfix: Fixed an issue with keyboard shortcuts for Pose Asset editor panel.

  • Bugfix: Fixed an issue with keyboard shortcuts in the Curve Viewer panel.

  • Bugfix: Fixed an issue with notify states not ending when the Animation Instance was cleared.

  • Bugfix: Fixed an issue with orphaned transition nodes being created when they were duplicated or pasted without two valid pin links.

  • Bugfix: Fixed an issue with Override Materials hanging around when setting Skeletal Meshes.

  • Bugfix: Fixed an issue with pin defaults on sub-instance nodes overwriting the defaults on the inner class.

    • The class defaults will now be copied out to the pin.

  • Bugfix: Fixed an issue with pose asset blending.

    • Normalization has been removed for weights that are less than one so the poses do not instantly snap.

  • Bugfix: Fixed an issue where Pose Asset was evaluating the curve in the wrong frame.

  • Bugfix: Fixed an issue where the Pose Asset editor list was not updating when changing the source animation.

  • Bugfix: Fixed an issue with “Remove Linear Key” for Additive Animations since DDC has been added.

  • Bugfix: Fixed an issue with “Root Motion from everything” calculating incorrect root motion when animations haven’t been ticking.

  • Bugfix: Fixed an issue with sample rate not applied for non-default sample rate when importing an animation.

  • Bugfix: Fixed some inconsistencies in IK editing in the viewports inside Persona when changing effector spaces.

  • Bugfix: Fixed an issue with split struct pins on animation nodes sometimes losing their links on editor restart.

  • Bugfix: Fixed an issue where sub-instance automatic properties would appear in the Details panel.

  • Bugfix: Fixed a typo in “Root motion from everything” accumulation code where we calculated root motion weight using the wrong variable.

  • Bugfix: Fixed an issue where Undoing and Redoing would force the Skeletal Mesh into T-pose.

  • Bugfix: Fixed an issue when importing Morph Targets with fixed frame count.

  • Bugfix: Fixed an issue with Blendspace triangulation.

  • Improved editor response during dragging on additive frame index (stop animation compression happening for each mouse move).

  • Non-POD structs can now be copied using the 'fast path' in animation blueprints.

  • Prevented invalid GUIDs from being saved into SmartName containers.

  • Removed save warning about empty animations from assets that contain curve data.

  • Animation Curve Cached UID list has now been moved to Bone Container from Anim Instance in preparation of supporting curve linking to bone feature, so that you could cull out for a certain LOD.

  • Changed “Create Physics Asset” in the context menu for Skeletal Meshes to enable creation of a Physics Asset without having to assign it to the Skeletal Mesh. This makes it easier to make new assets for Capsule Shadows.

  • Changed inline curve name editing to only change the name of that specific curve, instead of renaming the SmartName itself.

 

Animation Blueprint
  • Bugfix: Fixed a crash using anim debug with sub-instances that are preceded by branching nodes.

  • Bugfix: Fixed a crash when forcing ref pose during Anim Blueprint initialization when using sub anim instances.

  • Bugfix: Fixed a crash when using sub-instances in non-entry states.

Tools
  • New: Added Skeletal LOD workflow refactor.

    • Now we track source files for LODs to save time when reimporting LODs often.

Audio

  • New: Added a debug command to solo specific sound waves, sound cues, and sound classes.

  • New: Audio thread is now enabled by default.

  • New: Gameplay Statics’ “Create Sound 2D” and “Spawn Sound 2D” now have a boolean parameter that specifies the sound should persist across level transitions.

    • Note that the returned component must continue to be referenced by something (Game Instance is a good option) or else it will be garbage collected and the sound will stop.

  • New: Looping sounds are now searchable by the asset registry.

  • New: Making ability to suppress subtitles a UPROPERTY.

  • New: Added support for parsing .wav files with a WAVE_FORMAT_EXTENSIBLE format chunk.

  • New: Added support for pausing individual audio components.

  • Bugfix: Fixed a crash which would occur when copying and pasting an undefined custom sound node from one project to a project which doesn't have the custom node.

  • Bugfix: Fixed an issue for one-shot sound wave instances triggering unintentionally from active sounds when volume mix is 0.

  • Bugfix: Fixed an issue for sound cue delay not consuming startime correctly.

  • Bugfix: Fixed an issue with attenuation on 2D multi-channel sound sources.

  • Bugfix: Fixed an issue with concurrency resolution rule stop quietest with looping sound waves.

  • Bugfix: Fixed an issue with sound node distance cross fade for case of looping sounds.

  • Bugfix: Fixed an issue where Undo in Sound Cue editor does not undo looping changes.

  • Bugfix: Fixed various thread safety issues with occlusion on the audio thread.

  • Hooked up compression quality settings to AT9 files.

  • Prevent procedural sound waves from stopping if they generate 0 bytes of data.

  • Read Compressed Info calculates duration for ADPCM audio.

Automation

  • New: Added a json summary report file generation as part of all automated test summaries.

  • New: Functional tests now support warnings as errors on a per test basis.

  • New: Included .tps files in the installed build to make it easier for users to identify third party software in use. Also included source for additional programs to Installed Build.

  • New: Added Documentation/Extras in Installed Build.

  • Bugfix: Fixed an issue with Test Equal Add Error Message in Automation Test Base

  • Bugfix: Fixed issues with Mobile Device Interface in Installed Builds.

  • Bugfix: Fixed an issue with Android sessions not appearing in the Session Frontend.

  • Bugfix: Fixed support for PS4 in Installed Builds.

  • Bugfix: Fixed various connection reliability issues with TCP Message Transport used for automation testing on mobile devices.

  • Bugfix: Fixed various issues for PS4 deployment.

  • Bugfix: Fixed support for Xbox for Installed Builds created via Build Graph script.

  • Automation - Presets are now stored in json files stored in Config so they can be shared, and human readable. Working on screenshot automation, getting it where it needs to be to permit us to have repeatable tests for comparison.

  • Each session launched from the Session Frontend Launch tab now has a unique GUID and they will correctly appear as separate sessions in the Automation tab.

  • Excluded some more intermediates from the Installed Build.

  • Functional Tests now run correctly in non-editor build.

  • Functional tests will no longer move the camera if the user is using a debug camera.

Blueprints

  • New: Added a new “Is Standalone” node which returns true if the game is running in Standalone.

  • New: Added ability to change curves used by a Timeline at runtime.

  • New: Added an option in Editor Preferences Blueprint section to “Display Unique Names for Blueprint Nodes” rather than the node type.

  • New: Blueprint Nativization: Reduced size of the executable file.

  • New: Added ability to flag Components added via Blueprints as editor only.

  • New: Exposed “Get Component By Class” to Blueprints.

  • New: Exposed the method to "Is Any Rigid Body Awake" for primitive components to Blueprints. This enables a Blueprint to determine if Physics Simulation is being done on the object and fulfills a request to determine if an object is "awake" or "asleep".

  • New: Replication condition property flags are now exposed to Blueprints. This can be set in the Properties Details panel.

  • New: Single layout Blueprint is no longer an experimental feature. The option to disable it has been removed.

  • New: Widget and Animation rich diff tool is no longer experimental.

    • Some changes are not detectable by the diff tool, but they are mentioned in a warning to the user.

  • New: Enabled instances of Hierarchical Instanced Mesh Components to be moved around with the transform widget in the Blueprint Editor, just like Instanced Mesh Components!

  • Bugfix: Fixed a crash in the Blueprint Profiler when compiling or profiling that had the following:

    • Contains a loop.

    • Nested Macros.

    • Collapsed Nodes.

    • Called parent functions or events.

  • Bugfix: Fixed a crash caused when compiling a Blueprint after hot-reloading its base class.

  • Bugfix: Fixed a crash when compiling particularly cross-dependent Blueprints.

  • Bugfix: Fixed a crash when trying to pick a debug world for the Blueprint debugger.

  • Bugfix: Fixed a crash when implementing an interface to a child Blueprint and then implementing it with a parent Blueprint.

  • Bugfix: Fixed a crash that could occur when reparenting a child Blueprint class that had inherited its default scene root component from the parent class.

  • Bugfix: Fixed a crash that would occur on a right-click in the Blueprint editor’s component tree view after having copied one or more BSP actors to the clipboard.

  • Bugfix: Fixed a crash that could happen when pasting a copied “Select” node.

  • Bugfix: Fixed a crash on load in “Remove Node and Promote Children” when removing a corrupted SCS node if it has no parent link (the children are moved to the root node instead).

  • Bugfix: Fixed a rare crash in “Get Default Value Visibility” after removing a pin from a Blueprint node.

  • Bugfix: Fixed a crash when one attempts to generate an abstract class from a Blueprint.

  • Bugfix: Fixed a crash in FCDODiffControl when CDOs being compared had different numbers of properties.

  • Bugfix: Fixed a crash that could occur when pasting graph nodes with orphaned connections to a different graph.

  • Bugfix: Fixed a crash when deleting many Blueprint assets.

  • Bugfix: Fixed an issue where a function, created from collapsed nodes, cannot have a parameter of a weak pointer type.

  • Bugfix: Fixed an issue with assets referenced by a function’s local variables won’t be garbage-collected.

  • Bugfix: Fixed an issue where the Blueprint Editor viewport now correctly displays the result of an undo action that changes the default transformation of the Blueprint Actor.

  • Bugfix: Fixed an issue where changes in User Defined Structure will be properly applied in local variables, without resetting the values.

  • Bugfix: Fixed circular dependencies introduced by default values on User Defined Structs that are now loaded correctly. This fixes on cause of data resetting to default on load.

  • Bugfix: Fixed an issue where compiling a Blueprint would trigger the World Outliner to sometimes detach.

  • Bugfix: Fixed an issue where entering “foreach” in the Blueprint Editor context menu will not result in “For Each Loop” being the first selection.

  • Bugfix: Fixed an issue where moving a variable from a child class to a parent class would break variable Blueprint nodes.

  • Bugfix: Fixed an issue in the Blueprint context menu where options would be unavailable when you hid a sub-level.

  • Bugfix: Fixed an issue so that the “Create Save Game Object” node will now change its output type to match the class you select.

  • Bugfix: Fixed an issue that caused comment bubbles to display incorrectly when using Play-In-Editor.

  • Bugfix: Fixed an issue where functions could lose inputs after adopting them from an interface.

  • Bugfix: Fixed an issue that would cause split-pins on latent “Gameplay Task” nodes to lose connection.

  • Bugfix: Fixed an issue that could hang the editor indefinitely during Blueprint Compilation.

  • Bugfix: Fixed an issue that prevented the option to split a struct pin from appearing on a “Get Variable” node.

  • Bugfix: Fixed an issue that prevented you from ctrl-dragging pin links from macro nodes.

  • Bugfix: Fixed an issue that would cause subsequent latent nodes to fail to execute once one was running.

  • Bugfix: Fixed an issue that would prevent saving a Blueprint after compiling a component that it used.

  • Bugfix: Fixed an issue where Blueprints were not properly inheriting their associated config file.

  • Bugfix: Fixed an issue with rotation struct input pins where splitting them would cause each of the values to shift to the wrong axis.

  • Bugfix: Fixed an issue in which data loss could occur for inherited component default value overrides within a child Blueprint class after recompiling a Blueprinted component class.

  • Bugfix: Fixed an issue that could lead to data loss at runtime when choosing to enable the optimized Blueprint component instancing path for a cooked build.

  • Bugfix: Fixed an issue that could lead to per-instance data loss in Blueprint-constructed components after renaming component variables in the components tree view.

  • Bugfix: Fixed an issue that would lead to Blueprint class compile errors caused by missing client-only component class reference properties in an uncooked server-only context (e.g. UE4Editor.exe -server)

  • Bugfix: Fixed an issue where “Custom Event” was no longer the top option when searching the Blueprint menu for “custom.”

  • Bugfix: Fixed the directions of parameters in functions like “Get Overlap Infos.”

  • Bugfix: Fixed an error when output references parameters of Blueprint Native Event are not in a specific order.

  • Bugfix: Fixed failed “ensures” when pasting linked Anim Blueprint nodes.

  • Bugfix: Fixed issues that could lead to per-instance component data loss after reconstruction of a Blueprint class containing one or more “Add Component” nodes in the Construction Script.

  • Bugfix: Fixed issues with Object Library. It now stores “Blueprint Generated Graph” object instead of “Blueprint” object.

  • Bugfix: Fixed an out-of-order registration issue with native and/or non-scene components and Blueprint-constructed components.

  • Bugfix: Fixed an issue with “Time Seconds To String” format so it matches the comment.

  • Bugfix: Fixed a validation of incompatible pines issues. It will now generate an error.

  • Graphs in a Blueprint can properly be deleted even if they were once part of an interface on the Blueprint.

  • Inherited components in a child Blueprint class will no longer trigger a warning message when the original component has been removed from its parent class.

  • Moving a child component in a child Blueprint doesn't force a parent to become dirty anymore.

  • Nested Default Sub-objects no longer trigger an assertion failure in “Static Allocate Object” when used by a Blueprint type.

  • Reduced PIE startup time significantly when auto-recompiling a Blueprint class with multiple dependencies.

  • Removed warning that would complain about “Make Struct” nodes that didn't have any properties exposed, enabling Blueprint users to return default struct data.

  • “Show World Context Object” markup is now fully inherited. Previously only inherited for one level of a hierarchy.

  • Stale breakpoints saved in Blueprint assets no longer trigger a warning on load. Message moved to 'Display' channel.

  • Struct Ref Pins in “Set Fields In Struct” node can no longer be split when optional pins as this created ambiguous behavior.

  • Blueprint function “Get Direction Vector” has been renamed “Get Direction Unit Vector” to reflect details of its result.

  • Can no longer drag child actor from World Outliner to a Level Blueprint and create an invalid actor reference.

  • Default event nodes in child Blueprints now wire up parent call inputs so you can use them as is without breaking functionality.

  • Duplicating levels that have Blueprints with “Knot” nodes attached to events will no longer fail with a "Graph is linked to external private object" error.

  • EaseIn/EaseOut descriptions corrected to match actual behavior.

Core

  • New: Added a config based system for specifying which classes should be stripped on dedicated server and client builds.

    • Class names can be specified in the project cooking settings in the editor

    • All engine classes that relied on “Needs Load For Server” or “Needs Load For Client” have been moved over to the config based system.

    • “Needs Load For Server” and “Needs Load For Client” still function as they previously did.

  • New: Added a new file into the ini hierarchy to begin fixing the Engine/Base > Project/Default > Engine/Platform > Project/Platform confusion.

    • We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soon be deprecated as we move things over to Engine/BasePlatform, that are safe to move.

  • New: Added ability for arrays of structs to specify a property to be the key.

    • So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will replace the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see Base

  • New: Added new Module Types: "ClientOnly" and "ServerOnly"enabling better control of when modules are compiled and loaded.

    • Can be used to slim down server / client builds.

  • New: Added some extra information to an assert when “Cpp Structs Ops” has not been initialized.

  • New: Added the ability for plugins to reside outside of the Engine/Plugins and Game/Plugins directory.

    • This is useful for plugins that are shared across game teams, but don't want to be placed in Engine/Plugins.

  • New: Accepting comma in milliseconds separator when parsing Timespan.

  • New: Minor changes to pak file security delegate. Now all files that don't exist in the pak file will be passed through the security delegate, regardless of whether they exist on disc or not.

  • New: Only accept "log=<filename>" and "abslog=<filename>" command line values if the filename has a ".log" or ".txt" extension.

  • New: Refactored handling of some UI and rendering code when running headless (i.e. with -nullrhi switch).

  • New: Upgrading an existing UProperty from FVector to FVector4 is now seamless and preserves data properly.

  • Bugfix: Fixed a rare crash when async loading objects caused by linker being detached too early, before other package’s import has been fully processed.

  • Bugfix: Fixed a crash on cooker exit due to unpredictable destruction order of static tickable objects and their collection.

  • Bugfix: Fixed a crash with potential memory corruption when loading Data Tables. It sometimes would allocate less memory than was required.

  • Bugfix: Fixed a crash in PhysX cleanup if an exception occurred during shutdown.

  • Bugfix: Fixed a thread safety issue in the load module code that could crash if multiple threads were trying to load the same module at the same time.

  • Bugfix: Fixed an issue where “Get All Assets” would not return data about live objects when passing bIncludeOnlyOnDiskAssets=false.

  • Bugfix: Fixed an issue with task graph memory leaks.

  • Bugfix: Fixed an issue with TMap deserialization in struct serializer and updated unit tests.

  • Bugfix: Fixed an issue to display a meaningful error and shutdown cleanly if Core modules fail to load on engine startup.

  • Bugfix: Fixed an issue so that dynamic delegates can no longer get double bound when copying an Actor.

  • Bugfix: Fixed a potential race condition and minor memory leak in FMonitoredProcess. This could result in the editor hanging on startup.

  • Bugfix: Fixed an issue where “Force Garbage Collection” might not force a GC immediately if run on a server with no clients connected.

  • Bugfix: Fixed a memory corruption when instancing subobjects of a TArray property.

    • Fixed a memory overrun when reading an SSL certificate.

    • Fixed an invalid memory access when shutting down FInputBindingEditorModule.

  • Bugfix: Fixed an issue where duplicate log lines appear when commandlet “Log To Console” is set.

  • Bugfix: Fixed an issue with FAssetPtr remapping issues for duplicated packages, which was a case with operations like Level Save As and Level Duplicate.

  • Bugfix: Fixed an issue with Malloc Binned “Get Allocation Size” for aligned allocations, which caused crashes with the poison proxy.

  • Bugfix: Fixed an issue with Parse “Value” when there is whitespace between the command and the argument.

  • Bugfix: Fixed an issue with “Is A” race condition during async loading.

  • Bugfix: Fixed an issue where Unreal Build Tool would fail when trying to delete a module’s manifest file in a non-existent directory.

  • Bugfix: Fixed an issue where newline escape sequence wasn’t written to the pipe.

  • FScopedCreateImportCounter will now always store the current linker and restore the previous one when it exits.

    • This should fix some of the linker warning messages reporting wrong package name.

  • Invalidate string asset reference tags after finishing up loading of an async package.

    • Fixes some problems with asset refs not updating correctly after a package was loaded asynchronously

  • Lines of output text from FMonitoredProcess are no longer truncated at the default pipe buffer size, and are no longer returned with trailing CR characters on Windows.

  • Made sure Skeleton assets are loaded before “PostLoad” is called on them to avoid crashes when async loading animations.

  • Silently skip creating exports from a package where the outer is also an export and has been filtered at runtime during loading.

  • Thread safety fixes for the async log writer + made the async log writer flush its archive more often.

  • Thread safety fixes when using the async loading thread.

  • We now abort a directory watch if we lose access to the directory in question to prevent an infinite loop.

Editor and Tools

  • New: Added a warning message to indicate that HLOD clusters do not have a valid proxy mesh, similar to the “lighting unbuilt” message.

  • New: Added a commandlet to enable command line importing of any asset type that the engine supports.

  • New: Added an ability to vsync the editor. This is disabled by default. Set “r.VSyncEditor” to 1 to enable it.

  • New: Added an option in the FBX importer to automatically convert the unit in the FBX file to Unreal Units.

  • New: Added asset cooking path length in their tooltips so that you can detect cooking path issue before you are cooking.

  • New Added checkbox for “Show All Advanced Details” config variable so that it will auto-expand all advanced property categories.

  • New added command line option to enable movie capture burnin.Use the commandline -UseBurnIn=yes.

  • New Added mesh simplification plugin picker to the Project Setting under Editor > Mesh Simplification. The menu to pick simplification plugins also contains a link to find other plugins in the Epic Games Launcher Marketplace.

  • New: Added metadata to remove “reset to default” button for certain properties.

  • New: added new shortcut “Ctrl + Shift + B” to build current level geometry.

  • New Added the ability to import grayscale Targa (.tga) files in the editor.

  • New Added the ability to search through all Editor Preferences and Project Settings at once. Use the selection in these windows at the top for “All Settings.”

  • New: Added the possibility to preview a wave sound in the Content Browser from the thumbnail.

  • New: Added Undo/Redo functionality to the Editor Preferences and Project Settings windows.

  • New: Changed and unified saved shortcuts across all editors.

    • Save As is now Ctrl + Alt + S.

    • Save All is now Ctrl + Shift + S.

    • Save Current is now Ctrl + S.

  • New: Added shortcut Ctrl+Shift+Space to quickly rotate through different viewports (left, up, front, back ,etc).

  • New: Changed the FBX batch import workflow to let the user fix all missing source files before starting the FBX batch import process.

  • New: The Content Browser now supports hiding/toggling specific asset detail columns.

  • New: Added the ability for Ctrl + Middle Mouse drag will give options to switch to different viewports.

    • Drag to Left, Right, Up, and Down will match the viewport intuitively.

    • Drag to Up-Left is Front, Up-Right is Back, Bottom-Left and Bottom-Right are both for the Perspective viewports.

    • Dragging exceeding a certain distance will jump to that viewport directly whereas dragging a little will bring up a popup menu showing which viewport it’s going to switch to.

  • New: Added a new view option for “Show C++ Classes” in the Content Browser to enable you to hide the C++ classes you may not want to see.

  • New: The Engine version including branch name will now be displayed in the Title bar by default.

  • New: Extended “Select all input nodes” function to general Blueprint editor.

  • New: FBX Exporter now exports all LODs.

  • New: The Date Time fields in the editor are now displayed and entered in the local user’s timezone.

    • The time entered is saved into assets using the value converted in the UTC timezone.

    • The timezone that is used is configurable in the Editor Settings  under Region & Language for Internationalization settings.

  • New: There’s now support for generating a “Content-Only” plugin from the new Plugin Wizard.

  • New: Added Show Flags for Widget Components.

  • New: Reference viewer now provides options to show/hide soft and hard references and dependencies with different line color.

  • New: Added Asset Picker support to the Script Interface properties.

  • New: Added unique asset icons for Sound Concurrency assets.

  • New: The Widget Reflector now has a configurable delay between clicking to take a snapshot and taking the snapshot, which is helpful for reflecting widgets in a state that involves the cursor or other timing factors.

  • New: Added the ability for users to specify a Base material to create Material Instances instead of just creating materials when importing an FBX.

  • New: Added project file to source control when creating a new project.

  • Bugfix: Fixed a crash when moving Instanced Static Mesh Component in editor when it had no mesh set, but had instances.

  • Bugfix: Fixed a crash on undoing a deletion of a mesh in mesh painting mode in the VR Editor.

  • Bugfix: Fixed an occasional crash on editor shutdown due to a race condition in FTcpMessageTransportConnection.

  • Bugfix: Fixed several crashes in the Session Frontend when viewing profiles.

  • Bugfix: Fixed a crash issue where making changes to components in the Blueprint editor when there is an active component in the component visualizer.

  • Bugfix: Fixed an issue where batching optimization for dragging components onto Blueprints. Adding thousands of static mesh components now takes seconds instead of up to an hour.

  • Bugfix: Fixed an issue so that comments will now be preserved on “Parameter” nodes when converting them to “Constant” nodes within the Material Editor.

  • Bugfix: Fixed an issue that prevented a material from being saved when copying a comment node from a Material Function to a Material.

  • Bugfix: Fixed an issue so that the Crash Report Client can now correctly restart Editor sessions that were run from the Launcher.

  • Bugfix: Fixed an issue where the cursor would remain hidden after left-clicking in the Orthographic view.

  • Bugfix: Fixed an issue that would cause Custom keyboard shortcuts to no longer switch between the Command and Control keys on Mac when the editor was restarted.

  • Bugfix: Fixed an issue so that debug lines will now render correctly in orthographic views if their thickness has been specified.

  • Bugfix: Fixed an issue where FBX and OBJ files containing a UV channel with no name were not imported correctly into the editor.

  • Bugfix: Fixed an issue so that the FBX importer will correctly re-import a mesh when the combined mesh checkbox was set to true.

  • Bugfix: Fixed an issue with “On Mouse Button Up” not resetting SButton’s Brush state from “Pressed” to “Hovered.”

  • Bugfix: Fixed some issues with the LODGroup workflow:

    • During FBX Import, LODs are now recomputed with the correct settings.

    • In the Static Mesh editor, Extra LODs are removed when changing the LODGroup.

  • Bugfix: Fixed various crashes when manipulating BSP geometry in the editor.

  • Bugfix: Fixed a crash while importing FBX scenes if objects contain procedural textures, which is not supported.

  • Bugfix: Fixed a crash when setting a closed loop on a Spline component which has no spline points defined.

  • Bugfix: Fixed an issue where the dialogue “Actors are referenced, are you sure you want to delete?” from appearing when you are copying a lot of actors to another level.

  • Bugfix: Fixed a warning that would spam the log when opening the Editor’s Blueprint menu.

  • Bugfix: Fixed an issue where an actor deletion while in Mesh Paint mode would not be undoable.

  • Bugfix: Fixed an issue where all collision would be disabled if you don’t auto-generate a simple hull when importing an FBX.

  • Bugfix: Fixed an issue where importing a Texture asset while an editor window was open for that asset would cause the Details Panel to disappear.

  • Bugfix: Fixed an issue where occasionally changing tabs in the Editor would cause the UI to freeze briefly and undock the selected tab.

  • Bugfix: Fixed an issue where painting override vertex colors on a SpeedTree mesh would cause its wind animation to cease or look incorrect.

  • Bugfix: Fixed an issue where structs containing enum values with whitespace characters would not correctly serialize when copied from the Details Panel.

  • Bugfix: Fixed an issue where Unreal Frontend and other standalone tools would not display tooltips on dropdown menu items.

  • Bugfix: Fixed an issue with assigning of materials on components would not work if you multi-select multiple components of a Blueprint and assign the Material.

  • Bugfix: Fixed an issue when choosing “Yes to All” was not functioning properly when asked to delete many actors.

  • Bugfix: Fixed an issue  with in-game console command parameter display to include all parameters.

  • Bugfix: Fixed an issue with loctext related warnings when opening the Blueprints submenus on the Level Editor toolbar.

  • Bugfix: Fixed an issue with missing widgets when using Mobile Preview mode with a Mobile HDR disabled project.

  • Bugfix: Fixed an issue with single player PIE so that the window position is correctly fetched and saved when running a dedicated server. This is held separately to stored positions for multiple client PIE.

  • Bugfix: Fixed an issue in the output log filter not updating when text was committed.

  • Bugfix: Fixed an issue where Mobile Packaging Wizard will not find any project maps if UE4 and the Project are installed on different drives.

  • Device button text in “Device Output Log” window should be more readable now.

  • Bugfix: Fixed an issue so that .exe icon is correctly set for packaged Windows games.

  • Bugfix: Fixed an issue so that String Asset Reference properties will now only open an Asset picker (not an actor picker) as the goal is to reference an asset.

  • Bugfix: Fixed an issue where “find culprit” dialog did not honor the user's choice.

  • Bugfix: Fixed an issue with Unreal Game Sync where database events were being returned out of order could cause builds to show as never completing.

  • Bugfix: Fixed an issue with Unreal Game Sync showing a build failure/warning dialog immediately if you submit while the build is yellow/red. This now ignores builds before your last submitted CL.

  • Bugfix: “Play in Standalone Game” does not assume -window as a launch parameter therefore you can now specify -window or -fullscreen.

  • "Select all input nodes" now have a corresponding "Select all output nodes" for nodes that are output nodes.

  • Deleting many assets at once will now batch them as a single source control command instead of one for each asset.

  • Directional Light icon in the viewport changed (the two arrows within the icon were removed), as the asset itself provide another arrow indicating the light direction.

  • “HighResShot” console command now supports the same functionality as the Editor UI version and improved the help with usage examples.

  • Improved editor hitching while using launch on by delaying package save until all data is cached.

  • Minor update to the layout of the User Defined Struct editor.

  • Improvements have been made to the Unreal Frontend Project Launcher Progress page:

    • The custom profile name is now visible above the progress bar when launching a profile.

    • The Task and Status views can now be resized.

    • Columns for “Errors” and “Warnings” have been added to the Task view to show which tasks have problems.

    • Previously completed tasks are no longer cleared when the launch is cancelled.

    • The message log will now only scroll to the newest message when the log is scrolled to the very bottom.

  • Removed the Experimental “Live Editor” feature from UE4

    • Live Editor was an early attempt at automation of editor features using external hardware, such as MIDI.

    • This feature was never fully completed and we have no plans to continue work on it.

    • If you’d like to use MIDI devices in your editor plugins or games, please check out the new “MIDI Device” plugin available in this release!

  • Unreal Game Sync: Improvements to “Clean Workspace” dialog.

    • Empty folders are now set to be deleted by default.

    • Added a context menu to select all/none/empty/default for a subtree, as well as to open Windows Explorer at that location.

  • We now export the collision mesh when exporting to FBX. Disabled by default.

    • Added an Editor Preference option to enable or disable the export of collisions. Editor Preferences > General > FBX Export Collision Mesh.

  • Focusing an Actor that has 0 size bounds now works.

  • Play in editor will no longer auto resume a game on focus received if it was previously paused.

  • Rebuild lightmaps commandlet now doesn't apply world transforms twice.

  • Removed duplicate platforms from deploy list in Unreal Frontend.

  • Scalability settings will no longer auto-apply if the low performance warning message is ignored.

  • Source file paths are now normalized when caching their state.

  • The Auto Distance Error value for Static Mesh LODs can now be set to a value smaller than 1.

  • The Hue value displayed in tooltips for colors within the Theme bar will now match the hue value displayed for that color in the Color Picker.

  • The orbit camera should no longer reverse zoom direction when zoomed with the mouse wheel.

  • The performance when selecting thousands of actors has increased and should no longer render the editor unusable when lots of actors are selected.

  • The pin-type filter now filters on both the localized and source type descriptions.

  • The placement mode now filters on both the localized and source item descriptions.

  • Undo/redo of mobility changes will also undo/redo the mobility changes on ancestors/descendants that were changed along with it.

  • Visual logger icon updated.

  • When importing a FBX file containing multiple animations, user can re-import any animation without overriding it with the first animation in the FBX file.

  • Updated Map and Set Properties so they can now be edited from within the Details Panel. Sets ensure that all of its elements are unique, and Maps ensure that all of its keys are unique.

Content Browser
  • New: Deleting folders in the Content Browser now removes the folder from disk.

  • Bugfix: Fixed a crash renaming a collection with multiple collections selected.

  • Bugfix: Fixed a crash when force deleting a blueprint with a child actor component from the Content Browser.

  • Bugfix: Fixed an issue with dynamic collections not returning anything.

  • Added ~ to the list of invalid characters for object/package names.

Landscape
  • New: Added 180° rotation support to the Landscape Mirror tool.

  • New: The Landscape LOD visualization mode now renders material tessellation while in the Viewport is in Wireframe mode.

  • Bugfix: Fixed a crash entering Landscape mode when there is a Landscape in a sublevel that is loaded but hidden.

  • Bugfix: Fixed a crash editing Landscapes with the “r.LightPropagationVolume” console variable enabled.

  • Bugfix: Fixed a crash when applying a material with tessellation enabled to a landscape or when painting a material with tessellation on a newly added component.

  • Bugfix: Fixed a crash when duplicating a level containing a Landscape through the Content Browser.

  • Bugfix: Fixed a crash when loading duplicated Landscape levels.

  • Bugfix: Fixed a crash when merging levels containing a Landscape.

  • Bugfix: Fixed a crash with Landscapes caused by using undo after using the Move-To-Level tool and then selecting a Landscape Proxy in a sub-level.

  • Bugfix: Fixed a crash if a Landscape Layer Info object is force deleted while it is in use.

  • Bugfix: Fixed an inability to import Landscape Layer weight maps when creating a Landscape.

  • Bugfix: Fixed an issue that would cause Landscape Components to be invisible when using tessellation on a Landscape.

  • Bugfix: Fixed an issue with Landscape rendering errors after using the “Change Component Size” tool.

    • Also affects initial import of a Landscape with weight maps.

  • Bugfix: Fixed a regression with performance when importing Landscape heightmaps.

  • Bugfix: Fixed some small typos in the Landscape tutorial.

  • Bugfix: Reduced material update log spam when creating and editing Landscapes. Some will remain since Landscape fundamentally manipulates a lot of material instances.

  • Removed "Cmd: UpdateLandscapeSetup" log file spam during while editing World Settings on maps with landscape.

Material Editor
  • New: Added the ability to clear the preview mesh on a material instance.

  • New: Added the ability to highlight all nodes connected to an input.

  • New: Added tooltips to the inputs of the Material Final Result node.

  • Bugfix: Fixed a crash when loading cooked Materials in the editor.

  • Bugfix: Fixed an issue where "Select all linked nodes" function would not show up in Material Editor for output nodes.

Matinee
  • Bugfix: Fixed an issue with incorrect subtitle timing and rendering when scrubbing.

Persona
  • New: Added better bulk import reporting so current progress through a bulk animation import can be seen, rather than only showing progress through the current animation.

  • Bugfix: Fixed a crash when changing scene settings and hitting undo in Persona with complex cloth active.

  • Bugfix: Fixed bounds calculations in Persona that include bones to respect LOD (and other required bones).

World Outliner
  • New: Added the ability to collapse and expand folders in the World Outliner.

Static Mesh Editor
  • New: Added Console Command "FORCELODGROUP" that will apply a Static Mesh LODGroup to selected groupless meshes in the editor. This can batch mesh-reduce (ie, Simplygon) all meshes in a level.

Source Control
  • Bugfix: Fixed an issue where history and merging do not work if the user has “format.pretty” setting in their gitconfig.

  • Silenced some redundant P4 errors that could be generated when running a “stat update” on a file. Some of the options produced errors when working with newly added files. These errors are now downgraded to infos like they are for the main stat command.

World Browser
  • Bugfix: Fixed a crash on Changing sub-level visibility under certain conditions.

  • Disabled use of World Composition with multiplayer PIE using separate process option, as it not properly supported now.

Foliage
  • New: Added console variables to discard grass and/or scalable foliage data on load.

    • If set in the scalability settings, it reduces the memory requirements of the "off" setting at the expense of having to reload the level when changing the setting from "off" to a higher level.

  • New: Implemented filter to enable painting foliage on other foliage (e.g. vines on trees).

  • Bugfix: Fixed an issue where painting foliage on blocking "query" actors was not working. Actors which are not themselves moving only need to be set to "Query" to be blocking, but the foliage tool was checking for both "Query & Physics."

  • Bugfix: Fixed an issue where disabling 'Use Landscape Lightmap' option was skewing Procedural Foliage Instances.

  • Prevent landscape grass generated in the editor viewport from being duplicated for Play In Editor (PIE) sessions.

Cooker
  • New: Added -mallocbinned commandline option to use it while cooking. Binned allocator is faster to cook in some cases.

  • New: Added experimental Partial Garbage Collection feature for cooker. Added “-partialgc” commandline option for cooker. Instead of cleaning all packages when GC, this cleans up packages which will not be required for cooking later.

  • New: Fixed an issue with deterministic cooking for bake distributions.

  • New: Improved peak memory usage by the cooker by only resolving string asset references for the current package being saved.

  • New: Now cooker processes async shader compilation while blocked doing other work. This gives a minor improvement in cook time.

  • Bugfix: Fixed an issue for partial LOD level deterministic cooking issue. Spawn Module now has its postload called before being used.

  • Cooker forces a shader compilation flush when it detects that it has passed the max memory budget. This helps to avoid out of memory problems when cooking large projects.

  • “Directories To Always Stage As UFS” now filters .uasset and .umap files. Cooked assets will no longer be replaced by their uncooked version during staging UFS.

  • Launch on in the editor will save required packages before cooking so that changes are correctly reflected.

Sequencer
  • New: Added an option to map the transform motion of a Skeletal mesh to the root bone on FBX export. This option is in the General Settings in the Miscellaneous section.

  • New: Added “Get Cine Camera Component” function from Cine Camera Actor.

  • New: Added option to convert a spawnable track to a possessable track.

  • New: Added option to create sub sequences for each master sequence shot.

  • New: Added the ability to keyframe Geometry Cache Actor properties in order to use it in sequencer.

  • New: Enable "Actor to Track" on the Cine Camera Actor as a keyable property.

  • New: Enabled subtitles for audio tracks.

  • New: Force the roll and yaw of the camera crane mount to be 0 so that the camera stays level to the ground. The yaw is controlled by the crane yaw control.

  • New: Sequencer can now playback Anim Montages.

  • New: Set Skeletal meshes to always tick pose and refresh bones when there's an Animation track in Sequencer.

  • New: Tweaked default Sequencer colors.

    • Audio track is brighter.

    • Transform, bool, event tracks are less saturated.

    • Recording subsection is more saturated.

    • Fade track now shows a gradient.

  • New: Added icons for Cine Camera, Camera Rig Rail, and Camera Rig Crane Actors.

  • Bugfix: Fixed a crash when using sequence recorder with -game. Added GEditor check.

  • Bugfix: Fixed an issue where it was impossible to animate a single component of a structure property while still enabling the original value for non-animated components to be set externally.

  • Bugfix: Fixed an issue where the values in the key editors in Sequencer would become out of sync with the property values.

  • Bugfix: Fixed an issue with the Fade track so that is only affects the current player and not all worlds.

  • Bugfix: Fixed an issue with Game Mode Override option in movie capture so that it works when capturing the Editor.

  • Bugfix: Fixed issues where properties were not getting bound when converting from Matinee to Level Sequence tracks.

  • Bugfix: Fixed an issue with Anim Notifies not working when playing an Animation on Blueprint-driven Skeletal meshes.

  • Bugfix: Fixed an issue with Anim Trails not playing in full with a Sequencer-driven animation.

  • Bugfix: Fixed an issue with byte and integer properties not being able to be exposed to Cinematics on Blueprints.

  • Bugfix: Fixed an issue where the cursor would jump around inconsistently when ending a drag.

  • Changed curve editor visibility so that it's no longer a toggleable saved config.

    • It's now just a toggleable state because it was unexpected to have Sequencer restart with the curve editor visible.

  • Changed FMovieScene3DTransformTrackInstance “Update” to properly update “Component Velocity.”

  • Disabled auto-possess player for recorded pawns.

    • This fixes a bug where if you record a Third Person Template character when you open the Sequence the recorded character will possess the viewport.

  • Restore state when stopping the level sequence player so that objects controlled by Sequencer return to their positions.

  • Spawnables now use deferred spawning.

VR Editor
  • New: You can now instantly reset the world’s scale to its default by tapping the touchpad button while gripping the world. This makes it easy to get back to your “Player’s Size” while editing.

  • New: You can now disable VR Editor Tutorial in Editor Preferences > Experimental > VR.

  • Bugfix: Fixed an issue with blurry toolbar icon when “Use Small Toolbar Icons” was enabled in the Editor Preferences.

  • Bugfix: Fixed various issues and regressions with Mesh Paint in VR:

    • Brush preview not being rendered for lasers/mouse when not actively painting.

    • “Full press” over actors that was preventing the UI from being clickable.

    • Brush cursor displayed when hovering over UI (including selection bar/close button).

    • VR transform gizmo getting in the way of everything while painting, it is now hidden while in Mesh Paint mode.

    • Not being able to fully interact with UIs after messing around with Mesh Paint

Gameplay Framework

  • New: Added a cvar “t.FPSChart.OpenFolderOnDump” to control whether or not FPS charts automatically open the profiling folder when stopfpschart is executed.

    • This can be useful to avoid a bunch of open windows while doing automated testing.

  • New: Added “Suppress Stacking Cues” flag to Gameplay Effect options to avoid sending a Gameplay Cue RPC for each instance of a stacking Gameplay Effect.

  • New: Added “GameModeBase” and “GameStateBase” classes as parents of existing classes “GameMode” and “GameState.” The core functionality needed by all games is in the Base classes, legacy and match-specific features are in the child classes.

    • Blueprint access has been added to Game State Base for “Has Begun Play”, “Has Match Started”, “Get Player Start Time”, “Get Player Respawn Delay”, “Game Mode Class”, and “Spectator Class.”

    • Game Mode Base “Must Spectate” and “On Change Name” are now called properly.

    • Added “Restart Player At Player Start” and “Restart PLayer At Transform” to manually control of where player pawns are spawned.

    • Updated the GameMode documentation to reflect these changes and add extra context.

  • New: Added access to both the game's “Unpaused Time Seconds” and “Time Seconds” from Blueprints.

  • New: Added the ability to set the mouse position from Blueprints via the Player Controller.

  • New: Components can now specify whether they replicate from the Blueprint Property editor.

  • New: Components that are referenced by an “Edit Anywhere” property but are not created as part of object construction can now be edited via the in-world component editing panel.

  • New: Cull Distance Volumes no longer globally update on every Actor property change. This should reduce hitches after changing properties entirely unrelated to cull distance in levels with large Actor counts.

  • New: More Cheat Manager functions have been made available to call and to override from Blueprints.

  • New: Added “Use Client Side Level Streaming” property added to World Settings.

    • When enabled, the server doesn't evaluate streaming volumes. Instead, each client independently decides what volumes to stream in/out, depending on its players' cameras.

  • New: Particle System and Audio Components now route “Activate” and “Deactivate” events to Blueprints.

  • The “Delta Seconds” passed to Tick functions when using a “Tick Interval” will now represent the amount of world time that has passed since the last tick of the function.

  • The levels of a world are now categorized into different collections: dynamic, static, or duplicated. Levels default to dynamic, and this preserves existing behavior.

    • Streaming levels can be marked as static in the Levels Details panel. This distinction has no effect on how the levels are rendered, but it will cause the levels to be placed into the corresponding collection.

    • Games may opt-in to duplicating the dynamic levels when the world is loaded, and they will be maintained separately from the original levels. The game may use these duplicated levels at runtime, if desired.

  • New: The logic for selecting which Game Mode to spawn for a URL can now be overridden in “Game Instance”, implemented in “Preload Content For URL”, “Create Game Mode For URL”, and “Override Game Mode” Class.

    • The rules for selecting GameMode based on map prefix or alias is now modifiable in the Project Settings > Maps and Modes under the advanced options.

  • Bugfix: Fixed a crash undoing "replace actor with" when replaced object constructs child actors.

  • Bugfix: Fixed an issue where after duplicating a level you would have two instances of a Child Actor.

  • Bugfix: Fixed an issue where Child Actors would sometimes be created at the wrong location.

  • Bugfix: Client-side only components attached to a replicated component will no longer be removed from the “Attach Children” array when a change to attachment is made on the server.

  • Bugfix: Fixed a check in Character Movement’s “Step Up” to properly account for distance the component is above the floor.

  • Bugfix: Fixed an out of date with Radial Force Component’s “Collision Object Query Params” by adding a “Begin Play” event callback.

  • Bugfix: Fixed an issue with Gameplay Statistic’s “Spawn Emitter Attached” using wrong scale when “Snap To Target (Keep World Scale)” option is used. It was being used as a relative scale. Also, improved the comments for “Spawn Emitter Attached.”

  • Bugfix: Fixed an issue with bounds calculations for local camera animations.

    • Correctly calculated bounds as local to the initial transform in the track.

  • Bugfix: Fixed issues with “Can Jump” inconsistencies with previous versions.

  • Bugfix: Fixed a crash during garbage collection after deleting Audio Volume.

  • Bugfix: Fixed a crash in GetPredictionData_Server() when a player is destroyed and the server Player Controller checks to see if it needs to force a network update. This, also, fixes similar crashes when calling a Character’s “Set Replicate Movement” when not on the server.

  • Bugfix: Fixed an error icon indicating lighting issues not going away after resolving the issue on a light that was created by copy/pasting a light that had a lighting issue.

  • Bugfix: Fixed some typos in “Only Trace While Ascending” and “Deproject Screen To World.”

  • Bugfix: Fixed UK2Node_GetInputAxisValue using default flag for “Override Parent” value on the created binding, causing  previous bindings to be squashed.

  • Bugfix: Fixed an issue with network replication for actors in “Always Loaded” sub-levels not working after seamless travel.

  • Bugfix: Fixed an issue with FPreviewScene-based worlds so that they now render correctly in-game.

    • Added new “Editor Preview” and “Game Preview” world types and deprecated old “Preview” world type.

  • Bugfix: Fixed an issue to prevent Camera Anims without a “Field of View” track from making any modifications to the camera’s FOV.

  • Bugfix: Fixed “Set Game Paused” now correctly returns whether the paused state was changed when setting it to false.

  • Component “Activate” functions now fire for “auto-activate” components if the component belongs to an actor placed in a level.

  • Component's are now correctly removed from their World's needs end of frame update list. This fixes a rare crash when a component is moved between worlds as part of seamless travel.

  • Consolidated rotation settings (Rotation Rate, Use Controller Desired Rotation flag, Orient Rotation To Movement flag) in a new "Rotation Settings" category. The Character Movement Component’s flag for “Use Controller Desired Rotation is no longer an advanced property. This makes it more easily discoverable.

  • Direct access to Static Mesh in “Static Mesh Component” has been deprecated. Please use “Get Static Mesh” and “Set Static Mesh” accessors.

  • Disabled some NaN checks in shipping builds.

  • Improved logic for when the transform of a static scene component can be modified.

  • Load game from slot will no longer sometimes fail if using a Blueprint defined class.

  • Mouse smoothing is now based on the application frame time rather than the dilated world time.

  • Native classes will now properly run construction script on PostEditMove.

  • Native Components created by “Create Default Subobject” that have been removed will no longer still exist in existing instances of that class.

  • Scene Component Attach Children will no longer periodically get duplicate entries on the client for some replicated components.

  • The FOV is now reset on the Player Camera Manager’s Camera Actor when it's initialized.

    • This fixes cases of stale FOV values after playing Camera Anims that don't end with the FOV at its base value.

    • Base FOV can now be edited in the Camera Anim properties. This enables you to specify what the FOV keys are relative to. Previously it was always using a base FOV of 90 degrees.

  • The position of the (null) bounding volume of an empty Text Render component is now correct.

  • Wind source components now correctly “Activate” and “Deactivate.”

Localization

  • New: Added a way to mark text in text properties as culture invariant.

    • This enables you to flag properties containing text that doesn't need to be gathered.

  • New: Added “As Time”, “As Date Time”, and “As Date” overrides to Blueprints to let you format a UTC time in a given timezone. This defaults to your local timezone. Previously you could only format times using the "invariant" timezone, which assumed that the time was already specified in the correct timezone for display.

  • New: FText properties/pins will now preserve their existing identity (namespace + key) where possible when changing the source text.

  • New: Translations are now exported/imported per-identity rather than collapsing identical strings within the same namespace.

    • This enables translators to translate each instance of a piece of text based upon its context, rather than requiring a content producer to go back and give the entry a unique namespace.

    • It also enables us to optionally compile out-of-date translations, as they are now mapped to their source identity (namespace + key) rather than their source text.

    • This change also adds FLocTextHelper as a high-level API for dealing with uncompiled localized text. This should be preferred for all new code rather than dealing with manifests/archives directly.

  • Bugfix: Fixed a crash when dealing with code-points outside the basic multilingual plane on platforms with UTF-32 FStrings.

  • Bugfix: Fixed a crash that could occur in the source code gatherer where it would sometimes underflow an array.

  • Bugfix: Fixed an issue where localized assets were not working with “Launch On” in the editor.

  • Bugfix: Fixed an issue where the PO exporter writing out invalid escape sequences.

  • FText can now format pre-Gregorian dates correctly.

  • Removed validity check on source cultures when remapping, as platforms may use invalid cultures that need to be remapped.

  • The internationalization system now correctly detects whether the local machine is in a timezone with daylight savings active

  • We now favor Traditional Chinese for Hong Kong and Macau.

Networking

  • New: World Origin rebasing has been added as an experimental feature!

    • This means that the World Origin can be different on both the client and the server.

    • This feature will continue to be improved over the next releases.

  • Bugfix: Fixed a crash that could occur with FCurlHttpRequest’s “Debug Callback”.

  • Bugfix: Fixed an assert that could occur when playing back a replay that was recorded on a client that uses torn-off actors.

  • Bugfix: Fixed an assert in channel cleanup code that could occur if the connection was cleaned up and there were “Keep Processing Actor Channel Bunches Map” in-flight still.

  • Bugfix: Fixed an issue where gameplay tags will work better with backwards compatibility in replays.

  • Bugfix: Fixed various issues with remapping objects that lose/gain relevancy.

  • Bugfix: Fixed an issue with replays that could cause scrubbing to a specific time to go to the wrong time.

  • Bugfix: Fixed an issue that could cause memory-constrained platforms (such as consoles) to run out of memory when scrubbing in replays in rapid succession.

  • Bugfix: Fixed an issue where replicated references that would remain null indefinitely due to becoming non relevant, and then becoming relevant again

  • Disable hot reloading when using single process MP PIE. This fixes some conflicts that can otherwise occur.

  • Don't strip map/package name from commandline on shipping config on dedicated server in the Game Instance’s “Start Game Instance”. Don’t ever parse “-replay” on dedicated servers. This enables specifying map name on servers via commandline.

  • We no longer record dormant actors in replays for better performance

 

Physics

  • New: Added “Simple Wheeled Vehicle Movement” Component which allows for n wheels with no motor simulation.

    • Exposed “Wheeled Vehicle Movement Component 4W” so that it can be added to any Blueprint.

  • New: Added “Get Bone Mass” and “Get Skeletal Center Of Mass” functions for Skeletal meshes.

  • New: Added more vehicle stats for the profiler.

  • New: BSP now supports returning texture coordinates from line traces.

  • New: Exposed “Grab Rotation” for physics handle component. Also introduce hard vs soft physics handle.

  • New: Exposed the ability to separate reverse and brake on vehicles.

  • New: Improved cook times for “Procedural Mesh” Component collision. Fixed issue where “Update Mesh Section” on Procedural Mesh may update wrong collision verts due to mesh being cleaned in cooking.

  • New: Improved warning when trying to create a constraint between different scenes.

  • New: Improvements to data caching for Destructible meshes on save. This gives an 8x-10x improvement in load times for more complex meshes.

  • Bugfix: Fixed a crash when a physical animation component’s mesh is changed out from under it.

  • Bugfix: Fixed an issue in PhAT so that multiple constraints can be selected and edited properly at the same time.

  • Bugfix: Fixed an issue where constraint component not using root body when no bone name is provided.

  • Bugfix: Fixed an issue where the constraint index was not being assigned correctly. Also, exposed “Find Constraint Bone Name” to Blueprints.

  • Bugfix: Fixed an issue with FConstraintingBaseParam’s “Contact Distance” clamping.

  • Bugfix: Fixed an issue with PhAT “Snap Constraint To Bone.”

  • Bugfix: Fixed an issue with physics handle component not accounting for bone rotation/offset.

  • Bugfix: Fixed an issue with “Set Root Body Index” so that it uses world space transform instead of reference skeleton.

    • Fixes a few issues when using ragdolls on Skeletal mesh assets that were imported with offset/rotation.

    • Also, fixes a crash when opening up old physics asset and changing its mesh.

  • Bugfix: Fixed an issue with vehicle suspension force offset to work from the spring location (in the z-axis) instead of the vehicle COM.

  • Bugfix: Fixed a crash caused by changing the collision response parameters of a Destructible mesh after it had been fractured.

  • Bugfix: Fixed a crash spawning complex Destructible meshes in multiplayer games.

  • Bugfix: Fixed a crash when creating a Destructible mesh from a static mesh that uses SpeedTree materials.

    • Added a warning message when attempting to do so now.

  • Bugfix: Fixed an issue with APEX Cloth disappearing if an actor containing a component with clothing had its custom time dilation set to 0.0.

  • Bugfix: Fixed an issue with box collision shapes not scaling correctly after using Merge Actor tool.

  • Bugfix: Fixed an issue with Destructible asset importing failing if one of the submeshes in the asset file had no geometry.

  • Bugfix: Fixed incorrect tooltips for collision channels.

  • Bugfix: Fixed an issue with line traces against a component not returning face index, where appropriate.

  • Bugfix: Fixed an issue with line traces against a specific component not returning closest hit in triangle mesh case.

  • Bugfix: Fixed an issue where mesh corruption in clothing assets would happen when importing a new mesh that requires a uint32 index buffer over a clothing asset that previously required uint16 indices.

  • Bugfix: Fixed an issue where scales like (1,0,1) not being clamped to something valid in physics code.

  • Bugfix: Fixed an issue where “Support UV From Hit Results” not informing user an editor restart is required.

  • Altered Skeletal mesh bounds calculations to ignore clothing actors if they aren't simulating on the currently active LOD.

  • Changed some exposed properties on Destructible meshes to be hidden as they are only supported for non-Destructible Skeletal meshes. This addresses an issue where Physics Shadow Assets were properties were visible.

  • Enforced block size of 16K for PhysX scratch memory when simulating.

  • Ensure that physics handle automatically wakes up any object it's grabbing on release.

  • Improved comments for Hit callbacks.

 

Platforms

  • New: Add HarfBuzz support for proper text shaping in languages the require it such as Arabic.

  • New: Add support to Windows and Linux for swapping allocators with -ansimalloc, -binnedmalloc, and -binnedmalloc2 to enable easy comparison at runtime.

  • New: Added "Is Gamepad Attached" to Android so users can determine when a gamepad is attached to the device.

  • New: Added support for Android local notifications using the existing local notification Blueprint mechanisms. Using these Blueprint nodes will work on both Android and iOS now.

  • New: Added support for making the game window borderless (no system border or title bar) on desktop platforms. Disabled by default.

    • Enabling requires adding “UseBorderlessWindow=True” to [/Script/EngineSettings.GeneralProjectSettings] in DefaultGame.ini.

    • The game using this is responsible for adding a “Window Title Bar Area” widget to its UI, as well as window minimize/maximize/close buttons.

  • New: Adding interstitial ad support for Android using AdMob, including Blueprint functions.

    • Four functions have been added: “Load Interstitial Ad”, “Is Interstitial Ad Available”, “Is Interstitial Ad Requested”, and “Show Interstitial Ad.”

  • New: AndroidManifest.xml will now include the texture format used in packaging. The appropriate "supports-gl-texture" tags will be added for the texture format chosen at packaging.

  • New: Engine will select the first shader platform in [/Script/WindowsTargetPlatform.WindowsTargetSettings] as the current RHI.

  • New: Support Metal shader compiling when cross compiling on Windows.

    • This must be enabled in the IOS Build Settings page since it can significantly increase build time.

  • New: Enable the ability to change ports for a firewall to pass them through rsync. This addresses UE-24679.

  • New: Upgrade emsdk toolchain to 1.36.11 - emscripten.

  • New: When launching the app on iOS within the editor, the device console logs are piped into the Editor's Console Log window.

  • Bugfix: Fixed an issue with cooking for compressed content where the bit window used for compression was consumed by the wrong parameter.

  • Bugfix: Fixed a couple of problems with Mac app bundles modifying their content that made them incompatible with the Mac App Store.

  • Bugfix: Fixed an issue that was causing Sound Mixes to not properly finish at the end of certain sound effects when played on a device. Now, their behavior now matches PIE.

  • Bugfix: Fixed an issue that was causing the module Android_ASTCTargetPlatform to fail to load on Mac.

  • Bugfix: Fixed an issue where setting a new Touch Interface to none would cause any input present on the Virtual Joysticks to continue on indefinitely. Input now clears before setting a new Touch Interface.

  • Bugfix: Fixed an issue where shader compression used the cooking host platform instead of the target platform when selecting shader compression settings.

  • Bugfix: Fixed a race condition in threading code that affected pthread-based platforms, such as Linux, Mac, Android, iOS, etc. Threads are now properly joined instead of busy waiting.

  • Bugfix: Fixed an issue where iOS Movie Player can’t handle videos at resolutions that aren’t multiple of 16. Now an assert is thrown when attempting to play a non-power of 16 resolution.

  • Bugfix: Fixed an issue where occasionally a movie isn’t played on iOS.

  • Give a more friendly error message when UHT fails with an invalid error code. This will help when trying to build without the prerequisites installed.

  • Make the "Running <Projectname> on <Device>" Toast stay active when launching a game to an Android device until the game has finished running on the device. Previously the toast was closing prematurely.

  • Pass down any extras used to launch SplashActivity to GameActivity. This enables code that relies on intent data (such as GCM) to function as expected. The GameActivity will receive the info and not just SplashActivity.

  • The cooking process now respects the per-platform chunking manifest configuration in the game ini. If you specify -manifests it forces all platforms to generate a manifest.

  • Improved the error message that displays as Unknown Error when failing to supply a Remove Build server for iOS on Windows.

  • Changed the “OOM Backup Memory Pool” to enable each platform to set how much memory to allocate. See the “Get Back Memory Pool Size” function in “Platform Memory.” Defaults to 0, which was the previous behavior with the now removed “Support Backup Memory Pool” function in “Platform Memory,” which was only true in Windows and PS4.

Android
  • New: Updated libpng to 1.5.27 for Android to fix Google security notifications

  • New: Updated to CodeWorks for Android 1R5.

  • New: Enabled Windows types in vulkan.h from later SDKs.

  • New: ES 3.1 detection now handles 3.2 in the version string from newer devices.

  • Bugfix: Fixed a crash that would occur on Kindle Fire when trying to load a project that had enabled the Oculus plugins.

  • Bugfix: Fixed a crash on devices, such as Huawei Honor G750, which do not support the EXT_debug_lable and EXT_debug_marker extensions.

  • Bugfix: Fixed a crash that could occur when a Vulkan based project is resumed after losing focus.

  • Bugfix: Fixed an issue where some Android apps would crash if the device orientation changed when the launch splash screen was active.

  • Bugfix: Fixed an issue where OpenGL ES 3.1 detection was failing on devices which support OpenGL ES 3.2.

  • Bugfix: Fixed an issue with out of spec GLSL operations.

  • Bugfix: Fixed the Vulkan include path in the NDK check.

  • Disabled Google Play Games for ARM64 because native library causes crash on launch.

  • Hiding the virtual keyboard on Android properly closes input dialog.

  • Only use alternative event flow for Daydream packaged applications.

  • Pass through the intent action from Splash Activity to Game Activity.

  • We now properly handle seeking in Android Media Player, which did not work past 999ms before.

  • Read Android environment variables from .bashrc on Linux.

  • Restore texture filtering mode properly when movie played on Android.

  • Update cached length when file is written to on Android.

  • Use .sh extension for Android install scripts on Linux.

iOS
  • Bugfix: Fixed a crash with reflection capturing in Metal.

  • Bugfix: Fixed an issue with Metal Dynamic RHI’s “RHIReadSurfaceData” for shared textures on iOS.

  • No longer allow ES2 shaders to be compiled for tvOS.

  • Worked around some bad Xcode headers to enable compiling with Xcode8 / iOS10.

Linux
  • New: Updated installation scripts to run on Ubuntu 16.10.

  • New: Added "offscreen" video driver to SDL so the engine can now create GL context on headless machines not running any display servers (EGL is enough).

  • New: Added support for creating Linux installed builds.

  • New: Bundled libc++ with the engine to guard against STL incompatibility problems.

    • Third party code that uses STL needs to to compiled against the bundled library to benefit from this.

  • New: Bundled SDL updated to trunk as of late September 2016.

  • New: Choose OpenGL version based on the first targeted RHI, which enables setting the version through the .ini.

  • New: Crash error message will print more details about erroneous memory access on Linux.

  • New: Last page of the signal handler alt stack is made read-only to guard against accidental smashing of it.

  • New: Added precompiled WebRTC (xmpp)