虚幻引擎 4.9 版本信息

本发布版本包含了129个重大修改,这些修改由虚幻引擎的令人赞叹的社区开发者提交而来。感谢这些开发者对虚幻引擎4.9的贡献:

Andrew Zhilin (zoon), Artem V. Navrotskiy (bozaro), Artyom Sovetnikov, Ben Rog-Wilhelm(zorbathut), Ben Wiklund (bwiklund), Black Phoenix (PheonixBlack), Błażej Szczygieł (zaps166), Brad Grantham (bradgrantham), Brent Scriver (FineRedMist), Cengiz Terzibas (yaakuro), chipgw, Christian Radich (yoyohobo665), Christopher P. Yarger (cpyarger), Clay Chai (chaiyuntian), Cliff Jolly (ExpiredPopsicle), Dave Newson (dave-newson), Derek van Vliet (derekvanvliet), Dorgon Chang (dorgonman), ewirch, Felix Laurie von Massenbach (erbridge), Gabriel Hare (GabrielHare), gatools, Hakki Ozturk (ozturkhakki), HueyPark, JaredTherriault, Jason Spangler (Stormwind99), Javier Osset (Xaklse), Jeff Rous (JeffRous), JohnAlcatraz, Kitatus Studios (KitatusStudios), Konstantin Nosov (gildor2), korypostma, Lee Berger (MrCrowbar), Maarten Scholl (maartenscholl), Marat Radchenko (slonopotamus), marynate, Matthias Huerbe (MatzeOGH), Maxim (maxpestun), Michael Allar (Allar), Michael3DX, MiniTurtle, Moritz Wundke (moritz-wundke), Nako Sung (nakosung), Nari Demura (demuyan), Nastenko Michael (deM-on), Nathan Stocks (CleanCut), Niels Huylebroeck (red15), Pablo Zurita (pzurita), Patrick Flanagan (valtrain), Pedja Lubomirovic (3dluvr), Philipp Smorygo (fsmorygo), Pierdek, Piotr Bąk (Pierdek), Quadtree, Rajko Stojadinovik (rajkosto), Rama (EverNewJoy), Rem (rveilleux), rlefebvre, Robert Khalikov (nbjk667), Russ Treadwell (trdwll), Salamanderrake, Sebastian Witkowski (witkowski-seb), Sébastien Rombauts (Srombauts), Simon Taylor (simontaylor81), Stephen Whittle (stephenwhittle), szyszq, TK-Master, Tobias Mollstam (mollstam), Tomasz Sterna (smokku), user37337, Victor Xie (FTPiano), Vladimir Ivanov (ArCorvus), Will Stahl (merlin91), yamashi, Zhi Kang Shao (zkshao)

主要功能

对移动设备的增强支持

我们正致力于极大地改进对移动平台的支持,并且这个版本包含了诸多令人激动的渲染特性以帮助您创建领先的移动平台游戏。新功能包括了高效的动态阴影、可移动光源和贴花。在未来我们会对移动平台和HTML5渲染质量进行持续改进。在这个版本中,我们已经改进了iOS的应用程序内购买功能,并且我们还添加了对CloudKit的远程推送通知和支持。对于安卓平台,我们添加了OpenGL ES 3.1、沉浸模式支持、异步音频压缩以及更佳的方向特性。现在我们还加入了NVIDIA AndroidWorks,这样您可以更方便地在您的设备上设置和运行它。虚幻引擎4现在还创造性地加入了对iOS平台的智能模糊分析插件!您还可以把诸多针对移动设备的新功能用于您的HTML5游戏。

image alt text

新增内容: 针对移动设备的动态角色阴影

现在移动设备上支持来自定向光源的动态调制的角色阴影!

image alt text

  • 即时您的场景是带静态光照的,您也可以使用动态调制的阴影。

  • 要想起用该功能,请在定向光源上打开“Cast Modulated Shadows(投射调制的阴影)”选项!

新增内容: 针对移动平台的动态点光源

现在,移动设备和HTML5平台上支持动态点光源!

image_2.gif

  • 这可以用于提高生命周期较短的特效,比如爆炸、射弹、粒子特效等。

  • 对每个光照对象最高支持四个动态点光源。

  • 注意: 还不支持点光源的动态阴影投射。

新增内容: 移动设备上的贴花

现在,移动平台渲染器支持Decal(贴花)!

image alt text

  • 支持半透明的、叠加的及调制的混合模式。

  • 注意: 当前在移动设备和网络上仅支持不带光照的贴花。

新增内容: 主要的虚拟现实内容更新

Steam VR (HTC Vive)

虚幻引擎的SteamVR插件包含了许多主要更新,可以更方便并以更加高效的方式来使用虚幻引擎。

image alt text

SteamVR改进的内容包括:

  • 修复了在4.8 Preview 2+版本中出现的延时问题

  • 提供了对标准运动控制器抽象类的支持,这样两个Vive控制器都能找到同一玩家

  • C++项目现在由插件API进行支持

  • 多种改进和bug修复

Gear VR更新到Mobile SDK 0.6.0版本

这个版本修复了多个Gear VR的主要渲染bug以及在0.5.0版本中出现的问题,以及一些硬件兼容性问题。

image alt text

新增内容: 支持虚拟现实运动控制器

现在,虚幻引擎4通过一个通用的抽象层支持Motion Controllers(运动控制器)!

image alt text

这意味着像Vive SteamVR 控制器, Sony Move等都可以通过一个通用的接口可用。 通过使用运动控制器按键抽象类,现在可以将输入按钮的按下及触发处理发送给多个控制器的单个玩家。 另外,您可以通过简单地给您的角色添加一个Motion Controller(运动控制器)组件,来简单地给您的项目添加运动跟踪,这将自动更新附加到角色上的任何东西来遵循您的控制器的位置!目前支持 HTC Vive控制器,不久后将支持更多类型的控制器。我推荐所有的运动控制器插件都移入到该新系统中,以便它们可以成为设备无关接口的一部分。

新增内容: 实验性DirectX 12支持

现在推出了对DirectX 12作为一项实验性内容的支持!如果您正在使用Windows 10,您可以通过使用命令行的"-DX12"来运行引擎以试用这项功能。

image alt text 微软的工程师们添加了对UE4的DirectX 12支持,我们和他们一起配合来整合变更内容到4.9版本中。这项功能仍为新功能,并且是试验性的。DirectX 12提供了更为底层的渲染API,它更为高效,而且可以跨多线程来对渲染命令进行并行提交,这是一项由控制台的渲染API所激发的功能。之后,我们会继续改进对DirectX 12的支持,并且我们会寻找新的方法来在即将推出的引擎新版本中使用新的API。

新增内容: 应用网格物体距离场的全景粒子碰撞

距离场GPU粒子碰撞允许粒子有效地同整个场景进行碰撞。

image alt text

可用于 同表面发生碰撞的火花 .

image alt text

image alt text

  • GPU粒子发射器上的碰撞模块具有一个新的属性 'Collision Mode(碰撞模式)' 您可以在这里指定'Distance Field(距离场)。'

image alt text

  • 为了使粒子发生碰撞,我们需要有一个碰撞表面,这可以从距离场中高效地提取出来。 距离场的一个单独样本给出到最近碰撞表面的距离。 计算距离场的梯度提供到那个表面的方向和表面法线。 将这些放在一起给出了碰撞表面。

  • 使用这种方法的粒子碰撞比现有的Scene Depth(景深)碰撞更可靠,它仅同您同屏幕上的内容碰撞,限制它使其生命周期较短。 然而,全局距离场分辨率很低,所以粒子将穿过薄的对象,尖角会变成圆角。

  • 同所有距离场功能一样,这个功能需要在Rendering Project(渲染对象)设置中启用 'Generate Mesh Distance Fields(生成网格物体距离场)'距离场粒子碰撞是一个Shader Model 5功能,在不支持SM5的硬件上,粒子将再次使用景深碰撞作为替换。

  • 距离场粒子碰撞非常高效 - 它同景深碰撞的性能消耗差不多。

新增内容: 层次化LOD快速预览和群集

Hierarchical Level-of-Detail (层次化细节层次)(HLOD)是在4.8版本中引入的一个系统,它可以把您关卡中的许多对象压缩到屏幕上看起来很小的几个对象。这样您可以在近距离查看对象时获得更高的质量,并在关卡中获得更好的总体性能表现。我们对4.9版本的HLOD进行了改进,并将持续在未来的版本中进行此类改进。

快速HLOD预览

为了快速在Hierarchical LOD(层次化LOD)版本上进行迭代,现在您可以使用Preview HLOD(预览层次化LOD)选项。这将仅使用Actor边界的可视化表示及其自身没有融合及创建HLOD网格物体的对象创建HLODActor。它们的边界根据为特定Hierarchical LOD(层次化LOD)级别的LODSystem(LOD系统)设置内设置的DrawDistance (描画距离)进行渲染。

image alt text

该图片展示了弹入到视图中的第一个和第二个层次化的LOD级别,这清晰地指出了这些级别如何聚集,而不必经历融合及创建层次化LOD网格物体的耗时过程。注意,这只是该预览系统的初步实现,随着时间推移,可能会进行修改及改进。

自定义LOD群集 (HLOD体积)

为了对 Hierarchical LOD(层次化LOD)的群集过程有更多的粒度控制,现在您可以放置Hierarchical LODVolume(层次化的LOD体积),它将为它包含的Actor创建一个群集。有了这个功能,就允许用户手动地定义关卡中的哪个区域及哪些对象应该群集到一起。

image alt text

新增内容: "Arch Vis" 角色控制

新增的"ArchVisCharacter” 插件添加了可用于建筑可视化应用的立即可用的控制的角色类。旨在于提供在真实世界范围内的舒适和自然的控制,并启用更平滑的视频和在线演示。

image alt text

您可以直接将ArchVisCharacter绑定为Pawn类,或者您也可以从中创建自定义蓝图以随意调整移动设置。

新增内容: 控件深度排序

屏幕空间中的控件组件(Widget Components)现在会根据距离观察者的距离自动分类,以确保最近的屏幕控件控件组件总是位于其他组件的上面。

image alt text

通过这样,共享的图层控件可以根据到相机的距离适当地分类所有控件组件。之前它是基于手动的 ZOrder,或者添加到视口中的先后顺序分类的。

新增内容: 区域阴影 (用于固定光源)

之前,固定光源总是生成具有均匀半影尺寸的尖锐阴影。 现在,Lightmass光线追踪允许它们生成固定光源的区域阴影!

image alt text

开启"Use Area Shadows for Stationary Light"(使用固定光源的区域阴影)选项来使用此功能。'Light Source Angle'(光源角度)(或点光源的'Source Radius'(光源半径))控制了这些阴影的柔和度。

image alt text

性能表现详细信息:

  • 均匀半影阴影在处理低分辨率光照贴图时仍然具有较好的效果,所以这些仍然是默认设置。 之前,均匀半影尺寸是使用一个隐蔽的项目设置控制的,但现在,它由'Light Source Angle(光源角度)'属性控制,就像区域阴影一样。 将光源角度变为二倍大小将获得两倍柔和度的阴影,以此类推。

  • 对于仅受到单一固定光源通道影响的地图区域(也就是,一个固定定向光源),也有一个新的优化。 它们的阴影贴图将被烘培到一个单独的通道贴图中,而不是4个通道贴图中,仅占用1/4的内存消耗。

材质蒙板">新增内容: 环境遮挡材质蒙板

新的环境遮挡材质蒙板功能允许您在材质中访问Lightmass计算的环境遮挡,这对于程序化贴图是有用的,比如在它累积的区域添加老化效果及灰尘。

image alt text

以上的屏幕截图使用环境遮挡蒙板来自动混合泥土层到环境中的角落位置。

要想使用该功能,您需要启用WorldSettings(世界设置)->Lightmass settings(Lightmass设置)下的 'Use Ambient Occlusion(使用环境遮挡)' 和'Generate Ambient Occlusion Material Mask(生成环境遮挡材质蒙板)' 这两项,然后构建光照。 其它的类似MaxOcclusionDistance(最大遮挡距离)这样的环境遮挡控制可以用于调整外观效果。(请确保设置直接及间接环境遮挡部分(Indirect Occlusion Fraction )为0,以便这个环境遮挡不会应用到实际的关卡光照上。)

image alt text

然后,在您的材质中,您可以将该环境遮挡作为具有PrecomputedAOMask节点的0-1的蒙板访问。PrecomputedAOMask节点将在遮挡的区域中提供1,在其他地方提供0。

image alt text

性能表现详细信息:

  • 使用PrecomputedAOMask节点是一种标准的贴图查找方式。启用该功能会对每个光照贴图的贴图像素添加半个字节,而默认的使用方式是每个光照贴图的贴图像素使用大约4个字节。

  • 您可以使用‘ListTextures'控制台命令来查看AOMaterialMask所使用的贴图内存。

材质">新增内容: 网格物体距离场材质

这项功能让您的材质可以方便地确定到空间中任意点的立体处的距离。最近的有两个新的节点,用于访问材质编辑器中的全局距离场属性。

image alt text

DistanceToNearestSurface返回一个带符号距离,以世界空间单位为单位。注意,不透明网格物体表面上的距离将总是接近于0。 DistanceToNearestSurface 可以用于使得特效避开遮挡者:

虚幻引擎4用户Roel Bartstra已经发现了该功能的一些有趣应用 - - 一个是 获得软体效果 , 另一个是 创建自动避开表面的流程图

同所有距离场功能一样,这个功能需要在Rendering Project(渲染对象)设置中启用'Generate Mesh Distance Fields'(生成网格物体距离场) 。 距离场材质访问是一个Shader Model 5功能。 使用FeatureLevelSwitch 材质节点提供针对Shader Model 4硬件的回滚应用。

新增内容: 改进的距离场环境遮挡

环境遮挡在物体周围提供了由天空所照亮的柔和阴影,这在阴暗的光照环境下尤为重要,一般来说,在没有预计算光照的情况下,很难以高质量进行渲染。距离场环境遮挡解决了这个问题,创建了完全动态的游戏,在其中,时间和环境可以随时变更。我们在提升4.9版本技术的质量和性能表现方面付出了巨大努力,并且我们相信,这对于中等配置的电脑和和PS4级别的硬件来说,现在这是一个可以发布的功能,在一般游戏场景中,总体GPU消耗低于4ms!

之前的方法进行自适应采样,所以尽管平面做较少的工作,但这仍然会在干净的场景中导致大量的污点。

image alt text

现在,环境遮挡的计算速度已经足够快,可以摆脱自适应采样,所以遮挡更加平滑。

image alt text

需要注意的是,新方法需要较长的历史过滤器,这可能会导致重影,尤其是当阴影投射者移动时。 希望这个问题以后会有所改进。

性能

距离场环境遮挡处理速度更快,以至于它可以在中等配置的PC及PS4上运行。 现在,它也具有更可靠的性能消耗,以至于几乎是常量,性能消耗略微依赖于对象的密度。

在具有一个静态相机和基本上全是平面的情况下,新方法快**1.6倍。在具有植被和快速移动相机的复杂场景中,这种新方法速度快**5.5倍。完整游戏场景在PS4上距离场环境遮挡的性能消耗是3.7毫秒。

技术细节

主要优化是使用一个全局距离场,该距离场随着相机转动。 这通过将所有常见的基于每个对象的距离场域组合到几个以相机为中心的体积贴图(称为clipmap(剪辑贴图))中来创建。 仅需要更新新的可视化区域或者那些受到场景修改影响的区域,这样合成就不会有太多性能消耗。

剪辑贴图(clipmap)的贴图像素尺寸的可视化效果 - 每个剪辑贴图具有一种不同的颜色

image alt text

全局距离场的分辨率比对象距离场低,所以它可以用于任何处理。 当计算天空遮挡的锥形追踪时,对象距离场在被遮挡的点附近采样,而具更快速度的全局距离场则在更远的地方采样。

这是光线追踪全局距离场和对象距离场的可视化展示。 全局距离场中的表面变得有斑点,并且薄的对象消失。

image alt text

新增内容:内容浏览器高级搜索

现在,当在内容浏览器中执行搜索时您可以使用高级搜索语法。虚幻引擎4被用于许多大型项目中,包括了一些包含了数百名开发者的团队,以及具有成百上千资源的内容库!这些新的搜索功能改进了工作流程,从而让您可以在任意大小的项目中搜寻内容。

image alt text

这增强了现有的简单搜索语法,通过提供一种从资源元数据及以下特殊按键中匹配 键->值对的方法:

  • Name(名称) - 和资源名称进行比较。

  • Path(路径) - 同资源路径进行比较。

  • Class(类) (别名: 类型) - 同资源类进行比较。

  • Collection(收藏夹) (别名: 标签) - 同包含该资源的任何收藏家的名称比较。

新增内容: 收藏夹改进

这个版本包含了许多对集合的变更内容,这样就可以辅助您在游戏中的资源管理,诸如资源嵌套、智能化集合以及标记功能。

嵌套收藏夹
  • 您的资源集合现在可以整理到层次结构中。

image alt text

  • 您可以通过从给定的集合关联菜单中选择"New…&quot(新建)选项来创建子集合。或者,您也可以通过拖放来进行父项操作。

image alt text

动态收藏夹

  • 动态收藏夹利用高级内容浏览器搜索语法的功能,允许您创建及共享收藏夹过滤器。

image alt text

  • 您能够使用内容浏览器文本搜索所做的任何操作都可以被保存为一个动态收藏夹,包括引用其他收藏夹(静态收藏夹和动态收藏夹)。

  • 您可以使用内容浏览器文本筛选器右侧的"Save"按钮来创建动态集合。

image alt text

快速资源管理

  • 现在,静态收藏夹通过快速资源管理复选框提供了一种向多个收藏夹添加资源的快速简便方法。

image alt text

image alt text

改进了稳定性

  • 现在,收藏夹将自动地遵循它们包含的任何重定向器,这会避免当资源被重命名或移动时看上去似乎从收藏夹中消失的情形。另外,现在当通过内容浏览器修复(并彻底移除)重定向器时会考虑收藏夹。

改进的状态报告

  • 现在,每个收藏夹在其列目右侧有一个小的状态指示符,该指示符的颜色会根据收藏夹的当前状态变化而改变。每种颜色的含义如下:

    • 红色 - 该集合处于某种不佳或只读状态。请参阅工具提示以了解如何解决此问题。

    • 橙色 - 这个集合没有与源控制同步到最新版本。

    • 蓝色 - 该集合具有本地未保存的变更内容。如果保存或自动检查内容出问题,或者如果集合有重定向器,则可能发生该问题。

    • 绿色 - 该集合非空且为最新。

    • 灰色 - 该集合为空且为最新。

改进的资源工具提示信息

  • 现在,一个给定对象的静态收藏夹可以在内容浏览器中显示为工具提示信息的一部分。

image alt text

新增内容: 插件创建向导

现在可以很方便地为虚幻引擎4创建新的C++插件!请查看新的插件向导。

image alt text

  • 现在通过插件浏览器(您可以从窗口菜单中访问它),您可以创建新插件!

  • 您将可以给新的插件起名,并从多个已存插件类型中进行选择(空白型、工具条型、独立窗口型)。

  • 这样将可以为您的插件创建所有的初始文件,以供您编译并载入到编辑器中

新增内容: 增强的曲线编辑器

我们对曲线编辑器进行了诸多改进,使之能更方便地控制曲线关键帧和切线。

image alt text

  • 鼠标中键现在也可以移动选择的关键帧或选择的切线

  • 现在添加了对选择和控制多个切线的支持

  • 现在可以使用control键(切换)和shift键(添加到已存控制项)来进行选择

  • 按住shift不放将可以限制在一条轴的移动

  • 浏览:按住alt加鼠标中键来平移视图,按住alt加鼠标右键来缩放视图

  • 新切线显示选项:总是显示切线,对选定点显示切线,永不显示切线

  • 新的曲线的预处理无限外推选项

  • 让添加关键帧变得更容易预测

    • 仅在只有一条曲线可供编辑时,才使用鼠标来添加关键帧

    • 当多个曲线可用时,点击曲线将会在该曲线上添加关键帧内联,而快速点击曲线将会添加关键帧到所有的曲线

    • 变更菜单项目的文本,来更清楚地显示所要进行的操作

新增内容: 蓝图中的多个返回节点

现在,一个函数可以有多个返回节点。一旦执行到“返回”处,函数执行将终止。这可以用于从蓝图函数中提早返回,或者进行分支及返回不同的值。

image alt text

新增内容: 在蓝图中构建自定义对象

蓝图中,现在您可以生成不纯正的对象类型(不仅是actor/组件)。ConstructObjectFromClass 节点获取一个类,并创建一个那种类型的对象,和SpawnActorFromClass 类似(除了类型不是actor)。

image alt text

  • "Outer" 输入将作为新对象的拥有者,它控制了创建物体的生命周期。

  • 对于actor类,您可以继续使用类节点的Spawn Actor。对于控件来说,请使用Create Widget(创建控件)节点。在未来的版本中,我们可能会继续组合这些不同的功能。

新增内容: 蓝图类默认值

在蓝图中,现在可以通过新的"Get Class Defaults(获取类默认值)"节点来访问类的默认值。 当应用仅包含数据的蓝图时这可能是有帮助的,这允许您访问这些蓝图的值,而不必创建一个实例。

image alt text

  • 为了防止输入引脚太多变得不便处理,请使用节点的详细信息来 显示/隐藏 特定的默认值。

新增内容: 关卡蓝图通信

现在关卡蓝图可以通过接口通信。它们可以像类蓝图那样使用及实现接口函数。当把一个接口添加到一个类蓝图中后,便可以通过接口消息节点进行调用(使用用一个动态载入关卡作为目标)。

image alt text

  • 使用"Get Streaming Level"(获得动态载入关卡)节点来获得要通信的关卡。

    • 因为您必须使用"Get Streaming Level" (获得动态载入关卡)来指向一个特定关卡,所以这将仅对子关卡有效。

新增内容: 优化的数学表达式

我们优化了Math Expression(数学表达式)节点,以便它比常规节点性能更好。现在,同使用一系列的 操作符/函数 节点表示的同样表达式相比,使用Math Expression(数学表达式)节点的速度大约快2倍。

image alt text

新增内容: 蓝图资源ID

有两种新的数据类型暴露给了蓝图: “Asset ID(资源ID)” 和“Class Asset ID(类资源ID)”。Asset ID代表一个已加载的或未加载的资源,可以使用“Resolve Asset(解析资源)”节点将其解析为一个对象。 如果该资源没有加载,那么“Resolve Asset(解析资源)”节点将返回一个无效的对象。 您可以使用“Load Asset(加载资源)”节点加载该资源。 类似地,“Class Asset ID”将解析为一个类,并可以使用“Load Asset Class(加载资源类)”节点进行加载。

image alt text

新增内容: 蒙太奇元素定时界面

我们向蒙太奇编辑器添加另一个新的界面,以便当动画在运行时帮助您控制激活蒙太奇事件的顺序。

image alt text

新增内容: 非线性动画混合

现在,我们支持动画姿势及变换之间的很多不同混合函数!

image alt text

以前,仅支持线性或三次方混合。 现在您可以从很多不同的混合函数中进行选择:线性、立方体、埃尔米特立方体、正弦曲线、二次方程、圆形、指数和自定义函数。对大多数类型来说,您可以分别控制是否使用曲线的“入”和“出”。

“Custom(自定义)” 选项要求有一个“Curve Float(浮点型曲线)”资源。 当创建一个资源后,您可以在详细信息面板中将它分配给相关节点:

image alt text

image alt text

这将允许您指出您想执行的任何混合。将会正规化并缩放曲线长度,使其满足指定的混合时间,任何超出范围0-1的值都会进行区间限定以适应(这个限制后续可能会提升,请留意) 如果没有指定自定义曲线,那么系统将回退到线性混合。

image alt text

新增内容: 骨骼驱动的动画控制器

骨骼驱动器允许您根据Driver(驱动)骨骼的组件的运动调整Driven(被驱动)骨骼的一个或多个组件。这对于附加了附件的角色很有用!您可以防止在动画中的几何体交叉问题,即使在进行了很多混合时也是如此。

image alt text

在这个示例中,手榴弹骨骼没有创作的动画,正在作为thigh_r骨骼的函数在两个坐标轴上驱动。任何动画混合最终都可以很好地运作,而不需要手动调整,因为它们是实时计算的。

您也可以使用一个乘法器直接取入驱动器值,将其重新映射到一个范围,或者使用一个曲线资源来驱动运动。使用曲线通常是最好的方法,因为它允许您自然地低定义响应,交互式地调整点/切线,从而实时看到改变。

以下是骨骼驱动的动画控制器的新设置:

image alt text

新增内容: 动画变换规则

这个版本包含了对动画混合树的改进,尤其是对变换规则的原理进行了改进。

更好地处理动画资源覆盖

现在,变换规则中类似Time Remaining(剩余时间)这样的节点将正确地对由于Child Animation Blueprints(子动画蓝图)中的覆盖动画而导致的动画长度改变做出响应。 这意味着每个子动画蓝图中变换规则所引用的动画不必再是同样长度。

引用最相关的动画层

为了使得状态机更加容易维护,现在您可以使用一个新的getter类,它将从源状态中选择权重最高的动画,而不是指向一个未来可能改变的特定动画。 现在以下节点可用:

image alt text

自定义混合图表改进

现在,在Custom Blend(自定义混合)图表中暴露了一些额外信息,以使得它们不仅仅用于一次性的自定义变换动画。 以下节点提供了关于相应变换节点及 源/目标状态的信息,现在可以在自定义混合图表中使用:

image alt text

您也可以使用引用资源层的getter方法,就像在变换规则中一样。

新增内容: 动画曲线计算修改

Animation Curve Evaluation(动画曲线计算)以前发生在动画的更新阶段,而现在移动到了计算阶段。这将带来以下一些好处。

  • 曲线的权重通过混合权重进行了适当的计算。

    • Cache Nodes(缓存节点)

    • Additive Nodes(叠加节点): Additive (叠加)节点将像动画骨骼变换所做的那样将基础姿势的叠加型曲线数据的间隔叠加到当前姿势上。

    • Layered Node(分层节点): 使得它正常工作略微有点复杂,因为您不知道哪条曲线正在影响哪部分关节。现在,它确实提供了如何混合曲线的选项。

      • Max Weight(最大权重) : 它从混合姿势中选择曲线的最大权重

      • Normalize by Weight(按权重正规化) : 它将所有曲线的所有混合姿势的权重加在一起,并正规化为1

      • Blend by Weight(按权重混合): 它仅是求和 (权重 * 曲线值)

  • 如果您正在使用并行计算,那么曲线计算已经移动为多线程。

  • 最终,这允许我们创建一个可以从骨骼变换驱动曲线的节点,反之亦然。

  • 但是,如果您有需要一条没有计算的曲线(如果您正在更新但是不计算),那么您将不会获得最新数据。曲线数据现在当作骨骼变换对待,而不是像以前那样当做通知对待。

新增内容: 支持动画资源元数据

现在,我们支持可以添加到动画资源中的元数据。元数据是从UAnimMetaData衍生而来的可以应用于蓝图的类,然后您可以将这些元数据添加到动画资源中(动画序列、动画蒙太奇、动画合成及混合空间)。

image alt text

您可以通过调用GetMetaData(),或者通过使用动画剪辑的GetSectionMetaData()来对C++中的动画资源的数据进行查询。

新增内容: 音频质量等级

我们添加了一项新功能,可以让音频设计师能够管理音频的内存使用和(某种程度的)性能表现,以用于低端机器/设备。

您可以在项目设置的音频部分中找到可用的音频质量等级。每种质量等级在目前可以指定由音频设备(一些平台,主要是安卓平台,仍会把该值限制为较低的值)所创建的最大数量的音频通道。

image alt text

在音频中,您可以放置一个质量等级的声音节点,它会对项目设置中定义的每个质量等级提供输入引脚,并且仅执行连接到活动质量等级的分支。这可以用于降低载入的变化的数量,或用于指定降低保真度的wave文件。

image alt text

当您在游玩独立的游戏时,您可以通过游戏的用户设置来指定质量等级,而且仅该质量等级所需的声音波形文件会被载入到内存中。默认值可以通过GameUserSettings.ini文件来基于每局游戏或平台进行设置,并且游戏可以通过其设置UI来设置其值。当前,游戏需要进行重启才能让质量变更生效。

如需在编辑器中播放,您可以指定通过关卡编辑器播放设置所使用的质量等级。变更这个值将会在播放对话激活时运行,并且新的音效会使用当前的质量等级。

新增内容: 自定义衰减曲线

现在,您可以为衰减音效定义您自己的自定义曲线,而不是简单地限制于在算法中构建。

在衰减设置中,设置Distance Algorithm(距离算法)为 ATTENUATION_Custom,您将看到自定义曲线部分出现。 然后,您可以从内容浏览器中指定一个外部曲线资源或直接在详细信息面板中自己直接定义一条自定义曲线。

image alt text

新增内容: 更新间隔

现在,您可以指定一个执行更新函数的时间间隔,从而允许您减少每帧执行更新函数带来的性能消耗,而不需要使用过多复杂的计时器。

这个功能通过Actor和组件默认属性暴露给最终用户,对于程序员,该项可以在C++中进行设置,和其他的更新函数属性类似。

image alt text

需要注意的几个实现细节:

  • 所有Tick(更新)函数执行它们注册的第一帧,然后在下次更新之前此点处等待一段更新时间间隔。

  • 修改一个已经正在更新的更新函数的时间间隔,直到下一个预计更新发生之前时间间隔将不会改变。如果您想让修改立即生效,那么您应该禁用该更新,修改此间隔,然后重新启用更新。

  • 当Tick函数规划下一次更新时,它将通过为任何超时运行提供一个信用,尽可能地接近指定时间间隔进行更新。 比如,如果一个函数指定为每秒发生一次,此刻更新函数执行自上次一次更新已经有1.1秒,那么等到另外0.9秒过去时再规划发生另一次更新。 然而,在一帧中一个更新函数不会执行一次以上,即便在该帧中出现了多个时间间隔。

  • 不管更新时间间隔如何,更新函数的DeltaTime将仍然同样有效。 它不是自上一次该函数更新的时间,但它永远是正在处理的帧的delta时间。

  • Actor的Custom Time Dilation (自定义时间扩张)不会应用到 Tick Interval(更新时间间隔)上。 无论单独的Actor是否有其自己的 Tick Interval,该更新发送的频率将仍然保持不变,那个Time Dilation仅应用于传入到更新函数的DeltaTime。

新增内容: Actor侵犯检测

侵犯检测也变得更为强大并且可以在更多情况下运行。我们添加了一些新的自定义选项以供检测运行。

image alt text

当生成actor时,"bNoCollisionFail"(在蓝图中"即便碰撞也生成")选项已经被重构并扩展为支持4个选项,以表示如何处理产生点处的碰撞:

  • 无论如何都在那里生成。

  • 如果可能则在适当位置处生成,否则就无论如何都在那里生成。

  • 仅当在附近找到适当位置时生成,其他情况都不生成。

  • 不生成它。

退出蓝图将自动更新来选择正确的对应选择。一些代码已经废弃,且将需要手动更新。

Actor类有一个新的暴露给蓝图的成员SpawnCollisionHandlingMethod,它控制默认如何处理生成碰撞。该项可以通过SpawnActor节点或函数调用上的设置进行覆盖。

侵犯检测功能也变得更强大,可以在更多情形中工作。对于具有MovementComponent(运动组件)的actor,则假设更新的组件为主要的碰撞形状,且是用于进行侵犯测试的唯一组件。对于其他actor,所有具有适当碰撞测试的组件都会被检测。请注意,这可能会导致某些actor在更新后无法生成的情况 -- 如果发生这种情况,请仔细检查您的碰撞设置、处理方法及生成变换。

新增内容: 后期处理混合

后期处理"Blendables"(可混合对象)被用于在不同的状态间转换后期处理特效。我们对这个系统进行了一些改进。

您现在可以对每个可混合对象设置混合权重值。这个混合权重可以在蓝图或C++代码运行时进行修改,这样您就可以使用后期处理转换进行一些有趣的操作了。

您现在还可以在后期处理体积内立即指定后期处理设置“inline”,或者您也可以选择创建可在多个物体间共享的单独可混合资源!

image alt text image alt text

同时,我们还让您可以更方便地定义自定义可混合设置。您不再需要修改引擎的内置PostProcessSettings结构,而只需使用设置来定义新的结构,诸如上方的Light Propagation Volume Blendable(光照传递体积可混合)设置。

最后,以下是一个关于如何使用蓝图来在运行时对可混合对象编辑其混合权重值的示例:

image alt text

新增内容: 动态资源缓存

一些游戏需要对资源的本地拷贝的存储进行支持,这个功能可能没有与游戏一起发布。举例来说,如果您具有许多程序化创建的资源,或来自于服务器的资源(比如广告图形)。新的动态资源缓存是一个通用的资源缓存系统,可以用来在可配置的资源块中持续地存储生成的数据。

image alt text

它有以下特性:

  • 多个存储器,单独地存储用户准备的资源类型,比如CharacterImage(角色图片)缓存和 AdvertisementImage(广告图片)缓存。

  • 每个存储器独立的配置大小。

  • 资源版本化,使得当资源在资源变为废弃时重新构建缓存项。

  • 同步及异步缓存查询。

  • 当缓存增长到大于指定大小时,旧的缓存项将会从中删除。

新增内容: 体积贴花(试验性功能!)

三维函数场渲染是描述几何体的另一种方法,它能够更好地解决一些很难的渲染问题(阴影、布尔操作、平滑处理、环境遮挡、光线跟踪、变形)。我们在引擎中的各种地方已经使用了2d及3d距离函数(字体、光照贴图、距离场阴影/环境遮挡)。全新的Volume Decals(体积贴花)允许将一个距离函数(由材质函数定义)作为不透明对象渲染到GBuffer中。输出到GBuffer中意味着我们会获得延迟渲染的所有光照功能(环境遮挡、屏幕空间发射、光照、景深、阴影接收)。下图中的碗显示了一个体积贴花。

image alt text

创建对象(请参照下图,按从左到右的顺序)

  • 使用到贴花中心的距离和贴图投射定义一个球体

  • 在另一个球体中定义一个球体,取二者中最大的(布尔求交)

  • 移动球体来调整形状

  • 添加另一个球体,并修改材质(布尔减)

  • 再次调整形状

image alt text

这展示了如何定义球体的距离函数:

image alt text

该功能尚未完成(缺失阴影投射和间接光照,性能、质量、法线贴图支持),它在GPU上性能消耗总是较大(每个像素的距离函数可能要计算上百次)。我们将进一步改进它(材质函数、阴影投射、文档...),但是可能永远也不会达到实时使用所需要的速度。

新增内容: 虚幻引擎4文档标签,版本及技能级别

  • 现在,文档页面包含了技能级别、引擎版本、类别标签,这些信息显示在页面的顶部及底部,使您可以找到匹配标签的其他页面。

    image alt text

  • 添加了通过技能级别 和/或 引擎版本过滤网站地图的功能。现在网站地图可以展开为树状结构。当过滤时,树状结构将会展开以显示匹配项,不匹配项将呈现为灰掉状态。

    image alt text

  • 同时,现在页面上的技能级别、引擎版本及标签会链接到网站地图,并且可以自动过滤它。 点击一个标签将会过滤网站地图仅显示具有那个标签的页面。

    image alt text

  • 到教程的链接(指南、快速指南的等)显示了那个指南的技能级别和引擎版本:

    image alt text

新建和更新的虚幻引擎4文档

新增内容: 异步实时音频解压缩

支持实时的基于ogg-vorbis的音频解压缩的平台(PC、 Xbox One、 Mac、 Android)现在会在可能的情况下执行异步解压缩以防止影响主游戏线程的运行。

新增内容: 功能包和模板的共享资源

现在支持在模板和功能包中的共享资源。这是通过让模板和功能包指定其它包含的功能包来完成的。这表示,现在对所有模板都可用的资源仅存在一次。这还意味着,我们不再需要对在蓝图和模板的C++版本间共享的资源进行复制。

支持多个目标平台,这样不同的资源可以共存于移动平台和桌面平台的一个模板或功能包中。举例来说,这样当您需要一个平台上的更低细节的模型而非另一个资源时,这就很好用了。

新增内容: 改进的HTML5 (方便的设置、 Amazon S3 支持、 网络)

您不再需要安装任何第三方SDK来启动HTML5的开发并为网络浏览器而打包您的游戏!如需打包,您只需在 File(文件) -> Package menu(打包菜单)中选择HTML5。

其它的改进内容包括:

  • 发射压缩的javascript,这可以极大地降低版本的大小。

  • 在打包时,有一个小型的网络服务器被包含在游戏中,它可以处理本地测试的压缩文件。

  • 现在支持HTML5的网络!现在存在虚幻版本工具的配置变量,它可以用于创建支持HTML5客户端的专用服务器。

  • 现在支持在打包时上传到javascript。在填入AWS的凭证信息后,该版本会被上传到S3,而游戏可以直接从S3处浏览信息。

    image alt text

版本信息

AI

  • 新增内容:创建了一个专门的AI内容类别,可以在内容浏览器的关联菜单中找到。image alt text

  • 新增内容:当EQS(环境查询系统)查询时间超过0.25秒(累计)时添加了日志错误。当查询完成时,我们也会记录每次测试执行花费多长时间。

  • 新增内容:在EQS生成器中添加了对基于踪迹的投射的支持

  • 新增内容:在应用数据绑定的On Circle EQS 生成器中为圆圈中心添加了Z偏移。

  • 新增内容:AI Controller(AI控制器)的路径跟踪组件(Path Following Component)已经暴露给蓝图,并且可以通过蓝图创建的类的默认属性进行调整。

  • 新增内容:Blackboard(黑板)资源已经有了蓝图类型,使得蓝图用户可以同它们交互。

  • 新增内容:为EQS查询的多个情境暴露了过滤和计分选项。

  • 蓝图编译和加载现在更加高效

  • 修复了EQS中的“Skip Item(跳过项目)”并不总在调试视图中显示结果的问题

  • 修复了当处理过滤时,“Skip Item(跳过项)”处理有时候像“Pass(通过)”有时候像"Fail(失败)"的问题。

  • 修复了当取消注册Pawn动作组件,当受控的Pawn悬而未决时出现崩溃的问题

  • 修复了AI模拟永远不过期导致AI永远忘记感知到的actor的问题。

  • 修复了寻路批量EQS测试中的崩溃问题。

  • 修复了运行没有有效选项的EQS查询崩溃的问题。

  • 修复了EQS路径网格生成器在几何体中的点上卡住的问题。

  • 修复了使用多个选项恢复EQS查询资源的问题。

  • 修复了当进行寻路批处理EQS查询测试当测试项目被认为无效时出现的崩溃问题。

  • 修复了如果其查询拥有者不是actor,“On Circle”EQS生成器崩溃的问题

  • 蓝图编译及加载变得更加高效。

行为树

  • 新增内容:为行为树添加了动态子树注入支持。

  • 新增内容:为行为树任务添加了新的重启模式,现在它们可以忽略重启,这使得它会再次重新运行同样的任务。应用实例根据任务类型及其参数不同而有所不同:有些任务每次重启会运作的更好(比如运动),有些任务则应该完成它们的动作(比如动画)

  • 基于蓝图的行为树任务现在将根据任务状态忽略Finish Execute和Finish Abort函数调用,修复了当任务完成执行时没有清除延迟的蓝图动作的问题。

  • 修复了行为树装饰器丢失黑板观察者的问题。

  • 修复了行为树在On Value Change模式中从黑板装饰器中重启的问题。

  • 修复了行为树Tag Cooldown装饰器将Tag Cooldown结束时间的当前值同期持续时间相比较的问题。(Tag Cooldown中的持续时间应该仅当我们禁用时应用,而不能用于比较。)

  • 修复了行为树中具有循环装饰器的分支的搜索更新问题。

  • 修复了aux节点在废弃的搜索过程中丢失内存块中修改的问题。

  • 修复了行为树编辑器中粘帖合成装饰器节点时的崩溃问题。

  • 修复了合成装饰器的 拖拽&放置 操作。

  • 修复了行为树编辑器中重复的子节点问题。

  • 修复了当从现有引脚创建一个新节点时行为树节点的顺序问题。

  • 修复了中止连接到并行节点的行为树任务时出现的罕见崩溃问题。

  • 修复了Rotate to Face(旋转以面向)任务在收到中止事件时卡住的问题。

  • 使用了Rotate to Face替换了Has Reached Goal装饰器。

调试工具

  • 新增内容:添加了“-LogNavOctree” 命令行参数,以在停止记录时将Nav Octree调试几何体记录到可视化记录器中。

  • 新增内容:添加了可视化记录器可以记录的新形状:网格物体、凸面多边形、导航区域/拉伸凸面体及特定边界框的Nav Octree转储。

  • 新增内容:对游戏调试器进行了少量改进。

  • 为可视化记录器工具添加了多个记录选项,以同时分析所有选中的对象。

  • 为游戏调试器添加了调试相机,以便可以四处浏览(按Tab键来在相机间切换)。

  • 针对没有数字键盘的键盘,给游戏调试器添加了可替换的按键绑定(可以在游戏调试器设置中启用)。它使用Alt + [常规数字]快捷键。

  • 向可视化记录器中添加了关于EQS查询的更多数据。

  • 当选择一个单独项时,获胜项的EQS分数将不再设置为1。那样,分数就可以进行适当的比较,因为其他分数也都没有进行正规化处理。它们将处于同样的相对范围上。

  • 修复了游戏调试器的客户端服务器问题。一切内容都应该再次正确地复制到客户端上。

  • 调整了EQS调试显示的描述的宽度,从200改为312,以便显示略长的描述,不会重叠到下一栏中。项目描述宽度、项目分数宽度、测试分数宽度现在都可以在代码中调整(它们现在是变量而不是内联值)。

导航

  • 新增内容:为AI Perception Component(AI感知组件)添加了专门的蓝图可绑定事件,AI Perception Component在每次感应到新刺激时都会被触发。

  • 新增内容:为寻路Reached(到达)测试添加了 bUseNavAgentGoalLocation 以便移动到Actor。(有时候 向前移动 / 同实际的actor的位置进行比较测试 是有用的, 而不是把它的位置投射到导航系统中。)

  • 新增内容:为骨架网格物体添加了自定义导航导出。

  • 新增内容:为导航网格物体边界体积添加了导航代理选择器,基于每个代理定义区域。

  • 新增内容:为可破坏网格物体添加了导航更新。

  • 新增内容:为导航链接添加了新选项,这允许连接到吸附半径中性能消耗最低的区域。

  • 在编辑器中的导航系统中,当地图加载时导致在静态导航网格物体中删除所有保存的数据的缺陷,现已修复。

  • 抽象导航数据actor现在将不再显示在场景大纲视图中。

  • 给路径跟踪的等待状态添加了过期时间。

  • 修复了导航系统中阻止碰撞较少的图形组件通过其他方法(比如导航区域)影响导航网格物体生成的缺陷。

  • 修复了“单例”导航相关组件(没有导航父项)的边界问题,这会导致在生成导航网格物体过程中忽略它们。

  • 修复了当AI使用到位置的直接路径时群集运动中的崩溃问题。

  • 修复了群集在没有寻路的移动情况下的模拟更新。

  • 修复了 Floating Pawn Movement(浮动的Pawn运动)组件导致电传AI遵循路径忽略最大速度限制的问题。

  • 修复了即使pawn在Z轴上移动很远时使用缓存位置的网格物体行走模式的几何体投射问题。

  • 修复了在导航系统创建之前处理随同地图加载的自定义导航链接的问题。

  • 修复了在编辑器模式中导航系统Initial Lock(初始锁定)上卡住的问题。

  • 修复了游戏中缺失抽象导航数据(处理直接路径)的问题。

  • 修复了缺失具有大的对齐高度的导航链接的问题。

  • 修复了刚体设置的凸面元素的可导航碰撞导出不使用元素的本地变换的问题。

  • 修复了Nav Link Proxy(导航链接代理)actor中自定义导航链接的导航相关性及更新顺序的问题。

  • 修复了导航系统不能正确处理深入的Actor层次结构的问题。现在,您可以将Actor附加到一个Actor上,再将该Actor附加到另一个Actor上,所有的Actor都能按预期影响导航网格物体的生成。

  • 修复了更新附加到没有碰撞组件的actor上的导航网格物体相关组件的问题。

  • 导航网格物体的渲染组件存在时间是短暂地,我们确保了保存在旧地图中的任何导航渲染组件不会破坏任何内容。

  • 为导航系统的“获得随机点”功能更新了弃用信息,使其更加精确。

动画

  • 供调试动画用的新“Observe Bone(观察骨骼)”节点。

  • 这可以让您输出骨骼的当前位置(在动画树中的该特定点处),并具有坐标空间的多个选项并选择是否相对于参考姿势进行显示。

  • 观察骨骼节点可用于调试。它们不会造成很多性能消耗,但目前并不是从发布版本中进行编译,这样在您完成图表的内容后,您可能需要移除它们。

    image alt text

  • 新增内容:为角色编辑器添加了可旋转的功能。

    image alt text

  • 新增内容:在角色编辑器的网格物体模式中为每个LOD(0之后)添加了一个“Remove this LOD(删除该LOD)”按钮。

  • 新增内容:在内容浏览器中为动画蓝图资源的3D缩略图添加了一个图标覆盖层。

  • 新增内容:为AnimMontages(动画蒙太奇)添加了 'Blend Out Trigger Time(混合淡出触发时间)'。

    • Sequence End(序列结尾处)触发混合淡出。

    • <0意思这使用Blend Out Time(混合淡出时间), Blend Out(混合淡出)在蒙太奇结尾处结束。

    • >=0 意味着使用 'Sequence End - Blend Out Trigger Time(序列结尾处 - 混合淡出触发时间)' 来触发混合淡出。

    • 同时作为一个可选参数添加到了Play Slot Animation As Dynamic Montage(将插槽动画作为动态蒙太奇播放)。

  • 新增内容:为Modify Bone(修改骨骼)骨架控制添加了编译警告,当它什么都不做时(比如,当所有组件都设置为忽略或者没有选择骨骼时) 显示该警告。

  • 新增内容:添加了针对Post Evaluation(后期计算)的事件。

  • 当骨骼计算完成后触发该事件。

  • 如果你的网格物体组件有物理,它将在骨骼混合回它时触发该事件。

  • 新增内容:通过直接地循环每个骨骼而不是间接地循环,这优化了动画计算。

  • 新增内容:给通知添加标志来阻止他们在专用服务器上触发这些通知。

  • 新增内容:为Bone Modification Mode(骨架修改模式)枚举值添加了有好的显示名称。

  • 新增内容:添加了一个新节点"Bind Cloth To Master Pose Component(混合布料到主要姿势组件)",该节点使得从属的骨架网格物体组件重新使用主组件的模拟数据,而不是单独地处理布料。

  • 新增内容:添加了新节点"Is Section Using Cloth(选中项是否使用布料)"节点,用于查询骨架网格物体部分是否有布料数据。

  • 新增内容:添加了参考姿势切换工具条

    • 同时现在您可以在参考姿势应用过程中进行编辑。

  • 新增内容:添加了对Smart Name(智能名称)曲线的排序。

  • 新增内容:添加了对“蒙太奇-到-蒙太奇”同步的支持。

    • 蒙太奇仅能具有一个领导者。一个领导者可以有多个跟随者。

    • 在该帧更新任何领导者或跟随者 之前 执行同步。

    • 从本质上是在一帧后执行的,所以蒙太奇之间的更新顺序不是问题。

  • 新增内容:允许骨架控制通过实现GetWidgetCoordinateSystem来指定它们倾向显示小工具所使用的坐标空间。

  • 新增内容:依赖预加载系统的第一遍处理。

    • 使用烘培过程中创建的资源信息来决定所有包的依赖,并在要求的包之前加载它们。当使用包文件时,包文件将排序以匹配这个加载顺序,从而大大地降低搜索时间。

    • 目前默认是禁用的,但可以在控制台中使用"s.PreloadPackageDependencies 1" 启用。

  • 新增内容:LookAt Control(查找控制)目前支持在本地空间中查找坐标轴。

  • 新增内容:开始将动画节点从Engine(引擎)移动到新的AnimGraphRuntime(动画图表运行时系统)模块中。

  • 新增内容:支持在动画许列的 开始处/结束处 附加帧。

    • 同时修复了重新排序通知及曲线关键帧的问题。

  • 新增内容:在DO_CHECK测试中AnimationBlueprint(动画蓝图)节点更新/计算过程中封装了重入检测,以便它们可以编译到发行版本中。

  • FAnimationRuntime中的叠加混合优化

  • 将::ApplyAdditiveSequence替换为了::AccumulateAdditivePose。没有姿势副本,权重的快速通道 ==1。

  • 将::AccumulateAdditivePose替换为了::AccumulateMeshSpaceRotationAdditiveToLocalPose。没有姿势副本,少分配了一个姿势,权重的快速通道==1,网格物体空间变换仅在旋转部分上进行,而不是完全的FTransform。

  • 添加了::ConvertMeshRotationPoseToLocalSpace。

  • 当导入时,现在动画及关节名称支持 UTF8 。

  • 动画录制给出默认路径及可用名称。

  • 修改以便您可以在构建脚本中使用MasterPoseComponent(主要姿势组件)。

  • 现在,MasterPoseComponent可以正确地序列化

  • 修改了动画统计数据名称,以反映它们当前是在主要游戏线程上运行还是在工作器线程上运行。

  • 修改了新的NativeNotify(原生通知)菜单,以显示本地化的类名称

  • 修复了在蓝图空间中当引用的动画序列被删除时发生崩溃的问题。

  • 修复了在延迟的动作管理器不能正确删除动作的地方出现缺陷的问题。

  • 修复了当切换序列播放器节点的动画到一个短于当前动画的动画时由于错误的当前时间导致出现的崩溃问题。

  • 修复了当编译畸形的动画蓝图(包含由于删除代码或禁用插件而导致的缺失节点)时及当在编译之前添加图表验证时出现的崩溃问题。

  • 修复了当导入动画时添加额外帧的问题。

  • 修复了当使用‘点击来重新编译动画蓝图’提示而不是编译按钮时 不显示/不刷新 消息日志的问题。

  • 修复了当播放根运动动画时 客户端/服务器 不一致问题。

  • 当蒙太奇结束时,一些剩余的根骨骼运动可以逗留,并且可以用于下轮播放。这导致客户端和服务器之前潜在地产生了位置差别。

  • 如果在根骨骼运动开始时发送一个DualServerMove,服务器可以在客户端上为没有使用根骨骼运动的移动更新根骨骼运动。

  • 修复了动画蓝图编译过程中由于在骨架重新编译期间访问了错误的父类而导致的崩溃问题。

  • 修复了当结构性地修改一些动画蓝图时在重新编译骨架类期间出现崩溃的问题。

  • 修复了当计算具有LOD层次级别的骨架(骨骼)时混合节点出现崩溃的问题。

  • 修复了当启用 Show Uncompressed Bones(显示未压缩骨骼)时出现崩溃的问题。

  • 修复了在SkeletalMeshComponent(骨架网格物体组件)上暂停游戏并使用 "Tick when paused(当暂停时更新)"选项时产生崩溃的问题。

  • 修复了当在蒙太奇中混合叠加型动画和非叠加型动画出现崩溃的问题。

  • 修复了具有无效插槽索引的动画通知连接到蒙太奇中产生相关崩溃的问题。

  • 修复了当导入长度为0的动画时产生除数为0的问题(由rajkosto导致)

  • 修复了当在转换上使用自定义混合时出现错误的状态机权重的问题。

  • 修复了当外部动画发生改变时蒙太奇可连接元素有时丢失片段连接的问题。

  • 修复了在启用AnimUpdateRateOptimizations 和 RootMotionFromMontages的情况下,非人类控制的角色在专用服务器上运行根骨骼动画时比其应有速度快很多的问题。

  • 修复了当第一次在编辑器会话中打开动画蓝图时出现警告但当交互性地重新编译后警告又消失的'幽灵'警告问题。

  • 修复了重新导入受损RetargetBasePose的问题。

  • 修复了初始化顺序变化的缺陷,该缺陷会导致计算在SkeletalMeshComponents发生跳过而不能正常工作。

  • 如果您导入一个添加骨骼到骨架上的网格物体,但是没有保存该骨架,那么它将会导致崩溃。在编辑器中添加了恢复这些骨骼的功能。

  • 对骨骼引用的 边距/字体 及骨架控制的alpha 缩放比例/偏移 的风格进行了小修复。

  • 删除了QuerySupportedSockets中围绕GetActiveSocketList 的WITH_EDITOR 定义,以便QuerySupportedSockets 的行为在编辑器和非编辑器版本中一致。

  • 重新制作了动画轨迹片段循环逻辑以减少浮点错误问题。

  • 测试

  • 当骨架检测到不一致的层次结构,它将尝试修复。您将会注意到融合骨骼处理时有错误信息。

  • 当该信息弹出时,请重新保存骨架。

  • 当导航一个对象时,‘移动到’对象按钮功能可以正常工作。

音频

  • 新增内容:通过一个新的Engine.ini文本域添加了设置每个平台的音量最大值的功能。

  • 新增内容:改进了游戏统计数据音频API

  • 新的Spawn at Location(在位置处生成)函数返回一个音频组件,使得可以像操作Attached(附加的)音效那样操作已播放的音效。

  • Play at Location(在位置处播放)功能仍然不返回音频组件,应该用于一次性音效。

  • 给Location和Attached API添加了Rotation (旋转度),以便可以指定朝向,使得非球形衰减形状也能正常工作。

  • PlayAttached 重命名为Spawn Attached。

  • 现在音效和对话API是一致的。

  • 修复了当使用混响、EQ或音频特效时由于分离及融合音频导致在Mac平台上出现音量差异的问题。

  • 为音频单元添加了低通滤波器以尽量达到PC音频水平。

  • 修复使用适当的 线性-到-分贝等式在Android平台上设置音量的功能。

  • 修复了当激活的音效数量超过可用音频单元数量时Mac上出现Core Audio API(核心音频API)崩溃的问题。

自动化

  • 新增内容:基本的光照测试已经从 'General Editor Test(综合编辑器测试)'中分离出来。

    • 它们是: "System.Promotion.Editor.Lighting.Place Scale Rotate", "System.Promotion.Editor.Lighting.Modify Properties", and "System.Promotion.Editor.Lighting.Duplicate and Copy Paste".

  • 新增内容:当发生任何失败时 'General Editor Test(综合编辑器测试)'现在将在退出时产生非零退出代码(1)。

  • 新增内容:材质编辑器模块中现在包含了材质编辑器改进测试。完全导出的UMaterialGraph。

  • 新增内容:粒子系统改进测试现在包含在Cascade 模块中。

  • 新增内容:几何体自动化测试已经从'General Editor Tests(综合编辑器测试)'自动化测试中分离出来。它现在是:"System.Promotion.Editor.Geometry Validation

  • 新增内容:UAT和UBT将不再等待全局互斥,而是立即失败。之前,每个实例将连续地排队等待,隐藏了该命令实际上没有执行的事实。

  • 修复了如果虚幻引擎4工作区直接挂载到了一个驱动器号(也就是,具有N:\Engine等)上时UAT基类路径无效的缺陷。在这种情况中,它不是有效的C#路径,所以会尝试设置它为CWD。N:\在该情形中是正确路径。

蓝图

  • 新增内容:为静态网格物体添加了蓝图暴露的GetBoundingBox(获得边界框)函数。

  • 新增内容:给蓝图数学库为变换添加了Equals(等于)和NearlyEquals (约定于)函数。

  • 新增内容:添加了TimeSecondsToString 函数以将浮点型时间转换为格式化的字符串。

  • 新增内容:添加了一个节点图标以表示蓝图脚本中引用的仅针对编辑器的属性。

  • 比如像角色的箭头组件或目标点的精灵图标这样的属性。

  • 修复了在已烘培的版本中引用这些属性时发生的崩溃问题(替换为一个记录到日志中的异常)。

  • 新增内容:添加了编辑器.ini配置设置项,这些项可以隐藏特定的蓝图菜单项。

  • 使用"[BlueprintEditor.Menu]" 部分的标题来在.ini文件中添加排除项。

  • 在该.ini文件中,特定的域可以像这样隐藏:+BlueprintHiddenFields="/Script/Engine.Actor:GetTransform"

  • 在该.ini文件中,特定的节点可以像这样隐藏:+BlueprintHiddenNodes="/Script/BlueprintGraph.K2Node_IfThenElse"

  • 新增内容:添加了FMath::GetMapRangeValueUnclamped,并将GetMappedRangeValue重命名为GetMappedRangeValueClamped。

  • 新增内容:添加了InvertTransform蓝图节点。

  • 新增内容:添加了在声明参数之前使用标记 UPARAM(DisplayName="一个简洁的名字")表示每个函数的DisplayName(显示名称)的支持。

    • 这使得不必使用K2ParamRedirect重命名参数,并且使用的名称是非法的C++标识符。

    • UFUNCTION(BlueprintPure, ...)的名称。

    • static void DoSomethingAwesome(UPARAM(DisplayName="Awesome Param") float BoringParam);

  • 新增内容:添加了从蓝图关联菜单中过滤库函数及宏的功能。

  • 新增内容:添加了选择(Select)节点相关的各种改进。节点不会返回输入参数的副本,而是返回到那个输入的引用。

  • 新增内容:已经添加了"InternalUseParam" UFUNCTION()元素,以支持将函数参数标记为仅内部应用的参数(引脚将是隐藏的且不连接的)。

  • 新增内容:Blueprint Timer API (蓝图计时器API)改进

    • SetTimer by Delegate现在通过其他函数同计时器交互时会返回一个Timer Handle以供使用。通过手柄同计时器交互既大大地提高了性能,也允许相同的计时器代理同时用于多个计时器。

    • SetTimer by Name及所有按名称的计时器操作函数及代理都已废弃。

  • 新增内容:蓝图 - 时间轴用户界面更新

    • 使得单独的轨迹可合并。

    • 添加了用于关闭单独轨迹的视图同步的选项。

  • 总体间距及布局调整。

  • 新增内容:现在可以通过点击变量的类型图标或右击来启动一个数组来在“我的蓝图”窗口中修改变量类型。

  • 新增内容:可以在“我的蓝图”窗口中拖拽自定义事件来添加到该事件的函数调用。

  • 新增内容:可以在蓝图函数图表(或其他子图表)中将引脚提升为局部变量。

  • 新增内容:可以在蓝图的成员变量上设置"AdvancedDisplay(高级显示)"标志。

  • 新增内容:CreateEvent节点现在更加用户友好 - 它们将使用当前的蓝图作为默认情境,不会再建议用户为情境选择一个资源。

  • 新增内容:修复了仅包含数据的蓝图调用它们父项的构建脚本时发生崩溃的问题。

  • 新增内容:修复了蓝图库中缺失__WorldContext引脚的错误。

  • 新增内容:现在将Game/URL Options(游戏/URL 选项)解析节点暴露给了蓝图。

  • 新增内容:改进了节点的详细信息面板:Make、Break 及 Set Member。属性按类分组。改进了后期处理设置。

  • 新增内容:改进了是很么时候使用现有图表及什么时候打开一个新图表的逻辑。

  • 当在一个图表中双击一个节点时现在所有子图表将在父项中打开(比如,动画状态及规则,而不是仅在ubergraph中合并子图表)。

  • 当按住Shift键并在“我的蓝图”树结构中点击一项时将强制创建一个新选卡,而不是使用已经打开的选卡。

  • 新增内容:使得蓝图中的布尔型引脚更加重要。

  • 新增内容:移动KismetNodeInfoContext.h,时期可以在GraphEditor模块的外面进行公开访问。

  • 新增内容:节点"Set member in .."有一个针对后期修改结构体的输出引脚。

  • 新增内容:Object Reference、Class Reference、Asset ID、Asset Class ID引脚类型已经被分拆到菜单项的子菜单中,以便减少在列表视图中重复这些菜单项。

  • 新增内容:GetClass 函数调用节点的输入引脚子类型现在连接到输入引脚的子类型上。

  • 新增内容:这个修改为蓝图注释节点增加了多行编辑支持。

  • 要想在注释标题输入新的一行,请使用shift + 回车键。

  • 新增内容:这个修改将NOR和NAND节点支持暴露给了蓝图。

  • 这些节点可以在蓝图动作菜单的 数学/布尔型 部分找到。

  • "Color(颜色)"名称不再限制长度。

  • 为向量长度函数添加了“magnitude”关键字。

  • 从编辑器创建的结构体中添加或删除成员时,当使用那个蓝图的结构体已保存但没有重新编译时,不会再会导致‘’innapropriate outermost(不恰当的最外层)‘’警告。

  • 为MakeArray节点添加了引脚,将会赋予新引脚一个默认值。

  • 当情境失败(访问空数据错误)后,返回数据会被正确清除。

  • 为"Select" 节点索引引脚附加了一个布尔型数据,将强制该节点在仅有两个选项时更新它的引脚名称。

  • 不能在从其他蓝图中调用坐标轴映射值getter(获取)函数。

  • Blueprint Diff Tool(蓝图比较工具)不再具有在组件、蓝图及默认视图间切换的按钮。导航现在通过差异列表完成。

  • 蓝图编辑器关联菜单过滤功能变得更加高效。

  • 组件型的蓝图成员变量不再由SCS生成,现在暴露的变量一般都具有详情选项。

  • 发生Access None错误会触发断点。

  • 对于标记为BlueprintImplementableEvent的C++函数及在蓝图中覆盖为函数图表的C++函数,当尝试将这些函数拖拽到图表中来通知用户那个函数不是BlueprintCallable(蓝图可调用的)时,将会显示一个错误。

  • 当复制Call Function节点或复制整个蓝图时不会再修改函数引用。

  • 如果结构体没有任何有效属性,将不能在蓝图节点上分割引脚。

  • 现在,可以在蓝图中Make(创建)及Break(中断) DateTime 结构体。

  • 可以右击合并的图表来添加作为外部函数图表一部分的局部变量。

  • 可以右击任何节点来搜索引用他的项。仅在当前蓝图中进行初始搜索。

  • 可以在数学表达式节点中使用unicode 字符。

  • 所有unicode “字符”现在都可用于 变量/输入/输出 名称。

  • 这没有延伸到标记,仅下划线标记仍然允许使用。

  • 时间轴轨迹不能命名为同节点上的任何原生引脚一样的名称。

  • 任何之前由该功能破坏的节点应该都能再次正常工作。

  • 修改Select节点上的引脚类型将会在设置新引脚类型之前在那个选项上重新组合所有子引脚和结果引脚。

  • 修改 "Spawn Actor from Class"节点的类时,如果Result引脚的连接仍然有效,那么将不会断开这些连接。

  • 附加到默认场景根节点的蓝图类资源中的子组件在重新设置父项为同样具有场景根节点的蓝图类时将不会再丢失。

  • 在中间图表打开时编译蓝图将不会再导致崩溃。

  • 使用缺失属性的经过验证的Get节点编译蓝图将不会再导致崩溃。

  • 将函数结果节点数组引脚连接到一个变更路线节点上将不会再阻止该节点使用其所有输出参数进行编译。

  • 使用SelfPin的接口引脚复制粘帖 K2Node_CallFunction将不会再将SelfPin修改为正常的Object Reference引脚。

  • 修复了当‘在蓝图中搜索’功能正在搜索所有蓝图时编译蓝图出现的崩溃问题。

  • 修复了当在数学表达式中使用 "!=" 操作符比较向量出现的崩溃问题。

  • 当蓝图中没有其他事件时删除一个自定义事件,将不会导致不允许您将蓝图中放置的其他项目重命名为同删除的自定义事件一样的名称。

  • 从SCS编辑器中拖拽并放置一个组件到图表中且当图表是相同蓝图的一部分时将不会再错误地报告该图表超出范围。

  • 从‘我的蓝图’选卡中拖拽并放置变量将不会再默认假设那个变量是只读的。

  • 复制包含具有Text引脚的节点的函数或宏图表时将不会再错误地将原始引脚和复制的引脚相连使得一个引脚上的改变看上去会影响另一个。

  • 在分离变换引脚时复制 "Add Scene Component"节点将不会再使得该变换引脚在复制的节点上可见。

  • 编辑在隐藏的子关卡中实例化的蓝图将不会再重置隐藏的实例上的变换。

  • 确保在序列化基于Actor的蓝图类资源后不会设置'bExchangedRoles' 。

  • 检查枚举数组引脚的值将会显示枚举值的显示名称。

  • 修复了当构建蓝图类实例时组件注册过程中出现潜在崩溃的问题。

  • 修复了为旧的蓝图类资源进行组件模板序列化过程中加载时出现潜在崩溃的问题。

  • 修复了当从一个Actor实例向另一个Actor复制USTRUCTs数组时发生潜在崩溃的问题。

  • 修复了当在蓝图编辑器中删除场景根组件可能会导致蓝图类后期重构的实例出现错误状态的问题。

  • 修复了当执行类型转换为一个没有加载的类时(可能由于引用未加载模块中的一个类)出现在崩溃的问题。

  • 修复了当重新加载包含由按名称匹配原型但按类型不匹配原型的构造组件实例的地图时出现崩溃的问题。

  • 修复了当编辑嵌套在另一个实例化变量中的实例化变量时出现崩溃的问题。

  • 修复了当在蓝图类编辑器中编辑“原生”组件模板(也就是继承C++类的模板)时材质切换传播的问题。

  • 修复了在材质编辑器中针对继承的组件模板的插槽浏览问题。

  • 修复了当修改了原生父类的继承关系后旧的组件仍然存在于蓝图类中的问题。

  • 修复了向量坐标轴输入事件节点显示浮点型输出引脚而不是向量型引脚的问题。

  • 修复了阻止新组件不能同已删除组件(编译之前)具有相同名称的缺陷。

  • 修复了蓝图视口中阻止复制、克隆及重命名热键正常工作的缺陷。

  • 修复了蓝图菜单项的某些关键字被忽略的缺陷。

  • 修复了在您选择“启动”之前某些已修改的蓝图没有被编译的缺陷。

  • 修复了从具有HideCategories元数据的蓝图中隐藏静态函数的缺陷。

  • 修复了一个循环的 父类/子类 依赖的缺陷,当编译时继承的组件可能会被废弃。

  • 修复了一个 父类/子类 循环依赖的缺陷,在该缺陷中,子类的覆盖属性值在加载时会被清除。

  • 修复了当重命名局部变量后如果其他函数具有同样名称的局部变量则出现崩溃的缺陷。

  • 修复了当传入一个默认对象BlueprintSessionResult给 "Join Session" 蓝图节点时发生的崩溃问题。现在不会发生崩溃,而是连接失败,执行程序将从"On Failure" 引脚开始继续执行。

  • 修复了当编译一个具有组件的Actor蓝图后进行取消动作时发生崩溃的问题。

  • 修复了在涉及到Actor和ActorComponent蓝图的特定循环依赖情形中发生的崩溃问题。

  • 修复了当将鼠标悬停到在其构建脚本中添加了组件的蓝图实例的"Edit Blueprint(编辑蓝图)"按钮上时发生崩溃的问题。

  • 修复了当加载依赖禁用的插件的蓝图时发生崩溃的问题。

  • 修复了当在同设置GameMode相关的蓝图中删除一个 事件/函数 参数时将会发生崩溃的问题。

  • 修复了当删除一个应用了’调试查看‘的引脚时发生崩溃的问题。

  • 修复了当一个地图的关卡蓝图打开时删除该地图发生崩溃的问题。

  • 修复了当动态载入子关卡后重新启动关卡时发生崩溃的问题。

  • 修复了涉及到宏库的循环依赖缺陷,在该缺陷中蓝图加载会带有虚假错误。

  • 修复了在重构基于Actor的蓝图类实例过程中潜在地无法恢复组件实例数据的问题。

  • 修复了当从宏中使用输出引脚时 Increment/Decrement宏会出现两次的问题。

  • 修复了当前场景中的蓝图类实例上的某些组件属性值可以重置为重新编译蓝图类的结果的问题。

  • 修复了当编译数组型Local Variable时出现崩溃的问题。

  • 修复了当编译数组型Local Variable时出现崩溃的问题。

  • 修复了当使用蓝图编辑器内选中的多个组件进行修改时发生崩溃的问题。

  • 修复了在已经选择了另一个类后在Spawn Actor From Class节点上选择"None" 类类型时出现崩溃的问题。

  • 修复了当使用Set节点从无效对象复制结构体值时发生崩溃的问题。

  • 修复了当2个空的UserDefinedEnum具有相同名称时发生崩溃的问题。

  • 修复使得减量整型宏节点真正地进行渐减。

  • 修复了蓝图编辑器中组件树中组件重复的问题。

  • 修复了编辑InstanceStaticMeshComponent和HierarchicalInstancedStaticMeshComponent的问题。

  • 修复了暴露的APEX布料函数没有出现在蓝图编辑器中的问题。

  • 修复了Get变量节点上"Convert to validated Get" 和"Convert to pure Get" 选项上错误的工具提示信息。

  • 修复了如果在加载时现有蓝图类默认对象或实例包含一个或多个原生(C++定义的)组件子对象的一个或多个无效的属性值会出现的问题。

  • 修复了当顶部插槽没有内容时图表节点冒泡渲染错误的问题。

  • 修复了当在蓝图中隐藏类别时不能总是隐藏所有预期节点的问题。

  • 修复了节点标题过期的问题(比如,动画骨架控制),通过当图表节点上的属性被修改时强制更新节点标题。

  • 修复了当重新设置一个蓝图父项后Target引脚无效的问题。

  • 修复了当用户拖拽某个用户界面元素时蓝图比较工具发生崩溃的问题。

  • 修复了当使用到另一个蓝图的引用替换到一个蓝图的引用时导致发生‘致命错误’的问题。

  • 修复了'在蓝图中查找'时发生崩溃的问题,由于修改FString所带来的影响。

  • 从原生函数生成的隐藏的引脚将正确地使用它们的默认值。

  • 改进了Pin Type Selector(引脚类型选择器)过滤器,以便单词顺序及大小写不会有影响。

  • 在引脚类型选择器下拉菜单中,按下shift键将不会再将光标移动回到搜索框的起始处,按下‘向下’和‘向上’箭头键将再次导航列表视图。

  • 输入动作和按键事件将不能再放置在蓝图函数中。

  • Input Touch(输入触摸)事件节点不能放置在函数或宏图表中。

  • 蓝图函数中的局部变量现在将设置为它们类型所代表的用户定义的结构体的默认值。

  • 没有任何参数的数学表达式函数仍然在Math Expression节点中提供他们的右括号。

  • Math Expression(数学表达式)节点将再次可以通过函数显示名称进行正确查找。

  • Math Expression当在蓝图上进行一次比较时将不再总是呈现为已修改状态。

  • 改进了差异比较支持,使得可以查看两个版本之间表达式的变化。

  • MathExpression节点将不会将函数输入作为通过getter节点访问的有效变量。

  • 向蓝图暴露了WeakObjectPtr相关的更加严格的限制。没有WeakObjectPtr数组。

  • 在蓝图枚举值引脚上,当鼠标悬停到下拉菜单上时将会出现工具提示信息。

  • 在选中的节点上,设置Index引脚的类型将总是会将该选项引脚的引脚名称改为 "False" 和"True"。

  • 向蓝图暴露了FMath::FixedTurn (由MatzeOGH提供)

  • 阻止UK2Node::AutowireNode中隐藏的引脚自动连接到传入的Wildcard(通配符)引脚上。

  • 这可以防止出现当拖拽它们时通配符连接到函数的“self”引脚上。

  • 当连接了不兼容的引脚时产生适当的编译器错误。

  • 重新编译具有Component(组件)父类的蓝图现在可以正确地重新注册关卡中蓝图组件的任何实例。之前存在的实例可能会消失。

  • 当编译具有无效CallFunction或CallParentFunction节点的蓝图时删除了一个断言判断。

  • 在蓝图编辑器中重命名一个组件,然后添加一个同类型的新组件,将不会再导致损坏的默认编辑。

  • 使用具有隐藏值的枚举值选择节点将不会再错误地匹配Option引脚连接到错误的枚举值上。

  • 首次为Select节点选择一种引脚类型将不会失败。

  • 在User Defined Struct(用户定义的结构体)中为Text(文本)属性设置默认值或者在蓝图中为Local Variable(局部变量)属性设置默认值将正确地分配该值并在编辑器的实例之间保存该值。

  • 在Function Result节点上分离引脚将不会再尝试将分离的引脚作为结果引脚编译。

  • 如果已经通过分割一个结构体引脚生成了该引脚,  "Set" 变量节点上的"Get"引脚现在将显示引脚的名称。

  • 非成员变量(父类中的变量或者外部成员变量引用)的蓝图中的详细信息视图将不再将各种详细信息不可编辑选项显示为可编辑。

  • 在“我的蓝图”窗口中现在显示眼睛图标来标识用户创建的组件变量为可编辑的。

  • Pin Type Selector(引脚类型选择器)中将会显示子菜单项的工具提示信息。

  • 调整了 "Expand Nodes(展开节点)"菜单选项,以更好地描述该操作的作用。

  • 当在函数图表中拖拽一个引脚时,如果本地变量节点对于连接有效,那么它们将不再经过关联菜单过滤来进行放置。

  • 当索引所有蓝图时,按下“No”将正确地跳过检测所有未索引的蓝图。

  • 当加载一种不匹配的蓝图引脚类型时不会再断开连接,相反,我们依赖编译错误来防止潜在已损坏蓝图执行错误的代码。

  • 当函数的签名更新时,事件图表中它的实例也会正确更新。

Core(核心)

  • 新增内容:具有相同名称但不同版本的插件现在可以放置在多个游戏项目中。这使得具有多个项目的工作室在不同版本间应用相同的插件,只要该插件是此游戏项目的一部分即可。

  • 新增内容:添加了控制台变量来在运行时控制TimeBetweenPurgingPendingKillObjects 。

  • 新增内容:添加了对特定包的大量异步加载支持。

  • 新增内容:添加了命令行参数来转存命令行统计数据到日志文件中。

  • -LoadTimeStatsForCommandlet转存所有加载时间统计数据(LinkerLoad和AsyncLoad 组)

  • 新增内容:添加了命令行参数("-fullcrashdump")以强制任何窗口崩溃迷你转储能包含所有内存信息。

  • 新增内容:向版本中添加了关于用于激活UnrealHeaderTool和持续时间的命令行的日志。

  • 新增内容:添加了模块路径缓存以改进编辑器启动时间。

  • 新增内容:添加了预分配内存池,当系统耗尽内存时会释放该内存池以正确地处理这种崩溃。

  • 新增内容:添加了'stat slow' 控制台命令。

  • 显示了游戏及渲染线程统计数据

  • 可以取入两个可选参数 -ms=x -depth=n,这些参数分别指出了最低统计数据持续时间及显示的层次结构深度。

  • 新增内容:添加了当工作线程位于垃圾回收锁定中时强制进行垃圾回收的功能。

  • 在该情形中,主线程将会被阻断并等待,直到解锁为止。

  • 这可以在垃圾回收部分的Project Settings(项目设置)下进行配置。

  • 新增内容:为AutomationTool(动画工具)的BuildCookRun命令添加了两个参数。

  • IgnoreCookErrors - 忽略所有烘培错误并继续部署项目

  • FastCook - 传入快速烘培参数给烘培器,该参数可以基于每个项目处理。

  • 新增内容:修改文件阅读器使用异步 输入/输出,使得在基于Windows的平台上读取文件时加速1.6倍。

  • 新增内容:CMake项目生成器现在可以在Mac和Windows上工作。

  • 传入-cmakefile 给GenerateProjectFiles并使用CLion或其他集成开发环境来编译虚幻引擎4。

  • 新增内容:DirectoryWatcher现在可以选择性地忽略子目录中的改变(Windows和Linux上的处理;Mac实现忽略该标志)。

  • 新增内容:将垃圾回收设置暴露给了Garbage Collection(垃圾回收)类目下的Project Settings(项目设置)。

  • 新增内容:在Streaming部分下将Streaming设置暴露给Project Settings(项目设置)。

  • 新增内容:改进了缺少包含源资源名称的导入信息。

  • 新增内容:改进了Unreal Build Tool中的清理命令。现在它将正确地清理模块,不再由项目引用。

  • 新增内容:让zlib压缩也是用标准的虚化内存分配器,这使得更容易跟踪他们。

  • 新增内容:现在当引擎崩溃时将报告内存统计数据。

  • 新增内容:当引擎由于顺坏的文件发生崩溃时会有更详细的日志消息。

  • 新增内容:优化了事务处理,当执行ObjectRecord预加载时节省了不必要的迭代。

  • 新增内容:PR#1348: 通过实现三个微优化改进了垃圾回收的性能。(由pzurita贡献)

  • 新增内容:在大量异步加载之前通过在内存中查找对象略微优化了对象加载过程。

  • 新增内容:对结构体序列化进行了小优化。

  • 为不可变结构体添加了原生序列化。

  • 为各种数学类添加了POD标志。

  • 新增内容:TAssetPtr现在支持从子类到基类的会话。

  • 新增内容:减少了编辑器中显示的日志信息的量。被删除的日志现在仅写入到日志文件中。

  • 修复了调试版本中FLinkerLoad中的内存泄露问题,永远不会从活跃的连接加载器中清除其自身。

  • 做了几个修复,使得Window上报告的崩溃更加可靠。

  • 为延迟连接器删除添加了一个系统以修复异步加载过程中的崩溃问题。

  • 为XmlFile写入器添加了属性序列化。

  • 添加了代码以在工作线程发生崩溃时强制退出。

  • 在重定向器ini部分为源名称冲突添加了日志错误信息。

  • 总是使用Engine目录,而不是Process目录来在Windows上定位可执行文件。

  • 改为"CreateExport:  Failed to load Outer..."消息发送到消息日志中,以便当运行编辑器时用户可以获得更好的外观。

  • 修改了启动时关于缺失配置文件的信息,使其更加精确。

  • 禁用了启动程序版本的运行时崩溃处理,以减少内存占用。

  • 调用栈将仍由CrashReporter处理。

  • 现在,在配置ini文件中编辑"Project Settings(项目设置)"仅编辑一个值。

  • Arrays(数组)除外,它需要一个全新的实现。

  • EPackageFlags & EObjectFlags在调试器中作为一组枚举值正确地查看,比如RF_Public | RF_Transactional,而不仅仅是作为原始的数字值。

  • 修复了“约等于”数学比较在值精确相等及公差为0时不返回true的问题,

  • 修复了TBB 分配器中导致排列的分配错误地重叠的问题。

  • 修复了CurveBase上的GetValueRange函数,给出Min(最小值)而不是Max(最大值)。

*#git author MiniTurtle

  • 修复了在分析器中加载完ue4stats文件后并不总是启用游戏线程图表的缺陷。

  • 修复了分析器不能通过用户界面执行连续两次捕获的缺陷。

  • 修复了当重命名了由于错误而不能重命名了的地图或资源时发生崩溃的问题。

  • 修复了当在窗口中使用-nothreading运行游戏时OnlineAsyncTaskManagerNull中发生崩溃的问题。

  • 修复了在烘培的游戏中动态载入关卡后退出时发生崩溃的问题。

  • 修复了异步加载由检测现有连接器的断言。

  • 修复了当关闭游戏时的间歇性死锁问题。

  • 修复了打包时安装的插件会导致编译仅包含内容的游戏的问题。

  • 修复了热重载后的蓝图编译错误。

  • 修复了当进程意外终止时受损的UnrealBuildTool依赖文件崩溃的问题。

  • 修复了当用户尝试添加模块依赖时可能发生编译失败的问题。

  • 修复了由于解析某些核心UObject系统的随机顺序导致在打包的游戏中退出时发生崩溃的问题。

  • 修复了Windows 8和10中崩溃报告及引擎无法报告正确的windows版本的问题。

  • 修复了FInterpCurve 序列化并修复了EvalDerivative和EvalSecondDerivative的边界情况结果。

  • 修复了重定向器资源“加载失败”消息在编辑器中的某些情况下可能出现,导致重定向器资源不可用及不可固定的问题。

  • 修复了当蓝图节点包含了到类默认对象的应用时热重载后保存失败的问题。

  • 修复了热重载后不时发生的音频崩溃。

  • 修复了检测游戏项目的目标的搜索顺序。

  • 修复了当运行仅包含打包内容的游戏时插件的搜索路径。

  • 修复了当用户的Windows插件名称包含非ASCII字符时UnrealBuildTool无法获得环境变量的问题。

  • 修复了当.Build.cs文件改变UnrealBuildTool无法更新 makefile 的问题。

  • 修复了当.uproject文件改变UnrealBuildTool无法更新 makefile 的问题。

  • 修复了如果解析步骤有其他错误UnrealHeaderTool在某些罕见情形下发生崩溃的问题。

  • 修复了UnrealSwarm "通道已注册"错误,来记录异常发生的实际原因,因为到目前为止它还非常容易令人误解。

  • 修复了UnrealSwarm连接问题,如果协调者和代理位于同一机器上并且代理设置上的协调器地址设置为 非-回送IP 时会发生该问题。

  • 联合编译的二进制文件现在会在路径中搜索,而不仅仅是在项目文件中。

  • 集成了4.7版本中添加的但4.8版本中遗漏的一些UnrealBuildTool性能修复。

  • 确保默认子对象(组件)属性不会在actor构造函数中重置为默认值。

  • 确保包在动态载入时不会被标记为已修改。

  • 对UnrealHeaderTool进行了一些小的性能优化,使得调用一种典型游戏项目可以减少几秒的时间。

  • 从UObject中将连接器序列化移动到UPackage以修复错误的UObject 内存报告。

  • 优化了当动态载入过程中进行垃圾回收时的对象引用系统。

  • PR#1136: 修复了BSP贴图对齐工具初始化为默认设置的问题(由yamashi贡献)

  • PR#1197: 修复了延迟的连接器列表包含同一连接器的多个项时发生崩溃的问题(由MarcKamradt贡献)。

  • 分析器现在将加载所有帧,之前会忽略最后一帧。

  • 当为windows调用栈构成人类可读字符串时使得调用栈线的截取长度变为4倍。

  • 从FPaths::MakeStandardFilename中删除了一些冗余的函数调用,使其运行更快。

  • 对于非编辑器版本,渲染线程函数调用再次可以正确地输出到日志中。

  • 保存到默认配置不再会写出到重复项。

  • 添加了冒烟测试来确保打开搜索路径上的文件的平台一致性,以及搜索所谓文件句柄的功能。

  • TAttribute不再允许同另一个TAttrbiute 直接比较来判断是否相等。这已经被乱用,并在基础代码中隐藏了一些问题,因为它仅对Get() == Get()进行隐性调用。这不是两个属性之间比较判断是否相等的正确方法,那仅是即时地比较了那个时刻它们的值。

  • 它们已被废弃,改为仅允许同文字值比较,而不是比较属性,这导致在同文字值比较时产生隐性的属性构造。

  • TAttribute 有一个新的IdenticalTo()函数,它可以真正地比较两个属性来看他们是否真正地一样。

  • 当MoviePlayer中的 bAutoCompleteWhenLoadingCompletes 为 false时,加载完成后该视频会正确地继续播放,直到提示暂停为止。

  • 当排队新的异步包时,异步加载代码也将会在已加载包中查找现有包来防止无限的动态载入次数。

编辑器和工具

  • 新增内容:添加 File(文件) -> Package(打包)项目下的"Zip Up Project(解压缩到项目中)"按钮来选取必要的项目文件并打包到zip文件中。以供方便地发送项目到其它成员,而无需发送不必要的文件。

  • 变换详细信息UI的智能缩放:

                ​​                  ![image alt text](https://docs.unrealengine.com/latest/images/Support/Builds/ReleaseNotes/2015/4_9/image_73.gif)
  • 向量和旋转量控件现在会随着详细信息面板的收起而在更为紧凑的模式中进行自动渲染,这样可以对更广范围的属性进行编辑。

  • 旋转量用户界面一致性:

  • Rotators(旋转量)在任何地方都以一致的顺序显示为XYZ, 而不是在关卡编辑器中显示为XYZ,但在蓝图中显示为倾斜、偏转、旋转(YZX顺序)。

  • 在蓝图中:

image alt text

  • 在关卡编辑器中:

image alt text

  • 所有内容将自动更新并按预期运作,但您可能注意到那上面交叉的线之前并没有,这是因为顺序改变的缘故。

  • 作为补充资料(该信息也会显示在工具提示信息中):

  • X是旋转值(围绕X轴旋转,一般是向前的向量,所以要顺时针/逆时针倾斜你的头)

  • Y是倾斜度值(围绕Y轴旋转,一般是向右的向量,例如向上/向下看)

  • Z是偏转值(围绕Z轴旋转,一般是向上的向量,例如转向朝左/朝右)

    • 新增内容:为高级“在编辑器中运行”选项添加了AutoConnectToServer选项,默认旧值为true。如果设置为false,它将启动多个客户端,但它们不会彼此连接,这对于用户界面测试是有用的。

  • 新增内容:当导入骨架网格物体时为"Failed to Merge Bones(融合骨骼失败)"对话框添加了"No to All(全部否)" 、"Yes to All(全部是)" 及"Cancel(取消)"选项,以避免必须剔除大部分窗口。

  • 新增内容:为Visual Logger (可视化记录器)工具添加了"Save All(保存所有)"按钮。

  • 新增内容:添加了一个检测,用于当打开一个仅包含内容的项目时决定插件是否兼容。

  • 这是需要的,因为仅包含内容的项目稍后将不会尝试编译不兼容的插件,用户现在可以选择禁用它们。

  • 新增内容:添加了新的简化插件创建向导。

  • 现在从插件浏览器中打开,而不是作为需要启用的另一个插件。

  • 现在,仅需为其选择一个插件模板和 路径/名称 。

  • 新增内容:为插件添加了支持URL,以便用户可以轻松地知道如何联系插件的制作者来获得支持。

  • 新增内容:为地图文件工具提示信息添加了文件修改日期和文件大小。允许在竖列视图模式中按这些值排序。

  • 新增内容:在内容浏览器中添加了SkeletalMesh Resource Size(骨架网格物体资源大小)。

  • 新增内容:在Note actor的文本域中添加了多行文本支持。

  • 新增内容:添加了放置及总是居中独立运行的播放窗口的支持。文本域添加到了’编辑器-运行 ‘高级设置下,以调整独立运行窗口的位置,并可以打开及关闭总是居中功能。

  • 新增内容:添加了在项目标记中显示当前虚化引擎版本号的选项。

  • 该功能可以在“编辑器偏好设置”中的“其他”类目中启用。

  • 新增内容:在 File(文件) -> Package Project(打包项目)下添加了Zip Up Project(压缩项目)按钮以获取必要项目文件并将其打包到一个压缩文件中。以便可以轻松地将该项目发送给其他人,且可以排除不必要的文件。

  • 新增内容:详细面板中现在支持所有类型的整型属性,而不仅是int32属性。

  • 新增内容:允许“在编辑器中播放”窗口总是显示在其他窗口的上面,可以在“关卡编辑器-运行”的高级设置下面进行 启用/禁用。

  • 新增内容:在工具提示信息中澄清了“关卡编辑器 - 运行”设置的 Server Game Options(服务器选项) 和Command Line Options(命令行选项)应用。

  • 新增内容:曲线编辑器 - 使得添加关键帧变得更加可预见

  • 当仅有一个可编辑的曲线时关键帧将仅添加到鼠标的下面。

  • 当有多条曲线时,点击启用这条曲线将在这条曲线上添加一个关键帧,点击禁用这条曲线将在所有曲线上添加关键帧。

  • 修改菜单项上的文本来使得正在发生的事情变得更加清晰。

  • 新增内容:曲线编辑器改进

  • 鼠标中键现在也可以移动选中的关键帧及选中的切线。

  • 添加了选择及操作多个切线的支持。

  • 选中项现在遵循Control(切换)和shift(添加到现有选项)处理。

  • 按住shift键将限制在一个坐标轴上运动。

  • 导航: 按住alt键和鼠标中键可以平移视图,alt键和鼠标右键可以缩放视图。

  • 添加切线显示选项:总是显示切线、显示选中点的切线、永远不显示切线。

  • 为曲线添加了 前-后 无限插值选项。

  • 新增内容:在插件向导中启用了 引擎/游戏 插件开关(由szyszq贡献)

  • 新增内容:FBX导入检测已经发生改变。

  • 如果您有带动画的曲线,它将检测为骨架网格物体,即便你没有变形器也如此。

  • 这样便可以更加轻松地为刚体导入动画。

  • 新增内容:‘光源类型’显示菜单

  • 现在'Lighting Components(光源组件)' -> 'Ambient Occlusion(环境遮挡)' 既影响DFAO也影响SSAO。

  • 在‘Lighting Features(光照功能)’下添加了'Screen Space Ambient Occlusion(屏幕空间环境遮挡)'显示标志。

  • 新增内容:使得蓝图编辑器视口相机速度称为每个项目的编辑器用户设置,该设置可以在会话间保存。

  • 新增内容:对BSP构建构成及BSP取消操作进行了较大优化。

  • 新增内容:将“插件”菜单从"窗口"中移动到了“设置/配置”中。

  • 新增内容:优化了在BSP表面上设置材质或其贴图变换的处理。

  • 新增内容:通过使用关卡编辑器视口中的相机下拉菜单,现在可以放置的相机中进行查看并进行快速导航。

  • 新增内容:PR#1168: 为材质编辑器添加了挂钩以获得插件支持(由bradgrantham贡献)

  • 新增内容:从“ Convert Project (转换项目)”模式对话框中删除了关闭按钮,因为它正返回一个未定义的理由码(并且不是非常有必要,因为已经有一个Cancel(取消)按钮了)。

  • 新增内容:删除了SaveBrushAsCollision 命令及其绑定,因为构建画刷不再是一个面向用户的概念。

  • 新增内容:重命名编辑器偏好设置 "Automatically Hot Reload New Clases(自动热重载新类)"为 "Automatically Compile Newly Added C++ Classes(自动编译新添加的C++类)"。

  • 新增内容:Text FrontendFilter(文本前端过滤器)现在尝试匹配路径名称的组件及资源名称本身。

  • 新增内容:  当尝试将"Maximum Texture Size(最大贴图大小)改为不是2的幂数的贴图时,这使得贴图不再是 Power of Two(2的幂数模式),此时会产生一个错误的对话框。

  • 新增内容:RenderToTexture(渲染到贴图)蓝图工具集现在有其自己的一组关于EXR导出的选项,并且不需要同 'High Resolution Screenshot(高分辨率屏幕截图)'对话框。

  • 新增内容:用户现在可以通过“项目设置”菜单编辑游戏模式的PlayerStateClass和SpectatorClass。

  • 新增内容:用户体验改进:一旦指南启动后,在后续会话中指南上的绿色闪光将不会再返回。不再需要手动地忽略视频或完成它。

  • 新增内容:当构建插件目录树时,插件现在也会被添加到它们的子类目上,直到我们到达根类目为止,所以所有插件都可以从根类目处开始搜索。

  • 新增内容:当结合UnrealPak使用"-List" 命令时,现在文件将会按照pak包中呈现的顺序输出。

  • Actor融合工具现在可以正确地将用户指定的光照贴图通道给融合的网格物体。

  • 由'Hierarchical LOD(层次化LOD)'系统生成的Actor不再使用详细信息面板进行变换。

  • 向主框架中添加了一个保证,以表示什么时候它被错误地加载到了游戏版本中。

  • 添加了一个选项,以便导入静态网格物体时不使用MikkTSpace切线生成。

  • 添加了一个关于材质表达式参数名称太长的错误信息。

  • 所有的’在编辑器中运行‘世界中的对象现在当在编辑器会话中退出一次运行时都会标记为延迟销毁,以便断开任何可能阻止“在编辑器中运行”世界中的垃圾回收的引用。

  • 尝试在一个名称属性中输入所允许的最大FName字符数量时,现在将会在详细面板的文本框中显示一个错误信息,而不是发生崩溃。

  • 修改了360度旋转网格对齐的分割情况。

  • 修改了Plugin Creator(插件创造器),使得可以在子目录中创建插件。

  • 修改了Plugin Creator(插件创造器),使得可以在子目录中创建插件。

  • 贴花现在当放置到网格物体上面时可以适当地进行拖拽并放置处理。

  • 在仅包含内容的项目中禁用了Plugin Creator(插件创造器)插件,因为它目前不会生成项目/编译任何创建的插件。

  • 确保了当加载编辑器时可以从.uproject文件删除插件上丢失的依赖。

  • 确保插件浏览器在添加新插件后显示正确的结果。

  • 修复了当尝试在类中隐藏Tick属性类别时导致崩溃的问题。

  • 修复了当属性文本区不在聚焦状态或者当用户按下回车键时传入“多个值”的问题。

  • 修复了使用Subversion源码控制提供商执行源码控制命令时发生崩溃的问题。

  • 修复了当“在编辑器中运行”会话中有两个或多个玩家使用多个进程并且将编辑器多玩家模式设置为”Play as Client(作为客户端运行)“时发生崩溃的问题。

  • 修复了当具有MatineeActor的关卡在运行时被卸载时发生崩溃的问题。

  • 修复了当修改一个打开的数据表格编辑器正在使用的结构体时发生崩溃的问题。

  • 修复了当从外部程序中拖拽垃圾文本到图表编辑器时发生崩溃的问题。

  • 修复了当通过编辑器打开一个源文件后立即关闭Visual Studio时发生崩溃的问题。

  • 修复了当同时导入具有相同名称的多个对象且其中一个对象是FBX文件时发生崩溃的问题。

  • 修复了在内容浏览器中尝试打开一个当前在世界构成浏览器中加载的地图时发生崩溃的问题。

  • 修复了在没有选中actor的时候选择一个表面不会弹出显示该表面属性的详细面板的问题。

  • 修复了 引擎/内容中的某些形状贴图没有贴图的问题。

  • 修复了在几何体模式中选中的BSP的表面渲染问题。

  • 修复了在视图会话中当控制从玩家弹出后给关卡视图相机应用相机胶卷的问题。

  • 修复了当引擎已经关闭后尝试播放slate音效时访问引擎出现崩溃的问题。

  • 修复了当MipValue设置为"Level" 或"Bias"时转换贴图样本为参数时发生崩溃的问题。

  • 修复了当禁用了实时预览时复制并粘帖材质函数调用节点时发生崩溃的问题。

  • 修复了当PIE正在运行时如果在启动PIE之前进行的事务没有完成则发生崩溃结束”在编辑器中运行“处理的过程。

  • 修复了当在编辑器中运行一个无效的.uproject时在可视化日志记录器中发生崩溃的问题。

  • 修复了当在静态网格物体编辑器内编辑碰撞的过程中重新导入网格物体时出现崩溃的问题。

  • 修复了重复的画刷actor不在游戏中出现的问题。

  • 修复了当在沉浸模式中关闭编辑器视口时它不记忆最大化状态的问题。

  • 修复了处于”网格物体描画“模式过程中使用”删除“将会仅从第一个LOD级别中删除Vertex Colours(顶点颜色)的错误。

  • 修复了如果一个FBX文件中没有碰撞,当在现有骨架网格物体上导入该文件,现有碰撞将不会被恢复的问题。

  • 修复了由于尝试处理到来资源的错误的导入库导致的FBX导入失败问题。

  • 修复了BSP的几何体表面对齐工具。

  • 修复了如果BSP的父项画刷围绕多个坐标轴旋转那么当重新构建几何体时BSP表面贴图变换受到破坏的问题。

  • 修复了当将BSP表面变换应用到同其拥有者画刷不同步的几何体表面时变换受到损坏的问题。

  • 修复了当永久禁用了导致Launch(启动)按钮的启动处理时取消未保存的包对话框时出现的问题。

  • 修复了当创建一个动画蓝图的子项将导致创建一个正常蓝图的问题。同时修复了同GameplayAbilityBlueprints类似的问题。

  • 修复了当加载时资源的AssetImportData丢失的问题。

  • 修复了在PIE会话结束时不会通过通知发布PIE过程中的警告的问题。

  • 修复了由于缺少伽马校正EyeDropper(颜色吸管)工具返回错误的颜色的问题。

  • 修复了曲线编辑器中渲染选中盒体的问题。

  • 修复了重定向器固定相关的问题,以便可以干净地删除重定向器,且可以正确地修复引用的地图包。

  • 另外,修复了有时需要执行两次重定向器固定的问题。

  • 修复了”删除资源“对话框相关的问题,以便该操作在任何可能的地方总是可以干净利索地执行,而不会错误地需要”强制删除“选项。

  • 媳妇了几何体优化操作相关的问题,以便它总是可以正常工作,而不会出现有时候会需要Triangulate(三角化)操作的问题。

  • 修复了当通过世界大纲视图改变编辑器可见性时光源不能隐藏的问题。

  • 修复了在编辑器中手动输入旋转度有时不会产生正确的对象旋转的问题(主要是当编辑Pitch(倾斜度)时)。

  • 组件变换编辑现在可以确保仅编辑已改变的单独组件(偏转、倾斜或旋转),并确保Quat<->Rotation转换不会和最终结果掺杂在一起。

  • 修复了在编辑器中手动输入旋转度有时不会产生正确的对象旋转的问题(主要是当编辑Pitch(倾斜度)时)。

  • 组件变换编辑现在可以确保仅编辑以改变的单独组件(偏转、倾斜或旋转),并确保Quat<->Rotation转换不会和最终结果掺杂在一起。

  • 修复了Matinee编辑器预览视图视场延迟一帧的问题。(当在具有不同视场的相机间剪辑时尤其明显)

  • 修复了菜单,以便它们设置控件聚焦到实际的内容控件上,而不是封装器上。这修复了Ctrl+Tab文件选择快捷方式的问题。

  • 修复了BSP/体积上的小变换。

  • 修复在视口左下角处缺失针对mac和linux的引擎控制层的问题。

  • 修复了在基于单位的数值输入框中使用一组单位时的数值数学表达式输入问题。

  • 修复了Paper2D JSON文件不再导入为 Paper2D资源的问题。

  • 修复了在引擎关闭过程中可视化日志查看器罕见地出现崩溃的问题。

  • 修复了代理销毁后发生代理更新导致的罕见编辑器崩溃问题。

  • 修复了当通过控制台从非编辑器版本中打开碰撞分析器窗口时的渲染问题。

  • 修复了在图表编辑器中渲染图表节点弹出框(比如,下拉框)的问题。现在无论图表本身的缩放情况如何,它们以100%的比例大小进行渲染。

  • 修复了某些用户在没有安装visual studio的情况下无法创建蓝图组件的问题。

  • 修复了Mac上的标签和标签查询编辑器窗口。

  • 这些窗口的父类之前在mac上是错误的,不能点击。

  • 修复了几何体模式中的取消操作,以便可以正确地存储几何体选择状态。

  • 修复了可视化日志查看器工具,以修复我们如何仅通过键盘使用该工具。

  • 如果您导入参考姿势的骨骼比例为0的骨架网格物体,它将会输出警告。

  • 改进了用户定义的枚举值的数据表格的处理。

  • 数据表格编辑器用户界面现在通过其网格面板向您展示了枚举值的友好名称(和属性面板中显示的信息相匹配)。

  • 如果没有找到和给定名称相匹配的枚举项,数据表格导入现在将会混滚尝试使用友好的名称导入。

  • 改进了使用通配符创建了新插件后该执行何种操作的步骤。

  • 改进了当从FBX文件中导入上千个网格物体部分时的性能。

  • 改进了类通配符对话框的本地化支持。

  • 使得StartPIEGameInstance为虚函数,从而允许针对游戏的pie代码。

  • 新的游戏窗口现在默认位于屏幕中央。

  • 对于可视化日志查看器工具的柱状图做了优化。

  • 优化了将actor粘帖到包含大量actor的关卡中的处理。

  • 启用Hierarchical LOD(层次化LOD)选项现在更容易找到,可以在LODSystem类目下的'World Settings(世界设置)'中找到。

  • 改进了OpenEXR 导出器的性能。

  • 放置模式现在可以正确地在植被网格物体所占的位置上放置新的actor。

  • PR#1143: 修复了ContentWrangleCommandlet 中一些恼人的小错别字(由stephenwhittle贡献)。

  • PR#1143: 修复了ContentWrangleCommandlet 中一些恼人的小错别字(由stephenwhittle贡献)。

  • PR#1184: 修复了动画序列 'Reimport With new Source(使用新的源重新导入)'关联动作(由zoon贡献)。

  • PR#1185: 修复了动画序列重新导入不遵循导入用户界面设置的'Default Sample Rate(默认采样速率)'标志的问题。(由zoon贡献)

  • 将ULevel::BuildStreamingData编辑器的停顿时间从600ms减少为30毫秒。

  • 删除了地图检测警告”有简化的碰撞但是经过了非均匀缩放 - 碰撞创建失败“,因为无论对象是否进行非均匀缩放,都会创建碰撞形状。

  • 重命名UActorComponent 中的"Tick(更新)"类目为"Component Tick(组件更新),将Actor tick 重命名为"Actor Tick(Actor更新)",以便当二者都显示在详细信息面板中时有所区分。

  • 重新调整了窗口大小,不再会冲出贴图动态载入,导致停顿。

  • 当将一个骨架网格物体缩放为0时,暂停了一定触发。

  • 贴图不再进行压缩进行自动保存以降低保存所需的时间。

  • 颜色选择器不再使用颜色吸管工具假设从屏幕上采样的颜色进行反向伽马转换。这个改变使得sRGB成为所有采样颜色的假设空间,使得从Photoshop中采样的颜色可以产生同转换到线性空间中的颜色一样的版本,该颜色再转回到sRGB 空间中将获得和您在Photshop中一样的颜色。

  • FColor和FLinearColors现在默认为使用sRGB="true" 或false的UPROPERTY元数据标签的 sRGB空间,您可以强制默认选中sRGB复选框。

  • 现在UMG中的几个地方强制设置该默认值,因为您真正关心的采样及预览空间是 sRGB空间,因为那时UMG渲染所在的空间(在PC上),在最终渲染空间是伽马2.2的Mac机器上还需要其他额外工作。

  • 编辑器现在可以正确地将数组元素保存到ini文件中。

  • 关卡编辑器视口的Far View Plane(远视平面)设置现在可以会话之间保存。

  • Scalability(可扩展性)状态现在保存到从其加载该状态的同一.ini文件中,以便启动该编辑器不会重置游戏设置的可扩展性设置。

  • 现在当导入网格物体时,对于可以生成的静态网格物体部分的数量不再有最大限制。之前的限制为64段。

  • 更新了材质预览网格物体属性以包括Adjacency Info(邻接物信息)。

内容浏览器

  • 新增内容:在内容浏览器和角色编辑器中改进了Ctrl+B的行为。

  • 在内容浏览器中,现在Ctrl+B会激活 "Show in Folder View(在文件夹视图中显示)"命令,以允许您轻松地同步到资源的实际位置,以防您正在通过搜索或收藏夹查看它。

  • 角色动画序列浏览器中的Ctrl+B现在将激活"Find in Content Browser(在内容浏览器中查找)"命令。

  • 当角色编辑器没有任何供给定编辑模式使用的资源可用时,Ctrl+B将不再做任何操作。

  • 新增内容:  如果文件夹中有大量资源,"Move Folder Here(移动文件夹到这里)"操作现在可以废弃。

  • 自动重新导入器现在使用MD5散列发来确保当仅仅是时间戳改变了时不会发生重新导入处理。

  • 现在可以在 保存/加载 对话框中使用”显示开发者文件夹“选项。

  • 修复了在取消尝试删除只读文件的操作时仍然会从内容浏览器中删除资源的问题。

  • 修复了可以在内容浏览器中重命名或删除某些只读类型的问题。

  • 修复了内容浏览器拖拽并放置问题,以便它可以在所有视图中工作(它仅用于在平铺视图中工作)

  • 修复了Size Map(内存大小映射图)错误地在”共享的“节点中显示具有后向引用的资源的问题。

  • 如果打开了多个内容浏览器,修复了”显示收藏夹“选项出现多次的问题。

  • 修复了当编辑器正在运行过程中SCC服务商发生改变时内容浏览器资源不更新它们的SCC状态的问题。

  • 当创建您的项目副本时,本地收藏夹现在可以保存.

地貌

  • 新增内容:为地貌样条曲线控制点添加了”网格物体垂直偏移量“。

  • 和样条曲线片段网格物体设置中的旧的 ”偏移量“不同,此新属性可以沿着样条曲线混合,且不依赖于样条曲线宽度。

  • 样条曲线片段设置中的旧的”偏移量“已经重命名为了"Center Adjust(居中调整)",以便可以更精确地描述它的功能。

  • 添加了p.bUseUnifiedHeightfield控制台变量,以允许禁用PhysX标准的高度域。(这些设置默认是启用的)

  • 当启用PhysX的这个功能时,地貌碰撞厚度便不会工作,CCD是组织快速移动的刚体穿透的唯一选项。

  • 如果您想禁用PhysX 统一的高度场,那么您可以在您的 ConsoleVariables.ini文件中设置 p.bUseUnifiedHeightfield=0 。

  • 修复了在移动预览渲染关卡过程中生成地貌渲染数据发生崩溃的问题。

  • 修复了在移动预览渲染关卡过程中生成地貌渲染数据发生崩溃的问题。

  • 修复了当给’地貌代理‘分配一个材质发生崩溃的问题。

  • 修复了当使用地貌大小重新调整工具时发生崩溃的问题。

  • 修复了当同具有物理材质的地貌发生碰撞,由于保存的关卡及衍生的数据缓存中的数据不匹配,导致崩溃的问题。

  • 修复了将具有XY-偏移贴图纹理的组件移动到另一个关卡中时导致发生外部引用错误的问题。

  • 修复了地貌草再取消一次地貌描画操作后不更新的问题。

  • 修复了地貌样条曲线控制点网格物体不工作的问题。

  • 修复了地貌烘培相关的问题,既当在移动设备上或移动设备预览器上多次从编辑器中启动时不能正确地烘培编辑器会话中进行的修改。

  • 修复了由于地貌工具垃圾回收所使用的各种UObjects导致的罕见崩溃问题。

  • 修复了由于强度>1导致的平滑工具损坏问题。

  • 修复了存储在不相关关卡中的样条曲线网格物体在烘培版本中消失的问题。

  • 修复了“平滑”工具也会导致平整效果的问题。

  • 修复了地貌编辑器键盘快捷方式不工作的问题。

  • 注意:数字按键默认绑定到书签上,所以除非您取消绑定或重新绑定它们,佛祖而这些按键将不能用于在视口中切换工具。

  • 地貌碰撞厚度值发生改变时现在可以争取地传递到底层的PhysX高度场。

  • 注意,高度场厚度要求控制台变量设置p.bUseUnifiedHeightfield=0,以便可以在PhysX中产生效果。

  • 地貌工具当添加了新的图层时现在可以正确地显示图层名称。

  • 将地貌组件移动到子关卡中现在也将会正确地移动任何附加的植被。

  • 预计算可见性现在应该可以针对地貌actor进行正确的计算。

  • 正确地使得样条曲线网格物体的可导航几何体进行正确变形(由mollstam贡献)。

  • 现在不允许用户尝试使用“世界网格材质”作为地貌中可洞穴的材质。覆盖默认材质上的混合模式将会导致崩溃。

  • 取消操作现在可以正确地同 'Clear Region Selection(清除区域选择)'协同工作。

材质编辑器">材质编辑器

  • 新增内容:当在编辑器中加载使用了需要设置 Usage Flags (使用标志)的材质的关卡时,添加了地图检测警告。除非重新保存,否则材质将在烘培版本中渲染为默认材质。

  • 新增内容:在材质编辑器中为TransformPosition(变换位置)节点添加了World(世界)<->View(视图)变换。

  • 新增内容:材质编辑器现在保存节点的注释冒泡的切换状态,以便当重新打开材质时它们已经被保存下来。

  • 修复了在材质编辑器中放置Custom Output(自定义输出)材质节点发生崩溃的问题。那种节点类型应该从材质节点列表总排除。

  • 修复了将自定义材质节点同OpenGL平台上的TextureObject(贴图对象)结合使用时生成材质编译错误的问题。

  • 修复了导致库中某些材质函数尽管已经爆楼但不能在右键菜单中出现的小错误。

  • 修复了当编辑器材质参数收藏夹导致大量材质不必要地发生改变的问题。

  • 修复了当引脚连接发生改变数学节点上标题的更新问题。

  • TextureSample(贴图样本)材质节点现在可以获取正确的工具提示信息。

Matinee

  • 修复了会导致声音在回放过程中声音不会敲好在起点的问题。

  • 修复了matinee在没有音频设备的情况下运行时发生崩溃的问题。

  • 修复了matinee声音预览播放,以便它遵循循环部分并正确地重新启动。当拖拽播放时改进了音频播放的质量。

  • 当使用DebugGame二进制文件时启动视频捕获功能再次能正常工作。

  • 当有一个激活的Play in Editor(在编辑器中运行)或Simulate(模拟)会话时,Matinee不会再打开,因为在播放会话过程中修改matinee是不安全的。

  • 在关闭Matinee模式之前切换编辑器模式将会产生警告。

Cascade

  • 所有粒子模块都将其分布属性重置为了它们正确的默认值,而不是 'None'。

  • 修复了当粒子系统配置为Distribution Vector Uniform Curve(分布向量均匀曲线)时设置粒子系统初始速度为默认值产生崩溃的问题。

  • 网格物体粒子现在可以在Cascade中争取地填充动态参数名称。

  • 网格物体粒子现在可以在Cascade中争取地填充动态参数名称。

Persona(角色编辑器)

  • 新增内容:为蒙太奇向角色片段面板中添加了关键帧手柄,以便删除关键帧现在可以正常工作。

  • 修复了删除动画通知的关联菜单选项不能在某些平台上正确删除通知的问题。

  • 修复了编译动画蓝图事件图表中引用的蓝图后重新实例化角色编辑器预览实例出现崩溃的问题。

  • 修复了当再激活风源actor的情况下在编辑模式之间切换发生崩溃的问题。

  • 修复了混合空间样本坐标的输入用户界面中的问题,既Y坐标不能设置为和X坐标一样。

  • 修复了当文件路径中存在非-ANSI字符时APEX布料文件无法导入的问题。

  • 修复了当使用单独关键帧重定向动画时在动画压缩中发生崩溃的问题。

  • 修复了在角色编辑器中访问旧的预览实例时发生崩溃的问题,现在当蓝图改变时我们重新正确地初始化了该动画。

  • 修复了当在角色编辑器中取消删除操作或者有重复的状态节点时发生崩溃的缺陷。

  • 修复了当在状态机变换的自定义混合图表中取消一个修改时发生崩溃的问题。

  • 修复了在智能名称管理器中删除名称后仍然存在的问题。

  • 修复了复制骨骼节点的源骨骼及目标骨骼在详细信息面板中的顺序,使它们更直观。

  • 修复了从任何UObject激活的任何属性编辑事件触发的用户界面刷新的问题。现在会过滤仅当通知数据修改了时才刷新。

PhAT

  • 修复了当在PhAT中修改网格物体渲染模式后直到第二次更新之前视口不更新的问题。

  • 修复了由于可以选择不存在的骨骼导致PhAT编辑器崩溃的问题。

世界大纲视图

  • 新增内容:修改了关卡浏览器中的关卡名称工具提示信息,以显示完整的包路径名称。

静态网格物体编辑器

  • 新增内容:添加了手动推进静态网格物体对象的边界的功能。

  • 边界现在可以通过修改静态网格物体的 PositiveBoundsExtension 和 NegativeBoundsExtension属性进行修改。

  • 新增内容:静态网格物体邻接缓冲生成现在基于每个网格物体设置。可以通过网格物体编辑器或在导入时控制。

  • 这之前是由内部的固定三角限制控制的,但是需要可选地在高多边形网格物体上允许PN多边形细分。

  • 对于保持现有行为的旧网格物体,该标志将会自动设置。

源码控制

  • 新增内容:为高级项目设置页面添加了使得文件可写按钮,这使得当文件是不可写状态及没有连接到源码控制时可以编辑文件。

  • 新增内容:一旦资源变成可写(如果它没有迁出),当它被修改时它将不会继续提示用户迁出。

  • 修复了当使用SVN或Git作为SCC提供商时无法使用收藏夹的问题。

  • 修复了Subversion源码控制插件,来根据平台识别正确的行终止符序列。之前这会在Mac上破坏日志输出。

  • Subversion源码控制提供商现在可以使用它所在的系统默认svn二进制文件。

  • 这解决了用户具有通过不同SVN获得的到我们发行的客服端二进制文件的库及迁出这些文件的问题。现在,我们尝试找到一个系统级别的svn二进制文件,仅使用已发行的二进制文件作为回滚。

世界浏览器

  • 新增内容:LOD子级别生成具有针对材质简化的多个选项(贴图大小、常量材质参数)。

  • 修复了如果用户选择一个隐藏的平铺块,世界构成将迷你地图视图滚动到一个未定义的位置处的情形。

  • 已修复: 当从World Machine(世界机器)中导入平铺的地貌时X轴的朝向。

  • LOD子级别生成的‘Bake Grass(烘培草)’选项现在将正确地烘培所有地貌表面上的草。

  • 世界构成现在会增量地更新子关卡平铺图片,防止当大量平铺块需要同时更新时大编辑器停顿的问题。

植被

  • 新增内容:为HierarchicalInstancedStaticMeshComponent添加了批量植被实例删除蓝图函数。

  • RemoveInstances取入一个实例索引数组。

  • 它可以直接使用传入到新的FoliageInstancedStaticMeshComponent OnInstanceTakeRadialDamage事件的实例数组来删除所有受损的实例。

  • 新增内容:为植被实例添加了蓝图支持。

  • 植被组件类现在可以在Foliage Type(植被类型)中覆盖。

  • 用户可以创建对Hit(碰撞)或Damage(伤害)作出反应的FoliageInstancedStaticMeshComponent 的蓝图子类,及在实例所在位置隐藏或删除实例、生成特效、生成真正的Actor等。

  • 默认类是FoliageInstancedStaticMeshComponent,它是HierarchicalInstancedStaticMeshComponent 的子类,但是已经添加了Point(点伤害)及Radial Damage(径向伤害)支持。

  • 新增内容:为FBX导出添加了针对实例化网格物体组件的支持。

  • 新增内容:植被描画现在总是尝试通过过滤后的几何体进行描画。比如,当静态网格物体过滤出后,植被将仍然可以在静态网格物体地下的地貌上描画。

  • 新增内容:我们不再尝试使用比例0为InstancedStaticMeshComponent (比如植被)实例创建物理数据,这删除了一些PhysX警告并改进了性能。

  • 为地图检测警告添加了一个关于重复的实例植被Actor的按钮,以允许您合并它们。

  • 植被现在可以正确地在由层次化实例网格物体组件构成的Actor上生成。

  • 运行程序化植被模拟现在将仅标记真正受模拟影响的子关卡为已修改状态。

  • 当鼠标悬停到植被编辑器的缩略图中时将会正确地更新。

  • 我们不再尝试使用比例0为InstancedStaticMeshComponent (比如植被)实例创建物理数据,这删除了一些PhysX警告并改进了性能。

烘焙器

  • 新增内容:一般烘培性能优化

  • 新增内容:多线程烘培现在位于UnrealFrontend自定义概述文件中。

  • 新增内容:新的烘培统计数据系统提供了更多的详细的 ddc /包 统计数据。这些统计数据保存到<project>\Saved\Stats\目录中。

  • 新增内容:优化了保存包处理,改善了烘培时间。

  • 新增内容:在烘培器中保存及缓存包的性能得到改进。

  • 烘培可下载内容时不再包含资源库中基本游戏中的资源。

  • 修复了当烘培时偶尔发生崩溃的问题,既具有不匹配贴图采样器类型绑定的材质会尝试在烘培过程中查找UEnum并触发check()。

  • 修复了当使用-iterate时资源库过期的问题。

  • 修复了当重新编译着色器时在运行过程中烘培时发生崩溃的问题。

  • 修复了当在通过LaunchOn运行一个版本过程中打包该版本失败的问题。

  • 修复了在筹划过程中缺失PS4 x64dll文件(平板电脑/morpheus)和 .uplugins的问题。

  • 修复了仅当从编辑器中打包项目过程中会呈现的各种问题。

游戏框架

  • 新增内容:现在蓝图中提供了一个类似Create Player(创建玩家)的Remove Player(删除玩家)处理。

  • 新增内容:AActor::bPendingKillPending重命名为bActorIsBeingDestroyed,并使其成为私有。

  • 新增内容:为CharacterMovementComponent添加了"BrakingFriction",并且可以通过"bUseSeparateBrakingFriction" 设置选择性地启用。

  • 之前GroundFriction也作为刹车摩擦力。这个新设置使得可以允许源自影响转弯控制的GroundFriction 的单独控制。

  • 添加了 "BrakingFrictionFactor",这控制了ApplyVelocityBraking()中使用多大的摩擦力。(注意:由于历史原因,该值默认为2,但是值为1会更接近匹配实际的阻力公式)。

  • 不同值通过挂钩到OnMovementModeChanged中可以轻松地在不同的运动模式中使用,并且会修改BrakingFriction(刹车摩擦力)。

  • 新增内容:为AbilitySystemComponent添加了AbilityEndedCallbacks 代理,当一个功能结束时会广播该代理。

  • 新增内容:添加了一个自动化测试,该测试将尝试新项目的各种变化。(针对移动设备和台式机的IE C++、蓝图及目标平台)

  • 新增内容:添加了一个自动化测试,该测试将解析并验证所有可用的特色包。

  • 新增内容:添加了一个调试命令("p.VisualizeMovement"),已显示包含当前速度及加速度的CharacterMovementComponent 在世界中的调试描画。

  • virtual UCharacterMovementComponent::VisualizeMovement()可以在子类中覆盖,以添加针对特定项目的调试描画函数。

  • 新增内容:添加了GetServerWorldTimeSeconds() 以返回服务器的模拟时间。这在服务器或客户端上调用都是安全的。

  • 新增内容:为噪音参数添加了MaxRange(最大范围)和一个标签 (FName),用于AI听觉。

  • MaxRange仅当> 0时使用。它由响度修改(乘数)。Sensor(感应器)也必须传入它们自己的范围检测。

  • 新增内容:为KismetMathLibrary添加了新的数学函数。

  • RandomUnitVectorInConeWithYawAndPitch在一个由给定Yaw(偏转)和Pitch(倾斜)值定义的锥角内创建均匀分布的随机向量。

  • CreateVectorFromYawPitch,根据给定Yaw(偏转)和Pitch(倾斜)旋转度值创建一个向量。

  • GetYawPitchFromVector,从给定向量中获得Yaw(偏转)和Pitch(倾斜)旋转度值,以度数为单位。

  • 新增内容:为MoveToLocation AbilityTask添加了可选的插值曲线,以支持基于每个坐标轴的插值。

  • 新增内容:向GameplayCueInterface中添加了ShouldAcceptGameplayCue()函数,以允许actor在特定情况下从接收到的游戏线索中进行选择。

  • 新增内容:添加了蓝图函数 GetSupportedFullscreenResolutions,它获得所支持的全屏分辨率的列表。

  • 新增内容:现在可以绑定鼠标滚轮,不仅可以上下滚动,还可以作为在鼠标中轮位置处返回间隔变化的一个坐标轴。

  • 新增内容:碰撞现在支持新的"PhysicsOnly" 选项。这些对象将仅在模拟的物理场景中使用,而不在查询场景中使用。

  • 添加了ECollisionEnabled::PhysicsOnly选项,以完成所有选项NoCollision、QueryOnly、PhysicsOnly、QueryAndPhysics。

  • 可以用于像披风及头发这样的用户可能不想让场景查询考虑的事物。

  • 新增内容:可以在蓝图中获得关卡命名的便利函数。

  • 新增内容:暴露了UPrimitiveComponent::CharacterCanStepUpOn 变量和UPrimitiveComponent::CharacterCanStepUp()函数给蓝图。

  • 同时改进了关于这些内容的注释/文档,以指出当碰到对象时它将仅是阻止走进,不能在它们上面行走(要想行走,可以使用可行走的斜坡覆盖)。

  • 新增内容:暴露了一些向量:针对蓝图的整型值算数方法

  • 新增内容:修复了在构建脚本期间从DestructibleComponent 上调用SetMaterial导致编辑器崩溃的问题。

  • 新增内容:Gameplay Cues 现在可以通过GameplayCueSets指定。类可以实现IGameplayCueInterface 来返回一个GameplayCueSet 进行使用,而不是使用全局集合。

  • 新增内容:Gameplay Cues 现在可以通过GameplayCueSets指定。类可以实现IGameplayCueInterface 来返回一个GameplayCueSet 进行使用,而不是使用全局集合。

  • 新增内容:性能:优化了在横扫运动过程中的重叠检测。当处于重叠时会降低横扫运动大约10%甚至更大的性能消耗(由场景复杂度决定)。

  • 在结束处的重叠现在根据同在扫过过程中发现的单独候选目标进行测试计算,而不是使用UpdateOverlaps()中的全景查询。

  • 只要旋转是对称的,选择中的改变仍然允许缓存重叠(也就是不会改变重叠情况)。

  • UpdateOverlaps()现在当完成对根组件的处理后会避免任何针对子组件的处理。这使得优化更简单,子项不管怎样都将会测试父项。

  • 新增内容:修改了特色包解析代码。特色包现在可以通过验证文件进行解析,这使得不必打包所有特色包。

  • 这用于实现模板中现在所使用的共享资源应用的特色包。

  • 新增内容:角色运动的模拟代理的网络校正进行平滑旋转。

  • 新增内容:Spawn Actor可以正确地接受Scale。

  • 由此,我们添加了SpawnActor来接受FTransform 作为输入。

  • 新增内容:默认物理体积类现在可以通过World Settings(世界设置)属性进行设置。

  • 新增内容:当正在上传的动态载入关卡时,所有对象现在标记为延迟销毁,以避免任何对这些对象的偏离引用可能会妨碍该关卡被垃圾回收。

  • 新增内容:现在您可以绑定任何按键。这将会对任何按键 按下/释放 事件作出相应,并且其性能消耗同其他按键所尊需的规则一样。

  • 新增内容:现在您可以绑定任何按键。这将会对任何按键 按下/释放 事件作出响应,并且其性能消耗同其他按键所尊需的规则一样。

  • 当使用无缝变换时“总是加载的”子关卡现在将会在游戏开始前完全加载。

  • 当在变换而不是发生崩溃时,会在关闭该应用程序之后显示关于加载默认地图失败的友好信息。

  • AActor::bPendingKillPending重命名为bActorIsBeingDestroyed,并使其成为私有。

  • BeginPlay 将不会在从另一个关卡进行无缝变换的组件上调用。

  • 即便之前的物理体积不为null,也会广播PhysicsVolumeChangedDelegate。

  • 修复了计时器在设置后立即停止的问题。

  • 如果Ability Spec的Primary Instance上存在CanActivateAbility ,那么调用TryActiveAbility时现在将会调用CanActivateAbility 。(如果没有,我们将继续实行之前实现,既它将在CDO上调用CanActivateAbility。)

  • 在SceneComponent和PrimitiveComponent中修改FQuat公差,以允许较小的旋转度改变通过。

  • 将KismetMathLibrary 函数 PointsAreCoplanar, LinePlaneIntersection, and LinePlaneIntersection_OriginNormal改为BlueprintPure。

  • 组件附加物现在可以正确地复制到客户端。

  • 控制台命令ServerTravel现在可以传递参数到地图。

  • 修复了角色不围绕基本对象旋转的问题,既在游戏中以非常高的帧速率以非常低的旋转速率运行。Quat(四元)比较公差太严格。

  • 修复了如果在PIE会话过程中您已经迁移到或重新启动了正在编辑的关卡,退出“在编辑器中运行”时会发生崩溃的问题。

  • 修复了当指定作为玩家音频监听器组件的组件已经被销毁后发生崩溃的问题。

  • 修复了如果Sound Mix(混音)弹入到同一帧中无法推送混音的问题。

  • 修复了当在多玩家PIE中尝试无缝变换时使用PIE前缀地图名称的问题。

  • 修复了当在游戏中启用了Show Collision(显示碰撞)后在PIE上发生崩溃的问题。

  • 修复了为超级搜索注册的特色包相关的问题,既可能导致多次注册,然后会导致产生警告。

  • 修复了当尝试插值回到原始视图目标时相机跳跃的问题(PR#1215, 感谢 ArCorvus!)

  • 修复了CameraModifier混合问题,既发生混合时间长于1秒的情况。

  • 修复了 Character::CanJump()事件,不会再蓝图事件菜单中显示为可覆盖。

  • 修复了当将一个具有原生子组件的实例化组件添加到具有蓝图创建的根组件的actor时发生崩溃的问题。

  • 修复了当保存了一个具有不存在的类的WorldSettings对象的地图后,当加载该地图发生崩溃的问题。

  • 修复了当重叠事件(由bGenerateOverlaps 触发或者修改碰撞设置)销毁组件或导致其他重叠结束时发生崩溃的问题。

  • 修复了在更新后续轨迹过程中出现Matinee事件暂停Matinee序列时可能导致崩溃的问题。

  • 修复了由于从调用K2_OnEndAbility的函数中再次调用了EndAbility,导致EndAbility 无法再进入到安全状态的问题。

  • 修复了相机抖动在非本地游玩空间无法工作的问题。

  • 修复了GameMode 中的日志信息会潜在地输出具有错误类名称的误导消息的问题。(PR#1319, 感谢slonopotamus!)

  • 修复了由于没有更新ProceduralMeshComponent的网格物体的边界,而无法为其创建导航网格物体的问题。

  • 修复使得复制到网络代理的NavWalking运动模式为Custom(自定义)运动。

  • 修复了对组件插值中一次性倒退的行为。

  • 修复了物理体积中首次发生改变时物理体积改变通知不能正常工作的问题。

  • GameplayEffects在客户端预测的激活特效的剩余时间上有更高的粒度。

  • 改进了actor上设置 位置/旋转度/变换 函数的注释,尤其针对bSweep和bTeleport进行了改进。

  • 当网络角色代理停止时,插值模拟的位置变得更快。减少了超过结束位置的视觉效果过量的情况。

  • 通过键盘或动作事件进行的按键绑定现在作为已经消耗了该事件对待,即时这帧没有按下按键或释放按键也是如此,从而防止低优先级输入组件中使用那个按键的坐标轴在另一帧变为激活状态。

  • 使得 UCharacterMovementComponent::GroundMovementMode 为私有,并提供了Get/Set方法。

  • 强制使得GroundMovementMode要么是Walking ,要么是NavWalking。

  • 如果当前是一种不同的地面行走模式,Set方法将会切换运动模式。

  • 清理了Pack/UnpackNetworkMovementMode() 中的常量,并确保了我们仅具有有效的地面模式(Walking 或NavWalking)

  • 明确MoveIgnoreActors不应用于物理模拟中的运动。

  • 使得一些有用的CameraShake(相机抖动)实例变量为公开及蓝图可访问状态。同时添加了UCameraAnimInst::SetScale()。

  • 确保网络往返后客户端和服务器以相同的加速度执行运动。减少累积的客户端位置误差。

  • 将 bTeleport标记表示为蓝图的AdvancedDisplay,在这些地方对bSweep标志也会进行如此处理。

  • 编辑器中胶囊体组件半径或一半高度不再允许为负值。

  • 如果Pawn的Tick函数将bStartWithTickEnabled设置为false,那么当pawn处于占有状态时将不再更新。

  • 性能:如果没有任何修改Controller::SetControlRotation()将不会工作。

  • PlayerCameraManager 在DefaultModifiers数组的空元素上会发生崩溃。

  • 如果Pawn还没有从服务器上进行复制,PlayerController则使用可靠的RPC来要求从服务器重新发送该Pawn。之前这是一个不可靠的调用,所以它并不总是工作。

  • 改进了组件bPauseOnImpact插值上的注释,以更好地反应功能。

  • SceneComponent AttachChildren数组现在可以复制,以便它和AttachParents一致。

  • UPrimitiveComponent 上的SetCullDistance现在可以接收0作为合理距离。距离为0意味着该图元在任何距离都不会被剔除。

  • 自动化线性测试的数据错误,导致假失败。

  • 当时间轴组件没有激活时将不再执行它们的更新。

  • 如果鼠标没有直接位于视口上方,我们将不再忽略APlayerController::GetHitResultAtScreenPosition中的碰撞测试。无论鼠标状态如何都可以使用那个函数,以便这个逻辑可以移动到其他地方。

  • 当变换关卡时,将不会再尝试针对由另一个Actor的EndPlay调用销毁的Actor执行EndPlay。

  • 现在您可以设置GameMode HUD类为none。

学习资源

文档

  • 改进了AddYawInput和AddControllerYawInput等的文档,以指出所应用的比例值。

  • 改进了关于MovementComponent 和 FloatingPawnMovement的文档,以指出碰撞是完全依赖于UpdatedComponent (一般是根组件)的。

示例内容

  • 修复了用户界面图标在示例内容中不呈现的问题。

本地化

  • 新增内容:添加了游戏本土文化设置,以控制为游戏资源加载哪种文化的本地化数据。游戏资源在编辑器中现在显示特定文化的本地化数据。

  • 新增内容:在编辑器中添加了直接应用本地化服务的支持。允许您上传及下载翻译文本到在线服务处进行本地化。允许针对特定本地化服务提供商的插件(OneSky等)。同时为Onesky创建了首个本地化服务插件。

  • 新增内容:当导出时添加了本地化存档项的源本地化信息作为PO文件中的“提取注释”。

  • 新增内容:文化名称现在一致地使用连字符,而不是下划线。但具有下划线的文化名称仍然可以接受。

  • 新增内容:首次提供Onesky插件:使用Onesky按钮扩展了本地化控制板的工具条,提供了按钮 "从OneSky导入所有 文化语言/目标" 及"导出所有 文化语言/目标 到OneSky"

  • 新增内容:修复了在某些像发行这样的配置中实时切换文化语言的问题。在所有配置中都可以在命令行上应用 "-culture=" 开关。

  • 新增内容:外文存档现在可以生成本土文化源的本土翻译,就像它是本土源一样 - 结果便是本土翻译也会在外国文化语言中进行翻译。本地化资源现在使用原生源的原生翻译,就像它是原生源一样,尤其时当从存档中查找外文翻译时, - 结果便是原生源将使用它。

  • 修复了本地化配置脚本中的GatherTextFromSource步骤中受到损坏的SourceFileSearchFilters 设置的遗留支持

  • 修复了磁盘根路径的控制面板处理而不是编辑器的当前磁盘。

  • 修复了在“编辑器偏好设置...”中“地区&语言”页面选择针对汉语和葡萄牙语的语言及区域的问题。

  • 修复了翻译编辑器中的非功能性PO 导入/导出 按钮。

  • 如果源码控制已启用但文件不存在于磁盘上,本地化命令行JSON文件写入不再失败。

  • 本地化控制板现在适当地添加了本土文化设置以生成本地化配置脚本。

  • 搜索获取本地化元数据时如果没有匹配本地化所期望的数据,则倾向于对元数据的本地修改。

  • 如果"ShouldGatherEditorOnlyData" 设置为false,则蓝图中组件的类目名称不会再收集进行本地化。

  • 更新了用于从资源收集文本的命令行开关中的逻辑,之前如果没有加载文件会错误地报告没有收集任何内容。新的报告更加准确,指出了找到任何要处理的包,而不是是否需要加载并以延迟的形式处理。

网络

  • 新增内容:如果一个actor尝试发送一个 非-多播  远程函数但是没有连接,那么将会向输出日志输出一条警告。

  • 新增内容:在调用TickCharacterPose() 函数前添加了一个检测来判断该角色是否处于延迟销毁状态,因为角色可以标记为PerformMovement(执行运动)后销毁。

  • 新增内容:添加了文件NetConstants.h,它存放了MAX_PACKET_SIZE,可以修改该值来更新MTU。将MTU从512改为1000。

  • 新增内容:向AssertionMacros.h文件中添加了宏CLOSE_CONNECTION_DUE_TO_SECURITY_VIOLATION,该宏可以关闭连接,可以将其记录到日志中,并且它可以向客户端提供调试字符串。

  • 新增内容:为PackageMapClient添加了一个缩放组件,现在使用1位检测是否已经序列化了位置、旋转度、缩放比例及速度。

  • 新增内容:添加了以压缩格式保存json文件的功能。

  • 新增内容:添加了通过元标签搜索录像的功能。

  • 新增内容:添加了跟踪哪个用户在录像中的功能。

  • 新增内容:添加了查看最近观看过的录像的功能。

  • 新增内容:向EngineLogs.h中添加了LogRep and LogRepTraffic,并修改了一些UE_LOG函数调用以使用新日志。

  • 新增内容:添加了NMT_SecurityViolation,在这里服务器传入一个调试字符串给客户端来通知它们连接断开。

  • 新增内容:为引擎添加了当玩家加入进程时通知录像动态载入服务的支持。

  • 新增内容:添加了查找您所参与的录像回放的功能。

  • 新增内容:添加了包处理器架构,这允许传输包,包括加密、压缩传输并具有可靠性。

  • 新增内容: 添加了第三方库CryptoPP到第三方源目录中。

  • 新增内容:添加了UE_SECURITY_LOG到AssertionMacros.h,它会登记安全事件。

  • 新增内容:将InMaxPacket与MAX DEMO READ WRITE BUFFER作对比,而非与DemoNetDriver.cpp的MAX PACKET SIZE做对比

  • 新增内容:将InMaxPacket与MAX DEMO READ WRITE BUFFER作对比,而非与DemoNetDriver.cpp的MAX PACKET SIZE做对比

  • 新增内容:对使用CryptoPP库和Packet Handler系统的Handler组件进行加密以对数据包加密

  • 新增内容:修复在没有任何动态载入信息时上一检查点不载入的问题

  • 新增内容:融合到git申请,它复制了APlayerController::SpawnLocation

  • 新增内容:通过更大地压缩复制位置、速度和旋转值来最高降低15%甚至更多的带宽使用。

  • 您在项目中看到的带宽结余量将会根据actor移动的复制量而不同。

  • 这样可以略微降低这些值的准确度,但不应在大多数情况下造成可注意到的失真现象。 压缩的程序可以在类默认值中的"Replication(复制)"部分中进行配置,以备更高程度的压缩所需。

  • 对位置和速度使用"Round Two Decimals(两轮小数)" ,对旋转使用"Short Components(短组件)"将等同于4.8中使用的精度。

  • 新增内容:UNetConnection具有新的GetWorld函数。 它会尝试从所属的网络驱动器中获取世界信息以及所属的actor。

  • 添加#IF_WITH_EDITOR代码保护以移除PIE中衍生GetNetMode的代码。

  • 重新添加网络版本历史枚举以修复上一次提交出现的问题

  • 对传递到InitConnection的MaxPacketSize添加NetConnection中的检查

  • 添加AttemptDeriveFromPlayInSettings附近的代码保护,而非位于函数内,这样它不会在发布的版本中进行编译

  • 添加多个变更以停止在bReplicateMovement为false情况下对客户端的复制

  • 在调用actor的预复制时,添加组件的预复制

  • 添加了两个函数,在NetDriver为空的情况下,它们会尝试从其他数据中剥离NetMode

  • 取消变更列表

  • 把MTU从1000变更回512,因为MTU变更的讨论仍在进行

  • 变更PackageMapClient.cpp中的序列号,以使得序列化规则更为统一。

  • 变更FActorOnChannelSpawn为来自一个参数的两个参数

  • 变更来自一个参数的FOnActorChannelSpawn为来自两个参数

  • 变更来自两个参数的FOnReplicatedActorSpawn为来自一个参数

  • 当我们在实行更好的长期修复时,禁用单进程PIE的无缝转换

  • 修复当在回放中拖曳时可能造成的崩溃问题

  • 修复时间膨胀在回放时错误影响游戏手柄的bug

  • 修复在修改动态载入命令下达后,回放动态载入失败时可能产生的崩溃问题

  • 修复在查看在线回放时可能产生的崩溃问题。

  • 修复在一些情况下开始记录网络文档时产生的崩溃。

  • 修复可能造成网络游戏客户端无法在烘焙的版本中载入资源的罕见bug。

  • 修复在网络客户端加入游戏时可能发生的罕见崩溃问题。

  • 修复在载入的贴图的链接包含超过255个字符时,引擎生成错误的网络文件的问题。

  • 修复演示网络驱动器为空闲状态太久时可能出现的崩溃问题。

  • 修复网络文件中复制函数所报告的大小。 参数部分的一些错误设置现在已经根据头文件部分进行了正确的设置。

  • 在首次连接时,对在线回放超时的问题进行处理。

  • 同一项目的多个运行实例现在可以同时记录网络文件。

  • PR 1234: 添加了与声音相关的导出项到NetConnection.h

  • 移除了NetConstants.h并添加了MTU变更内容到CoreNet.h

  • 报告了回放的动态载入程序的错误并在其失败时终止了演示

  • 在World.cpp中特殊示例PIE的专用服务器或没有服务器的客户端

  • 当无缝转换复制世界数据以确保其总是会被销毁时,回放的演示网络驱动器会被销毁。

  • 不再在专用服务器上生成粒子系统组件,从而同时降低内存和性能表现的性能消耗。

  • 在查看回放时,在更新间的角色平滑将会变得更加平滑。

  • 当您拖动回放时,它会继续跟从初始的视图对象。

在线

  • 新增内容:BuildPatchServices - 改进在运行安装程序时检测已存安装项的逻辑

  • 新增内容:BuildPatchServices: 添加对块匹配的SHA1确认的支持,这样生成时就无须载入已存的块

  • 新增内容:BuildPatchServices: 通过manifest接口来暴露版本中的文件列表

  • 新增内容:BuildPatchServices: 补丁生成现在会使用已存的CPU核心来改进处理速度

  • Steam上玩家的存在状态现在应该能显示其实际状态,而非连接到游戏所需的字符串。

  • BuildPatchServices: 修复在继续打补丁时检测先前的移动的问题。

  • BuildPatchServices: 修复在文件API不进行文件处理的搜寻处继续对一些平台进行安装的问题。

  • BuildPatchServices: 修复无法进行取消时的确认环节问题

  • BuildPatchServices: 修复不正确的错误字符串生成问题

  • BuildPatchServices: 修复补丁生成时潜在的云端枚举锁死问题

  • BuildPatchServices: 优化安装程序属性设置逻辑,并对此阶段改善报告的进度信息

  • BuildPatchServices: 删除对辅助函数FPaths::FileExists的使用,它并不是在所有平台上都能使用

  • 修复XMPP MUC成员函数,以使其正确生成。

  • 修复当在同一帧尝试多次保存Steam成就时可能会导致Stream任务无法执行的罕见问题。

其它

  • 新增内容:添加通用的动态控制器的按键抽象值

  • 这样可以让多个物理设备(例如,左右手控制器)发送到引擎中的单人玩家处。

  • 新的动态控制器输入指定了使用的是哪只手(例如,动态控制器(L)握把1)

  • 新增内容:添加了渲染数组到贴图maxscript,它可用于在给定特定数据格式时烘焙虚幻蓝图的贴图。

  • 新增内容:添加对Gear VR的可用性检查,这可以让开发者确认他们的app已经通过Oculus store进行了购买。

  • 新增内容:添加了函数来获取并设置来自蓝图中的世界为米制。

  • 新增内容:添加了动作控制器组件,您可以将其添加到任意actor,并且可以设置其位置和方向为该玩家的动态控制器的位置和方向。

  • 新增内容:创建了iOS的Flurry分析插件

  • 新增内容:对控制台的改进

  • 现在可以对控制台命令进行搜索。 如需搜索,首先使用"?",加上由空格隔开的搜索关键字。 例如,如果您需要搜索同时包含foo和bar的命令,您可以输入"? foo bar"。

  • 自动完成功能已经进行了更新,这样它可以在您输入参数到命令时显示匹配项。

  • 新增内容:Leap Motion控制器现在支持HMD模式,以及图像的转换。

  • 新增内容:多路广播(广播)分析模块现在是一个使用起来更方便的插件

  • 新增内容:更新了引擎代码以支持Oculus 0.7 SDK。 当运行为公开状态时,引擎将会使用0.7版本来进行补丁修复。

  • 新增内容:更新Gear VR支持以使用0.6.0移动平台SDK。

  • 添加对话框以在载入插件描述文件出现问题时警告用户

  • 导出SteamVR函数库,以供在通过C++来与SteamVR相连接的项目中使用

  • 修复Oculus插件强制在每帧进行帧同步的问题。 引擎现在会允许一帧的缓冲时间

  • 修复当具有视口的编辑器选项卡可见时不显示VR PIE的问题。

  • 修复在其它选项卡为打开状态时,VR预览偶尔会变黑的问题。

  • 修复当跨多屏幕进行拉伸时,网络浏览器控件的内容无法正确显示的bug。

  • 修复在Oculus服务运行时,但没有设备插入时产生的崩溃。

  • 修复可链接的元素类型的注释,这样编辑器可以在选择类型时显示正确的工具提示。

  • 修复示例环境碰撞来确保关卡中的一致的计算结果。

  • 修复在ES2/向上的渲染时,后期处理没有在立体效果中进行正确渲染所产生的问题

  • 修复Leap Motion手部动作的颤动问题。

  • 整合Mac /使用Oculus的Open GL虚拟显示通道的问题修复

  • 自定义礼物现在可以与Open GL RHI共同运行

  • 设备现在会在暂停时进行更新

  • 重命名"Desktop"目标平台为"AllDesktop",以终止与桌面目录的冲突。

  • 设置HMDs的默认帧缓存为1帧,以支持基于编排者的渲染。 这样就修复了4.8版本中的问题,在其中非Oculus设备会产生延迟。

Paper2D

  • 新增内容:显示一种方式来设置平铺贴图和平铺图层的碰撞厚度/偏移,并添加一种RebuildCollision方式以供在SetTile调用后使用。

  • 新增内容:平铺图层:变更平铺图层的默认碰撞域从无到三维

  • 注意:碰撞必须仍逐层在平铺设置编辑器中进行,从而让任意实际碰撞几何体得以生成

  • 变更Paper2D组件的资源设置方式,以使用AreDynamicDataChangesAllowed,让具有Movable=Static组件的资源能够在构建脚本中进行更新。

  • 修复在对包含了放置的平铺贴图组件或分组的平面粒子组件的贴图构建光照时产生的崩溃问题。

  • 修复在二维地貌样条曲线的体元素没有碰撞所产生的问题。

  • 修复平面粒子片无法被重新导入到从旧有版本中转换的项目时产生的问题。

  • 修复Paper2D资源和静态网格物体的顶点颜色间不一致的问题

  • 所有的平面粒子颜色现在都作为线性空间中所定义的那样进行处理,已存的资源将会在载入时进行转换。

物理

  • 新增内容:添加GetPhysicsLinearVelocityAtPoint、SetCenterOfMass、SetMassOverrideInKg、 GetClosestPointOnCollision到PrimitiveComponent

  • 同时允许对PrintString & PrintText函数定义间隔 *#git author tk-master

  • 新增内容:添加对关闭默认基于每个多边形的复杂碰撞的项目设置

  • 新增内容:添加GetMassScale函数到PrimitiveComponent并将其暴露到蓝图

  • 新增内容:添加SetIgnoreMoveInput 和 SetIgnoreLookInput函数到PlayerController

  • 这些函数会重置移动或查看忽略标识为其默认值

  • 新增内容:添加SetPlaneConstraintEnabled函数到MovementComponent并将其暴露到蓝图

  • 新增内容:新增了对并行混合物理行为的支持。

  • 新增内容:添加了对融合复杂碰撞的支持。 这意味着我们现在支持对每个BodySetup的多个三角形网格物体

  • 新增内容:添加创建物理材质类型的蓝图变量的能力

  • 新增内容:添加PhAT中的时间膨胀

  • 新增内容:显示GetCollisionObjectType 和 GetCollisionResponseToChannel到蓝图

  • 新增内容:暴露骨架网格物体的马达控制到蓝图

  • 新增内容:暴露传送标识到移动节点和函数。 这使得能更方便地控制被移动对象的速度和碰撞

  • 新增内容:暴露UpdateJointsFromAnimation到PhAT。 这样可以更方便地调整动画驱动的马达。

  • 新增内容:修复未对非均匀缩放的对象进行描画的碰撞形状。

  • 新增内容:增大默认的最大角速度为每秒10转。

  • 新增内容:导入可供用户挂钩的休眠和苏醒事件。 这样您可以在物理模拟苏醒或对象休眠时进行回调。

  • 新增内容:现在在移动平台上支持子步进物理行为。

  • 新增内容:具有负值的三角形网格物体不再需要单独的烘焙网格物体。 这样可以节省内存和动态载入时间。

  • 新增内容:默认启用约束射弹并将其值设为合理值。

  • 自动凸面生成现在会在禁用碰撞的情况下忽略该区域(该建议来自@ManOfLode)

  • 对实例变更PhysicalMaterial覆盖现在会正确更新多种属性

  • 修复URadialForceComponent的bIgnoreOwningActor选项无法对受力正常运行的问题。

  • 修复bReturnPhysMat不遵从高度域的问题。 同时确认在没有填入init Hit.FaceIndex时将其填入INDEX_NONE。

  • 当没有传递组件到组件重叠组件时,修复崩溃的问题。

  • 修复在使用启用了布料的PN三角形细分的材质时产生的崩溃问题。

  • 修复在包含了相同布料资源的世界间变换时产生的布料崩溃问题。

  • 修复了在任何部分都不具有碰撞时的自动凸面工具中的崩溃问题,并简化了状态信息。

  • 修复了当在启用了次步进的世界间变换时的可破坏组件的崩溃问题。

  • 修复了在不可见时,可破坏网格物体根组块变换没有进行正确更新的问题,这导致了渲染网格物体从块的实际位置处的偏移。

  • 修复了由于不正确的根骨骼变换而造成的烘焙版本中的可破坏网格物体的闪烁问题。

  • 修复即使不存在源时,风力也被应用到APEX布料的问题。

  • 修复即使不存在源时,风力也被应用到APEX布料的问题。

  • 更新到最终的PhysX 3.3.3(之前我们有个预览版本)修复了在其更新说明中找到的多个问题。

平台

  • 新增内容:当用户尝试对不具有二进制版本的游戏进行打包时,会显示一条明显的信息。

  • 新增内容:添加对每个平台可选的打包黑名单和编译配置的支持

  • 在配置为开发或发布处,在[Project]/Build/[Platform] called PakBlacklist-[Config].txt中创建一个文本文件

  • 对每个阶段的文件都进行检查,以了解起始处是否与文件中的任意行匹配,如果是的话,则跳过。 检查日志以了解不包含的文件的列表。

  • 新增内容:新的事件状态现在对使用pthreads应用的平台进行启用。

  • 新增内容:当对平台的游戏打包时,现在展示了错误和警告到信息日志中。

  • 这表示错误和警告可以更快地进行辨认。

  • 即使在ini文件层次结构中的一些文件为只读的情况下,也可以启用Config Hierarchy(配置层次)编辑按钮。

  • 修复在插件无法被正确发现处的暂存时的bug。

  • 修复一个插件无法被正确检测到的实时烘焙bug。

  • 修复pthread平台的mutexattr泄漏问题。

  • 修复由编辑器设置的ChunkID分配被忽略的问题。

  • 修复当在一些平台载入项目时的Slate风格的警告信息。

  • 远程Mac或来自Windows的iOS编译现在会返回更清晰的设置错误

  • 可视化摇杆现在会正确处理屏幕分辨率或朝向(重新布置控制并控制其大小)

安卓

  • 新增内容: NVIDIA AndroidWorks安装程序

    image alt text

  • 对于Windows和Mac OSX来说,TADP代替了NVIDIA AndroidWorks。

  • 在运行新的AndroidWorks安装包之前,请卸载之前安装过的任何TADP。 针对window系统的EXE程序和针对OSX系统的DMG位于UE4/Engine/Extras/Android目录中。

  • 包括了全新的AndroidWorks:

  • NDK r10e (64位 工具链).

  • SDK (24.2.0).

  • Nsight 3.1调试器Visual Studio扩展,支持所有Android ABI

  • 新增内容:添加在版本为4.4及以上的安卓设备的沉浸模式的支持。

  • 新增内容:启用ndk r10e (clang 3.6)上的ld.gold,并添加了实验性arm64编译器参数

  • 新增内容:项目生成现在与AndroidWorks (Nsight 3.0+)兼容

  • 新增内容:添加了对ES3.1版本的支持。 这些内容可以随着应用程序的ES2.0版本而同时进行编译。

  • 在生成的OBBData.java文件中添加长前缀到文件长度(由demuyan贡献)

  • 添加screenSize到AndroidManifest.xml 中的android:configChanges以防止暂未处理的onDestroy问题

  • 对多个安卓编译对象的更佳处理

  • 清理一些工具提示

  • 校正ES 3.1 + AEP 着色器

  • 添加自定义规则以处理build.xml的最新SDK版本不定义到一些工具的路径问题。

  • 禁用GearVR插件以用于不受支持的安卓平台。

  • 启用安卓对象的阴影警告并清理搜寻到的内容

  • 修复在下载时按下'back'或在安卓上确认OBB时可能造成应用程序崩溃的问题

  • 修复Android ES 3.1 + AEP,这样它会再次运行高端Rivalry演示(回复到4.8版本)

  • 修复在不使用MobileHDR时的ES3.1黑屏问题(例如Tappy Chicken这款游戏)

  • 修复一些安卓设备不渲染BSP网格物体(例如Galaxy S 3 (Mali) 或 Galaxy Note 2 (Mali))的问题

  • 修复在Android ES 3.1上的发布队列。 之前,它可能会泄露排列的内存/资源。

  • 已修复:在一些安卓设备上(例如Nexus7, Nexus4)使用完全的原始材质时产生的渲染错误问题。

  • 修复安卓平台的具有非unity版本的编译问题

  • 改进安卓ARMv7调试标识

  • 当应用程序从后台程序返回时,对缓存的分辨率进行无效处理,从而处理接受的新窗口

  • 如果没有在ini文件中进行设置,则从.bash_profile中保存每个安卓NDK/SDK路径的最新导出内容,而非首个导出内容

  • 确认UE4Game 和 UE4Game/[GameName] 分类进行了创建,这样可以让保存游戏和日志能正常运行。

  • 仅在安卓上的Clang 3.6或更新版本上使用 -fno-function-sections以校正具有向后兼容性的问题,以供使用旧有的工具链。

  • OpenWrite不使用O_APPEND,但会在安卓平台上附加申请的情况下,保留对文件末端的搜索

  • 对onDestroy传递正确的事件,这样应用程序可以终止调用的代理,但不会依赖于这个操作;onDestroy不一定会由系统进行调用。 您想要保存的任何状态应该转而由ApplicationWillEnterBackgroundDelegate进行处理。

  • 从libvrapi.so中删除libGLES3依赖项(用于GearVR的Oculus移动VR库的一部分),这样可以支持旧有的安卓版本。

  • 解决了在应用程序返回睡眠模式或主页屏幕时使用不正确的屏幕分辨率的问题。

  • 现在支持传感设备的方向选项。

  • 从libgnustl_shared.so中剥离调试符号,以供在安卓系统上发布版本

  • 更新安卓的x86 PhysX库

  • 更新FAndroidPlatformMemory::BinnedAllocFromOS以使其与SDK 21兼容。

  • 对NDK19级使用gnu-libstdc++ 4.8,并在更高的NDK等级中使用4.9

iOS

  • 新增内容:对Cloud Kit framework(云端工具包框架)添加初始支持。 您可以通过在线用户云端界面API和在线共享云端界面API来访问基于云端的数据库。

  • 新增内容:添加由Get Set Games(获得设置游戏)而来的远程推送通知。 所有的远程通知的功能都可以从蓝图和代码中进行访问。

  • 新增内容:添加一些便捷函数到In-App购买功能中。 这些函数提供了对产品的多种本地化数据的访问。 (由Get Set Games获得)。

  • 新增内容:添加在iOS 9 SDK中编译游戏的支持。

  • 新增内容:现在可以恢复在App中的购买对象。 这个功能可以通过Restore In-App Purchase(恢复In-App购买)蓝图或通过代码使用在线商店接口来实现。

  • 新增内容:更新iOS上的Facebook SDK到版本4.01

  • 修复在iOS 9上的游戏启动崩溃问题。

  • 修复在iOS上输入文本到文本编辑域时的崩溃问题。

  • 修复在iOS上弹出信息框时的停顿问题。

  • 修复在iOS上游戏启动时的间歇性崩溃问题。

  • 修复在OS X 10.9系统上的iOS的初始化远程编译出现的问题。

  • 修复在iOS上启用dSYM生成的情况下,添加不存在的dSYM到编译回执中产生的问题。

  • 修复在使用远程Mac时的xcode-选择命令出现的问题。

  • 修复在对iOS进行编译时,为游戏项目中的每个文件都载入项目ini文件。 这样会让编译更快。

  • 修复在Mac系统上查找有效签名认证时的数据检测。

  • 增大iOS平台的游戏线程的栈的大小。 这样可以防止栈空间外的崩溃。

  • iOS部署服务器现在会校正路径中非ASCII字符或文件中的文件名。

  • 启动画面现在会在显示信息框时被正确移除。

Linux

  • 新增内容:添加CodeLite项目生产程序和源代码访问程序(由yaakuro根据申请#1378 和#1379完成)。

  • 新增内容:添加Linux平台分析。

  • 新增内容:专用服务器现在会定期更新日志(默认30秒,可通过ServerFlushLogInterval进行配置)

  • 新增内容:设置脚本会拒绝在比3.x更旧的Mono上运行‘因为旧Mono版本被认为在编译UE时无法使用。

  • 新增内容:极大地增加DDC(衍生的数据缓存)路径在Linux系统的长度限制;之前的数字是基于更小的Windows MAX_PATH限制。

  • 新增内容:从Qt/GTK切换文件对话到Slate;引擎不再依存于系统中的所述库。

  • 新增内容:在具有根权利时,引擎和工具会拒绝运行。

  • 新增内容:更新Linux跨工具链到clang 3.6.0。

  • 引擎库应该不再使用初始的exec TLS模型(这样可以防止在特定环境下的库载入)。

  • 修复在使用本地化名称保存资源时产生的崩溃问题。

  • 修复在使用QtCreator编译编辑器对象时产生的问题(由salamanderrake根据申请#1171完成)

  • 修复当更高层代码尝试访问显示测量数据时在专用服务器上产生的奔溃问题(由Stormwind99根据申请#1232完成)。

  • 修复Linux系统的程序重启时产生的文件处理泄露的问题。

  • 修复热重启问题(由zaps166根据申请#1178完成)。

  • 修复无法编译Linux ARM二进制的问题(稍后在4.8 x循环中引入衰退问题)

  • 修复无法找到绑定的在线载入库的问题

  • 修复Linux编辑器不遵从"Use less CPU when in Background(在背景运行时使用更少的CPU资源)"设置的问题(由3dluvr根据申请#1207完成)。

  • 修复Linux工具链不遵从"enable exceptions(启用额外项)"的编译配置设置问题(由nakosung根据申请#1135完成)。

  • 修复在特定环境下的最小/最大窗口时间没有进行触发的问题(由yaakuro根据申请#1115完成)。

  • 修复本地化项目名称和目录的多个问题。

  • 修复在项目被放置于引擎目录旁的位置时在Linux系统的打包失败问题。

  • 修复弹出窗口在特定情况下不出现或无法互动的问题;修复鼠标相关的移动在多个窗口出现的问题;多个其它改进(由yaakuro根据申请#1375完成)

  • 修复对OpenAL初始化失败的不正确处理(由slonopotamus根据申请#1206完成)

  • 修复Unicode键盘输入问题。

  • ICU库现在作为运行的依赖项在UBT/UAT中进行正确的解释。

  • 当帧速很低时,改进鼠标位置的报告问题(由ExpiredPopsicle根据申请#1369完成)

  • 在Linux专用服务器上包含了一个libpng模块,不再会中断编译(这是一个不再相关的失真限制)。

  • 来自控制器的多余轴事件不再在每帧中发送多次,控制器的id可以进行脱节(由chipgw根据申请#1122完成)。

  • 切换为使用SDL键码而非源键盘扫描代码(修复了多个不正确的映射键位并从总体上移除了US QWERTY假设内容)。

  • UBT将会在UHT于Unix平台(Linux,Mac)出现非正常退出时进行正确识别并将其报告为崩溃。

Mac

  • 新增内容:添加对Xcode 7的支持(用于iOS 9和MacOS 10.11)

  • 改进在UBT中发现Xcode路径的方式(除非需要,否则不再使用硬编码 - 它使用当前Xcode,或者在从命令行中编译时使用xcode-select)

  • 添加了一些UBT功能函数(仅一次输出一条Log.TraceInformationOnce信息,以及Utils.RunLocalProcessAndReturnStdOut来方便地捕获输出内容)

  • 新增内容:对更新到版本4.0.2的Mac系统的绑定的单声道

  • 新增内容:CrashReportClient现在可以在OS X上的诊断报告所指示的崩溃位置处生成源内容。

  • 新增内容:在Mac OS X上生成调试符号文件以用于开发和发布版本,正如我们在Windows系统上操作的那样。

  • 新增内容:Mac用户现在可以使用Control键加鼠标左键来模拟右键点击

  • 变更CrashReportClient在Mac OS X系统上启动的方式,来防止可能产生的锁死问题。

  • 禁用Nvidia GPUs上的OpenGL GPU处理时间和OS X 10.9 (Mavericks)上的全部处理时间来防止在OpenGL驱动中的崩溃。

  • 通过发布到可执行程序的路径来修复在Mac OS X系统上启动外部进程时产生的崩溃。

  • 修复通过把ReverseBits32函数从MonteCarlo.usf移动到Common.usf的半透明表面反射问题,并在不原生支持反向固有项的平台上使用它。

  • 修复从WindowedFullscreen的转换为常规全屏,并在Mac OS X上再次转换回原模式。

  • 修复在自动导入电影时产生的崩溃问题。

  • 修复windows系统上无法对OS X 10.11 beta进行渲染的问题。

  • 修复在Mac OS X系统上发射崩溃线程的调用栈到日志的问题。

  • 修复一次播放多部影片的问题。

  • 修复在全屏模式下的鼠标位置设置/报告问题。

  • 通过确保在关闭活动窗口时发送了正确的窗口反激活信息来修复Mac OS X系统上多个关联菜单中的重命名选项。

  • 修复在Mac上当前工作目录的路径的设置,这些路径包含着非ansi字符。

  • 修复在OS X 10.11 beta版本中的启动画面渲染问题。

  • 修复在OS X 10.11 beta版本中的工具提示渲染问题。

  • 修复在鼠标事件从聚焦处转换到新控件处的窗口激活问题。

  • 增加堆栈的大小,以供所有的线程能避免崩溃。

  • 通过确认Xcode项目需要其存在并让用户在等待Xcode时切换到不同的应用,来让Xcode源在OS X的访问更为方便。

  • 停止Mac输入事件代码来防止其对修饰符键值生成不正确的key-up 或 key-down状态。

Playstation 4

  • 新增内容:添加了RE_Z功能到着色器的定义。

  • 新增内容:添加了在coredump期间对崩溃内容的保存。

  • 新增内容:添加了对PS4的保守的深度优化的支持。

  • 新增内容:添加了对FirstInstance描画优化的支持。 降低了对实例化描画生成的RHI命令的数量。

  • 新增内容:添加了对新Wave(波浪)着色器编译器的支持。 默认情况下启用这个选项。 由控制台变量r.PS4UseWaveShaderCompiler进行控制。

  • 新增内容:添加了修改着色器复杂度视图模式为PS4的支持。

  • 新增内容:添加了剥离可选调试数据的PS4着色器的选项。 默认情况下启用这个选项。 这样可以节省大约75%的着色器内存消耗。 CVAR为r.PS4StripExtraShaderBinaryData,并且默认启用。

  • 新增内容:总是在对发布打包时创建pak文件,并允许发布非发行配置的版本。

  • 新增内容:禁用来自LCUE的DispatchDraw支持,以降低CPU的性能消耗,因为这项功能当前不使用。

  • 新增内容:启用阴影变量的编译器警告并修复了警告的已知实例。

  • 新增内容:PS4的GPU内存分配程序已被变更为对小规模分配进行整理。 修复了一些授权用户观察到的问题,分配程序会随着时间而逐渐降低性能表现。

  • 新增内容:PS4上的MediaFramework电影回放现在使用新的AvPlayer解码器。 与RGBA的会话现在在GPU上执行。

  • 新增内容:现在在发布中能够使用PS4的ContinuousSubmit(持续提交)切换。

  • 新增内容:通过仅设置setCbControl、setActiveShaderStages并在需要时变更环形缓冲区域来降低GPU关联内容的变化。 在RenderTestMap中可以节省大约100个关联内容和0.1ms的GPU运算时间。

  • 新增内容:删除了对旧有的60hz Morpheus kit的支持。

  • 新增内容:已经删除了对SDK2.0的支持。

  • 新增内容:不使用的文件现在会在迭代部署期间从设备上删除。

  • 新增内容:更新了Windows DualShock的插件来与PS4 SDK2.500配合使用。

  • 修复在退出PSN会话后,不能正确离开会话的bug。

  • 修复MediaFramework音频回放无法在PS4上运行的bug。

  • 修复在使用实验性LightGrid时产生的崩溃问题。

  • 修复ps4临时区块分配程序中造成间歇性崩溃的竞争状况。

  • 修复在反射捕获中的间歇性崩溃问题。

  • 修复音频在暂停后不继续播放的问题

  • 修复在PS4上使用并行渲染时DrawPrimitiveUP的崩溃问题。

  • 修复指针CurrentPosition没有进行初始化的问题。

  • 修复DevKitUtil项目对ORTMAPIlib路径使用SCE env var而不是硬编码路径的问题

  • 修复在打包时未能关闭当前运行的虚幻引擎4 app且由于锁定的文件而导致打包失败的问题。

  • 修复在使用PS4DevKitUtil时对失效的处理以启动elf

  • 修复在自动尝试开启不可到达的devkit时巨大的延时问题。 Devkits现在必须手动开启。

  • 修复PS4音频缓冲内的memreport -full崩溃。

  • 修复电影动态载入程序泄露音频端口的问题。

  • 修复在设置UAV时永久覆盖贴图缓存类型的问题。

  • 修复在启用dbuffer时的PS4渲染失真问题,但不存在dbuffer贴花渲染。

  • 修复Morpheus HMDServer版本的重定位命令。

  • 修复Scissor GNM的验证错误

  • 修复在启动电影回放期间的撕裂问题。 我们同时以更高的速率来更新启动时的电影播放程序,以获得更平滑的回放效果。

  • 修复对特定贴图格式的贴图更新。

  • 修复PS4的报告的'Physical'(物理)内存池的大小,从而正确匹配主CPU内存堆的大小。

  • 修复TMap可视化查看器并添加缺失的可视化查看器到.natvis中

  • 无论实际播放电影的时间为多少,MediaFramework不再等待10秒来开始在PS4上播放电影。

  • 如果没有在启动时侦测到Morpheus,Morpheus项目现在会返回到普通的二维渲染而不会崩溃。

  • 优化PS4的顶点和索引缓冲写入锁定,不再需要额外的memcopy。

  • 当从/hostapp中读取时,不再应用短路径,以支持自定义工作流程。

  • PS4描画调用的统计数据现在位于详细统计数据组中以防止统计数据垃圾信息的问题。

  • PS4现在总是会尝试平移,以搜寻周围的音效。

VR

  • 新增内容:MSAA现在会在GearVR 、 Galaxy Note 4 和 Galaxy S6设备上运行时进行默认启用。 您可以通过在ConsoleVariables.ini文件中设置gearvr.EnableMSAA=0来禁用。

  • 修复SteamVR公共模块接口类不与实际的模块类绑定的问题

  • 修复立体声渲染在蓝图编辑器打开时于VR中播放的情况下不运行的问题。

HTML5

  • 新增内容:现在默认启用HTML5的网络插件。

  • 新增内容:HTML5 SDK现在被包含在引擎内。

  • 新增内容:对Mac上的HTML5打包会为HTML5LaunchHelper部署双击的脚本,以避免使用命令行。

  • 新增内容:通过压缩来降低生成的版本大小。

  • 新增内容:更新到S3来应对HTML5版本。

  • 让HTML5LaunchHelper与远程电脑而非本地主机进行联系。

  • 变更.emscripten SDK配置文件的位置,使之不与电脑上其它预安装的SDK进行互动。

  • 修复HTML5网络服务器不更新插槽的问题。 修复客户端不正确断开的问题。

  • 修复HTML5 和 Linux的三维音频空间化的问题。

  • 通过让HTML5平台使用Linux平台的OpenAL应用项来统一HTML5 和 Linux OpenAL的应用。

  • 修复浏览器间的多个HTML5全屏问题。

  • 修复造成地貌在HTML5中大部分呈现黑色的贴图读取问题。

  • 我们现在可以把网络服务器作为打包过程的一部分来进行正确复制。

Windows

  • 变更OS版本,以用于windonws平台所需的最低支持的OS版本,不再需要编辑器的重启。

所有的移动平台

  • 新增内容:变更了non-power-of-two贴图在不支持其技术的工作原理。 不采用,它替换了具有"error texture(错误信息)" 的内容,这样您可以在设置上查看需要执行的操作,而不会什么都看不到。

  • 新增内容:游戏现在会对iOS的Game Center以及安卓的Google Play上的登陆流程具有更多的控制。

  • 如果启用了iOS或Google Play在线子系统,则登陆界面不再会在引擎启动期间自动出现。 这会造成多个时间问题,而且游戏在其出现时无法进行控制。

  • 游戏现在必须通过调用C++的"IOnlineExternalUI::ShowLoginUI"或蓝图的"Show External Login UI(显示外部登录界面)"来明确调用系统登录界面。 这是异步操作,让游戏可以延迟任意其它的在线操作,诸如成就或排行榜序列,直到用户成功登入。

  • 添加新建蓝图节点"Is Logged In(已登入)"来获取用户的登陆状态。

  • 应用C++函数IOnlineIdentity::Logout并为Google Play在线子系统添加新的蓝图节点"Logout"。

  • 这个功能,以及外部登录界面支持,应可以让游戏应用登入/登出按钮。

  • 注意这个功能在iOS上不受支持,因为Game Center本身不支持来自于游戏中的明确登出。

  • 从OpenGL RHIUpdateTexture2D & RHIUpdateTexture3D函数中删除对Pixel-Buffer-Object支持的冗余检查,以让它们能够在移动平台上进行调用(来自于申请#1086)

渲染

  • 新增内容:添加可以转换RGB颜色到HSV的材质函数。

  • 新增内容:添加创建贴图UAV到特定mip并创建UAVS以使用额外贴图类型的能力。

  • 新增内容:添加创建SRV以用于额外贴图类型的能力(3d, 2dArray和立方体)

  • 新增内容:添加实验性体积贴花(很有用,但对于许多应用来说,可能不够快),这是由距离函数所定义的。

  • 新增内容:添加最大位移到材质中,以修复多边形细分平截头体剔除的问题。

  • 新增内容:添加对使用动态点光源作为移动平台渲染的支持。

  • 它们旨在于用于小半径的半透明特效,诸如爆炸、射弹、卷轴等等,甚至在场景使用静态光照的时候也可以。

  • 在每个被照亮的对象上,最高都支持四个动态点光源。

  • 设置光照类型的可移动性为可移动

  • 不支持阴影

  • 新增内容:添加具有多值的ViewProperty材质表达式,以在材质编辑器中显示更多内容,而不必使用自定义设置。

  • 新增内容:添加更大范围的高斯滤波器核心,让HighResScreenshot能具有更大的光溢出和GaussianDOF,添加了控制台变量以供实验。

  • 新增内容:改进的VisualizeDOF,尤其是CircleDOF所使用的VisualizeDOF

  • 新增内容:ProceduralMeshComponent的改进和修复

  • 添加'fast path(快捷方式)'UpdateMeshSection函数到ProceduralMeshComponent(同时更新碰撞)。

  • 添加 SetMeshSectionVisible & IsMeshSectionVisible 函数。

  • 修复三角形数组不是3的倍数时在ProceduralMeshComponent中的崩溃。

  • 新增内容:删除RHIMethods.h并转换RHI接口为标准的C++。

  • 新增内容:更新的LightPropagationVolume(由Lionhead Studios制作,低序的SH更快,但更模糊,您可以在设置中启用DirectionalOcclusion,这会影响SkyLight 和 ReflectionEnvironments,但不会影响 AmbientCube、Material BlockGI 功能、聚光灯支持,使用XboxOne平台的AsyncCompute(异步计算),但还没有进行序列优化)

  • 变更平面粒子材质函数。 删除扩展的规范化向量,从而启用非四边形网格物体。

  • 在用完视频内存后退出并通知用户。

  • 修复层次实例化静态网格物体,确认在存在未编译的实例时重新编译群集树。

  • 修复贴图导入的16位浮点法线贴图检测。

  • 修复造成发布版本的并行渲染被禁用的bug。

  • 修复具有深度写入的性能表现警告的bug。 性能警告内容现在也更为具体。

  • 修复在销毁MediaFramework资源时造成的崩溃。

  • 修复当在Canvas平铺层上使用ResponsiveAA时的问题。

  • 修复在启用全屏时处于分屏中的黑色视口问题

  • 修复PostProcessComponent中的Blendables(可混合对象)在载入时缺失数组元素的问题

  • 修复在着色模型4中使用圆形景深时的崩溃问题

  • 修复在使用权重为0的PostProcessMaterial Blendables(可混合对象)时的崩溃问题

  • 修复CircleDOF的DepthOfField材质函数

  • 修复由于无常量缓冲而造成的ElementalDemo崩溃

  • 修复环境反射在SM4上不显示的问题

  • 修复在sRGB设置为true的情况下,仅具有alpha值的贴图可视化会显示不正确的运算结果的问题。

  • 修复防止自定义和程序化网格物体组件写入自定义深度图层的问题。

  • 修复一些半透明几何体的缺失渲染,编辑器/调试材质启用SeparateTransluceny的问题,这些一般不应发生。

  • 修复多个问题和扩展的变换位置问题,尤其是速度运算(影响动态模糊和TemporalAA)

  • 修复由错误的矩阵运算所造成的一些编辑器视口的渲染失真问题。

  • 修复由于近期的TemporalAA优化所中断的ResponsiveAA功能

  • 修复在切换到全屏时,屏幕捕获显示不正确的问题。

  • 修复具有贴花的着色器复杂度问题

  • 修复SlaveComponent以支持LOD的变更

  • 修复地貌小控件只有在移动后才能正确渲染的一些问题。

  • 修复UE-15921的具有多个半透明烘焙的骨架网格物体会渲染两个烘焙的问题

  • 修复UE-16626 SceneTexture:Scene Color(场景颜色)节点在独立版本、启动版本和打包版本中渲染黑色的问题,材质需要转而使用SceneTexture PostprocessInput0。

  • 修复当在模拟中暂停时的UE-17047动态模糊的超限化

  • 修复UE-17239固定光照阴影在分屏模式中对额外玩家进行遮挡的问题

  • 修复UE-17333切换到具有LPVs激活的崩溃编辑器的SM4的问题

  • 修复UE-17405圆形景深依赖于分辨率的问题

  • 修复在使用颜色分级时错误的颜色和失真(在黑暗或更为细微的颜色中的大红色)

  • 修复当初始化SRV时的错误贴图格式

  • 改进在组件仍具有对销毁场景的引用时在FScene::Release()中登记的错误信息,以对任意种类的组件列出相关资源,而不仅是UStaticMeshComponent。

  • 从ShapeComponent中删除不使用的ShapeMaterial。

  • 转换漫反射模型到Lambert,以简化捕获材质。

FX

  • 新增内容:添加DefaultValue属性到动态参数材质节点。 对视觉特效美术的工作流程改进。

  • 修复了SkelVert/Surf位置cascade模块的bug,在其中,无法正确访问一些网格物体的骨架网格物体顶点。

  • 修复在SkelVert/Surf位置的Cascade模块的罕见崩溃问题。

  • 修复了一个bug,它会在导出发射器到首个发射器中具有较高LOD值的粒子系统,且导出的发射器被设置为solo模式时,造成编辑器的崩溃。

  • 修复在编译查找表格以供发布值时非限定alpha值的问题,这可能会造成不可预计的操作。

  • 网格物体粒子碰撞现在会默认考虑粒子大小的因素。 这样就会让具有常规形状的网格物体粒子具有更准确的碰撞。 您可以通过MeshTypeData属性bCollisionsConsiderParticleSize来对其禁用。

  • 从光束中删除"Particle(粒子)"选项和目标选项,因为这些功能没有在虚幻引擎4中实现。

光照

  • 新增内容:对植被静态光照添加了bUseVertexNormalForHemisphereGather Lightmass图元设置,从而供美术需要植被光照以匹配下方的地形的情况。

  • 新增内容:体积光照实例不再被放置在几何体内。

  • 体积光照实例计算现在在Lightmass中为多线程,这样它不会对光照版本形成瓶颈。

  • 在变更静态网格物体来放置渲染过期数据时,添加光照缓存的无效化步骤。

  • DDC命令行开关现在会阻挡异步网格物体距离场任务并实际写入运算结果到DDC中。

  • 修复在只有自发光对象渲染到LPV处的bug。

  • 修复仅有自投阴影的网格物体仅会在编辑器中选择时投射的问题。

  • 修复透明图层着色模型的bug。

  • 修复由于0区域BSP节点创建0分辨率贴图映射时产生的编译光照崩溃问题。

  • 修复在swam连接被关闭前,lightmass导出程序被删除的问题,这会造成在取消光照版本时偶尔的崩溃问题。

  • 在静态对象应被完全进行阴影处理时,修复对其的渲染为完全光照。

  • 当在一个地貌下有另一个地貌时进行此操作,但也会影响静态网格物体或bsp。

  • 对距离场阴影和DFAO的溢出对象数量进行更好的处理。

  • 缩放值为0的对象呗从距离场场景中删除,修复了具有0的缩放对象的多种光照方式的bug。

  • 受间接光照缓存影响的图元现在可以在动态载入或载出预计算的光照体积时进行正确更新。

  • 更新分组的阴影投射物的边界计算,以忽略非阴影投射的图元。

材质

  • 新增内容:已经添加了一些材质函数来生成和组成形状。 对于"Volumetric Decal(体积贴花)" 的材质类型最为有用,但可能也会在其它情况下有用。

  • 形状:球体,盒体,胶囊体

  • 组合器:Intersection, Subtraction, Union

  • 新增内容:已经添加了一些新的材质函数,以供在材质编辑器中创建形状。

  • DrawLine-2D和Drawline-3D:定义二维或三维空间中的一条线。 可以作为胶囊体或转换盒体来处理。

  • BoxMask-2D和BoxMask-3D:让您可以创建类似于"SphereMask"节点的二维或三维梯度,但是以盒体的形状来呈现。

  • 新增内容:用于生成已被添加的BullCurve的材质函数。

  • 这是一个简单的贝尔曲线,也可以称为"Normal Distribution(法线分布)",已经进行了重新缩放,所以在X轴的-1和1的输入会返回0的值。无控制参数。 使用分布的最简形式:f(x) = e^(-0.5*x^2)

  • 新增内容:添加一个蓝图宏到转换蓝图数组到可进行复制的HLSL代码中。

  • 如需使用,您只需指定需要的输入数组的类型(float到float4),一个变量名称,然后将运算结果连接到可编辑的字符串变量。 然后您可以使用可编辑的文本域来复制运算结果到所需位置(例如,位于材质中的自定义节点内)。

  • 注意:一般来说,在HLSL中使用大型数组会比较慢。 当您尝试在虚幻引擎4中执行一些诸如'offline rendering-ish'的内容时,这个会更有用,诸如对一些光线追溯试验进行一些随机光线方向的预计算。

  • 新增内容:许多VFX材质都需要HDR(高动态范围)像素值(大于1的值),从而来正确地生成光溢出和其它引擎特效,然而,将LDR(低动态范围)值与贴图相乘成为高范围贴图,一般效果都很糟糕。 这个材质函数将LDR贴图作为一个输入,并将其重新映射为由用户定义的HDR范围。它保持了外观并保留了输入图像的色彩浓度,并将其重新映射到HDR中。

  • 新增内容:新的材质函数'CalcLightSourceAngle'可用于查找来自世界任意位置的光照的光源角度。

  • 新增内容:新的材质函数'Sphere_AO'基于给定位置和半径的球体遮挡体来对任意点返回环境遮挡值。 对于真实的淡入淡出的阴影模糊很有用。

  • 新增内容:对球体阴影取样的新材质函数是基于查找贴图来制作的。

  • Sphere-ConeShadow-Texture: 在给定位置和半径的前提下,返回来自世界中球体的阴影响应。

  • Ellipsoid-ConeShadow-Texture: 和上方的球体阴影一样,但沿着特定轴伸展。 注意:这个版本目前是实验性的,而且有一些问题。 这些问题会在下一个版本中进行修复。

  • 两种函数使用以下的默认查找贴图:Texture2D'/Engine/EngineMaterials/T_SphereShadow_RGBA_5-15-30-60deg.T_SphereShadow_RGBA_5-15-30-60deg'

  • 贴图进行了通道合并,这样每个通道都具有不同光源角度的编码。 R=5, G=15, B=30, A=60 度。

  • 新增内容:标量材质参数可以指定材质实例编辑器的滑动条的最小和最大值。

  • 新增内容:Spherical-Cap-Intersection

  • 材质函数可以计算在给定光源角度和可见度角度的情况下,对球体上限交叉区域进行计算。 您可以使用消耗系统性能更小的'SmoothStep'计算。 一般来说,这个函数对于预烘焙查找贴图来说很有用,但也可以在使用SmoothStep近似值时来实时使用它。

  • 制作/中断材质属性节点的自定义UV引脚现在可以随着其在材质结果节点上的部分在同一情况下进行隐藏和显示。

  • 修复在使用自定义UV时的罕见的材质编辑器中的崩溃问题。

  • 修复在材质实例中覆盖扭曲材质为不透明材质时发生的崩溃问题。

  • 修复在重新生成材质实例时所造成的崩溃问题。

  • 修复被重新导入的引用贴图的所有材质变黑的问题。

  • 修复材质的切线空间的正常属性在使用材质属性时无法正确运行的问题。

  • 修复一些参数不出现在材质实例中的问题。

  • 修复许多转换代码在贴花材质中中断的问题。

  • 修复使用Pixel Depth Offset(像素深度偏移)的材质在预处理中不使用像素着色器会造成深度在基础层中无法匹配的问题。

  • 修复线框材质被视为"not writing every pixel"(不写入每个像素)的问题。 这样修复了阴影投射中一些罕见的造成崩溃的互动性问题。

  • 修改相机偏移材质函数结点,使之引用顶点世界位置而非actor位置来移除z轴的深度缩放。

后期处理

  • 新增内容:改进每个可混合条目中的可混合对象和显示的权重,提供更好的蓝图访问

  • 新增内容:替换实验性圆柱体后期处理射弹为更好但仍处于实验性的Panini射弹。

  • 修复旧有的色调贴图的黑色部分在使用新的日志空间LUT时不为黑色的问题。

  • 修复在使用上采样时的光束渲染

  • 修复使用TemporalAA时产生的暂停

  • 改进SSAP的质量,使用不是 2 的幂数的贴图,因为最近的优化让情况变得更糟。

  • 改进TemporalAA的质量,使用双三次筛选(略微更鲜亮一点)

最优化

  • 新增内容:在没有预计算光照体积时,不要使用IndirectLightingCache着色器。

  • 新增内容:显示控制台变量以访问更快速的低质量SSAO(r.AmbientOcclusionSampleSetQuality)

  • 新增内容:应用ScreenSpaceReflections模板(r.SSR.Stencil)

  • 新增内容:间接光照缓存点的示例不再使用贴图布局,因为它们不使用体积贴图。

  • 新增内容:r.ReflectionEnvironment现在在发布版本中可用。

  • 新增内容:反射环境控制台变量现在是另一个可扩展的选项。

  • 修复贴图动态载入的初始化,这样可以足够早地进行初始化,从而在启动时以贴图形式来动态载入。 在这个变更之前,它会延迟一点生效,这会导致在启动时的贴图内存的暂时过载。

  • 更新了扭曲图层来使用模板蒙板,它会用更低的屏幕覆盖率来改善性能表现。

移动平台的渲染

  • 新增内容:启用对不支持完整HDR渲染的设备的有限的后期处理支持。

  • 举例来说,对于缺少float16渲染程序对象的支持(例如,Galaxy S6)

  •  这样会在color_buffer_half_float扩展不可用,但framebuffer fetch gl扩展可用时替换"mosaic(马赛克)"渲染。

  • 支持光溢出

  • 和"mosaic"模式不同,没有分辨率限制。

  • 新增内容:对于提前渲染的调制阴影渲染(移动平台路径)

  • 在固定定向光照上启用 'Cast modulated shadow' (投射调制阴影)。

  • 动态阴影会随后通过对光照的'Modulated Shadow Color' (调制阴影颜色)对照场景颜色来进行渲染。

  • 修复在使用金属RHI时的模板缓冲渲染。

UI

  • 新增内容:如果UI (Slate/UMG)位于上方,在游戏对象中,Mouse Enter 和 Leave事件不会再触发。

  • 新增内容:为UI设计的材质现在具有新的材质域,可以在材质编辑器中进行设置。 它会替换材质的"Used with UI(和UI一起使用)"勾选框。 所有使用这个勾选框的现存材质都会进行自动更新。

Slate

  • 新增内容:Slate中的可编辑文本控件现在可以覆盖或禁用关联菜单

  • 新增内容:多行的可编辑文本中的空白行现在会描画一些高亮对象,这样您就可以了解已经选择了该行本身

  • 新增内容:对sRGB在引擎中处理方式的多个改进。 尝试对sRGB标准内容进行标准化,而非pow(2.2)。 关键是 - 您的贴图在由Slate进行渲染时应该和Photoshop中一样。

  • 现在我们使用更为准确的Gamma -> 线性空间转换函数来转换FColor到FLinearColor。 我已经使用更为准确的转换, Color > 0.04045  pow( Color (1.0 / 1.055) + 0.0521327, 2.4 )来生成新的查找表格:Color (1.0 / 12.92); 而不是pow(Color, 2.2);

  • 变更默认情况下所有FColors转换到FLinearColor的方式。 之前传送到引擎的所有sRGB贴图和其它对FColor -> FLinearColor的使用都运用了查找表格,它假设了最终的gamma校正为pow(color, 1/DisplayGamma)。 但是,这个假设和本次情况不同,我们在大多数平台上对场景渲染程序以及Slate中的gamma校正都使用了IEC 61966-2-1标准。

  • 在Slate中,您现在应该能看到匹配Photoshop的图像,而不是处于下限的略深的颜色。 但是,由于我们不想要无效化处理用户授权的已存贴图,所有的现存UTextures都把UseLegacyGamma标识设置为true,所有的新贴图都将被设置为false。 这个标识是DDC键值计算的一部分,但采用了一些步骤,这样当遗留内容设置为true时,键值会匹配现存的键值以防止通用性问题。

  • 修复Slate在量子化黑色的下限时出现的问题。 当我们发送线性颜色到GPU时,我们首先转换到字节线性空间,在字节线性空间中,多个sRGB值都在单个数字下进行量子化。 为防止这个问题,在不增大顶点缓冲大小的前提下,我们现在转换Tint到sRGB字节空间,然后在顶点着色器中转换Tint到线性空间。 这样会和之前有些不同。

  • 新增内容:简化的源贴图更新函数,通过使用FSlateTextureData来传递贴图数据和大小到渲染线程中。

  • 现在激活窗口会对所有用户设置输入聚焦。

  • 现在点击slate控件的最下方/右侧的像素会注册该点击。

  • 修复多行可编辑文本中的空白行的"Delete"被作为类似"Backspace"进行处理

  • 修复在使用Ctrl+箭头在可编辑器文本控制中移动指针所造成的间歇性崩溃

  • 修复在点击Mac上的另一个窗口时菜单不关闭的问题。

  • 修复SMultiLineEditableText Slate控件从中选择并复制文本的能力。

  • 修复在Slate RHI资源管理器中内存泄露的一些问题。 在动态资源贴图中不存在移除陈旧条目的图层,因此现在我们偶尔会对陈旧条目进行清除。

  • 修复关于多点触碰的多个问题。 存储的数据包括了指针下的控件,现在会基于用户和指针索引进行存储,这样多个指针设备,以及索引可以单独存储指针数据下的单个控件。

  • 改进功能,以获得对SEditableText、SEditableTextBox、SMultiLineEditableText 和 SMultiLineEditableTextBox中的关键向下事件的首次访问。

  • 从菜单定位点创建的菜单不再会在父类(位于菜单栈)接收到聚焦时自动消失。

  • 修复了在Slate中常见的过早剪辑的多种因素。 您可能已经注意到,有时在控件底部或右侧的一列或两列像素会被删除,这些问题现在进行了修复。

  • 修复了对剪切的长方形的不正确计算,这是由于沿着盒体的像素对齐所造成的,而不是由于像素与剪切盒体的角落相对齐所造成的。

  • 在所有平台上禁用slate着色器的float16精确版本。 由于剪切值均位于窗口空间内,所以当代监视器很容易超过单数位的准确度(2048),这会造成额外像素剪切的多个数组的错误。

  • 最优化Slate描画元素烘焙程序来逐帧执行更少的内存分配并传递一些处理到之前的渲染线程以防止额外的内存拷贝。

  • 使用虚拟键盘的平台不再尝试聚焦由只读文本框接受时对其进行显示。

  • Slate窗口现在会在重新缩放窗口时考虑所需的边界/标题栏的大小。 这样客户区域能保持在所要求的大小。

  • 文本留白现在会在所有的缩放层次上进行一致的计算,并且不再立即执行计算,它们会像其它操作那样对布局进行无效化处理。

  • 另外在说明后,现在在UpdateLayout层中会有一个步骤,并且在对流程进行计算后,不在最后执行它会导致许多bug和不一致。

  • 修复了缩放时对边界的负面影响的问题以及对使用文本的留白的双重应用,对文本的偏移位置进行了额外偏移的计算。

  • 如果不按下SButton,它不再会尝试处理MouseUp。 之前在按钮外按下然后在按钮内松开鼠标的方式会造成按钮尝试处理此问题,即使向下在按钮上一直不能使用。

  • STableViewBase现在会在编辑器状态下正确处理触摸事件,并设置回调函数来处理惯性滑动。

  • UE-18600 - 自定义描画元素不再尝试使用已知的矩形剪刀在经过元素烘焙程序处理之前来进行过早的剪辑,因为其信息无效,我们会对这些元素忽略此步骤。

  • 当我们更新RHI数据时,我们现在还会更新slate渲染程序代理认为是贴图实际大小的内容,它可能会由于重新导入而进行变更。

UMG

  • 新增内容:添加能更好地在时间轴中编辑动画的功能。

  • 添加组合按钮到对象绑定轨迹,以添加额外的属性轨迹。

  • 添加控件以供编辑键值到动画大纲中

  • 添加可供浏览到前一键值和下一键值的按钮,以及在当前时间处添加键值到动画大纲的按钮。

  • 新增内容:添加一些新的方式以帮助在视口中转换控件中的位置到像素位置。 LocalToViewport & AbsoluteToViewport,它们会对控件和给定位置取入几何体数据,并且会同时返回像素和视口(Slate单位)的位置。

  • 新增内容:添加对拖曳多个控件的支持,从而将它们在UMG层次结构视图中重新定义父类。

  • 新增内容:添加一些额外的缩放模式到缩放框,使其缩放以适应X轴,并缩放以适应Y轴。

  • 新增内容:添加蓝图函数CancelDragDrop,这可以帮助您在程序上取消任意拖/放操作。

  • 新增内容:添加Slate中的特新 & 实验性SInvalidationPanel以及UMG中的相关无效框体。

  • 让控件几何体进行缓存以加速Slate渲染。 由Invalidation Box(失效盒体)进行缓存的控件不会进行Prepassed(预渲染), Ticked(更新) 或 Painted(描画)。 由用户来对子项控件调用Invalidate(C++)或InvalidateLayoutAndVolatility (BP),从而强制无效化。 一些核心控件会在特定属性进行变更时自动执行此项操作,更多的则会随时间而执行。

  • 您也可以通过调用InvalidateCache来直接在面板上强制无效化,一般不需这样做,但在特定情况下,诸如在子项于下一更新时了解其父项的无效化面板之前,可进行此操作。

  • 点击测试还没有经过大量测试。 您会找到更多没有经过点击测试的成功缓存控件,比如在HUD中的控件。

  • 您可能在大量使用的无效面板中注意到这个版本中的奇怪描画顺序问题。

  • 当前仅在CPU进行缓存。 未来会有更多改进,从而包括在GPU上的缓存,来让面板的运行速度更快。

  • 任何控件都可被设置为Volatile控件。 Volatile控件的作用类似于预先失效化的普通Slate控件。 它们会在每一帧进行重新描画,包括其所有的子项。 当与失效面板组合起来使用时,它可以让您仅需关心重新描画UI的最为动态的部分,因为对整个面板进行失效处理可能会更为消耗资源。

  • 您可以使用控件发射器,通过切换[Invalidation Debugging](无效调试)来调试您的无效面板,

  • 白色/红色闪光 = 负责无效化的控件

  • 绿色边界 = 无效面板(对此帧进行的缓存)

  • 红色边界 = 无效面板(使此帧无效化的缓存)

  • 黄色虚线边界 = Volatile(易变)控件

  • 新增内容:动画大纲节点选择现在遵从control(切换)和shift(选择独占)

  • 新增内容:动画大纲节点现在按字母顺序排列

  • 新增内容:双击某一部分现在会聚焦时间轴范围为该部分的边界。 再次双击会返回先前的时间轴范围。

  • 新增内容:为UMG把DrawLines、DrawFormattedText添加到了底层的描画模式设置中。

  • 新增内容:启用多个控件的拖曳来在UMG Designer视图中进行移动或重新设置父类。

  • 新增内容:显示所有控件的下一个/前一个控件导航选项。

  • 新增内容:以更好的方式来显示SScrollBox的ScrollIntoView函数。

  • 我们不再允许/让用户对scrollbox传入几何体,他们可以直接让控件滚动到视图中,在下一个布局层中,我们执行该操作。

  • 滚动到视图的函数现在显示给蓝图,以供scrollbox的UMG版本使用。

  • 新增内容:从UMG控件中删除了外观覆盖属性。 现在使用了样式属性。

  • 新增内容:我们重写了WidgetComponent,以使用新建的IGameLayer系统来创建单个共享canvas层,这样所有的组件会在其于屏幕空间而非世界空间处显示信息时添加其自身到其中。 它们现在会基于来自相机的深度/距离来进行正确的排序。

  • 另外,层控件现在会为控件更新位置。 因此解决更新组的问题会造成奇怪的物体更新顺序,这些物体会把WidgetComponent的Actor作为基础来使用。 WidgetComponent现在具有正常的更新组。

  • 新增内容:当在UMG层次结构视图中移动控件时,工具提示现在会与世界大纲中的样式进行匹配。

  • 新增内容:世界空间中的控件组件现在支持三种混合模式,半透明、不透明以及蒙板(新增内容)。 蒙板模式让您可以获得在边缘上所需的半透明度,但会写入深度缓冲,这样才能进行正确排序。 现在还有一个更新的选项,在世界时,屏幕外的控件会持续让动画在控件上进行播放和更新的调用。

  • 新增内容:控件组件现在具有抛物线的变形选项,从而使其具有某种弯曲玻璃表面,这仅会在其位于世界空间中渲染时起作用。

  • 新增内容:您现在可以使用designer中的箭头键来通过网格对齐量调整canvas中的控件。 如果启用了网格对齐,它会自动与网格对齐,否则仅能通过当前网格对齐量来完成。

  • 在把WidgetComponent的Space(空间)值设置为World(世界)时,如果描画大小被设置为0,则不会再产生崩溃的问题。

  • AddChildVerticalBox重命名为AddChildToVerticalBox。

  • Drag/Drop(拖曳/放置)现在可以正确映射指针到用户控件,并且不再显示自定义指针外的原生指针。

  • 同时修复了移动平台上的一个崩溃问题,平台没有指针对象,但我们仍尝试使用拖/放操作来与其进行互动。

  • UMG把DrawLines、DrawFormattedText添加到了底层的描画模式设置中。

  • 修复了在地图转换时UMG控件崩溃的多个问题

  • 修复了在地图转换时UMG控件崩溃的多个问题

  • 修复了在地图转换时UMG控件崩溃的多个问题

  • 修复了在地图转换时UMG控件崩溃的多个问题

  • 修复了一个在烘焙内容时的潜在崩溃。

  • 修复控件组件的不正确默认旋转。 现在控件组件默认会面向+X轴。

  • 修复SObjectWidget的bug,它会让处理的键值无法按其余slate值那样返回。

  • 修复了一个在不选择任何项时出现的在详细信息面板中显示分类域的bug。

  • 修复修饰符键值和额外的基类数据从不被传送到新的拷贝以用于鼠标指针事件的bug。 这样用户就不用检查UserWidgets的鼠标事件中的修饰符键值状态。 仅影响UMG,而不会影响Slate,正如VM制作的结构体的拷贝。

  • 修复世界中的控件的动画和更新速率,它们现在应该由时间膨胀来进行正确控制,因为它们不再进行两次更新,并且第二次更新使用了错误的delta时间。 在我们引入了更新折叠后,这个问题就消失了,它会在描画时再次更新,但会继续使用全局slate delta时间,以及之前的更新。

  • 修复了画刷和材质工具函数在蓝图中将输入引脚显示为输出引脚时无法正常运行的多个问题。

  • 可编辑文本控件的字体和其它外观属性现在会在UMG编辑器中实时更新。

  • 如果所有者player基于控件组件进行变更,我们现在会在其已经位于用户屏幕的情况下,从屏幕中移除控件,将其移动到其它用户的屏幕。

  • 在撤销操作时,保持动画大纲视图的选项一致。

  • 对SScaleBox处理填充说明的方式进行了一些改进,这样您会发现它实际上会对缩放框的整个内容进行填充,并处理应用于它的额外缩放。

  • 在UMG Designer中移动控件不再会让它们移动到其父项中的最后的插槽。

  • 从线描画函数中移除厚度。 它实际上没有与任何对象进行关联,并且当前在slate中没有对其进行支持,仅在渲染样条曲线时才进行此类支持。 当我们在Slate中添加支持后,我们再把它加回来。

  • 在应用反向DPI缩放前,当从世界位置处计算屏幕位置时,对投射的位置绕行,这样会产生由于稍后应用的缩放而形成的具有非半像素偏移的更为稳定位置,由于我们在反向前进行此操作,最终我们可以获得所期待的整数。 这样可以让字符上的控件之类的更为稳定。

  • SConstraintCanvas不再尝试在视图范围之外描画元素,并且现在会以正确的顺序来描画它们。

  • 在描画时会对启用的代理进行更少量的调用,预筛选不可见的子类并避免对其所使用的算术运算。

  • 现在会持续以正确顺序来描画子项。 之前我们仅基于ZOrder来进行排序,并假设了相同元素的稳定排序,但这次不一样。 所以,除非您手动对ZOrder进行排序,顺序偶尔会有错误,现在就不用这样操作了。

  • 控件的指针属性现在可以正常运行。 您也可以调用SetCursor 和 ResetCursor,从而在运行时,在任意UWidget上设置它,或清除您的覆盖指针。

  • 多行可编辑文本控件现在应在执行或变更文本时进行正确的通知。

  • slatebrush的ResourceObject属性不再能直接从蓝图中访问。 您需要使用函数GetBrushResource, SetBrushResourceToTexture 和 SetBrushResourceToMaterial来变更该值。 这样可以预防错误类型与资源对象相关联。

  • STooltipPresenter现在计算后期转换的、圆形的布局位置以确认工具提示不会起始于半个像素上。 这样在您把鼠标在控件的表面上移动时,可以降低工具提示的许多内部的抖动。

  • 如果您有一些事件返回的EventReplys未连接到任何对象上,控件编译器现在会进行提示。

  • UE-17226 - FPaintContext的赋值运算符没有复制MaxLayerId,描画到层,并且没有告知slate有关其存在,这造成了图形的问题,此问题已经由多个用户发现。

  • UE-18029 - 当从蓝图中错误调用时,让SlotAs函数更加稳定,不易崩溃。

  • 更新Slate中的三维渲染路径,正确设置RT并同时在使用半透明控件组件时清除它来修复iOS上的bug。

  • 通过在UMG编辑器层次结构中替换它们来删除控件,这些控件已经被移动到临时包以防止名称的冲突。

  • 修复多个导航系统的通用问题。

  • 除了聚焦控件外的控件可以明确对导航申请进行响应或对基于代理的处理进行响应。 如果控件的子项由特定用户进行聚焦,则添加一个新的函数来启用排列。

  • 应用对SScrollBox的控制器支持;在其中,它具有处理导航的自定义逻辑,把下一个元素移动到视图中供聚焦器使用,并聚焦于下一个逻辑子项。

编程版本信息

AI

  • 新增内容:添加InvalidOrientation常量到AISytem

  • 新增内容:AIController类现在会从IGenericTeamAgentInterface处衍生,它会使得未来的团队处理更为方便。

  • 新增内容:FAIResourceLocks现在能够对每个LockPriority计算器锁定的数量。 (默认操作仍为同一个,这个功能是额外的功能)。

  • FEnvQueryInstance::ItemIterator的"operator bool()"现在是显性的。 这样可以防止在您想要获得索引值的时候偶然(隐性)转换为int32值。

  • 修复退出事件的pawn操作顺序不正确响应的问题。

  • 替换EQS跳过项目机制为强制项目状态。

行为树
  • 添加对行为树的操作任务由于一些外部事件而删除其PawnAction的支持。

  • 修复为了行为树的黑板筛选器而创建的具有相同名称的多个默认子对象问题。

  • 统一行为树的StopTree & StopLogic函数。

浏览
  • 新增内容:在离下一中间点足够近时对群体代理的走廊添加剔除(角落处的顶点)。 根据前两段路径间的角度不同,应在大型组穿过狭窄走廊时减少抖动。

  • 变更FNavMeshPath::DoesIntersectBox以忽略代理位置,因为其与函数的运算结果不相关。

  • 修复在导航平铺块生成程序使用异步数据收集时的跳出问题。

  • 修复无效的指针到群体代理的自定义筛选器的所有者。

  • 修复在导航网格物体寻路时出现的罕见无限循环问题。

  • 导航系统会存储弱对象指针到所有的自定义导航链接,从而确保其有效性。

蓝图

  • 新增内容:添加DLL导出到一些骨架控制类和方式中,让它们在其它模块中可扩展。

  • 新增内容:让骨架控制能指定坐标空间,通过应用GetWidgetCoordinateSystem来让它们更好地显示小工具。

蓝图

  • 新增内容:BlueprintCallable函数现在可以指定元数据HideSelfPin来表明节点不应显示目标引脚,也不应为可连接,因而在将其从引脚处进行拖曳时从关联菜单处进行筛选,并确认其仅能在自关联菜单中进行使用。

  • 新增内容:外部模块现在可以使用BlueprintEditorModule的MenuExtensibilityManager来附加工具条按钮到蓝图编辑器中。

  • 新增内容:外部模块现在可以通过FBlueprintGraphModule::GetExtendedActionMenuFilters()来添加其筛选,从而扩展蓝图关联菜单。

  • 新增内容:图表编辑器:让图表节点能够创建自定义SGraphNode可视化代表内容,而无需手动注册工厂内容(覆盖了新方式CreateVisualWidget)

  • 修复造成实例化属性在蓝图编译时被清理的bug。

  • 修复无法访问不准确的WorldContext元数据的函数的bug。

  • 修复全局声明的代理可能会与初始使用类似名称且从属于特定类的蓝图节点进行错误匹配的问题。

  • 修复使用环境组件的运行时的蓝图问题。

核心模块

  • 新增内容:添加了ForEachObjectWithOuter 和 ForEachObjectOfClass的公用功能,它们会对每个对象调用TFunctionRef而非使用GetObjectsWithOuter/OfClass,它需要将每个对象复制到一个(可能很大)的数组中

  • 新增内容:添加了一个控制台命令, "abtest" ,用于在动态、多样的游戏会话中访问控制台变量变更所造成的影响。

  • 新增内容:添加了一些统计数据以用于异步载入

  • 新增内容:添加了额外的参数到FPlatformProcess::ConditionalSleep,使之能指定休眠时间

  • 新增内容:添加了检查,以确保两种不同的自定义版本不会使用相同的GUID进行添加。

  • 新增内容:添加了对UnrealBuildTool的检查,以查找模块,它们即是依赖项,又进行了动态载入。

  • 新增内容:添加了debug.EnableLeakTest的控制台命令,以供基于统计数据的内容分析程序的测试

  • 新增内容:添加了FChar::ConvertCharDigitToInt函数以转换数字字符到整数类型。

  • 新增内容:添加了FPaths::LaunchDir(),它是应用程序启动的目录。 可用于搜寻相对于工作目录的文件,以使用命令开关。

  • 改进UnrealPak在任意位置处使用LaunchDir来搜寻.pak文件(用来解压缩.pak文件的UnrealPak一般都从非标准位置处进行运行)

  • 新增内容:添加了FString::Reset(),这样可以在不重新排列内存的情况下清空字符串。

  • 新增内容:添加函数来访问底层文件统计数据,将其作为单个文件系统的申请

  • 您现在可以使用GetStatData在单个文件系统申请中获得一个文件的所有统计数据(时间戳、大小、只读状态以及类型(文件或目录))。

  • 根据平台不同,这样可能会比进行多个申请要更为高效。

  • 这个变更还添加了可替换的目录迭代函数(IterateDirectoryStat 和 IterateDirectoryStatRecursive)以供您在需要统计数据以及硬盘上的文件/目录时使用。

  • 对于将此统计数据作为底层目录迭代的一部分来进行提供的平台(诸如Windows),这样比起两个单独的文件系统申请来说,能够获得更好的性能表现。

  • 不将此信息作为目录迭代一部分进行提供的平台会在迭代时执行统计数据申请。

  • 新增内容:添加检验值,以确保连接程序仅能由连接程序管理器来删除。

  • 新增内容:添加检验值,以确保两个相同的默认子对象不能在类构建程序中创建。

  • 新增内容:添加了在使用UnrealMathDirectX时对VectorCeil、 VectorFloor、VectorTruncate、 VectorFractional的应用。

  • 新增内容:添加更多的统计数据到垃圾回收程序。

  • 新增内容:添加新的统计数据命令,它们会添加自定义标记到统计数据流。

  • 可以通过在控制台中输入stat namedmarker#markername#来进行使用

  • 新增内容:添加static_asserts到TSharedPtr<T>,以确保其没有在T的TSharedFromThis的相反的线程安全模式中使用。

  • 新增内容:在事件中添加对等待/触发的统计数据

  • 新增内容:添加统计数据以侦测BulkData的异步缓冲泄漏

  • 新增内容:添加统计数据来触发异步事件

  • 新增内容:添加对绑定Lambdas到多路广播代理的支持

  • 注意:绑定到多路广播代理的Lambdas 只能 通过由Add()所返回的句柄来删除,而不能通过已废弃的Remove(Delegate) api 来完成。

  • 新增内容:添加了对UObjectProperty, ULazyObjectProperty 和 UAssetObjectProperty的支持,以将其作为UMapProperty键值使用。

  • 新增内容:在引用链中添加了TMap属性支持。

  • 新增内容:添加了TSet::Reset

  • 新增内容:添加了对TAssetPtr 和 FStringAssetReference的应用函数,以获得包和资源名称。

  • 新增内容:AVX支持现在可以通过在模块的.Build.cs规则文件中设置bUseAVX = true来基于每个模块进行启用。

  • 新增内容:变更GetResourceSize()的默认返回值为0。

  • 新增内容:现在声明BlueprintImplementableEvent函数为虚拟函数将会输入一条警告信息。

  • 新增内容:废弃了FRotator::operator-()并创建了一种新的模式FRotator::GetInverse()。 在旋转量上对组件的查看是一种无意义的操作。

  • 新增内容:启用UnrealHeaderTool中对子对象的可编辑性。

  • 新增内容:ensure() 和 ensureMsgf() 宏现在仅会在其失败的首次进行记录/中断。

  • 添加ensureAlways() 和 ensureAlwaysMsgf()宏,它们作为旧有的ensure()宏,并添加了一条'debug ensureAlways'控制台命令。

  • 移除了ensureMsg(), ensureOnce() 和 ensureOnceMsgf()宏。

  • 新增内容:扩展的TDoubleLinkedList API

  • 现在可以不用删除和重新分配节点内存来删除和插入节点。

  • 添加Contains辅助程序方式。

  • 新增内容:FAssetPtr 和 TAssetPtr现在提供了一种LoadSynchronous实用函数

  • 新增内容:已删除FTickFunction::EnableParent。

  • 新增内容:内联快速UObject类型检查并默认启用。

  • 新增内容:使得物体删除侦听程序的线程更安全

  • 新增内容:使得在UnrealHeaderTool无法搜寻到类型引用时产生的错误信息更有帮助。

  • 新增内容:非整体对象现在仅会在其被启用时编译插件,除非bBuildAllPlugins在其target.cs文件中被设置为true。

  • 新增内容:OnControllerAnalog, OnControllerButtonPressed 和 OnControllerButtonReleased现在可以由来自定义了新输入绑定的插件来使用。

  • 函数现在会取入FName(或称为FGamepadKeyNames::Type)

  • 删除EControllerButtons并替换为FGamepadKeyNames,它提供了对所有非平台特定的游戏手柄按键的FName映射。

  • 新增内容:最优化UnrealHeaderTool解析。

  • 添加新的IsSorted算法。

  • 添加新的FindSortedStringCaseInsensitive算法,以在多个已知字符串间进行二进制搜索。

  • 新增内容:PanicFlushThreadedLogs现在也会刷新相关的输出设备。

  • 新增内容:性能表现:添加了SSE平台的向量化的VectorSinCos。

  • 最优化FRotator->FQuat会话以使用向量化的版本,并向量化四元数编译操作。

  • 新增内容:PR#1108: 添加具有FVector2D参数的Polar/Cartesian转换函数(由yoyohobo665贡献)

  • 新增内容:PR#1243: PreUnloadCallback将会在关闭前在模块接口上进行调用(由FineRedMist贡献)

  • 新增内容:PR#1281: 仅在游戏线程的断言失败时转存脚本栈(由AndrewScheidecker贡献)

  • 新增内容:从LoadPackageAsync中删除了包类型参数,因为不能对所有内容使用它

  • 新增内容:序列化的FStringAssetReference属性现在可以被重新作为TAssetPtrs来输入,并在反序列化时自动处理。

  • 新增内容:现在可以在目录开关中使用统计数据

  • 新增内容:UEnums现在会进行紧密封装。

  • UnrealHeaderTool不再会为缺失的枚举值而生成假条目。

  • 新增内容:UEnums现在会把商店值作为uint8来储存,而非int8(许多枚举把值定义为超过128)

  • 新增内容:UnrealBuildTool Makefiles现在也会在Mac上进行启用,用来加速此平台上的UnrealBuildTool启动时间。

  • 修复在使用Mono时的Makefile序列化问题。

  • 修复在线程池的非帧统计数据的不准确计算。

  • 添加UEngine::bForceDisableFrameRateSmoothing来启用外部系统,从而强制平滑,而无需覆盖所需的基础引擎设置。 不同的HMD模块现在使用它来禁用在立体声渲染时的平滑。 修复在侦测到HMD时禁用帧速平滑的位置处的问题。

  • 在项目路径不正确的情况下,添加了修复命令行的代码

  • 添加代码来确保所有被动态载入的对象都对Garbage Collector(垃圾回收器)进行了引用,直到载入完成。

  • 添加了IsValidIndex到FString,并且让[]操作符使用它来确认它们被赋予的索引是有效的。

  • 为FLinkerLoad::FlushCache()添加缺失的应用。

  • 变更UnrealBuildTool以使用和普通编译时的热重载期间相同模块的顺序来生成UnrealHeaderTool的清单。

  • 校正用于保存包含于临时包的PerObjectConfig对象的设置值的设置部分。

  • 这样让代码符合UObject::LoadConfig中使用的代码

  • Directory watcher(目录查看程序)不会再在关闭查看的情况下来汇报读取内容

  • 禁用编译器警告C4351(新操作:数组'array'的元素将被默认初始化)

  • "new behavior(新操作)" 位于Visual Studio 2005中,并且不再被视为超出预期。

  • 禁用UClass的属性,使之不具有"Instanced(实例化)"的关键字

  • 之前没有成功运行过,现在不再使用。 如果您在更新时收到此错误,请从UPROPERTY中删除"instanced(实例化)"关键字。

  • 修复在数组标记结束前,刚添加的AddReferencedObjects指针未能被标记流正确处理所造成的崩溃问题。

  • 导入新的标记类型,它标志着标记流中的指针数据的末端,从而正确地为数组处理返回值的数量。

  • 修复在执行热重载时与RecastNavMesh相关的崩溃问题

  • 修复使用UnrealHeaderTool无法解析代码注释的问题

  • 修复在使用未解析的UObject类型生成代码时产生的UnrealHeaderTool崩溃问题。

  • 修复在UWorld::ServerTravel中的错误信息。

  • 修复在UObject::BeginDestroy资源中的对象名称。

  • 修复在使用TMap属性时在FGCReferenceTokenStream::Repla?ceOrAddAddReferencedObjectsCall中产生的崩溃问题。

  • 修复UMapProperty serialization中的崩溃问题

  • 修复尚未被完全动态载入的FindObject函数返回对象的问题。

  • 修复FString操作符的可换性问题。

  • 修复一些FString注释。

  • 修复在字符串为空时的FString::FindLastCharByPredicate。

  • 修复在用户添加C++枚举到代码时产生的热重载崩溃问题。

  • 修复在获取类默认对象的复制值时产生的热重载崩溃问题。

  • 修复在执行热重载后导航相关的崩溃问题

  • 修复FObjectAndNameAsStringProxyArchive 和 FNameAsStringProxyArchive中的operator(操作符)<< return values(返回值)。

  • 修复放入容器的分配器中的指针校正问题。

  • 修复在模块获得更新后的可能的UELinkerFixup链接器错误问题。

  • 修复编译时在错误的模块中,UnrealHeaderTool会假设存在父类的罕见问题。

  • 修复造成静态代码分析警告的一些逻辑问题。

  • 修复UnrealBuildTool中的路径控制控制,这可能导致一些C++项目无法在一些场合进行编译。

  • 修复在ElementType与KeyType不同时产生的一些TSet编译错误。

  • 修复在动态载入包后的陈旧的链接指针的问题

  • 修复统计数据不在引擎启动时收集所有数据的问题

  • 修复在对重启的调用后TBitArray范围的迭代。

  • 修复TBitArray::GetAllocatedSize和TBitArray::CountBytes。

  • 修复UnrealAutomationTool中的1000记录的文件名称限制。

  • 修复不会将W与系数进行相乘的FSphere::TransformBy(FTransform)函数问题。

  • 修复在引擎的封装中不产生追溯分配的功能问题。

  • 修复UEnum vtable链接。

  • 修复从一些包含非ASCII字符的路径中运行时,UnrealBuildTool未能获得环境变量的问题。

  • 修复UnrealBuildTool在热重载模块时不对其makefile进行重新编译的问题

  • 修复UnrealBuildTool在新的UHT类型被添加到头文件且之前没有添加过任何UHT类型或最后一个UHT类型也被移除时,会不更新makefile的问题。

  • 修复在蓝图函数声明中使用多路广播动态代理类型时UnrealHeaderTool崩溃的问题。

  • 修复UnrealHeaderTool未能编译在之前的相同头文件中使用枚举的代理的问题。

  • 修复UnrealHeaderTool未能在头文件的顶部位置跳过DECLARE_MULTICAST_DELEGATE声明的问题。

  • 修复UnrealHeaderTool在一些情况下不能正确解析元数据信息的问题。

  • 修复VectorMod()对负值不能正确运行的问题(现在与std fmodf相匹配)。 修复VectorSinCos()执行不正确的降低范围的问题。 改进启动时的数学测试。

  • 数学测试:添加了VectorMod, VectorSinCos。

  • 数学测试:添加更多的FQuat <-> FRotator会话并将其清除(之前进行了更多重要的测试,因为这些测试可能会导致后期的测试失败)。

  • 修复UnrealAutomationTool中的 'You are attempting to compile on a machine that does not have a supported compiler!' (您正尝试在不具有受支持编译器的电脑上进行编译)以及其他编译错误。

  • 对ConditionalSleep的内联调用以防止FMultiReaderSingleWriterGT中的TFunction + lambda性能消耗

  • 确认UAT编译仅有内容的项目,以防止缺失/过期的UE4Game二进制文件问题。

  • 让失败信息来更清楚地对PostInitProperties进行路线排列

  • 在UnrealHeader遇到有问题的UENUM() 修饰符时显示错误信息。

  • 在一些平台上实现更为准确的 InvSqrt() 和 InvSqrtEst() 。

  • 将SSE平台与其它硬件上 (iOS)执行2种牛顿-拉普森迭代的结果进行匹配,或与使用完全准确开平方计算的非SSE的结果进行匹配。

  • 标量函数现在会匹配向量化的版本(VectorReciprocalSqrtAccurate),这样可以在1e-8f间对标准化的标准值进行对比(这对于同时使用标量和向量的FQuat很重要)。

  • 让标准化向量(1,0,0)返回相同的向量值,而非 (0.9999998xx, 0, 0)。

  • 修复一些平台上的InvSqrtEst()实际上使用更高准确度(更缓慢)FGenericPlatformMath InvSqrt()的问题。

  • 在SSE平台上的更为准确的VectorReciprocalSqrtAccurate。

  • 将SSE平台与其它硬件上 (Xbox, iOS)执行2种牛顿-拉普森迭代的结果进行匹配,或与使用完全准确开平方计算的非SIMD的结果进行匹配。

  • 让NormalizeRotation (0,0,0,1)返回相同向量,而非(0,0,0,0.99998...)。

  • 最优化FPaths::GetCleanFilename、GetPath 和 GetBaseFilename。

  • 防止UnrealHeaderTool解析UFUNCTIONs中的数组参数。

  • 删除不使用的UObject::CreateArchetype和未应用的UObject::UpdateArchetype。

  • 移除仅为UnrealMathSSE定义的"VectorBitwiseAND"。 已经为所有平台定义了 "VectorBitwiseAnd"。

  • 删除已废弃的代理和计时器函数。

  • 从FQuat处删除USE_MATRIX_ROTATOR。 它不会被保留,并会影响代码的可读性。

  • 来自于其它线程的统计数据,诸如图表或线程池现在应与游戏线程进行同步。

  • UnrealHeaderTool现在将可以解析TSubclassOf<USomeClass>和参数,而无需报告错误。

编辑器和工具

    <li>
    新增内容:您现在可以辅助蓝图功能函数创建正确蓝图的能力。 之前所有类创建标准蓝图,现在如果在创建新蓝图资源时,任意注册的IBlueprintCompiler对特殊UObject类具有特殊的蓝图类,则其会询问编译器模块。 这样可以修复新资源按钮为UUserWidget子类而非UWidgetBlueprints创建UBlueprints的问题。
  • 动画工具现在可以正确处理结尾是斜杠的命令行参数问题。

  • IntroTutorials 和 Blutilities模块现在会在运行命令开关时载入,使得可以查看、重新保存资源等等。

  • SPropertyEditorEditInline现在会遵从"noclear" UProperty标识。

  • UnrealVS改进

  • v1.36 修复了设置启动项目的bug,当通过UnrealVS工具栏设置时,可能会忘记启动项目。

  • v1.38 改进的命令行参数处理可以终止用户创建项目的无效uproject路径。

  • v1.39 移动UnrealVS开发内容到VS2015。 它及其后续版本可用于VS2012/13/15。

内容浏览器

  • 通过breadcrumb来变更内容浏览器路径现在会通知您进行了变更。

  • 修复在编辑器载入后具有空白字符串的SPathView::OnPathSelected被调用的问题。

地貌

  • 把地貌编辑器的应用详细信息移动到私有文件夹中。

游戏框架

  • 新增内容:添加GameplayStatics::DeprojectScreenToWorld 和 ProjectWorldToScreen函数。

  • 添加取入单个视图投射矩阵FSceneView::DeprojectScreenToWorld的简化版本。

  • 添加了FSceneView::ProjectWorldToScreen。

  • 添加了PlayerController::GetLocalPlayer()。

  • 新增内容:AActor::bPendingKillPending重命名为bActorIsBeingDestroyed并且为私有。

  • 新增内容:来自于非CDO模板所生成的Actor现在将会被命名为类似于模板的名称。

  • 新增内容:添加返回标准化拷贝的FQuat::GetNormalized()。

  • 新增内容:添加FTransform的方式CopyTranslation()、 CopyRotation()、CopyScale3D()。

  • 防止VectorRegister和FVector间的中间拷贝和不对齐的载入/存储。

  • SceneComponent现在在CalcNewComponentToWorld()中使用这些内容。

  • 新增内容:添加FBodyInstance::OverlapTestForBody()。

  • 当唯一的方式是取入TArray时,防止堆分配。

  • 模板化OverlapTestForBodies()以启用具有不同分配器类型的TArray(名称为TInlineAllocator for OverlapTestForBody())。

  • 新增内容:添加描画引用选项到HUD DebugText,从而启用对调试行的阴影设置。

  • 新增内容:添加内容以确认变换在SceneComponent操作的多个位置有效。

  • 新增内容:添加ETeleportType标识到MovementComponent::MoveUpdatedComponent(Impl)、SafeMoveUpdatedComponent以匹配SceneComponent::MoveComponent。

  • 注意:当在FScopedMovementUpdate中使用时,我们当前总是将其作为非传送。

  • 新增内容:添加FMath::GetMapRangeValueUnclamped和重命名的GetMappedRangeValue到GetMappedRangeValueClamped。

  • 新增内容:添加新的FActorRange, TActorRange 和 FSelectedActorRange类型以支持这些概念的迭代范围。

  • 新增内容:添加了更新的并行排列。

  • 新增内容:添加了CharacterMovementComponent::FindFloor()的统计数据计数器。

  • 新增内容:添加了"stat Game"和"stat PlayerController"中的PlayerController的统计数据。

  • 新增内容:让TriggerSphere(触发器球体)/Capsule(胶囊体)/Box(盒体)类在引擎模块外可进行子类处理。

  • 新增内容:清除角色移动统计数据。 添加AdjustFloorHeight的新统计数据。

  • 新增内容:USoundNode::CreateStartingConnectors的默认应用现在会有至少GetMinChildNodes()个连接。

  • 新增内容:导出了具有ENGINE_API的FOverlapInfo。

  • 新增内容:显示在蓝图中设置actor和组件的更新组的能力(对默认对象使用SetTickGroup或编辑其值)。

  • 新增内容:性能表现:在启用向量固有部分时,快30%的FQuat::Normalize()和FQuat::GetNormalized()。

  • 新增内容:性能表现:在向量化平台上添加FTransform方式,可以在操作前,首先防止转换到FVector的性能损耗。

  • 添加静态方式AreRotationsEqual、AreTranslationsEqual、AreScale3DsEqual、AddTranslations、SubtractTranslations。

  • 添加了RotationEquals(FTransform)、 TranslationEquals(FTransform)、Scale3DEquals(FTransform)

  • 新增内容:性能表现:添加了向量化的FRotator::Equals() 和 IsNearlyZero()应用。

  • 新增内容:性能表现:CharacterMovement导航网格物体射弹使用性能消耗更小的线-平面-交叉,并在目标处时防止其出现。

  • 新增内容:性能表现:应用的更快的四元数向量旋转。

  • Scalar FQuat::RotateVector() 花费的时间降低18%。

  • VectorQuaternionRotateVector()花费的时间降低25%。

  • 向量化的FTransform * FTransform花费的时间降低33%。

  • 新增内容:性能表现:当向量固有函数可用时,最优化对FQuat的比较。

  • 新增内容:性能表现:在每次接收到模拟的代理为欧洲和旋转复制时,移除不必要的侵占检测。

  • 网络角色代理仅需在其使用0的速度传送时查看侵入的情况。 普通的移动已经处理了侵入的情况。

  • 新增内容:性能表现:SceneComponent中的旋转转化已经进行了缓存,以防止可能情况下的Quat<->Rotator转换。

  • 在缓存Quat<->Rotator转换时添加了FRotationConversionCache,并在源旋转为相同的情况下返回缓存的转换。

  • SceneComponent使用这个缓存以用于RelativeRotation (FRotator)的内部使用和对GetComponentRotation()的调用(返回来自于ComponentToWorld的四元数的FRotator)。

  • 因此,如果旋转自上次调用后发生了变更,GetActorRotation() 和 GetComponentLocation()仅执行一次转换。

  • 新增内容:性能表现:当旋转为对称时,旋转移动现在可以防止UpdateOverlaps,即使是大多数情况下的当前覆盖组件。

  • 新增内容:重构向量化的四元向量渲染为单一模式的(VectorQuaternionRotateVector),而非对VectorQuaternionMultiply2()的两次调用。

  • 这样可以让其他旋转方式能更方便地进行应用。

  • 还添加了VectorQuaternionInverseRotateVector()

  • 新增内容:简化FindGeomOpposingNormal()的返回值(并移除参数)。

  • 新增内容:生成现在会遵从原生根组件的任意默认变换的actor。

  • 新增内容:TInlineComponentArray现在也可以使用常量Actor*来进行初始化

  • 新增内容:UGameInstance::InitializeStandalone现在可以在运行于编辑器代码时进行调用。

  • 新增内容:USoundWaveStreaming已经被重命名为USoundWaveProcedural,以更好地描述其用途。

  • 如果存在代理网格物体,CameraComponent::SetCameraMesh现在会更新它。

  • Actor迭代程序再也不会在迭代进行时返回已经被标记为等待销毁的Actor。

  • Actor::GetActorEnableCollision()现在是常量。

  • 为SceneComponent::MoveComponent添加单独的统计数据。 在之前,它不被作为"MoveComponent Time"的一部分进行追溯。

  • 为FDamageEvent添加虚拟析构函数(PR#1141, 感谢bozaro!)

  • 检查当在FCollisionQueryParams中添加Actor或组件碰撞到被忽略的组件列表时,其是否被启用。

  • 创建所需的UWorld::DefaultPhysicsVolume。

  • 修复在世界没有初始化时(命令行开关等),处理物理体积时产生的崩溃。

  • 已废弃的UProjectileMovementComponent::GetEffectiveGravityZ()倾向于仅仅覆盖GetGravityZ()。

  • 修复的阻挡碰撞通知在无效例中被触发(等待销毁或空actor/组件)。 修复在等待销毁时SceneComponent尝试移动的问题(PrimitiveComponent在此情况下已经退出)

  • 修复在碰撞响应进行变更的情况下(来自于重叠或其它阻挡撞击),来自FScopedMovementUpdate()的阻挡碰撞被调度的问题。

  • 修复在UCharacterMovementComponent::SmoothClientPosition()中角色网格物体的相对平移不正确应用的问题。

  • 修复APlayerController::ReceivedSpectatorClass()以采用正确类型的类。

  • 修复Character::bSimGravityDisabled对于某些情况下的模拟pawns未能恢复为false的问题。

  • 修复崩溃时尝试使用具有0个玩家的SSSwapControllers调试命令的问题。

  • 修复GameInstance可执行程序不会在0个玩家进行触发的问题,它使得无法重新添加玩家。

  • 修复在角色胶囊体被标记为等待销毁和由MovementComponent::TickComponent设置为空时的崩溃问题。

  • 修复在射弹的UpdatedComponent或旋转移动在下一次更新时被标记为等待销毁并设置为空时的崩溃。

  • 修复FTransform::TransformFVector4()和TransformFVector4NoScale()的标量版本,设置W为1或2,而非0或1。

  • 在撞击到多个表面时,修复来自于原始移动方向的SlideAlongSurface值。

  • 修复在角色一次推动到多个表面的角落时的晃动。

  • 修复对不追溯总体性能损耗的CharacterMovement的"stat game"中的统计数据追溯程序。 添加对角色网络移动和平滑的统计数据。

  • FNotifyBufferFinishedHooks现在可以由模块使用,而非引擎模块。

  • 完整DLL显示的ADecalActor,供您对其进行衍生。

  • 游戏/URL选项解析模式现在暴露给蓝图。

  • 模式UCharacterMovementComponent::GroundMovementMode为私有,并提供了获取/设置的方式。

  • 执行使得GroundMovementMode仅进行行走或NavWalking。

  • 如果当前是不同的地面行走模式,设置模式将会切换移动模式。

  • 清除Pack/UnpackNetworkMovementMode()中的常量,并确保只有一个有效的地面模式(行走或NavWalking)

  • 最优化Pop的不同使用,以防止对短期或频繁使用的TArray实例的增量重新分配。

  • 性能表现:在没有设置倾斜值或偏转值时,防止对变换的重新计算,以及在FAnimNode_RotateRootBone::Evaluate()中的Quat<->Rotator会话。

  • 性能表现:更快的FQuat::operator!=

  • 性能表现:更快的Quat->Rotator会话。

  • 我们仅需要标准化处理1个坐标轴并且仅在极端情况下才这样做(倾斜值达到-90或90)。 ASin和ATan2已经产生了标准化的结果(正如在[-pi, pi]中那样)。

  • 性能表现:内联一些常用的Actor、FBodyInstance以及FCollisionResponse函数。

  • 性能表现:把一些文本的静态初始化移出函数并移到全局范围。 防止这些函数中的分支和额外的操作。

  • 性能表现:最优化和简化的CharacterMovementComponent函数:IsFalling(), IsMovingOnGround(), IsSwimming(), IsFlying()。

  • 性能表现:最优化CharacterMovement::PhysicsRotation()以降低FRotator比较。

  • 性能表现:最优化SkinnedMeshComponent中MasterPoseComponent弱指针的使用。

  • 性能表现:最优化UPrimitiveComponent::DispatchBlockingHit()中弱指针的使用。

  • 性能表现:最优化USkeletalMeshComponent::CalcBounds()中弱指针的使用。

  • 性能表现:在CharacterMovementComponent::PhysicsRotation()中的对比之前,移除不必要的FRotator标准化。

  • 性能表现:移除VectorNormalizeRotator中的静态初始化,并移动常量到GlobalVectorConstants。

  • 性能表现:UMovementComponent::SlideAlongSurface在内部使用FQuat而非FRotator。

  • 从CharacterMovementComponent源移除GetSafeNormalPrecise()和GetClampedToMaxSizePrecise()。

  • 存储的FVector模式在InvSqrt() 变更后变得足够精准。

  • 当在UpdateOverlaps()中找到无效的重叠时,从OverlappingComponents数组中移除stale(空、等待处理的销毁)重叠。

  • 从GameState中删除未使用的InactivePlayerArray变量。

  • 模拟的CharacterMovement现在会在着陆时使用SetPostLandedPhysics(),而不是硬编码的行走模式。

  • 修复SetPostLandedPhysics()不遵从默认着陆移动模式的问题,它不属于行走模式。

  • 声音节点引脚和标题名称现在可以进行正确的本地化

  • TActorIterator现在可以正确地和FActorIterator一样来筛选隐藏关卡中的Actor

  • UCharacterMovement::StepUp()不再使用SafeMoveUpdatedComponent来作为移动组件

  • 这样会导致向相反方向的移动或违反步进高度的规则。

  • 对CharacterMovementComponent的多个细微修复和改进。

  • 添加"virtual(虚拟)"修饰符到一些已存的函数中。

  • 在多处改进"const(常量)"校正值。

  • 改进向下的力的代码,并将其移动到新的可覆盖的函数ApplyDownwardForce()处。

  • 移动根运动速度代码的计算到新的可覆盖函数CalcRootMotionVelocity()。

  • 对函数GetLedgeMove() / MoveAlongFloor() / PhysWalking() / StepUp() / ApplyRepulsionForce()的细微改进。

  • 在清除PlayerController的观察者Pawn时,使用常规Pawn作为附件,并在设置了常规Pawn的情况下自动管理相机对象。

  • 在不使用FRepMovement::AngularVelocity的时候将其清零。 如其先前具有非0值,则复制起来更为高效(从模拟切换为非模拟)

本地化

  • 新增内容:创建了关于本地化配置脚本和本地化管道配置的所有编辑器通用需求的新本地化模块。

  • 矫正了FText::FindText的操作方式,它无法正确确保找到的文本具有与提供的源字符串(如果有的话)关联的显示字符串。

  • 写入清单到文件现在会使用完整的/绝对的/根路径在调试时防止任何歧义。

网络

  • 新增内容:添加了一个for loop,从而在调用Actor::PreReplication时,对所有复制的组件调用PreReplication

  • 新增内容:添加了连接状态追溯到在线信标,这样可以在使用时查看它们的状态。 APartyBeacons同时返回关于预留移除的更多有用信息。

  • 新增内容:添加GetMaxAvailableTeamSize函数到信标。 它显示了适用于已存团队的新玩家的最大数量。

  • 新增内容:添加UStruct到FVariantData转换器 - 非常基础,转换UPROPERTY到键,值配对。

  • 新增内容:所有的信标类都可以访问新GetNetDriverName函数,而不是直接访问名称。

  • 新增内容:把ConsoleCommand的大部分内容移出APlayerController,并移入UPlayer,以便于更好的共享(信标可以现在使用ConsoleCommand)

  • 新增内容:团队信标现在可以处理对现存预留的更新。 客户端可以发送预留更新并获取确认或拒绝。

  • 新增内容:团队信标具有新的拒绝响应,以帮助消除失败的情况(错误的会话,无效的预留)。

  • 新增内容:团队预留信标现在可以在当前领队退出游戏时处理对领队的更新。 客户端会向服务器汇报最新联系的领队。

  • 新增内容:团队预留信标现在会在新客户端加入信标时发送更新到所有连接的客户端。 它会在该时发送当前剩余的预留信息。

  • 新增内容:UWorld::Listen中的代码不再会被编译到客户端的版本中,这样就不可能执行。

  • 在调用actor的预复制时,添加组件的预复制

  • AOnlineBeaconClient::ClientOnConnected不再为虚拟,转而使用OnConnected

  • 在actor生成的位置,信标网络驱动器不会被正确销毁,这是由于DestroyActor假设它们位于游戏网络驱动器上,这个问题已修复。

  • 让APartyBeacon首先复制预留检查,这样其他大小的检查不会在其意识到预留是一种复制操作前失效。

  • OnlineBeacon衍生的对象可以在EndPlay上正确支配其网络驱动器,关于网络驱动器没有在之前进行销毁会造成世界的垃圾回收问题,此问题已被修复。

  • OnlineBeacon衍生的对象可以在EndPlay上正确支配其网络驱动器,关于网络驱动器没有在之前进行销毁会造成世界的垃圾回收问题,此问题已被修复。

  • NonePending中的会话信标现在会要求输入状态,并且会在此信标完成通信后返回该位置。

  • 预复制对Actor上的所有复制的子组件进行调用

  • 预复制对Actor上的所有复制的子组件进行调用

  • 当不存在世界时,放置可能的DestroyBeacon崩溃(举例来说,这很可能在在服务器的GC移动时发生)

  • ShowInviteUI API现在有一个会话名称。

在线

  • 新增内容:现在已为Steam应用了FOnlineExternalUI::ShowProfileUI。 这样在steam覆盖层中显示了特定玩家的个人信息。

  • 新增内容:FUniqueNetId现在衍生于TSharedFrom,这样可以对从OSS传递的常量引用调用AsShared 同时还把所有的引用标记为了常量。

  • 添加了GetInstanceName到IOnlineSubsystem接口。 它会返回OSS接口的名称。 游戏仅使用"default(默认值)",但PIE具有实例的名称,以供引用世界关联内容。

  • 添加GetTypedHash函数到FUniqueNetIdRepl ,这样就可以在TMaps中使用它

  • 修复在处理关键帧时的Steam游戏匹配代码中的可能的字符串缓冲溢出问题。

  • 在没有连接客户端的情况下,游戏组信标不再尝试发送预留更新。

其它

  • 新增内容:用户现在可以提供网页浏览器控件的功能以处理弹出窗口的创建。

  • 用户现在可以提供网页浏览器控件的功能以处理由浏览器所创建的弹出窗口的关闭。

物理

  • 新增内容:添加来自于traces & sweeps(追溯 & 清除)的到FHitResult的距离信息。

*#git author EverNewJoy

  • 新增内容:合并布料启用cvar。

  • 新增内容:性能表现:最优化碰撞对话中的弱指针的使用。 移除在填入结果时的FHitResult的拷贝。 防止重叠的消耗性能较大的MTD代码,因为仅用其来阻挡撞击。

  • 修复错误的变量,以确保ConvertOverlappedShapeToImpactHit()中为正确变量。

  • 性能:防止在模拟中移动的每个物理组件的Quat->Rotator->Quat conversion。

  • 性能:内联的FBodyInstance::IsInstanceSimulatingPhysics() 以及bSimulatePhysics的存取器。

  • 性能:内联一些常见的PhysX<->Unreal类型会话。

  • 移除UWorld::ComponentSweepMulti()中的性能损耗结果的复制文件。

  • 这样可以确保与多个形状交换会实际返回性能损耗的正确排序列表,因为所有的性能损耗现在都放在一起进行排序,而不是附加于单独的排序块中。

  • 额外说明,GeomSweepMulti_PhysX不会清除进入的OutHits数组,仅会附着于它。

  • 从PhysXCollision中删除VERIFY_GEOMSWEEPSINGLE 和 VERIFY_GEOMSWEEPMULTI。

  • 重新排列对位于CollisionConversions的SetHitResultFromShapeAndFaceIndex的调用,以更好地匹配FHitResult的内存布局。

平台

  • 新增内容:添加位于FPlatformProcess中的流程枚举抽象FProcEnumerator。 现在在您需要时能够更方便地获取系统处理信息!

  • 新增内容:启用Xcode项目中MetalRHI模块的语法高亮

  • 修复平台上不使用系统vswprintf的%格式

  • 修复IPlatformFile::OpenWrite,这样在bAppend设置为true的情况下,在各个平台上的操作是相同的。

  • 尤其是要确保返回的文件句柄被设置为文件的末端。

  • 修复目标平台的冗余初始化。

Mac
  • 添加一些警告信息,忽略Mac上的标记,使得引擎可以使用Xcode 7来和新的Clang进行编译

  • 修复在使用OS X 10.11 SDK编译时与CoreAudio框架的链接

  • 修复在Xcode进程中到Mac对象的路径

Playstation 4
  • 新增内容:对PS4并行转换代码的小修复,包括了移除"late resolve(后解析)"。

  • 添加代码,使得绑定的着色器状态缓存可以在PS4上进行并行转换

  • 修复webapi弃用的警告信息。

Xbox One
  • 修复在编译Xbox One时确实ICU PDB文件时显示的警告。

编程

  • 新增内容:新增的GameplayTagContainer调试可视查看器。

  • 新增内容:添加对使用SN-DBS的Win64版本的分布式编译的支持。

  • 需要SN-DBSv2.4.0.61 和 SN-DBS-VC-Extension-2013v1.0.7.0。

  • 新增内容:使用Clang在Windows (Beta)上编译引擎

  • 现在可以在Windows上使用LLVM/Clang编译器来编译虚幻引擎4的C++代码

  • 这项功能仍处于试验阶段,并且需要额外的工作来更好地使用它

  • 如果您对于尝试或帮助我们改进对虚幻引擎4的Clang支持有兴趣,请查看下方的论坛主题

  • https://forums.unrealengine.com/showthread.php?54770-Using-Clang-to-compile-on-Windows

  • 新增内容:虚幻引擎4的快速XML解析器

  • 这是一个简单的XML解析器,可以非常快速地载入XML文件。

  • 新的FFastXml类具有单个静态方式ParseXmlFile(),以供载入XML文件。 解析器旨在于高效载入文件,但可能不支持所有的XML功能,或者可能对有问题的数据无法执行。

  • 和FXmlFile类不同,FFastXml不会生成XML节点树。 您必须提供使用IFastXmlCallback的回调类,并随着其解析对元素和属性进行响应。 调用ParseXmlFile()函数并传递完整路径到XML文件以解析(XmlFilePath parameter),或者载入此文件并使用XmlFileContents parameter来传递内容。

  • XmlFilePath或XmlFileContents之一必须有效,以让ParseXmlFile()能够运行。

  • 处理XML数据

  • 创建执行IFastXmlCallback接口的类。 这个类将会随着其被FFastXml::ParseXmlFile()的载入,而对处理XML元素进行响应。

  • 您会对遇到的每个XML元素接收到ProcessElement()调用,以及在元素范围结束时的相关ProcessClose()调用。 在当前元素的范围内,将会对找到的任意属性调用ProcessAttribute()。

  • 添加一个对"XmlParser"的模块依赖项,这样可以调用FFastXml::ParserXmlFile()。

  • 这个XML解析器是基于John W. Ratcliff的"FastXml"

  • 新增内容:现在可以使用由网页浏览器控件所渲染的html 内容的<select>菜单

  • 新增内容:网页浏览器控件现在支持基于css属性的鼠标指针变化。

  • 新增内容:调整选择并行编译的策略。如果物理核心的数量大于4并且不等于逻辑核心的数量,则使用两个核心的平均值,以用于并行编译的数量。

  • 新增内容:虚幻编译工具支持Visual Studio 2015 (Beta)

  • 这个版本中默认禁用了VS 2015支持(并不是所有的代码和库都进行了移植)。

  • 在生成项目文件以启用VS 2015支持时,使用新的'-2015'选项

  • 默认使用Windows SDK 8.1。 如需转而使用Windows SDK 10,启用WindowsPlatform.bUseWindowsSDK10。

  • 不支持通用Windows平台app。

  • 仍然存在多个问题(在虚幻编译工具代码中搜索"@todo UWP")

  • 新增内容:UObject实例现在可以被传递到SWebBrowser,并从浏览器javascript处访问。

  • 修复具有Slate控件的C++代码在引擎内的编译非常缓慢的问题

  • 修复在Windows使用Clang编译时的一些编译错误(r231657)

  • 修复速度树导入程序代码的编译缓慢问题(这是由于优化程序的内部循环问题)

  • 修复Windows特定代码中的多个C++变量阴影的问题

  • 改善启动程序代码项目的智能提示

  • 之前在OS X上使用网页浏览器模块时,用户必须创建NSApplication的自定义子类。 现在不需要了。

  • 在自动工具中清理了一些不使用的变量。

  • 虚幻编译工具:修复了在VC++项目文件中设置的不正确VS工具版本。

渲染

  • 新增内容:添加了并行的GetDynamicMeshElements任务框架。

  • 新增内容:添加其它并行渲染调整和选项。 平衡延迟关联内容,cvar控制遮挡的延迟,GDME任务框架。 默认全部禁用。

  • 新增内容:添加并行平截头体剔除。

  • 新增内容:添加r.CompositionGraphOrder以用于后期处理,变更默认顺序为节点创建顺序(让AsyncCompute具有更多控制)

  • 新增内容:添加多个性能表现调整。 压缩布料缓冲。 添加延迟均匀缓冲创建直到其为可见的选项。 添加延迟骨架内容为可见并在RHI线程上执行的选项。 高优先级图表任务。 添加高优先级更新。

  • 新增内容:硬件的颜色现在会在创建时绑定到渲染对象。 对即将推出的图形API进行了最优化。 (DX12, Vulkan).

  • 新增内容:扩展VisualizeTexture/Vis,使其也具有红、绿和蓝通道模式(由Lionhead Studios制作)

  • 新增内容:通过对基础渲染描画的由前向后的排序来最优化FDeferredShadingSceneRenderer::InitViews()。 (由pzurita提交,来自申请820),#git author pzurita pzurita@gmail.com

  • 新增内容:启用并行渲染线程更新以改善游戏线程的性能表现。 这是由AllowAsyncRenderThreadUpdates cvar来控制的。

  • 新增内容:调整并添加控制,以控制并行命令列表的载入平衡。 相关的cvars:r.RHICmdMergeSmallDeferredContexts, r.RHICmdBalanceTranslatesAfterTasks, r.RHICmdMinCmdlistForParallelTranslate, r.RHICmdMinCmdlistSizeForParallelTranslate.

  • 新增内容:现在从源中进行编辑的用户,如果他们没有编译ShaderCompilerWorker,则会收到警告。

  • 添加代码到更新的渲染线程,以防止多个缓冲问题。

  • 添加代码来更新过场动画循环中的RHI线程和RHI资源。

  • 在对添加的功能包生成缩略图时对崩溃的其它修复方式。

  • 修复与TScopedPointer<FStaticMeshRenderData>相关的诊断码相关的崩溃问题。

  • 修复半透明光照的罕见bug。 FViewInfo截图不再使用场景分配器。

  • 修复在着色器中使用本地变量时的着色器编译bug,会导致类似均匀缓冲的问题(视图、图元,等等)

  • 修复在暂停时的运动模糊的断言问题。

  • 修复异步渲染线程更新和粒子线程。

  • 修复RHICommandLists的回收问题,之前出现了退出的崩溃问题,并且没有回收。

  • 修复HISMC的0缩放造成的崩溃。

  • 修复在光溢出和高斯景深大小不进行线程缩放的原有bug,但会造成线性性能损耗的增加。

  • 修复描画列表的并行排序问题。

  • 修复功能包和全局着色器的竞争问题。

  • 修复植被的阴影剔除。

  • 修复过场动画回放和无rhi线程的线程问题。

  • 修复具有环境雾组件的线程问题。

  • 修复在设置控制台命令为阴影,最大分辨率为1时造成的UE-16338崩溃

  • 修复合并的其它并行粒子模拟问题。

  • 仅对需要的平台发射glsl。

  • 来自于申请794: 修复depth-stencil mips不正确清理的问题。

  • 更新关于BUF_Dynamic和BUF_Volatile的期望的缓存生命周期的信息。

光照
  • 来自于申请1161: 修复SetLightColor中的sRGB问题,以用于光照组件。

  • 来自于申请790: FQuantizedLightmapData::HasNonZeroData改进。

后期处理
  • 新增内容:变更所有对PassOutputs的直接访问为GetInput(),从而使得内容重构成为可能

UI

Slate
  • 新增内容:在用于执行的chord被按下的情况下,添加了一种方式供反复执行UI的操作

  • 新增内容:无论Slate是否休眠,通过调用FSlateApplication::Get().IsSlateAsleep()来添加一种方式来对Slate进行查询

  • 新增内容:添加一种方式来指定SExpandableArea的头文件间隔

  • 新增内容:在汇报其检查状态时,转换FUIAction为使用ECheckBoxState

  • 现在有对FUIAction取入了FGetActionCheckState代理的过载,它能够返回来自于 ECheckBoxState的任意条目。

  • FIsActionChecked仍存在于向后的兼容性,并会把返回的布尔值通过转换函数转换到ECheckBoxState中

  • 新增内容:Slate菜单重构意味着所有的菜单都可以在窗口和全屏游戏中使用。

  • 之前的菜单API返回菜单为窗口,但以全屏形式显示的菜单不应为窗口形式

  • 菜单现在会遵从对其进行调用的控件的QueryPopupMethod

  • 新的API创建菜单并将其作为IMenus返回

  • 新增内容:UpdatableTexture现在会基于来自于第三方的API的源贴图数据来更新贴图,而不会首先将其复制到TArray中。

  • 新增内容:如果烘焙贴图不通过覆盖ISlateViewport::AllowScaling来匹配视口的大小,视口实现现在可以指定烘焙的贴图不进行缩放

  • 修复OS X系统的独立渲染器的一个bug,它会造成由于从多个线程中访问渲染关联内容而造成的崩溃

  • 通过移除由STableRow::ConstructChildren所添加的额外UI来修复STableRow::SetContent

  • 在查看文件时;确认查看了完整路径,以防相对路径的对比失败。

UMG
  • 新增内容:添加共享层的概念到游戏层管理器中。 和直接为玩家添加的控件不同,层管理器让您可以以特定ZOrder根据名称来添加层。

  • 您可以应用新的IGameLayer接口,并使其本身转换为一个控件。 您可以稍后根据名称申请层,将其投射到您所需的类型,并随后与您期望在层类上显示的函数进行互动。

  • 把SConstraintCanvas移出UMG模块并移到Slate的合适部分。 这样可以在更多核心引擎模块中使用,而不仅仅是在UMG中。

  • UE-16247 - 我们现在在所有的核心控件上正确调用SynchronizeProperties。 另外现在可以防止由于忘记调用Super::SynchronizeProperties()而在未来造成错误。

更新信息

C++ API 变更

  • 新增: 多路广播(广播)分析模块现在是一个使用起来更方便的插件

  • 任何在先前将此模块作为版本一部分使用的用户现在需要通过插件UI来包括它

  • Base.ini不再是空白文件,这样可以防止一些警告信息。

  • 对支持平行渲染的平台的Slate顶点缓冲延迟进行了最优化。

  • 对ParticleSystemAudit命令开关进行了细微的改进。 您可以通过-AuditOutputFolder=<SomeFolder>来指定输出目录,仅会显示更为重要的数据。

  • 烘焙的版本不再载入仅供编辑器使用的FindInBlueprint数据,这样会降低分配的内存量。

  • 新增: 硬件的颜色现在会在创建时绑定到渲染对象。 对即将推出的图形API进行了最优化。 (DX12, Vulkan).

  • SetRenderTargetsAndClear不再对每个对象取入清晰值。 将会使用创建时的值范围。

  • 新增: FUniqueNetId现在衍生于TSharedFrom,这样可以对从OSS传递的常量引用调用AsShared 同时还把所有的引用标记为了常量。

  • 为能让TSharedFromThis为有效值,内存必须来自于堆而不是栈。 可能会出现缺失FUniqueNetId实例的情况。 在这些情况下,会在首次使用AsShared时立即触发资源。 请就您发现的任何问题进行报告。 不会中断现存的代码,仅使用新的AsShared。

  • 修复了在热重启后导航网格物体生成失败的问题

  • 新增: 从LoadPackageAsync中删除了包类型参数,因为不能对所有内容使用它

  • 使用了包类型参数LoadPackageAsync函数重载现已被废弃。

  • 新增: UEnums现在会把商店值作为uint8来储存,而非int8(许多枚举把值定义为超过128)

  • 一些UEnum类的API函数已经进行了变更,从而接受/返回uint8的值,而非int8。

  • 新增: 添加了FCompactPose。

  • 仅包含了RequiredBones所需的骨骼变换。 这样我们可以直接对骨骼进行循环来完成动画评估,而非对RequiredBones数组进行迭代并此后获得每个实际的骨骼索引。

  • API 中断变更:

  • 移除函数:

  • FA2CSPose::SafeSetCSBoneTransforms

  • FA2CSPose::LocalBlendCSBoneTransforms

  • 成员类型变更:

  • FBoneTransform::BoneIndex

  • 修复迭代烘焙

  • 移除UWorld::ComponentSweepMulti()中的性能损耗结果的复制文件。

  • 这样可以确保与多个形状交换会实际返回性能损耗的正确排序列表,因为所有的性能损耗现在都放在一起进行排序,而不是附加于单独的排序块中。

  • 额外说明,GeomSweepMulti_PhysX不会清除进入的OutHits数组,仅会附着于它。

  • GeomSweepMulti_PhysX现在被标记为DEPRECATED_FORGAME。 它从未设计成供游戏使用的公共函数。

  • 性能:在TransformFVector和变量中转换单独的VectorMultiply()和VectorAdd()为VectorMultiplyAdd()

  • 已废弃的UProjectileMovementComponent::GetEffectiveGravityZ()倾向于仅仅覆盖GetGravityZ()。

  • 已废弃的UProjectileMovementComponent::GetEffectiveGravityZ()倾向于仅仅覆盖GetGravityZ()。

  • 模式UCharacterMovementComponent::GroundMovementMode为私有,并提供了获取/设置的方式。

  • 执行使得GroundMovementMode仅进行行走或NavWalking。

  • 如果当前是不同的地面行走模式,设置模式将会切换移动模式。

  • 清除Pack/UnpackNetworkMovementMode()中的常量,并确保只有一个有效的地面模式(行走或NavWalking)

  • UCharacterMovementComponent::GroundMovementMode现在为私有,使用新的获取/设置模式。

  • 模式UCharacterMovementComponent::GroundMovementMode为私有,并提供了获取/设置的方式。

  • 执行使得GroundMovementMode仅进行行走或NavWalking。

  • 如果当前是不同的地面行走模式,设置模式将会切换移动模式。

  • 清除Pack/UnpackNetworkMovementMode()中的常量,并确保只有一个有效的地面模式(行走或NavWalking)

  • UCharacterMovementComponent::GroundMovementMode现在为私有,使用新的获取/设置模式。

其它更新说明

AI

  • 如果您的游戏特定AI控制器类已经衍生于IGenericTeamAgentInterface,您很可能应该从控制器的父类中删除它

动画

  • 在DefaultEngine.ini中具有重复的陈旧的ActiveClassRedirect条目可能会有破损的动画图表,知道删除重复的陈旧重定向程序

  • 开始把移动动画节点从Engine中移出,移动到新的AnimGraphRuntime模块

  • 更新说明:包含了自定义动画节点的模块需要具有对添加到其Build.cs文件的新"AnimGraphRuntime"模块的依赖项

  • 在DefaultEngine.ini中具有重复的陈旧的ActiveClassRedirect条目可能会有破损的动画图表,知道删除重复的陈旧重定向程序

  • 更新说明:包含了自定义动画节点的模块需要具有对添加到其Build.cs文件的新"AnimGraphRuntime"模块的依赖项

核心模块

  • 在重定向ini部分中添加源名称碰撞的信息日志错误信息

  • 注意:如果您在启动时发现此错误,请查看您的[ProjectDir]\Config\DefaultEngine.ini文件以了解ActiveClassRedirects, K2FieldRedirects等大块内容... 并移除任意非游戏特定内容(对大多数游戏来说,这意味着全部内容)

  • 注意:如果您在启动时发现此错误,请查看您的[ProjectDir]\Config\DefaultEngine.ini文件以了解ActiveClassRedirects, K2FieldRedirects等大块内容... 并移除任意非游戏特定内容(对大多数游戏来说,这意味着全部内容)

  • 任意使用UEnum::GetNameByIndex、GetValueByIndex、GetNameByValue、GetValueByName 和GetMaxEnumValue的代码需要进行修改,从而处理新的参数/返回值类型。

  • 应使用ensureMsgf()来替换ensureMsg()。

  • 应分别使用ensure() 和 ensureMsgf()来替换ensureOnce() 和 ensureOnceMsgf()。

  • 应分别使用ensure() 和 ensureMsgf()来替换ensureOnce() 和 ensureOnceMsgf()。

  • 模块必须被列于DynamicallyLoadedModuleNames或Public/PrivateDependencyModuleNames中,而不是同时列于两者中。 如有疑问,删除来自于DynamicallyLoadedModuleNames的复制内容。

编辑器和工具

  • 如果在您的游戏中使用这些内容,您需要通过编辑器模块类型或查看IsRunningGame()来保护仅在编辑器使用的代码

本地化

  • 确认对编辑器偏好设置的 区域&语言 页面的游戏原声语言进行设置,这样资源会载入语言的本地化文件以供显示。

Paper2D

  • 需要更新对Paper2D组件的颜色进行程序化修改的蓝图或C++代码,否则应用的颜色可能会比预期的要暗。

  • 修复Paper2D资源和静态网格物体的顶点颜色间不一致的问题

  • 需要更新对Paper2D组件的颜色进行程序化修改的蓝图或C++代码,否则应用的颜色可能会比预期的要暗。

物理

  • 注意这个值可能会略微变更已存布娃娃的行为。 一般来说,我们可以看到更好的稳定性,因为可以使用它来配合PhysX中的项目修复内容

  • 这个可以对之前以最大速度旋转的已存模拟对象产生轻微的冲击(每秒400度) 您可以使用物理项目设置来将其变更回原有的行为方式

平台

Playstation 4
  • 项目必须更新到SDK 2.5。

  • 从项目中能观察到少量的GPU性能损耗的降低。 比起原有的编译器,最高能降低5%的性能损耗。

  • 项目必须更新到SDK 2.5并获得120hz Morpheus kit。

Mac
  • 使用网络浏览器模块不再要求创建NSApplication的子类。

所有的移动平台
  • 如果您使用iOS或Google Play在线子系统,系统登录界面在引擎启动时不会再自动出现。

  • 您现在必须通过调用C++的"IOnlineExternalUI::ShowLoginUI"或蓝图的"Show External Login UI(显示外部登录界面)"来明确调用系统登录界面。

  • "Connect to Service(连接到服务)"蓝图代码现在已被废弃。 现在应该转而使用"Show External Login UI(显示外部登录界面)"。

  • "Connect to Service(连接到服务)"蓝图代码现在已被废弃。 现在应该转而使用"Show External Login UI(显示外部登录界面)"。

  • 您现在必须通过调用C++的"IOnlineExternalUI::ShowLoginUI"或蓝图的"Show External Login UI(显示外部登录界面)"来明确调用系统登录界面。

编程

  • 现在可以删除之前所需的样板文件代码,但仍应和之前一样可用。

渲染

  • 最好能使用它而非自定义材质表达式,因为材质可能会在将来破损

  • 有问题的内容应该在材质上使用新属性

  • 添加的新的cvar r.Filter.SizeScale使得增减样本数量能够调整性能表现/质量

  • 需要变更对SetRenderTargetsAndClear的自定义调用,并且修改了自定义rendertargets以在创建时绑定所需值。

后期处理

  • 您可能需要变更一些代码来使用GetInput(),而无需直接访问成员函数

UMG

  • 在此变更前由编辑器版本保存的资源将会复制废弃的属性值到载入属性值时对其进行替换的风格属性中。

虚幻引擎4.9发布版本带来了数以百计的更新内容,其中包含了129项GitHub上的虚幻开发者社区带来的重大修改!本次发布引入了许多全新的移动平台功能、对VR平台的扩展支持以及全方位的改进内容。和以往一样,我们要感谢这些天才的社区开发者们对虚幻引擎4.9的贡献。