Unreal Engine 4.16 Released!
May 24, 2017

虚幻引擎 4.16 发布!

作者 Alexander Paschall

新增内容

虚幻引擎 4.16 包含一些令人激动的新增渲染和动画功能,针对移动和游戏机平台进行了大量的性能改进,还包含无数产品周期的质量增强功能,便于用户更轻松地制作令人印象深刻的环境和交互体验,并能够在更多平台上流畅地运行。

利用出色的新增体积雾 (Volumetric Fog) 功能可以增强环境氛围,此功能能够自动渲染真实的烟雾效果,并且在场景中的任何位置都能保持一致的照明,即使是在大规模场景中表现也毫不逊色。

利用新增的动态轻量级刚体底层布料仿真工具,让角色活灵活现!使用动画修改器、样条曲线解算器、更新后的姿势驱动程序以及对动画系统的许多其他改进,更好地控制动作流。

垃圾回收现在的速度也提高为原来的两倍!UI 渲染性能和 UMG 小部件创建速度也明显提高,用户现在可以创建更加引人注目的界面。VR 模式、动画、Sequencer 和其他工具的界面和工作流也已经更新,使得开发流程获得前所未有的简化和流畅体验。

4.16 完全支持任天堂 Switch,已经可以用于进行相关制作!Epic Games 与任天堂联手发布完整的任天堂 Switch UE4 源代码,面向获得批准的开发人员免费开放。要了解更多入门信息,请点击此处阅读更多内容

DirectX 12 现在是 Xbox One 的默认渲染器,在本引擎中提供了对平台支持的性能和功能增强。此外,您现在还可以使用 WebAssembly 和 WebGL 2 开发 HTML5 游戏,这种全新的途径在 UE4 中会继续完善。

对于移动开发,现在支持安卓虚拟键盘,并且为蓝图和代码提供了运行时权限。此外,我们还在减少移动应用的可执行文件大小方面取得了重大进步!

除了 Epic 交付的数百项更新之外,本版本还包括由 GitHub 上非常了不起的虚幻引擎开发人员社区提交的 160 项改进!感谢以下每一位贡献者对虚幻引擎 4.16 的贡献:

0lento、Akihiro Kayama (kayama-shift)、Alice Robinson (Valkrysa)、Altrue、Andreas Rønning (Sunjammer)、Andrew Gaubatz (e-agaubatz)、Angus Jones (crumblycake)、Artem V. Navrotskiy (bozaro)、Black Phoenix (PhoenixBlack)、Cedric Neukirchen (eXifreXi)、Cengiz Terzibas (yaakuro)、Chris Varnz (chrisvarns)、Christopher P. Yarger (cpyarger)、Damian Nowakowski (zompi2)、DarkSlot、DeanoC、Derek van Vliet (derekvanvliet)、devbm、dodgyville、drelidan7、Gabriel Lima (Gabriel-Lima-O)、Gyeonghwan (conquests)、Hao Wang (haowang1013)、Ilya (ill)、Jackblue (JohnsonJackblue)、James Horsley (mmdanggg2)、Jeff Rous (JeffRous)、Jon Watte (jwatte)、Jørgen P. Tjernø (jorgenpt)、jostster、Kalle Hämäläinen (kallehamalainen)、katze7514、Kevin Kuegler (FrostByteGER)、KrisRedbeard、looterz、Manmohan Bishnoi (manmohanbishnoi)、Marat Radchenko (slonopotamus)、Markyroson、Martin Treacy-Schwartz (the1schwartz)、Matt Edmonds (cleaver404)、Matthew Casey (mdcasey)、Matthias (haimat)、Matthias Hölzl (hoelzl)、Matthias Huerbe (MatzeOGH)、Michael Schoell (MichaelSchoell)、MichaÅ‚ Siejak (Nadrin)、Milan ŠÅ¥astný (aknarts)、Moritz Wundke (moritz-wundke)、Mustafa TOP (MSTF)、Narendra Umate (ardneran)、Nathan Stocks (CleanCut)、NaturalMotionTechnology、Nick Verenik (nverenik)、Paul Murray (awesomeness872)、pfontain、Phil Christensen (Rastaban)、PrimalJohnScott、projectgheist、Rafael Ortis (rafortis)、Rajko Stojadinovic (rajkosto)、Rama (EverNewJoy)、rhughesgeomerics、Ricardo Rodrigues (RicardoEPRodrigues)、Robert Hagglund (hagglund)、Robert Segal (robertfsegal)、Ryan Pavlik (rpav)、sangpan、Sanjay Nambiar (sanjay-nambiar)、Satheesh (ryanjon2040)、Sean Campbell (scampVR)、Sebastian Axinte (ENiGMA9)、Sébastien Rombauts (SRombauts)、SiebenCorgie、Stefan Zimecki (stefanzimecki)、StefanoProsperi、Stephen Johnson (megasjay)、TaeYoung Cho (valval88)、Timothee Besset (TTimo)、Timothy Hagberg (thagberg)、Tom Kneiphof (tomix1024)、Tom Ward (tomwardio)、TRS-justing、unwitherer、Vladimir (VladimirPobedinskiy)、Vladimir Alyamkin (ufna)、wyhily2010、Yaroslav Shmelev (SoulSharer)、yeonseok-yi


主要特性

新增特性:体积雾

使用新增的体积雾功能在环境中创建不可思议的氛围!由于支持多种不同的密度,因此可以模拟尘土或烟雾流动于光束之间的效果,任何数量的光束都会影响体积雾。

image_0.png

image_1.png

image_2.png 体积雾支持以下类型的光照:

  • 单向光,通过级联阴影贴图实现阴影,或者通过光函数实现静态阴影。
  • 任意数量的点和点光源,并伴有动态或静态阴影(如果启用了“投射体积阴影”)
  • 单一天空光,利用启用的“距离场环境光遮蔽”实现阴影
  • 粒子光照(如果“体积散射强度”大于0)
您可以使用对粒子系统应用的材质,通过新增的“体积范围”设置来控制体积雾。具有体积材质的单一粒子会导致向体积雾添加一个球体的密度。这完全是 3D 效果,毫不吹嘘。多个球形雾状粒子结合材质干扰可以将雾的效果限制在特定范围。

有关设置体积雾的信息,请参阅本文档

新增特性:基于图像的 (FFT) 高光卷积

使用新增的基于图像的 (FFT) 卷积功能创建真实的高光后处理效果!虚幻引擎 4.16 交付了 FFT Bloom,让美工能够利用自定义的高光内核形状,完全自主掌控强度以达到自己想象的结果。

image_3.png通过结合使用原始图像的数学卷积和内核图像,这种高光技术可以产生连续反应,例如星爆效果、扩散发光区域。这种基于图像的卷积之所以能产生额外的真实感,是因为它能够使用视觉上很有趣的非对称内核图像。它通常看起来像是有射线条纹的星爆效果,但可以包含睫毛轮廓、散景或者其他失真效果。

注:基于图像的卷积 Bloom 是为了在电影艺术或高端硬件中使用而设计的,而预置(标准)Bloom 应该用于大多数游戏应用。

新增特性:距离场照明优化

在最新一代游戏机和中等规格的 PC 上,距离场环境光遮蔽光线跟踪距离场阴影现在速度已经提高了 30-50%!这两个功能使您能够在场景中的动态网格上实现更加真实的环境照明和区域阴影。

image_4.png此外,静态网格距离场生成速度也提高为原来的 2.5 倍,这得得益于 Intel 的 Embree 光线跟踪库的加速。启用了八位网格距离场和压缩网格距离场项目设置时,内存用量也明显降低。

新增特性:轻量级刚体仿真

利用新增的轻量级刚体角色仿真创建大量逼真角色!您现在可以使用新增的高性能即时模式 PhysX API 在动画蓝图中模拟物理资产。使用这种仿真的角色也可以与世界中的静态几何体产生碰撞。

新增特性:底层布料仿真

使用新增的底层 NVIDIA NvCloth 布料解析器能够更好地控制布料仿真!

我们已经将 APEX 布料解析器替换为 NVIDIA 提供的更底层的解决方案 NvCloth。这个新的解析器与之前的 APEX 解决方案的核心解析器类似,只是稍微做了一点行为更改,借助它能够更方便地访问用于惯性设置的仿真数据和额外公开的参数。

新增特性:在任天堂 Switch 上发布游戏!

注册的开发人员现在可以构建和发布适用于任天堂 Switch 的游戏了!虚幻引擎 4 提供了可随时投入制作的任天堂 Switch 支持,已通过认证,支持多玩家联网游戏,并允许访问多个渲染管道,例如延迟、移动向前和集群向前,使用户几乎能够交付适合任天堂 Switch 的任何类型的游戏。

image_7.png

新增特性:VR 模式 UI 和交互更新

虚幻编辑器中的 VR 模式已彻底改造,现在提供更直观的工作流和编辑体验!

image_8.jpg一方面,新型的非对称控制器设置增添了一个改进的新型辐射式菜单,另一方面增添了精度提高的交互激光器,让用户能够快速轻松地处理关卡中的对象。

所有 VR 模式操作,包括所有主要的编辑器功能和 UI 面板,现在都可以从更新后的辐射式菜单进行访问。传送系统也进行了更新,现在可以瞬间移动到某个位置,将大小恢复为默认规模,以玩家的视角进行查看。有关更多信息,请参阅 https://docs.unrealengine.com/latest/INT/Engine/Editor/VR/GDC2017/

新增特性:在 VR 中编辑序列

Sequencer 过场动画编辑器现在可以在 VR 中使用了!用户现在可以创建新的序列,在关卡中四处移动对象,并且在这个过程中自动为转换创建序列键。通过拉动时间轴和设置这些键,可以创建过场动画序列和回放,这一切都是可以在 VR 中操作。还可以从 Sequencer UI 或辐射式菜单打开现有的关卡序列并进行回放。

  • 新增特性!可调整的键使您能够真实地调整世界中的轨迹!
  • 辐射式菜单中的“拉动时间轴”选项可以前后播放序列的速度获取控制棒或触控板输入。再次按扳机可以退出拉动时间轴模式。

新增特性:VR 模式下的物理仿真

现在可以使用运动控制器与物体交互,在 VR 模式下模拟物理 Actor!放置 Actor 装置来模拟物理效果,让物理仿真自己运行以获得真实的散落效果,或者使用运动控制器让 Actor 四处闲逛。

新增特性:VR 模式下的智能咬合

智能咬合使用物体的边界来与场景中的其他 Actor 对齐,使用户能够准确地将它们连接在一起,而无需一直想着网格来构建模块化资产。

此功能当前仅在 VR 模式下可用,但我们会在将来的版本中添加对桌面编辑的支持。

新增特性:Xbox One 渲染器 DirectX 12

DirectX 12 现在是 Xbox One 的默认渲染器!我们在 DirectX 12 中进行了一系列稳定性和性能改进。这样就可以将其作为默认的 RHI,为针对 Xbox One 开发的游戏带来 CPU 和 GPU 性能改进

image_12.png

切换回到 D3D11

需要切换回到 D3D11 的游戏将需要做如下设置:
  1. 修改游戏 defaultengine.ini 中的 bBuildForD3D12
  2. 针对 Xbox One 重新构建游戏
  3. 重新烘焙内容
注:在将来的版本中将弃用 D3D11 RHI。

新增特性:对 WebAssembly 和 WebGL 2 的 HTML5 支持

虚幻引擎 4 现在支持 HTML5 全新的 WebAssembly 标准(也称为 WASM),这是最快最有效的编译和运行网络 C++ 的方法!我们目前使用的是 Mozilla 最新的 Emscripten 工具链 (v1.37.9)。这是一种新技术,并非在所有浏览器中都受到支持,因此将其视为抢先体验功能,需要 GitHub 访问权。

image_13.pngWASM 是一种适用网络应用的新型 JavaScript 代码转二进制格式,能够减小应用下载大小,缩短启动时间,降低内存消耗,提供明显的性能提升。有关 WASM 和浏览器支持的更多详细信息,请前往 http://webassembly.org/

UE 4.16 还添加了对 WebGL 2.0 的支持,该支持基于 OpenGL ES 3.0,提供了更杰出的渲染性能,提高了视觉保真度,并支持更多渲染功能,包括:

  • UE4 高端移动特性级别的大多数功能
  • 粒子和植物叶子的实例化几何绘图
  • 支持多个渲染目标 (MRT)
  • 纹理特性,例如,3D 或体积纹理、2D 数组纹理,不再存在非二次幂纹理限制
WASM 和 WebGL 2.0 受 Firefox 52 和 Chrome 57 或更高版本支持(推荐使用 64 位)。请注意,Windows 系统 Chrome 58 中似乎存在一个 bug,有时会导致内存不足错误。我们正在与 Google 通力协作来解决这一问题。请参阅 UE-44727 以了解有关该问题的最新状态。

您可以在 HTML5 项目设置的 Emscripten 部分中启用 WASM 和 WebGL 2.0。如果需要最广的浏览器支持,请继续使用 ASM.js 和 WebGL 1。在即将发布的引擎中将放弃对 ASM.js 和 WebGL 1 的支持,之后会将其删除(确切时间取决于其他浏览器支持)。

请观看在线演示:试着用 HTML5 制作禅意花园,用自己的 Firefox 或 Chrome 浏览器(上述所列的受支持版本)抢先体验这些好处。

新增特性:垃圾回收速度翻倍

垃圾回收性能已经明显改善,现在速度是原来的两倍!具体的改进包括:
  • 可访问性分析多线程已重新设计,现在能够降低任务管理的开销。
  • 垃圾回收集群现在支持蓝图生成的类和所选 Actor 类型。
  • Uobject 非散列代码已经优化,缩短了销毁 Actor 所用的时间。

新增特性:运动身体与仿真本体

现在用户能够使用运动身体与仿真本体。现在可以使用完全由动画数据驱动的子骨骼,例如角色的手,而这些骨骼的本体也可以由物理仿真数据驱动。

这样就可以实现很酷的效果,例如,当有滚落的石头朝着玩家身体冲过来的时候,玩家做出攀岩响应。

新增特性:平台 SDK 升级

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

image_15.jpg

  • Visual Studio:要点:在本版本中,Windows 上不再支持 Visual Studio 2013。请升级到 Visual Studio 2015 或 Visual Studio 2017。
  • 任天堂 Switch:支持任天堂 SDK 1.3.1
  • Xbox One:根据 2016 年 10 月 QFE3 XDK 构建
  • PlayStation 4:已升级到 PSR SDK 4.508.001 SDK
  • 安卓:已更新 CodeWorks for Android 1R6u1
  • GoogleVR:已将插件更新到 V1.3
  • GoogleVR:SDK 已更新到 1.40.0
  • GoogleVR:默认模式更改为 Daydream 和 Cardboard
  • Vulkan:将可分发文件和语言处理更新到 SDK 1.0.39.1

新增特性:Sequencer 镜头轨道增强

Sequencer 中的镜头轨道在过场动画和影片创建方面进行了一些改进!

  • 基于镜头的等级偏差:在默认情况下,关卡序列层次结构中较低级别的轨道具有优先权。这让电影制作人能够构建一个自己惯用的管道,镜头调整将覆盖镜头所在序列中的轨道。
  • 针对所有轨道公开“完成时”属性:这让用户能够指定在序列完成时,轨道是应该将值恢复为制作动画之前的状态,还是保持不变。在电影制作环境中,通常需要镜头中的动画值恢复为制作动画之前的状态,这样就不会渗入到下一个镜头。在过场动画中,可能需要值一致保持下去,这样就可以从 Sequencer 动画状态直接进入到游戏中。
  • 预卷/后卷:预卷和后卷现在是所有轨道的笼统概念。某些轨道具有特定的行为,例如,镜头切换轨道会在预卷评估期间通知流系统下一个将要出现的镜头切换位置。

新增特性:Sequencer 中的材质参数集合动画

用户现在可以在 Sequencer 中对材质参数集合制作动画,这样就可以全面的把控动画标量和矢量参数,从而在任意数量的材质中引用这些参数。无需再针对每个材质实例对各个参数值制作动画来共享动画。

新增特性:改进了 UI 渲染性能

使用失效面板的游戏现在可以选择仅缓存小部件元素,而不是渲染数据,这样就能够体会到大幅改进的纹理批处理的好处,并且能够显著减少绘图调用。结果是在移动设备上显著提高性能!

image_18.gif

在《战争机器》英雄选择 UI(上图)上,每个应用的逻辑元素都可以缓存,但也可以进行批处理。游戏机变量 Slate.CacheRenderData=0 可以启用这种模式,现在在移动设备上这是默认模式。

新增特性:改进了动画姿势驱动程序

我们对姿势驱动程序功能进行了许多改进,使用户能够以程序方式,比较一组骨骼和另一组参考“目标”的姿势,驱动混合形状或骨骼。这在某些部位尤其有用,比如在肩膀位置,可能需要根据上臂和肩膀的姿势来激活校正变形目标。

  • 现在可以选择多个骨骼作为“输入”来读取姿势
  • 现在可以选取应由节点修改的骨骼
  • 可以指定“自定义曲线”来表示应如何激活每个目标
  • 可以选择直接驱动曲线(变形、材质),而不需要姿势资产
  • UI 已改进为允许创建/编辑目标姿势,用于显示目标激活的条形等等
  • 现在可以单击视口中的目标位置以将其选中

新增特性:材质扁平化的不透明和不透明蒙版

我们添加了对使用 Actor 合并工具或分层 LOD 系统时烘焙掉不透明(蒙版)值的支持。产生的(实例化)材质使用配置好的混合模式,确保它采用正确的渲染路径。以下是烘焙掉蒙版材质的示例:

image_20.png

新增特性:改进了网格绘图工具

网格绘图系统进行了大幅改造,改进了易用性,现在更加清晰明朗,允许在编辑器的其他部分复用此功能。

此外,绘图工具现在也可以在骨骼网格上使用!请注意,绘图并不以实例为基础(与静态网格形成对比),而是直接应用于骨骼网格资产。

新增特性:样条曲线解算器

动画蓝图中新增了一个样条曲线节点,用于控制角色样条或骨骼链!

新增特性:在网格表面上检测材质

我们为组件添加了一个新功能“从面部索引获取材质”,使用户能够在执行(复杂的)线路跟踪之后检索应用到组件的材质。该功能支持用于静态网格、程序网格组件和 BSP。

新增特性:“观看”动画节点改进

“观看”节点的观看位置属性可以相对于骨骼或骨臼使用。之前在指定骨骼或骨臼时,这个值是被忽略的。

“观看”控制的可视化也进行了改进。例如,您可以看到夹角、目标位置、插值等等。

新增特性:动画导出改进

我们添加了对创建和导出动画的支持,这些动画可以包含根据指定给骨骼网格的后处理图形生成的额外动画数据,例如,用于物理仿真的动画动态效果。

要包含此类额外数据,请从创建动画导出动画菜单中选择预览网格

image_25.png

新增特性:虚幻音频引擎(抢先体验预览)

GDC 宣布的全新虚幻音频引擎已在 PC、Mac、iOS、安卓和 Switch 上推出了抢先体验版本。它包含跨平台混音器,完全向后兼容现有的音频引擎功能套件,包括新的多平台 EQ 和混响大师级效果。此外,新的虚幻音频引擎还引入了一些新功能,例如,次混音图、次混音效果、源效应、实时合成以及更优秀的音频插件支持。

在 4.16 中默认不会启用新增的虚幻音频引擎,因为我们还在继续开发针对游戏机平台、Linux 和 HTML5 的实现后端,以及稳定性和性能改进,尤其是在移动平台上。

要启用混音器,请使用命令行参数“-audiomixer”。

注:如果在启动编辑器时没有启用混音器,那么大部分新的虚幻音频引擎功能都是隐藏的。

新增特性:合成插件(抢先体验)

新的合成插件包含两个以新的虚幻音频引擎“SynthComponent”类编写的新实时合成器,用于实现功能全面的精简合成器以及实时成粒器。这些新的合成器不仅对过程音乐和声音设计十分有用,而且也充分展示了第三方插件制造商和声效设计师如何实现自己的合成效果。合成插件还包含大量的新 DSP 源效应和次混音效果,可以与新的虚幻音频引擎配合使用:
  • 源效应:立体声延迟、Bit Crusher、动态处理器、包络跟随器、EQ 过滤器、虚拟模拟过滤器(Ladder/State 变量)、波形速形器、合唱、相位器
  • 次混音效果:混响、EQ、动态处理器

新增特性:Steam 音频(抢先体验)

Epic 和 Valve 联手发布了第一个完全集成的 Steam 音频 SDK 实现,利用了新虚幻音频引擎的新功能。

image_26.pngSteam 音频基本上是集成了新虚幻音频引擎的空间化、遮蔽和混响系统,为 UE4 VR 带来了全新的基于物理的音频体验。这是 Steam 音频的抢先体验版本,其中包含计划在 4.17 发布的重要更新、更多示例项目和工作流改进。Epic 和 Valve 期待各种反馈、疑问、想法或改进意见。

请访问 https://valvesoftware.github.io/steam-audio/ 以了解有关 Steam 音频的更多信息、文档和支持帮助。

新增特性:改进了颜色分级工具

颜色分级用户界面已经改进,现在使用起来更加简单!

image_27.jpg

  • 添加了新的 HSV 模式。
  • 现在可以使用 Ctrl+拖动滑块,根据滑块的类型动态更改其最小值/最大值。
  • 添加了新的重置按钮,用于重置整个颜色分级类别。(即,全局、阴影、中间色调、高亮色)

新增特性:改进了动画混合空间编辑器

混合空间编辑器现在允许用户使用网格内部的显示动画名称按钮来显示每个样本的动画名称。用户现在可以将动画拖放到现有样本的上面以将其替换。

image_28.gif

新增特性:本地化字符串表

UE4 现在支持本地化字符串表!

image_29.png字符串表提供了一种将本地化文本集中到一个(或多个)已知位置的方法,然后以一种稳定的方法,在其他资产或代码中引用字符串表中的条目,从而轻松地复用本地化文本。字符串表可以使用 C++ 定义,通过 CSV 文件加载,也可以创建为资产。

新增特性:动画修改器(抢先体验预览)

动画修改器使用户能够对给定动画序列或骨骼应用一系列动作,例如精确定位右脚踩到地面时的帧,将动画同步标记添加到 ball_r 骨骼位于其最低点(接触到地面)时的帧。

动画蓝图功能库中提供了一组用于访问特定动画数据的一组新功能。访问和应用动画修改器可以通过骨骼编辑器和动画编辑器中的一个新选项卡来执行。动画修改器可以添加到骨骼或动画序列。对于动画序列,动画修改器仅应用到序列本身。当应用于骨骼时,它应用于基于该骨骼的所有动画序列。

新增特性:安卓虚拟键盘(抢先体验预览)

安装现在支持使用操作系统的虚拟键盘来取代弹出的对话框输入框!

image_31.gif

要启用虚拟键盘,可选中项目设置 > 平台 > 安卓 > APK 打包下的复选框。该选项启用对虚拟键盘的基本支持,但输入元素是否可见,而不会被虚拟键盘遮挡,则使用提供的 OnVirtualKeyboardShown 和 OnVirtualKeyboardHidden 事件处理程序由应用程序自行保证。注:如果用户使用的语言要求使用 IME,那么可能需要使用 Android.NewKeyboard 控制台变量禁用虚拟键盘。

支持安卓运行时权限

虚幻引擎 4 现在支持安卓 23 及更高版本要求的运行时权限,以访问需要 Google 归类为危险的权限的功能。这包括访问联系人、照片、电话状态、外部存储、照相机和定位服务。请参阅以下网页以了解详细信息:https://developer.android.com/guide/topics/permissions/requesting.html

如果目标系统是安卓 23,那么安卓运行时权限插件现在能够在运行时通过原生代码进行检查,或者如果已经授予了权限,可以使用检查安卓权限蓝图节点进行检查。如果尚未授予权限,应用可能会使用请求安卓权限蓝图节点向用户申请该权限,然后使用绑定到授予权限时的动态委托的事件获取结果。这样就可以在游戏要求使用需要权限的功能之前授予权限,从而改善用户体验。如果目标系统是安卓 23 之前的版本,可以照常在 Android Manifest 中指定权限来授予权限。

image_32.png注:4.16 要求安装安卓 SDK 23 或更高版本。如果还没有安装该级别的 SDK,可以在 Engine/Extras/AndroidWorks 目录中找到 CodeWorksforAndroid-1R6u1 安装程序。此外,在“项目设置”下的 Android SDKÂ,请将安卓 SDK API 级别从 matchndkÂ? 更改为 œlatestÂ?。这样可以确保 UE4 使用在安卓 SDK 平台目录中找到的最新安装的 SDK。无需更改 NDK API 级别,android-19Â? 是允许在 Lollipop(安卓 5.0)之前的安卓版本上安装 APK 的正确级别,如果设置为更高的级别会导致应用要求使用安卓 5.0+。

用于减小包大小的着色器代码库

现在可以使用共享材质着色器代码项目设置为所有着色器代码启用共享存储位置,这样就会为产生相同着色器代码的材质或材质实例存储单一副本。

某些平台(例如 iOS、TVOS 和 MacOS 上的 Metal)支持更高效的特定于平台的着色器库。启用共享材质原生库项目设置,可以利用这种原生库格式,从而进一步减小包大小。

新增特性:从 FBX 导入关节囊碰撞

现在可以从 FBX 文件导入关节囊简单碰撞,方法就像导入箱子、球体和凸面简单碰撞一样。现在可以在关节囊多边形网格上使用“UCP”前缀,导入时会将其删除,替换为对应的关节囊碰撞形状。

新增特性:共享与本地资产查看器配置文件的选项独立开来

虚幻编辑器现在支持在共享或本地级别存储资产查看器配置文件,使团队能够轻松地使用一组共享配置文件作为统一场景来评估美工资产。在本地级别存储配置文件能够确保用户仍可以使用一组自己想要在本地使用、但团队不需要的自定义配置文件。共享配置文件存储在 DefaultEditor.ini 中,要求用户检出或者将其设置为可写入才能使用。

新增特性:改进了动画预览场景

我们对动画工具的预览场景进行了若干改进:
  • 预览场景设置已经移到了现有设置选项卡,而不是位于视口的隐藏菜单中。该设置选项卡现在默认为显示状态。
  • 主工具栏中添加了快速切换预览网格的快捷方式。适用于所有动画编辑器。
  • 在添加预览场景时,无需再为了预览额外网格而创建“预览场景集合”资产。现在如果对网格设置感到满意,可以选择将其保存到资产。

新增特性:向动画查看器添加了默认摄像机选项

现在可以保存骨骼网格的“默认摄像机”位置。这适用于打开网格的情况,也可以通过按 Shift+F 来直接进行保存。

新增特性:播放蒙太奇蓝图节点

播放蒙太奇是一个新增的异步节点,可以在任何蓝图逻辑中用于播放动画蒙太奇。它方便用户访问某些回调事件,让用户能够在蒙太奇混出、中断等情况下触发其他节点

image_33.png

  • 当蒙太奇完成播放并完全混出时,调用 OnCompleted。
  • 当由于自动或手动停止导致蒙太奇开始混出时,调用 OnBlendOut。
  • 当由于被另一个蒙太奇播放而中断导致蒙太奇开始混出时,调用 OnInterrupted。
  • 当使用蒙太奇资产中的“播放蒙太奇通知”或“播放蒙太奇通知窗口”动画通知时,调用 OnNotifyBegin 和 OnNotifyEnd。这些动画通知可以携带额外的“通知名称”以区分来自同一蒙太奇的不同回调。

新增特性:为重定位姿势添加了选项

现在可以从姿势资产导入要在设置重定位基本姿势时使用的姿势。原来用于修改和保存当前姿势(使用当前姿势)和将骨骼转换重置为参考姿势(重置)的选项仍然可用。

注:您可以在动画编辑器中创建姿势资产,并以指定的名称在姿势资产中插入任何姿势。

新增特性:静态网格编辑器中的静态视图选项

静态网格编辑器工具中现在提供了一些独立的选项,用于查看静态网格的简单和复杂碰撞。

新增特性:LOD 中的烘焙姿势

虚幻引擎 4 现在支持使用一个新的缩减设置“烘焙姿势”在 LOD 级别中烘焙姿势。这可以设置为单帧动画序列,以应用到所产生的 LOD 网格。事实证明,在删除骨骼并仍想保留姿势时特别有用。

注:该功能要求使用 Simplygon

新增特性:Sequencer 用户界面改进

音频轨道缩略图现在可以通过内部(平滑)RMS 曲线呈现峰值样本。音频轨道现在也可以纵向调节大小!

image_35.gif其他 Sequencer UI 改进:

  • Sequencer 控制的 Actor 现在输出到关卡中时能够正确地做好标记。
  • 现在可以为事件轨道指定额外的事件接收方(即 Actor 蓝图)。
  • 绑定改进。现在可以在蓝图中为关卡序列拖拽/放置/设置绑定。例如,可以在蓝图中衍生对象,并将其指定到现有轨道。

新增特性:移动 VR 渲染改进

现在对三星 Gear VR 支持直接多视图,当使用移动多视图时,删除了额外的渲染目标和全屏复制,改进了总体性能,降低了内存用量。

在 Gear VR 上启用了多视图后,可以使用平面远场,确保以最佳效果呈现场景的立体渲染部分。

Google Daydream 支持标准移动多视图,将来版本中将提供直接支持。

新增特性:PlayStation VR 的社交屏幕(抢先体验预览)

PSVR 社交屏幕预览提供了对社交屏幕独立模式的支持,即显示器和 HMD 显示屏是不相同的。

该预览支持 30fps 的社交屏幕输出,还支持切换几种不同的输出模式。实现了以下样本模式:
  • SystemMirror(这是始终存在的默认镜像模式)。
  • SeparateTest(仅在社交屏幕上进行黑白切换)。
  • SeparateTexture(显示蓝图指定的纹理,例如,场景捕获组件写入的渲染目标)。
  • SeparateMirror(显示完整的 VR 渲染缓冲)
将来的工作包括优化、针对这些功能的多平台接口、可能支持 60fps 模式(这要求系统对话框解决与某些系统功能的冲突)。

新的 PSVR 项目设置 bEnableSocialScreenSeparateMode 必须设置为 true 才能使用此功能。当此设置为 true 时,会为社交屏幕分配额外的屏幕缓冲。搜索“SocialScreen”可以找到用于控制此功能的蓝图功能。

新增特性:安卓可执行文件大小降低

我们对编译器和链接器设置进行了一系列优化,减小了安卓二进制可执行文件的大小。选中以隐藏符号可见性进行构建选项后,在生成安卓可执行文件时,链接器会更加积极地从虚幻引擎中删除不使用的代码。这样也会从符号表中分离出功能符号,从而进一步减小可执行文件的大小。预计最终 APK 会减小大约 7MB。

注:该选项会从设备上的二进制文件中删除一些符号,因此 logcat 输出中会显示一些没有任何符号的本机冲突调用堆栈。为了帮助排除故障,构建系统也会将含有除错符号的未分割二进制文件复制到输出目录,同时生成一个批处理文件以将这些符号添加到调用堆栈。

新增特性:顶点插值器材质表达式节点

在材质图形中添加了顶点插值器节点,现在用户可以更好地控制顶点和像素画之间的插值。添加这些节点是为了改进工作流,因此插值器限制并没有变化,着色器也未进行更改。

用于将工作转移到顶点着色器的现有工作流利用自定义 UV 输出。这样可能有点麻烦,而且还要手动打包数据。以下材质示例将预先经过皮肤处理的网格数据打包,然后再解包以在某种效果中使用:

image_36.png新的插值器节点会自动处理打包,因此能够简化并插入图形:

image_37.png之前通过自定义 UV 打包的工作现在会链接到 VS(顶点着色器)引脚,然后从 PS(像素着色器)引脚检索。

材质统计输出已更新为显示最新的插值器用量,包括目前已打包和可用的最大值。请注意以上示例中指令的计数方式,而且插值器用量保持不变。统计显示 TexCoord[0] 节点保留了 2 个标量,其余 6 个由预先经过皮肤处理的数据保留,因此在 2 个矢量中总共打包了 8 个标量。

该功能与自定义 UV 兼容,并且会将结果打包在一起。

新增特性:资产管理框架(抢先体验预览)

资产管理器是一个新增的全局对象,用于在编辑器中或在运行时发现、加载和审计地图以及特定于游戏的资产类型。它提供了一个框架,便于用户创建类似任务、武器或英雄之类的内容,并按需装入。现在仍在开发中,这些功能还没有准备就绪,不适用于只使用蓝图开发的游戏或者经验不足的开发人员,预计将于 4.17 正式推出。项目设置中的资产管理器选项卡可以用于建立游戏的规则:在运行时,可以查询资产管理器扫描的主资产类型,然后再进行加载,之后就可以根据需要异步加载。此外,在打包和发布游戏时,资产管理器设置也可以用于建立烘焙和分块规则。AnswerHub 上提供了有关此功能的仍在编写的文档:https://answers.unrealengine.com/questions/595580/what-is-the-asset-manager.html

新增特性:资产审计窗口(抢先体验预览)

资产审计窗口是基于资产管理框架构建的,可以一次性审计大量资产的磁盘大小、内存用量和一般资产属性。这是内容浏览器的专用版本,可以从窗口 > 开发人员工具菜单进行访问,也可以通过内容浏览器或参考查看器中的右键单击菜单访问。打开窗口后,可以使用各个按钮添加资产,在烘焙资产注册表之外装入的平台数据可以使用平台下拉菜单进行加载。以下是从 PS4 上的射击游戏样本中截取的审计纹理示例:

image_38.png

VR:VR 的统一游戏机命令

我们整合并统一了各个 VR 平台的游戏机命令,创建了一个共享层供开发人员使用,而不必单独维护每一种平台。

这样有以下好处:
  • 启动新平台更加简单。
  • 各个 HMD 的参数含义更加一致。
  • 当前 HMD 实现的冗余减少。
  • 所有 VR 相关的游戏机命令使用通用的前缀“vr.”。在命令名中清晰地标记了特定于供应商的扩展名。
  • 更新后的游戏机命令支持补全和内联用法帮助文本。
在过渡期间,仍能够识别旧版游戏机命令,但使用时会发出不推荐使用的警告。

自定义硬件指针

现在 Windows、Mac 和 Linux 上支持平台原生自定义硬件指针!您可以设置硬件指针以在项目的用户界面设置中使用。

系统允许用户为指针提供多种格式。例如,您可以在设置中指定使用“Slate/FancyPointer”作为默认指针。在游戏内容文件夹的 Slate 目录中,会有 FancyPointer.png + .cur + tiff,用于包含某些平台的多分辨率解析功能。Mac 上将装入 tiff,Windows 上使用 cur/ani 文件,如果没有找到我们支持的特定于某一平台的格式,将查找 png。

快速创建小部件

UMG 小部件创建速度现在提高为三倍!在烘焙时,小部件编译器现在会生成小部件模板/原型,与所生成的蓝图类存储在同一个包中,并在小部件创建期间使用。

技术细节

在编译期间,我们生成了一个几乎完全初始化的小部件树,包含所有子用户小部件及其树,连接了所有成员变量,初始化了指定槽,设置任何动画等等。这个几乎完全构造的小部件可以进行实例化以用作原型,但不一定要使用对应的慢速 StaticDuplicateObject 路径。

这种方法存在一些限制,如果用户忘记在子对象属性上设置“已实例化”,小部件的部分编译步骤现在会检验实例化是否成功,实例化之后是否存在 GLEO 引用。幸运的是,这种情况应该少之又少,因为所有的 UVisuals(小部件和槽)现在都是 DefaultToInstanced,这样就解决了一些不可避免的要求有已实例化标志的情况。尤其是在原生代码中使用 BindWidget 的很多情况。

译者:版本更新 changelist 详单并不翻译。欢迎跳转 论坛中文版面 讨论。

Release Notes

AI

  • New: Added a profiler for Environment Query System (EQS) that can be accessed through the tabs of the EQS Editor.
    • It collects data automatically during game sessions as long as UES_EQS_DEBUGGER define is set. This includes options for average and max execution time of each step (including breakdown of composite generators), number of items processed by each step, and average frequency of running, which can be useful to identify how often fail safes are actually running.
    • It collects tick load data when USE_EQS_TICKLOADDATA define is set. Each query can store up to 16384 records in cyclic buffer (~4.5 minutes at 60 FPS) showing percentage of EQS tick spent on processing it. This is displayed on the graph in EQS editor tab.
    • A console command has been added, "DumpEnvQueryStats", that saves current EQS profiler data to a file (project's Logs folder, .ue4eqs extension), which can be later loaded and inspected in the EQS Editor.
  • Bugfix: Fixed an issue with Blackboard Key Selector's "Init Selector" that resulted in it picking the first value from the Blackboard rather than the appropriately typed one.
  • Bugfix: Gameplay Task Resource's Auto Resource ID initialization is no longer cleared during Hot Reload.
  • The "Get AI Controller" is now a pure Blueprint Function.
  • Exposed Brain Component's "Is Running" and "Is Paused" functions to Blueprint.
  • Clamped AI Sight's peripheral vision angle as well as changed the UI to not allow values outside of the 0-180 range.
  • Disabled collision on Nav Modifier Volumes. Previously they had an 'Overlap All' response and generated overlap events. They are only supposed to be used for preventing navmesh generation, but overlap events could affect gameplay and are also bad for performance.
  • Made "Skip Agent Height Check When Picking Nav Data" option ignore height when picking nav data for agents. It now picks solely based on the radius when this is enabled.

Behavior Tree

  • Bugfix: Added safeguards to prevent crashes resulted from Blackboard keys being names being longer than 1024 characters.
  • Bugfix: Fixed an issue in dynamic Behavior Tree injection that was causing unexpected behavior when the main BT had more BT injection points.
  • Bugfix: Fixed an issue in Blackboard key instantiation that resulted in the instanced key never being used and BB operations always referring to the original BB entry.

Debugging Tools

  • The Gameplay Debugger's input detection has been adjusted so that Tap and Hold work correctly in fixed timestep mode.

Navigation

  • Added a flag to Recast Navmesh, "Allow Nav Link As Path End", that is used to control whether path corridors can end on a navigation link or not. This may happen with partial paths and not usually desired behavior. Navigation links at the end are not allowed by default.
  • The Blueprint functions "Project Point To Navigation", "Get Random Reachable Point In Radius", and "Get Random Point In Navigable Radius" all return booleans determining if the projection/generation was successful, as well as the vector value that describes the requested point.
  • Bugfix: Fixed a memory leak in navmesh generators.
  • Bugfix: Fixed an issue that resulted in losing user settings in Static Mesh's navigation export (Nav Collision object) after changing any property of the Static Mesh.
  • Bugfix: Hand-placed AI pawns now get their Path Following Component's "My Nav Data" variable set properly.
  • Bugfix: Fixed an issue with missing update of navigation area after duplicate or undo operations on Nav Link Proxy and Nav Link Component.
  • Bugfix: Corrected the handling of path following requests by Floating Pawn Movement.
  • Bugfix: Fixed an issue with parameters of geometry trace handling drop-down navigation links. All components blocking on ECC_WorldStatic channel will now report a valid hit.
  • BugFix: HLOD's navigation collision exporting no longer causes unnecessary log output about NavCollision instances in cooked builds.

Animation

  • New: You can now rename Virtual Bones.
  • New: You can now change Virtual Bones so that you can have a Virtual Bone that is a child of another Virtual Bone.
  • New: Added "Get Body Target Transform" to the Physical Animation component, which will return the goal transform that a particular body is trying to get to.
  • New: Control rig Sequences can now be exported to Anim Sequences.
  • New: Preview Scene settings have been exposed in the existing settings tab rather than in a hidden menu of the viewport.
  • New: Support for "Curve Source" nodes to find source components on other Actors. It now searches for the property name rather than the component name.
  • New: Added "Set Preview Mesh" to the toolbar for all animation related Editors.
  • New: Updated Alembic Third-party libraries to the latest versions.
  • New: Added functionality to try and match in-engine Material asset names to FaceSet names found inside of an Alembic cache to automatically assign the correct Materials.
  • New: The Alembic Importer now supports Vertex Color data.
  • New: Added functionality to inform about changes to source data when reimporting your animation data from FBX. It now checks for the following:
    • Whether or not the sequence length has changed.
    • Whether or not previously-imported curves exist in the source data.
  • Bugfix: Fixed a crash when trying to implement a function in a child Anim Blueprint.
  • Bugfix: Fixed a crash when debugging a null Animation Sequence.
  • Bugfix: Trying to access a skinned vertex position on a mesh when using Master Pose component no longer crashes.
  • Bugfix: Attempting to bind to Skeletal Mesh with Anim Blueprint already set no longer crashes.
  • Bugfix: Fixed a crash and effector selection issue for two-bone IK.
  • Bugfix: Right-clicking the empty space in the asset shortcut drop-down no longer crashes.
  • Bugfix: Removed an ensure (warning) by reverting to default unit vectors if zero-sized lookat/lookup vectors are specified for a "Look At" node.
  • Bugfix: Removed a crash when clearing an animation of a 1D blendspace sample.
  • Bugfix: Crash fix to import code for Alembic Caches with the HDF5 backend.
  • Bugfix: Fixed an issue when adjusting curves in the Anim Curves tab using a slider when they are not currently selected.
  • Bugfix: Fixed an issue with Update Rate Optimization update rate being too high. Now we use int, so if you have a high update rate it still can go until it wraps around.
  • Bugfix: Child Anim Blueprints can now be retargeted.
  • Bugfix: Fixed flipping transforms when mirrored.
  • Bugfix: Post Process instances are now appropriately updated, even when the main Anim Instance is not using parallel update.
  • Bugfix: Fixed an issue where running the Editor in a different culture could break pins on nodes that have optional arrays of pins (ie. Animation Graph nodes like Blend By Layer).
  • Bugfix: Fixed an issue with Anim Class being set by name, causing duplicate-named Anim Blueprints to be incorrectly resolved.
  • Bugfix: Fixed an issue where "r.SkeletalMeshLODBias" was affecting meshes in the Animation Editor viewports.
  • Bugfix: Fixed an issue with Animation Preview Scene keyboard binding (I and O hotkeys now hide and show scene elements regardless of tab opened state).
  • Bugfix: Skinned Mesh LOD now updates in the editor under various physics-related circumstances.
  • Bugfix: Fixed an issue with foot placement IK doing line traces on worker threads.
  • Bugfix: Fixed an issue with Anim Blueprints that contain State Machines having blank palettes.
  • Bugfix: Renaming curves in animations now saves properly.
  • Bugfix: Fixed an issue with two-bone IK flickering around full extension when stretch is enabled.
  • Bugfix: Animation now works as expected for dynamically-bound wheeled-vehicle anim instances.
  • Bugfix: Fixed an issue where you could not undo changes from Alembic Import settings.
  • Bugfix: Fixed timing issues occurring while playing back Alembic caches.
  • Bugfix: Fixed an issue with incorrect behavior occurring when placing more than three samples in a straight line for a 2D blendspace.
  • Bugfix: Dropping a new Animation asset on an existing Sequence Player node can now be undone.
  • Bugfix: Breaking transition node connections within Animation State Machines can now be undone.
  • Bugfix: Fixed an issue to ensure that changes to animation sync markers are propagated to currently open blendspace assets.
  • Bugfix: Skeletal Mesh components tick properly when paused if "Tick Event When Paused" is enabled.
  • Bugfix: Fixed Skeletal Mesh Merge duplicating Skeletal sockets.
  • Enabled snapping for translation in the Animation viewports.
  • Removed force inline from Virtual Compression functions.
  • Removed the AnimGraph module from the Graph Editor as a dependency.
  • Bone Reference now has improved performance by caching compact post bone index.
  • Graph files have been moved to Animation Blueprint Editor.
  • We have stopped saving raw curve data into animations on cook in order to save memory and disk space.
  • Ticks now appear properly on Anim Sequence scrub bar.
  • Persona now depends publicly on Skeletal Editor.
  • Montages are now correctly initialized when created. They can be used straight away without first opening them in the Montage Editor.
  • We now propagate thread safety flags to child Animation Blueprints.
  • The Anim Notify Blueprints now start with a "received notify" event node.
  • Made single-node animation instances request clothing simulation resets when their animation is changed. This is because the new animation could be very different from the outgoing animation, and this might cause pops.
  • Refactored "Evaluate Bone Transforms" to prevent usage of Skeletal Mesh component.
    • Deprecated "Evaluate Bone Transforms" in favor of new 'EvaluateSkeletalControl_AnyThread.
    • Deprecated Skeletal Mesh component argument to "Convert CS Transform To Bone Space" and Convert Bone Space Transform To CS. Now they just take a transform.
  • When selecting bones that are non-required, we now do not render gizmos or text labels.
  • Skeletal selection does not lag behind choice made in the viewport (i.e. when showing bone weights).
  • Added accessor and modifier functions for "Start Time Offset" value in Geometry Cache components.
Animation Assets
  • New: You can now choose a preview slot in the Montage Editor.
  • Bugfix: Fixed a crash when reimporting animations with additive transform tracks.
  • Bugfix: Fixed an issue with additive Pose Asset preview being applied twice.
  • Bugfix: Compressed animation data is now included in Memory Stats for Animation Sequences.
  • Bugfix: Fixed an issue where blendspace interpolation settings would not have a direct effect and required reopening the blendspace asset.
Animation Blueprint
  • New: Added "Spline IK" node.
  • New: Added a property to Blendspace Player nodes that enables users to choose whether the play time is reset when the blendspace changes.
  • New: Animation Blueprints can now specify a Preview Mesh.
  • New: Added the "Look At" node so you can use "Look at Location" on a socket or joint, and improved the Visualizer.
  • Bugfix: Fixed a crash when "Pose Asset" contains a bone that is not in the mesh.
  • Bugfix: Fixed an assertion that could occur when selecting certain items in the Animation Blueprint editor.
  • Bugfix: Fixed a crash when diffing State Machine Transition graphs.
  • Bugfix: Fixed an issue with "Pose Handler" using mesh bone index and not compact bone index for setting up "Bone Blend Weights" array.
  • Bugfix: Fixed an issue with incorrect errors on compiling Aim Offset nodes with exposed blendspace pins.
  • Bugfix. Fixed an issue with additive nodes breaking the current pose when they have no additive animation attached.
  • Bugfix: Fixed issues pertaining to extra references to Animation Blueprints on Skeletal Mesh components.
  • Layered Bone Blend node has been optimized so that it will cache mask weights in compile time.
Import/Export
  • Bugfix: Fixed a crash when reimporting a Skeletal Mesh that has Virtual Bones.
Skeletal Mesh
  • Bugfix: Fixed a crash when using re-import button in the Skeletal Mesh Editor.
  • Bugfix: Fixed a crash related to Skeletal Mesh resources not being initialised before component is registered.
  • Bugfix: Fixed a serialization mismatch in Skeletal Mesh source buffers.
  • When importing a Skeletal Mesh, "Activate Bone Indices" now always includes parents even if it's not skinned.

Tools

  • Bugfix: Fixed a crash in Persona when rotating a bone due to single bone controllers not being initialized correctly.
  • Bugfix: Fixed an ensure when deselecting bones in Anim Blueprint editor.
  • Bugfix: Fixed an issue where mesh-customized sockets were not showing up by default in 'Active' socket filter mode.
  • Bugfix: Fixed issues related to bone removal in Skeletal Mesh LODs.
    • Issue where the "Apply" button would not show after adding bone names.
    • Issue where previously removed bones would not be restored.
    • Ensure that the Skeletal Tree is updated when bones are removed or restored.
  • Double-clicking animation assets in Content Browser will now try to re-use existing Animation Editor windows, rather than opening a new one every time.
  • Animation picker on Skeletal Mesh component is now disabled rather than hidden when no Skeletal Mesh is assigned.
  • The Soundwave-internal curve tables have been moved to the 'Advanced' rollout.

Audio

  • New: Vorbis-encoded audio files can now be streamed.
  • New: Audio streaming is now supported on Android, iOS, and XBox One.
  • Bugfix: Fixed a shutdown crash when there is a pending async audio occlusion trace.
  • Bugfix: Fixed a crash when opening a Media Sound Wave.
  • Bugfix: 'Sound Player' nodes will more efficiently load the referenced sound asset unless a 'Sound Quality' node is being used to select which 'Sound Player' nodes to consider, in which case, the current asset reference evaluation will continue to be used.
  • Bugfix: We only queue subtitles once per-wave instances playback.

Automation

  • New: Added support for -DeveloperReportOutputPath and -DeveloperReportUrl commands to permit local runs of the Automation Tool to generate reports on the report server and launch the browser to view them.
  • 'ResavePackages' commandlet now supports lighting in separate packages when using it to rebuild lighting.
  • Option to disable taking screenshots has been disabled. Screenshot comparison is an integral part of the testing so disabling them is no longer allowed.
  • The system now waits for the asset registry to finish loading assets before running tests.

Blueprints

  • New: Added the 'Remove Gameplay Tag' function to the gameplay tag function library.
  • New: Blueprints containing a String and Text variables can now be marked as multi-line, which enables values to contain newlines when pressing Shift + Enter while editing them.
  • New: Blueprint Variables can now be marked as 'Read-Only' in Blueprint Editor, which prevents them from being set in Blueprints. This behaves the same as using 'BlueprintReadOnly' instead of 'BlueprintReadWrite' on a C++ UPROPERTY() declaration.
  • New: 'Get Default Locale' has been exposed to Blueprints.
  • Macro instances that contain latent actions will now show an overlay clock icon like other latent nodes, which makes them easier to spot and understand that they impact execution flow

image_39.png

  • New: Improved comments in Blueprints.
    • Comment node text now wraps while the comment is being edited.
    • Reduced cases where the title of a comment node would clip at the end.
    • Editing the comment for a regular node using the right click menu will now show changes immediately, rather than waiting until the node was moused over again.
  • New: Added the Save and Find in Content Browser buttons to the Level Script Blueprint editor (they will save/show the map package that contains the Level Script).
  • New: Added the ability to search for delegate nodes using the function name that they are bound to.
  • New: 'Array Get' node.
    • Can toggle between returning a reference or copy.
    • Using a reference solves a longstanding issue with arrays of structs not being able to easily make changes to the items in the array.
  • New: 'Get Class Defaults' node has been extended to include output pin exceptions for Set & Map variable defaults. Like array types, the returned value is now a copy of the default value rather than a reference to it. This is done in order to avoid an accidental mutation of the Blueprint class default object.
  • New: Function inputs are now exposed as variable "Get" nodes via the right-click context menu in a Blueprint function graph context.
    • To use: In a Blueprint Function graph, right-click to access the context menu. Any input parameters will be listed as additional "Get" actions.
    • In this way, input parameters can be accessed like local variables from anywhere in the function graph; in other words, it's no longer necessary to drag wires all the way back to the Function Entry node in order to access these values.
  • New: We now support "value-based" Bitfield enum type associations in the editor for a UPROPERTY marked as 'Bitmask' with a 'BitmaskEnum' association.
    • Prior to this release, Bitfield properties did not work with associated enum types in which the enum values were explicitly set to a bitmask value (e.g. 0x80). That is, the value was assumed to always be set to the index of the bit that the flag should set in the editor ("index-based" mode).
    • To switch the associate to the new "value-based" mode, include an additional metadata key in the UENUM() declaration. Example: UENUM(Meta = (Bitmask, UseEnumValuesAsMaskValuesInEditor="true")).
  • New: Added a whitelist mechanism for handling native noexport types that can support direct field access in nativized Blueprint code.
  • Bugfix: Fixed a crash in Blueprint Editor when adding an input parameter to a Custom Event node after deleting a Function Graph containing a Create Event node.
  • Bugfix: Fixed a crash when creating a new Blueprint class from one or more selected Actors in which the root component is not Blueprint-spawnable.
  • Bugfix: Fixed a crash on load in nativized EDL-enabled builds with non-nativized child Blueprint class assets.
  • Bugfix: Fixed a runtime Blueprint VM crash upon removing an element from set after consecutive add/remove iterations.
  • Bugfix: Fixed a crash that could occur when splitting a struct pin on a collapsed graph node.
  • Bugfix: Fixed a crash when trying to use non-supported types as Blueprint map keys.
  • Bugfix: Fixed a crash that could occur when changing a Map's value type string to vector. Map variables are properly cleared when value type is changed to an incompatible type.
  • Bugfix: Fixed a crash when compiling a Blueprint that contains a split pin in a collapsed graph.
  • Bugfix: Fixed a crash loading Blueprints that contain a Blueprint node that no longer exists in code.
  • Bugfix: Fixed a crash when using the Straighten Connection shortcut key (and some other related issues with actions done after the Context Menu is closed).
  • Bugfix: Fixed a crash when opening a Blueprint with a parent class that no longer exists.
  • Bugfix: Fixed a crash with the merge tool when the source control provide is SVN and there are gaps in the revision history. (This may still not work correctly, but it won't crash. The full fix will be covered with UE-43603)
  • Bugfix: Fixed a crash when attempting to name component with a very long name.
  • Bugfix: Fixed a crash that could happen when running Cook On The Fly server with nested struct assets.
  • Bugfix: Fixed a crash that would happen when a level in Blueprint was auto-saved.
  • Bugfix: Fixed an assertion that could occur when compiling a Blueprint with certain nodes (Select, Math Expressions, etc.)
  • Bugfix: Fixed a crash that could occur when reparenting a component Blueprint.
  • Bugfix: Fixed a crash that could happen when setting maps and sets of strings and certain structs.
  • Bugfix: Fixed a crash that would occur when passing a self node through a CustomEvent ref parameter.
  • Bugfix: Fixed a crash that could occur when adding a new Blueprint function and immediately undoing.
  • Bugfix: Fixed a crash that could occur after renaming the category of an implemented interface function inherited from a native C++ parent class in the 'My Blueprint' panel.
  • Bugfix: Fixed a crash that could occur when editing a local curve variable's default value in a Blueprint graph.
  • Bugfix: Fixed an ensure misfire in PIE exit when using Play as Listen Server Mode.
  • Bugfix: Fixed an infinite loop case in the Math Expression node.
  • Bugfix: Fixed an issue where misaligned memory access of noexport struct properties leading to incorrectly initialized values in a nativized cooked build.
  • Bugfix: Fixed an issue with broken collision shapes at runtime when cooking with the optimized Blueprint component instancing data feature turned on.
  • Bugfix: Fixed an issue with a Bitmask Enum type validation failure when serializing a Make Bitmask Literal node
  • Bugfix: Fixed an issue with log spam when compiling a Blueprint function with a local TSet or TMap variable.
  • Bugfix: Fixed an issue with broken pin wires after expanding a duplicated collapsed graph node.
  • Bugfix: Fixed an issue with invalid custom Enum type selection on member fields in the User-Defined Structure editor after a reload.
  • Bugfix: Improved context menu "whole world" algorithm to proper take into consideration localisation when searching for terms.
  • Bugfix: Fixed an issue where renaming interface input/output parameters will no longer cause broken pin links at interface function call sites in Blueprints that are currently loaded.
  • Bugfix: Fixed an issue with broken graph node pin links caused by renaming interface function input/output parameters prior to compiling the interface, but after renaming the function itself.
  • Bugfix: Fixed an inability to save after choosing a Level Script Blueprint class as the default value for a class input pin in a non-Level Script Blueprint class function graph.
  • Bugfix: Fixed an issue where Blueprints containing a 'Key Get Display Name' node will no longer be marked dirty when opening the Blueprint.
  • Bugfix: Fixed an issue where the user defined variable tooltip was not showing up when hovering over Get/Set nodes for local variables.
  • Bugfix: Fixed an issue with old versions of Blueprints being diffed accidentally showing up in Find-in-Blueprints search results.
  • Bugfix: Fixed some issue in Blueprint Diffing where properties of nodes edited in a Details panel would not show up as differences (this impacted Animation Graph nodes most heavily).
  • Bugfix: Fixed an issue in Blueprint nativization that could cause bad interface function calls to be generated.
  • Bugfix: Fixed an issue that could cause stale Blueprint instances in a hidden sub-level to spam a runtime error.
  • Bugfix: Fixed an issue that could cause a Blueprint 'mismatch' error when using 'Set' and 'Map' node.
  • Bugfix: Fixed an issue that could cause struct asset defaults to be wiped on editor reload.
  • Bugfix: Fixed an issue that could cause a packaging error when running with Blueprint nativization and no Blueprints were nativized.
  • Bugfix: Fixed an issue that removed the ability to set Blueprint object variables as 'config' variables, as you cannot set a object reference from a config.
  • Bugfix: Fixed an issue with reroute nodes so that a new output connection will propagate that type through to the node's inputs.
  • Bugfix: Fixed an issue so that 'Get Data Table Row' nodes are now compatible with DataTable variables.
  • Bugfix: Fixed an issue that could cause material parameter setting in a Blueprint construction script to fail.
  • Bugfix: Fixed an issue that could cause overlap events to fire multiple times in PIE.
  • Bugfix: Fixed an issue that would generate the nativized Blueprint plugin even if no Blueprint files were nativized.
  • Bugfix: Fixed an issue that would cause certain components to be orphaned and hidden from the component hierarchy.
  • Bugfix: Fixed an issue that could cause a level Blueprint's bound delegate nodes to not trigger.
  • Bugfix: Fixed an issue in Blueprint nativization that would cause cyclical logic (loops, etc.) to not iterate past the first iteration.
  • Bugfix: Fixed an issue in Blueprint nativization that could cause Blueprint subclasses to ignore their overridden model and default to their parent's.
  • Bugfix: Fixed an issue where non-nativized Blueprints were getting dropped from the cooked asset registry file when running with Blueprint nativization.
  • Bugfix: Fixed an issue where there would be a nativized Blueprint asset build error when there are no native code dependencies.
  • Bugfix: Fixed an issue with incorrect Blueprint graph pin value display names for user-defined enum types.
  • Bugfix: Fixed the variable 'config' setting tooltip to report the correct config file for the user to use.
  • Bugfix: Fixed an issue that could cause Blueprint variables set from a config to have t