虚幻引擎4.3版本说明

Windows
MacOS
Linux

4.3版本说明

虚幻引擎4.3极大地改善了对移动平台的支持,加入了全新的渲染功能、改良的蓝图工作流,并在Mac和笔记本电脑上实现了优秀的用户体验。新加入的场景合成工具、样条功能、2D工具集Paper 2D的预览全都不容错过!此更新还包含对SpeedTree 7的支持,最新iOS 8 Metal API的功能,以及时间扭曲等全新Oculus Rift功能。

在此,我们谨对向此版本作出代码贡献的所有开发者们表达感谢与敬意。

3dluvr、abergmeier、alixSilkin、Allegorithmic、bigzer、Chris-Bond、CoherentUE4、EverNewJoy、Ixiguis、mpolaczyk、pzurita、raziel2001au、robert-wallis、RushPL、solid-angle、stephenwhittle、thk123、timdonkssbc100、vakathil、Xaklse、Zoubi

主要新功能

渲染

新增内容:可移动天空光照

新版本现支持移动性设置“可移动”!

  • 此类光照支持动态场景修改。

  • 它从SSAO和一个名为距离场AO的全新功能中获取阴影。

新增内容:距离场环境光遮蔽

此功能计算来自有向距离场(用于代表场景中的静态网格体)的AO。静态网格体可在运行时移动,AO将更新。

原始:

DistanceFieldAO_01.png

带距离场AO:

DistanceFieldAO_02.png

新增内容:天空光照全局光照

新版本中,Lightmass将计算静止和静态天空光照的全局光照!

原始:

SkylightGI01.png

带全局光照:

SkylightGI02.png

  • 可使用天空光照上的 间接光照强度 来控制反射光照的亮度。

  • 和所有静态光照一样,如果在运行时修改颜色或强度,其只会应用到直接光照,因为反射光照已被烘焙到光照贴图中。

新增内容:来自静止光照的半透明阴影

新版本中静止光照能对半透明材质进行良好投影!

原始:

TranslucencyShadowing01.png

半透明的静态阴影投射:

TranslucencyShadowing02.png

  • 其工作原理是在Lightmass中计算一个阴影深度图,覆盖光照影响。

2D游戏工具预览

新版本中,Paper2D 插件在引擎中默认启用,可在纯内容的游戏中使用

同时还添加了一个2D横卷轴游戏模板!(蓝图和C++变体)

Paper2D03.png

新版本中,编辑器和文档将正确显示Paper2D的状态的消息

  • Sprite和图像序列视图尚处于“测试”阶段

  • 2D碰撞/物理、地貌样条、图谱分组、图块贴图尚处于“实验性”阶段(隐藏在可用之处的启用标签后)

Paper2D01.png Paper2D02.png

更多更新:

  • 对Sprite和图像序列视图编辑器进行产品化/使用性优化

  • 图像序列视图组件改良(播放/暂停、循环控制、反向播放等)

AI工具:行为树

行为树编辑器中的黑板编辑与调试

新版本中,使用者可在行为树编辑器中编辑并调试黑板条目。切换至全新的“黑板”模式即可访问黑板编辑器:

BehaviorTree01.png

然后即可添加键,以与蓝图变量相似的方式对黑板进行编辑:

BehaviorTree02.png

可使用热键和 右键 快捷菜单来移除并重命名键。

进行调试时,将显示黑板值以便观察。和旧版本一样,使用者依然可以在当前和保存的(之前的)调试情景之间进行切换:

BehaviorTree03.png

同时也将显示黑板,以便在行为树模式中进行快速参考:

BehaviorTree04.png

新增内容:“新建节点”快捷方式

行为树编辑器已将一些新按钮添加至其工具栏,使用户可为任务、装饰器和服务迅速新建蓝图节点类型:

BehaviorTree05.png

  • 这些新节点的蓝图被创建在当前被编辑的行为树的路径中。如存在多个可创建节点类型的潜在类,按钮将含下拉菜单,以便对类进行选择。

大型场景支持

新增内容:

使用者可创建子关卡并将其放置在此地图上的任意处。其将在游戏中自动加载。

LevelsComposition01.png

  • 在关卡的 场景设置 中开启 启用场景合成 后即可激活此项(关卡保存后才能使此功能生效)。

  • 可使用 关卡浏览器 工具条上的小地图按钮来访问场景地图。

LevelsComposition02.png

  • 之后将提供新文档和游戏样本。

  • 此功能替代旧版本中的实验性功能 场景浏览器

重新设计关卡浏览器

在4.3版本中,关卡浏览器(通过“窗口”菜单访问)得到了大幅更新。

LevelBrowserRedesign.png

  • 所有文件操作(新建、保存、另存为、添加、合并等)已从快捷菜单移至工具栏按钮 关卡 下。

  • 状态条加入了新的查看选项:显示每个关卡的actor数显示完整包命名

  • 不常用操作(如关卡变换、流送体积管理等)可通过 关卡细节 面板进行。点击 关卡 面板工具条上的 细节 按钮即可呼出此面板。关卡细节 独立于常规的 细节 面板,其只显示选中关卡的细节,支持多选。

  • PIE 模式中,关卡 面板将显示每个关卡的模拟状态,隐藏关卡的可视性“眼睛”图标将显示为闭合,未加载关卡的名称将显示为灰色。

  • 将一个关卡拖入蓝图图表时,将创建该关卡的 GetStreamingLevel 节点。

  • 如更新的关卡工具中出现内容缺失或功能错误,可使用 -oldlevels commandline 参数切换回旧关卡工具。

新增内容:渲染至纹理蓝图

“RenderToTexture_LevelBP”蓝图中有全新的纹理烘焙功能可用!**Engine\Content\ArtTools** 目录现在保存了一个命名为RenderToTexture_LevelBP的蓝图。此蓝图将提供多个不同的烘焙选项。

将展开材质渲染到纹理

此项通过伙伴材质函数(使用顶点着色器)进行展开。适用于以下情况:需要烘焙出场景对齐纹理等内容的结果以便降低开销;出于某种原因需要采集网格体的引擎静态光照贴图,对其进行自定义操作。

RenderUnwrappedMat.png

渲染3D Imposter Sprites

Imposter和sprite相似,从各个查看角度进行呈现,因此可在3D中进行旋转和照亮。

Render3D.png

Imposter样本: 靠近中央的其中一个网格体是真实的静态网格体,其余的均是imposter。

ExampleImposters.png

其还支持一个名为“单一旋转轴”的模式,其代表地平线上远距离物体的公告板。其执行的操作是只围绕Z轴旋转网格体,以便获得比完整imposter更多的帧或更高的分辨率。

ExampleImposters2.png

这是使用单一旋转轴imposter的一个测试场景。此处材质设为使用场景位置来随机旋转图像序列视图的位置,为其赋予各不相同的独有旋转。

ExampleImposters3.png

渲染一个逐对象阴影深度纹理

此模式从特定的光照视图烘焙深度图,可用于构建材质中的自定义逐对象阴影。此范例树材质无光照,阴影则来自深度纹理。此方法曾用于Apple Zen演示中。

RenderPerObject.png

图像序列视图动画

此模式与Imposter sprite函数十分相似。其使用一系列的网格体旋转,但此时其由用户输入指定,而非由蓝图预设。

其将所需的图像类型渲染为图像序列视图纹理,此纹理可在引擎中任意处的sprite上播放动画(例如粒子效果)。

FlipbookAnim.png

此外也有选项将一个“动画阶段”参数传至目标网格体,以便将一个顶点着色器动画渲染至图像序列视图。

FlipbookAnim2.png

新增内容:制作人员列表(感谢您!)

为表彰长期以来对虚幻引擎做出不朽贡献的开发者,新版本中加入了制作人员列表。感谢你们付出的心血!

CommunityDevs.png

通过编辑器的 帮助 -> 制作人员列表 菜单即可访问。

新增内容:Oculus Rift更新

  • 已更新至Oculus SDK(0.3.3-pre.1 SDK),包含最新内容!

  • 原生支持Oculus Rift DK2,带完整运动追踪。

  • 全新直接渲染路径和时间扭曲,极大地降低设备上的延迟。

  • 查看我们全新推出的“Couch Knights”,其展示了全新Oculus Rift DK2的功能。

OculusRiftUpgrade.png

新增内容:已支持SpeedTree 7

新版本中使用者可将SpeedTree资源导入虚幻引擎!

Speedtree01.png

SpeedTree树木和植物所有均包含光照图UV、动态LOD和风效果。下载新版本后,使用者便可进行多个选择:

  • Unreal Engine 4 Subscription Modeler的SpeedTree在Windows和Mac OS X平台上可用,价格为每月19美元。无需额外支付版权费,无项目费和平台费。

  • 购买树木——各种季节的树木,亦可选择不同的三角形数量。

  • 可放置到UE 4.3项目中的3个免费树木样本。

  • 所有内容均可在SpeedTree网站上找到。

Speedtree02.png

蓝图

新增内容:样条与样条网格体组件

新版本中可以直接在场景中编辑样条了!将样条组件或样条网格体组件添加到蓝图并选择该蓝图的一个实例后,用户即可在关卡中编辑样条。

SplineMeshComponents.png

点击 键将其选中。

  • 使用平移组件对其进行移动(“切线”默认为自动更新)。

  • 选中键后 按住Alt进行拖动 来进行新增。

如果希望进行更多控制:

  • 使用旋转控件来旋转切线。

  • 使用缩放控件对其进行延展。

也可在一个键上 点击右键 来获取快捷菜单:

如果需要,也可使用 AddSplineWorldPointSetSplineWorldPoints 函数在构造脚本中构建样条。

新增内容:重路由节点

点击引脚连出引线时 添加重路由节点 将显示在快捷菜单中,可正常连接到重路由引脚,将其移动(拖拽其周围或在其上方 按住ctrl拖动),按住Alt点击 则可将其移除。

双击下方的可拖动区域或按下 F2 即可将注释放置在重路径节点上。

RerouteNodes.png

新增内容:分离结构体引脚

新版本中使用者可以在节点上直接分离结构体引脚,而无需再插入Make和Break节点。

SplitStructPins.png

这可用于所有结构体的输入和输出引脚;如果分离结构体也包含结构体,其也能够扩张。

新增内容:扩展输出引脚列举

新版本中用户可以启用蓝图节点执行引脚的扩展列举。输入引脚的此内容已存在一段时间,新版本中已为输出执行引脚将其启用:

ExpandEnum.png

  • 使用者可创建一个列举,将其设为函数的一个输出参数,并将该输出参数标记为UFunction元数据(C++)中的ExpandEnumAsExecs。

新增内容:支持数据和曲线表

“计算曲线表行(Evaluate Curve Table Row)”将返回XY处行命名的输出值:

DataandCurve01.png

“获取数据表行(Get Data Table Row)”将返回一个行结构体,其可被分解为其个体组件变量:

DataandCurve02.png

新增内容:动画尾迹的蓝图控制

新版本中,使用者可对蓝图(和代码)中不带动画通知的动画尾迹发射器进行控制。

  • 唯一限制是粒子系统组件必须为骨架网格体组件(正是从此处采样插槽位置)的子项。

  • 组件的 Begin Trails 函数将开始粒子系统中的所有动画尾迹发射器。

AnimTrails02.png

  • 组件的EndTrails函数将结束粒子系统中的所有动画尾迹发射器。

AnimTrails03.png

  • 使用者也可在尾迹运行时调整其属性。此处将在每次tick时对宽度进行调整(使用游戏时间)。

AnimTrails04.png

新增内容:全局蓝图搜索

蓝图搜索已得到大幅改进,功能与实用性均更加强大,足以满足使用者的需求。

搜索的范围将更为广泛,可找到节点、引脚、引脚值、图表、变量、变量值,也可对动画图表进行搜索。

搜索是一个异步进程,意味着搜索完成后用户可以使用编辑器,也可同时在不同蓝图中执行多次搜索。

新版本中蓝图将利用可搜索数据的DDC:蓝图更新时其信息将被刷新,另一个用户同步该蓝图的数据时将无法获取到可搜索数据。

蓝图未在系统中编入索引时将显示下图中的提示:

FindBlueprintsRefactor.png

  • 注意:并不完全支持关卡蓝图,但使用者应该能够毫无障碍地搜索当前关卡。

可延展性更新

在4.3版本中,我们着重改善了编辑器性能和编辑器CPU使用率

  • 为提升编辑器性能,编辑器启动时将测量CPU和GPU性能,自动应用可延展性设置。

    • 可延展性设置可能降低部分渲染设置的精度,并禁用视口中的实时预览来改良性能。可在此处了解能够应用的可延展性设置的详细内容。

    • 可通过关卡编辑器工具条中的“快速设置(Quick Settings)”菜单在编辑器中手动禁用此功能并修改可延展性设置。

ScalabilityUpdates01.png

ScalabilityUpdates02.png

  • 编辑器最小化时的CPU使用率已大幅降低。

  • 笔记本电脑使用电池电量时,编辑器帧率将节流为最高60 hz,以节约电量。

静态网格体编辑器

新增内容:可自定义静态网格体碰撞

静态网格体编辑器现支持添加不同类型的多个碰撞基元,以便快速创建自定义碰撞设置,并对现有碰撞进行修改,修复影响游戏进程的问题。

使用此功能后,穿透或遍历更复杂的几何体时将更加轻松,也可通过放置阻碍来防止使用者进行此类操作。举例而言:

CustomStaticMeshCollision01.png CustomStaticMeshCollision02.png

新版本中静态网格体编辑器也支持胶囊体/长菱形碰撞几何体。

  • 其将尝试计算其自身应对齐的正确轴,以及网格体的最佳匹配。举例而言:

CustomStaticMeshCollision03.png

  • 所有碰撞基元均可使用鼠标选中,并通过编辑器控件进行移动、旋转和缩放(使用 空格键WER键 切换操纵类型)。

  • 碰撞基元也可被多选(ctrl+鼠标左键)、聚焦(F键)、复制(Alt+拖动),不需要时可删除(Delete键)。所有操作均为事务处理性质。

Release Notes (以下内容仅供参考,不作翻译)

Marketplace

Black Jack is made completely in Blueprint and is mobile ready!

BlackJack.png

Learning Resources

  • In-Editor tutorials

    • New: In-Editor tutorial screens for Paper2D: Sprites and Flipbooks

  • New: SpeedTree documentation is included

  • New: Math Expression Node documentation page

  • New: Performance & Profiling Guide

  • New: World Composition documentation page

  • New: Matinee Track Reference

  • New: Android Quick Start guide

  • Updates & Improvements to Lighting documentation

    • New: Lighting Quick Start Guide

    • New: Distance Field AO Information & Video

  • Updates & Improvements to Physics documentation

    • PhAT

    • Collision

    • Walkable Slope

  • Updates & Improvements to Animation documentation

    • AnimNotifies & AnimTrails

    • FABRIK

    • Persona Animation Editor Modes

  • Added written tutorial & video tutorial links to the in-editor tutorial home screen

  • Introduction to Cascade Video Tutorial Series

  • Introduction to UE4 Programming Video Tutorial Series

New Additions

Editor and Tools

  • New: Credits! The editor now has a credits screen with everyone who has contributed from the community so far.

  • New: Added low FPS detection to the editor.

  • New: Property editor for default values in User Defined Structure.

  • New: Character Movement Component: Movement input & external forces can now be applied during path following.

  • New: Brush wireframe is now rendered stippled when behind objects when being moved.

  • New: Added Supported Platforms settings to the editor.

    • These provide a way to list the platforms your project is expected to run on.

  • New: Add Code to Project wizard improvements:

    • Improved the way you're notified whether a class with be Public or Private.

    • Added support to create non-UObject classes (empty C++ classes, Slate widgets, and Slate style assets).

    • The module header is now included relative to a known include path (to fix an issue creating classes inside sub-folders).

  • New: Asset View now supports secondary sorting.

  • New: The Packaging settings in the editor now lets you specify additional directories to stage.

  • New: Pressing Alt+Shift+R will now bring up the reference viewer for any selected objects in the level editor and asset viewer.

  • New: Added Edit Asset option to the Reference Viewer context menu.

  • New: Added Randomly Select Seed Array functionality to Random seed settings in Cascade.

  • New: Added the "local space cloth simulation" option in Skeletal Mesh Component.

  • New: Added cloth visualizations for convex collision volumes.

  • New: Added Editor-only functions to allow nodes to override their in-editor icon display.

  • New: Brushes now have unique labels.

  • New: Added Blueprint icon to show which nodes use Blueprint for their logic.

  • New: Added a manager to queue and process My Project requests, and added a cool down. State is now polled.

  • New: Deleting assets forces the Mode tab's Recently Placed list to be refreshed.

  • New: Supports cloth blending between simulated positions and skinned positions.

  • New: Supports to emit particles from simulating cloth vertices/surfaces.

  • New: Revamped LOD panel for skeletal mesh to look like static mesh LOD.

  • New: Auto-save improvements and performance tweaks:

    • You are now able to restore asset files that have not yet been saved to disk as a .uasset file.

  • New: Enable box selecting other kinds of actors in orthographic views (based on the bounds of any visible primitive components)

  • New: Added drop shadow and scaling based on thumbnail tile size to IES lumens display to make it readable.

  • New: Allowed non-interactive, in-editor tutorials to have multiple pages.

  • New: Copy/pasting from a property matrix which does not have common pins no longer crashes.

  • New: Raw and Unit Time Stats now display correctly if Unit Graph is not already enabled.

  • New: Color picker now displays an error when renaming a theme the same as another.

  • Fixed source control state to no longer be fetched for every content browser widget.

  • Fixed the Settings editor to no longer relies on read-only state of ini files.

  • Fixed grid lines to zoom correctly when switching to power of two in preferences.

  • Fixed crash when accessing the localization settings more than once.

  • Fixed crash when syncing 'root' directories from the content browser.

  • Fixed crash when deleting then attempting to rename blackboard key.

  • Fixed crash opening a new Behavior Tree.

  • Fixed crash when importing .jpeg files.

  • Fixed crash caused by the slow task progress dialog.

  • Fixed static lighting on Blueprint mesh components.

  • Fixed RescaleSimpleCollision so that ConvexElems position is updated when the build scale is increased (previously just scaled the verts).

  • Fixed the "build paths" option in the editor.

  • Fixed compiler error and minor optimization.

  • Fixed up Content Browser source control state delegate to use shared pointer semantics.

  • Fixed Behavior Tree diffs being backwards.

  • Fixed landscape editor mode being disabled after undoing the creation of a landscape.

  • Fixed the landscape dropdown in the landscape editor not updating to match the active landscape.

  • Fixed crash when force-deleting a mesh used by foliage. Note: Still not a good idea!

  • Fixed foliage placing on translucent and "no collision" meshes.

  • Fixed typo of "Orthographic"

**Persona Animation Editor*

  • New: Asset Picker now supports rename functionality.

  • New: Added Tweak UI for Cloth physics properties in Mesh Details tab of Persona.

  • New: User can now toggle Track history which will monitor subsequent tests and store a log in Saved/Automation/Logs.

    • We track and show up to 5 by default, this is configurable between 1 and 10.

  • Fixed animation import to detect and scale existing animation curves on import and reimport to avoid keys becoming inaccessible.

Behavior Trees

  • New: Behavior Tree nodes are now categorized.

  • New: Added 'new node' buttons to Behavior Tree Editor.

  • New: Added new Behavior Tree icons.

  • New: Added FRotator as new Behavior Tree blackboard type.

  • New: Blackboards are now edited within the Behavior Tree Editor.

  • New: Added improved Blackboard editor & replaced simple Blackboard debug view.

  • New: Created unique icons for the Behavior Tree editor.

  • New: Blackboard assets are now easier to create - via right-click menu in the Content Browser or from inside the Behavior Tree Editor.

  • Fixed Behavior Tree nodes going pink after undo.

  • Fixed Behavior Tree root nodes to now have the correct tooltip.

Scene Outliner

  • New: Added functionality stop the double click events from propagating up to the parent widget.

  • New: Scene Outliner folder expansion states are now saved.

  • Changed Scene Outliner inactive selection state to be derived from the main selection state, rather than being hard-coded.

  • Changed expansion states for outliner folders to now be stored in per-user temporary config files.

Static Mesh Editor

  • New: Static mesh editor can now create Box/Sphyl and have multiple collision primitives, which can be manipulated.

  • Fixed Sphere collision to apply BuildScale.

  • Fixed Ctrl+W to duplicate the select physics body correctly.

Material Editor

  • New: Any material nodes that have a preview which serves no purpose are now set to collapsed by default.

  • Fixed the LandscapeLayerBlend material node when using non-weight blending. Previous content using LB_AlphaBlend will be automatically updated to use LB_WeightBlend, and LB_AlphaBlend now performs regular alpha blending for non-weight layers.

  • Fixed a situation in which material expression node 'scene color' could return solid white.

    • Introduced a new material compiler error "Only 'surface' material domain can use the scene color node"

Tiled Landscape

  • New: Added option for weight-blended layers

  • New: Added reimporting of a tiled landscape (heightmap, weightmaps). Reimporting options can be found in context menu of a loaded and selected levels.

Slate

  • New: Multi-line text editing support!

    • Added SMultiLineEditableText and SMultiLineEditableTextBox.

    • These should have feature parity with SEditableText and SEditableTextBox, however please note that they are still under development so may yet require API changes.

Blueprints

  • New: SplineComponent and SplineMeshComponent now usable in Blueprints.

    • Includes ability to edit SplineComponents in the level.

  • New: Added a generic Array Shuffle to the Blueprint array lib.

  • New: Added reroute nodes to help organize wires.

    • 'Add Reroute Node...' shows up in the context menu when you click-drag off of a pin; you can make connections to a reroute pin like normal, move it around (by dragging near it or Ctrl + dragging on it), and remove it by Alt + Clicking.

    • You can also put comments on a reroute node by double-clicking on the draggable area below, or hitting F2.

  • New: Math expression node added to Blueprints (no longer "experimental"), where you can enter a textual math expression which in turn gets translated into a set of nodes.

  • New: Find in Blueprints redone to provide better search results and multithreaded.

  • New: User is now warned when a blueprint has hit an infinite loop, a dialog appears informing them which blueprint has caused the issue.

  • New: On blueprint nodes, struct pins can be split in to their component elements by right clicking on the node.

  • New: Blueprints can now request that certain components or actors be hidden in a scene capture. Thanks to community members Neo and bigzer.

  • New: Added a check during Blueprint editor startup to determine if the current project is Blueprint or code based.

  • New: Subtrees are now hidden when empty in Pin/Variable Type menus in the Blueprint editor Details tab.

  • New: Will no longer mark a child blueprint dirty on load if it contains a component that's attached to a parent blueprint or native class component.

  • Changed the way Unreal Engine 4 generates default names for newly created assets (interfaces, function libraries, macro libraries).

  • Changed redundant UI refresh operations after compiling a Blueprint with one or more child Blueprints (reduced the overall Blueprint compile time).

  • Fixed a crash when refreshing an interface during compile-on-load

  • Fixed a crash when removing a variable from a parent class and then attempting to recreate the variable in a Blueprint based on that class.

  • Fixed a crash when selecting instanced static mesh components in the Blueprint editor with instances added via construction script.

  • Fixed "jittery" transforms when both parent and child nodes are selected in Components mode within the Blueprint editor.

Rendering

  • New: Added VisualizeSSR show flag to allow visual and performance tuning for Screeen Space Reflections.

  • New: Whole Scene Directional Shadow GPU optimization.

    • Uses depth bounds tests (if available) rather than the stencil. Saves approx 0.1ms of GPU on GTX780.

  • New: Added r.RefractionQuality to control for low-perf device, especially Mobile Devices (Disabled by default for iOS, Android, HTML5).

  • New: Speedtree v7.0 integration.

  • New: ShowLayer command - can toggle the visibility of any meshes in a layer.

  • New: Static and Stationary SkyLights now have one bounce of diffuse GI computed by Lightmass.

  • New: Translucent materials are now shadowed from Stationary lights.

  • New: Added MSAA support to the mobile rendering path.

  • New: Added clear coat shading model.

  • Changed order of refraction with translucency (non separate translucency is now refracted, can change look).

  • Changed the default setting of the LensFlareIntensity property to be 0 (off) for better performance and a clean look out of the box , can be set to 1.0 if you want the old look.

  • Changed default quality of screen space reflections to start lower for better performance. It can be changed in postprocess settings to be like before.

  • Fixed issue where distortion does not work properly with translucenct objects.

  • Fixed issue with ScreenSpaceAmbientOcclusion (was not applied any more).

  • Fixed issue with Shadow Bias being exposed on Pointlight and Spotlights and has no effect, removed legacy value.

  • Fixed issue where Owen material was very light.

  • Fixed crash when using AffectsIndirectLight checkbox and not having LPV enabled.

  • Fixed incorrect reflection capture filtering.

  • Fixed SSR noise when temporal AA is off.

  • Fixed transform of Canvas Material rendering for ES2 on devices.

  • Fixed the Clamped Material node inputs to avoid negative colors, NaN and inconsistent shading. This can change the look of translucent materials that formerly relied on non physical color ranges. Too dark particles can be fixed using the emissive output.

Movable SkyLight

  • New: Uses a new feature Distance Field Ambient Occlusion to provide occlusion from scene meshes which can change dynamically.

Gameplay and Framework

  • New: Anim Trails can now be used via Blueprints. See Docs for details.

  • New: Added font attribute to SErrorText widget.

  • New: Navmesh library (Recast/Detour) moved to UE4 module, will be added to project automatically depending on bCompileRecast flag in target's build configuration

  • New: Added crowd simulation based on DetourCrowds.

    • Can be used by AIControllers with CrowdFollowingComponent (replaces PathFollowingComponent).

    • Supports custom velocity sampling patterns.

    • Detailed per agent config.

  • New: UBT XML configuration improvements:

    • XSD driven IntelliSense.

    • Defaults read from code (default XML file will be regenerated on UBT startup if is different than it should be).

    • Configurable fields have to be now annotated with XmlConfig attributes.

  • New: New feature that enables setting affinity profile per thread..

  • New: Added FBox2D type.

  • New: Allow TActorIteractor to take actor class to look for.

  • New: Optimized ArrowComponent rendering .

  • New: Added the ability to use unlit materials with Slate. Materials are usable on any brush type and there is a new brush type (FSlateMaterialBrush) for dynamic materials.

  • New: CPU usage has been significantly reduced when the editor is minimized. Added a setting to also apply this reduction when the editor is not in the foreground but still could be visible.

  • New: Support casting static shadows from foliage.

    • Note: We still do not support static lighting or shadowing of foliage.

  • New: Particles using the Skel Vert/Surf Location module can now inherit the color information from mesh vertices using the Inherit Vertex Color property.

  • New: Stale shader compilation jobs are now removed from the compile queue. In many cases this should greatly reduce the number of shaders being compiled and improve material editor workflow.

  • New: Windows Redistributable prerequisites for running UE4 games on Windows (Visual Studio and DirectX DLLs) are available into a standalone installer at Engine\Extras\Redist\en-us\UE4PrereqSetup.msi.

  • New: Editor modules now have an 'API version' changelist number embedded into them by UnrealBuildTool for determining API compatibility. It is no longer necessary to include a custom VERSIONINFO section in Windows RC files.

  • New: IDE project generation now works correctly for foreign projects created in the same root as the engine.

  • New: FText's can be regenerated when the culture changes, rebuilding even concatenated FText's.

  • New: Added support for storing compressed and encrypted files in .pak files. Enabled by adding -compress or -encrypt to files in UnrealPak response file or by passing -compressed to UAT.

  • New: Allow animation evaluation to be run as a graph task, spreading the load across worker threads.

  • New: Added Content Browser buttons (find in, use from) to Animation Blueprint selector in skeletal mesh details panel.

  • New: Added Blueprint events for montage blending out/ending.

  • New: Allow editing of thumbnail info through details panel/property matrix.

  • New: Functional Testing framework got a face-lift, lots of features and full compatibility with Unreal Frontend's Automation.

  • New: A Max Threshold can now be specified for Passive Sound Mixes OEM keys can now be bound as FKeys A plugin has been added to allow Mod Tracker files (StreamTracker, ImpulseTracker, etc.) to be imported in to the editor and played back.

  • New: Added side scroller template for code and blueprints that uses the experimental paper plugin.

  • New: Spline Component visualizer improvements: tangents now editable, undo/redo support, and a right click context menu allows segment types to be defined (curve, linear, constant). Endpoints can optionally be specified as having no tangents (stationary).

  • New: Added new methods to the Blueprint interface.

  • New: Exposed Box Sweep to blueprint.

  • New: Added Twist and Swing mode for motors.

  • New: Exposed constraint limits and types to blueprint.

  • New: Added default terminal velocity to project settings.

  • New: Per poly skeletal mesh collision queries are now available.

  • New: Exposed double sided flag to allow for scene queries on double sided geometry.

  • New: Provided native device access from the RHI, useful for 3rd party plugins that wish to directly render using the underlying device. Currently only exposed for D3D11. Based on GitHub pull request 199 by CoherentUE4.

  • New: Overlap/Touch notifications are now processed before blocking hit notifications during component movement.

  • New: Make sure to abort overlap reporting if previous events mark the actor or component for destruction.

    • Prevents incorrect overlaps reported in cases such as a fast moving projectile that explodes early in a sweep, and which should not report overlaps with objects later in the sweep.

  • New: Exposed control over max simulation iterations and max simulation time step per frame for Character Movement Component.

  • New: Automatically detect changes in position outside CharacterMovementComponent's normal updates and force floor updates when in walking mode.

  • New: PhysicsVolume terminal velocity is only applied in the gravity direction (assumed to be down) in CharacterMovement falling mode.

    • Previously the terminal velocity was limiting the overall magnitude of the velocity which was incorrect.

    • Now it limits the contribution of acceleration. Initial velocities over terminal velocity are allowed, but no further acceleration is applied.

  • New: Characters can now swim by default (bCanSwim = true on NavAgentProps).

  • New: Improved physx penetration handling and improve reported normals when in penetration.

  • New: Proxy Mesh tool now produces assets in a separate packages.

  • New: Proxy Mesh and Merge Actors tool now use more consistent names for a produced assets (demolet naming conventions).

  • New: Ensured that new Axis and Action Mappings are created with unique names, so that they're not grouped together

  • New: Changed SoundWave Compression Quality so that it does not re-compress during interactive property changes and the new compression settings can be heard next time the sound is played.

  • New: Heavy work on more support for treating worlds as assets. Worlds will be managed in the content browser in the future.

  • New: Many content browser perf improvements and code cleanup.

  • New: Recast is a regular UE4 module now instead of a third party module.

  • New: Vehicle wheel bodies no longer need to be set as kinematic inside PhAT. Leaving as default will automatically work.

  • New: Destructible mesh with particle effects now works with sub-stepping.

  • New: DLL exporting UShapeComponent. UPrimitiveComponent and some subclasses of UShapeComponent are already exported, so there is no reason UShapeComponent should not be as well.

  • New: The game viewport will now be properly returned from GetGameViewportWidget, even when in PIE in the editor viewport.

  • New: Added a checkbox to toggle the display of the flatten preview grid on/off.

  • New: Added dynamic scaling to the sprites in the Landscape ramp tool to stop them getting in the way on small ramps.

  • New: Prevented crash caused by a negative landscape streaming distance multiplier.

  • New: Added options dialog for a MergeActors tool.

  • New: Improved Foliage painting performance.

  • New: Selecting a camera that has a pinned camera preview now highlights its preview.

  • New: Created Blueprint category for new assets and filters.

  • New: Tag dictionaries now load during module start up, from DefaultEngine.INI file and allow for multiple dictionaries.

  • New: GameplayTag Customization so that tags can be edited in details panel

    • Gameplay Tag Variables in blueprints can now have their default value set in the details panel.

  • New: Added a flag to allow landscapes to cast two-sided shadows.

  • New: Basic In App-Purchase support added.

    • This is only available through programming at this time. Better support, with blueprint nodes, is incoming.

  • Modified Unreal Engine Launcher installer so that some dependencies can be skipped.

  • Changed MSAA settings to now be reduced or turned off for lower engine scalability levels.

  • Changed foliage not receive decals by default, added checkbox to re-enable if the user wants.

  • Changed Level Editor export functionality to now default to FBX rather than OBJ.

  • Changed edit box population code in blend space editor so that numbers are no longer formatted.

  • Improved Opus format so that it has unique identifier for UE4 specific usage.

  • Fixed crash when foliage instances were placed on Blueprint-generated components.

  • Fixed Particle System arrow components to no longer scale relative to their actor scale.

  • Fixed locking a viewport to a camera actor to now correctly uses the camera's properties.

  • Fixed Landscape Gizmo actor becoming attached to other actors.

  • Fixed Landscape collision problems where the player was falling through.

  • Fixed crash on opening Persona twice during same editor run.

  • Fixed crash when undo/redo/undo adding a mesh to the level

  • Fixed issue with show floor/sky not working after mode switch in Persona.

  • Fixed an accounting error in ToggleBetweenPIEandSIE that caused StartMatch to never be called since the game mode thought there were no players, only spectators.

  • Fixed bone name case issues on export.

  • Fixed issues with state machine transition creation.

  • Fixed root motion example in animation content map.

  • Fixed an issue with the Distance Cross Fade where no sound would play during fade out.

  • Fixed issues with SoundWave memory and duplicated variables in some platforms.

  • Fixed inconsistent expansion of input settings properties.

Lighting

  • New: Added code to ensure that a spotlight's inner cone angle cannot be set greater than its outer cone angle.

Oculus

  • New: The engine now supports Oculus Rift DK2s out of the box without the need to grab a separate SDK from Oculus directly.

  • New: The Oculus Rift integration now supports LibOVR 0.3.3-pre.1, including direct rendering and timewarping.

Animation

  • New: Group support for slot node for montage (WIP)

    • As an effort to support multiple montages at a time, this allows to play a montage per group. You can assign group per slot.

  • New: Renamed Blueprint function SetAnimClass to SetAnimInstance for consistency with native class name.

  • New: Override previews now correctly show parent anim graph.

  • New: New animation override example added to Content Examples.

  • New: Timed particle effect now correctly disables the right emitters.

  • New: Notify states correctly end when deleted from the timeline when in progress.

  • New: Graph state decorations no longer show in small preview tooltips.

  • New: Animations can now safely be imported with a lower frame count without breaking curves.

  • New: Animation graphs now correctly remove subgraphs inside states and state machines.

  • New: Branching points can now be moved in a montage.

Debugging

  • New: If an assertion fails in code that is routed by Blueprints, you will now see a Blueprint call stack in addition to the native callstack to help in tracking down the crash.

LiveEditor Plugin

  • New: Added support for editing Numeric and Object properties nested within Arrays.

  • New: Objects that are spawned after a Remote LiveEdit session has begun will now also be Edited.

Paper 2D

  • New: Added a Paper2D Side Scroller Template (with BP and C++ variants)!

  • New: Editor and documentation work to properly message the state of Paper2D in 4.3.

    • Overall Paper2D in 4.3 is an considered a 'Beta Preview': While not considered production-ready, it is a step beyond 'experimental' and is being provided as a preview of things to come.

    • Sprites and Flipbooks are considered Beta.

    • 2D collision/physics, terrain splines, atlasing groups, and tile maps are experimental (hidden behind enable flags where possible).

  • New: General polish pass and reorganization on the Sprite Editor.

    • Added 'Source Region' edit mode, allowing quick selection of a region of a larger sprite sheet.

    • Added 'Extract sprites' command to the Content Browser context menu for Textures, which identifies all disjoint sprites in a sprite sheet and creates separate assets for them

    • Added 'mesh edges' preview mode for use when geometry editing.

    • Added display of sprite render bounds extents to viewport in sprite editor.

  • New: First real version of a Flipbook Editor.

    • General polish pass and reorganization.

    • Context menu to add/insert/delete frames.

    • Drag-dropping sprites and flipbooks onto the timeline will insert frames.

  • New: Made it easier to create materials for use with Paper2D sprites.

    • Added SpriteTextureSampler material expression node as shorthand for Texture2D Param named 'SpriteTexture.'

  • New: Added experimental support for a spline-based 2D terrain tool.

    • Terrain coverage rules apply different sprites based on slope angle, which are deformed to match the spline.

    • Added temporary option to avoid collapsing unnecessary vertices when triangulating a sprite's geometry.

  • New: Added PixelsPerUnrealUnit to move away from a 1:1 relationship between pixels and Unreal Units (uu).

    • You can configure the default value for new sprites as a project-wide setting in Project..Paper2D .

  • New: Added a number of playback controls to UPaperFlipbookComponent (cribbing from UTimelineComponent).

  • New: Added sprite source rect edit mode.

  • New: Added extract sprites to texture context menu.

  • New: Added accurate component bounds for flipbooks.

  • New: Allow newly created empty sprites automatically adjust their dimensions when the source texture is first set.

  • New: Marked UPaperSprite::UBodySetup to use simple as complex, allowing complex raycasts (such as touch/cursor clicks) to succeed on 3D sprite collision.

  • New: Relaxed restrictions on JSON "app" tag to allow importing sprite sheets exported from tools other than Flash.

  • New: Added additional default sprite material permutations.

  • New: Added class/asset type icons and stub documentation for sprite and flipbook editors.

  • New: Thumbnail previews of flipbooks with no frames now show the background and a warning, instead of blackness.

  • Fixed bug in UPaperRenderComponent::GetSocketTransform that would cause components attached to a sprite to behave as if they weren't attached.

  • Fixed typo in 3D convex hull collision generation for sprites that generates invalid shapes and can cause cooking to fail.

  • Fixed possible load order assert in Paper2D.

  • Fixed undo problems with Paper2D due to missing RF_Transactional flag.

  • Fixed intermittent corruption issue when converting old sprites on load due to async texture data creation by blocking.

  • Fixed a rendering issue when editing brand new flipbooks where the time accumulator would go to infinity due to a zero sum time.

  • Fixed bug where the component displaying the 'Show Src Tex' view did not refresh when Source Texture was modified.

  • Fixed crash when creating a blueprint from a placed flipbook or sprite actor using button in the details panel.

  • Fixed UPaperSprite::SpriteColor not taking effect.

  • Fixed flipbook components not rendering.

  • Fixed tile map actors not rendering.

  • Fixed sprite render bounds bug that could result in a box with Min > Max

Physics

  • New: Added initial experimental integration of Box2D 2.3.1, and various associated changes to enable 2D physics in the engine.

    • This is a totally unsupported and undocumented prototype, exercise great caution and do not use in production.

    • Collision detection and response (including Unreal collision channels/filtering), simulation, and ray casts are implemented.

    • Non-zero extent queries, sweep tests, and overlap tests are not implemented yet.

  • New: Cleaned up various collision routines, unifying common paths where possible and reducing/consolidating PhysX dependencies where possible.

  • New: Generalized debug text for FBodyInstance to provide the associated asset for any kind of component instead of just UStaticMeshComponent.

  • Various internal sweep/overlap/query helper methods (Geom*) now take Unreal types instead of being PhysX-specific.

World Browser

  • New: When generating LOD levels - landscape actors use maximum LOD level for exporting into a raw mesh and no simplification is performed for them.

  • New: LOD levels generator now creates landscape static meshes with normal maps.

  • New: Generated assets for LOD levels now stored inside LOD map package.

    • Discovering streaming levels now uses long package name instead of short name.

    • Added LOD information to STAT LEVELS console command, also fixed several issues with it.

    • LOD levels does not replicate visibility state to server.

    • Added rotation to a simulation view position indicator. Changed world bounds color from red to yellow.

Live Streaming Support for Editor and Games (WIP)

  • New: Game live streaming

    • Allows general support for live internet streaming of game video and audio.

    • Web cam video feed can be overlaid onto game viewports automatically.

    • New 'Broadcast' Blueprint function library allows you to easily start broadcasting from your game.

    • New IGameLiveStreaming API that allows you to start broadcasting through C++.

  • New: Editor live streaming

    • The editor UI now displays a "broadcast" button automatically when a live streaming service is available.

    • Broadcasting of all desktop editor windows is supported (configured in preferences).

    • If you have a web cam, video will be displayed automatically while broadcasting in a new editor window.

    • New "Live Streaming" editor preference tab with many new settings for configuring broadcasting.

    • New IEditorLiveStreaming API that lets you control editor broadcasting directly, if needed.

  • New: Added new 'Broadcast.Start' and 'Broadcast.Stop' console commands

    • These allow you to easily test live streaming in games without writing UI code.

    • Built-in help is available for these new commands.

  • New: To implement a live streaming plugin:

    • Inherit from the new ILiveStreamingService interface.

    • Register your "LiveStreaming" feature with the IModularFeatures system.

FBX

  • New: Importing bind pose issue : Now if it fails on importing bind pose, it will try recreate it. This is very useful if the bind pose relative matrices do not match.

  • New: Added convert scene option : added convert scene option for blender.

  • FBX files exported from blender do not have correct scene data. It does not work if we convert.

Audio

  • New: NGS2 audio panning supported.

  • New: Added some detailed warnings for NaN, INF, or unreasonably large or small values in XAudio.

Platforms

  • New: Added -SearchDir=PathToSomething optional parameter to BuildThirdPartyLibs automation script, allowing it be used for TPS software in a plugin or other non-standard location.

  • New: Track and reset the key window when using the OS X open/save dialog otherwise it will steal focus and not return it.

  • New: Hid the cursor if the UE4 application is in the foreground, so it does not disappear when working with another application.

  • New: Disabled use of glMapBuffer & glLabelObjectEXT when using a multi-threaded OpenGL context on OS X for marginal performance gains.

  • New: Enabled PLATFORM_ENABLE_VECTORINTRINSICS on Mac so we use SSE instructions, as all Macs have this instruction set.

  • New: Pool the dynamic mesh builder's vertex and index buffers to avoid performance problems under OS X in very dense projects.

  • New: Use -rpath to link dylibs via @rpath/.dylib and therefore make it easier to share and/or package .dylibs into Mac apps.

  • New: Improvements to LLDB data formatters so that references & pointers to container classes show children, make the FName& FString summary strings show for pointers too and use the object name for the summary of a UObject.

  • New: Use WindowedFullscreen mode on OS X when enabling fullscreen via Alt+Enter as that scales the window to the monitor size which is all we currently support.

  • 'Proper' fullscreen mode requires an explicit CGL back-buffer size and mouse<->display coordinate conversions that we don't have code for yet.

  • New: Prevented the high-precision mouse mode from revealing the main menu bar and dock when used in fullscreen mode on OS X.

  • New: Stopped tooltips & other windows initially appearing stretched & distorted on OS X.

  • New: On Mac the Edit->Editor preferences menu item was moved to the app menu in menu bar; Help->About Unreal Engine and File->Exit items were removed as they duplicated items in the app menu.

  • New: Greatly improved Xcode project indexing times.

  • New: Added support for compiling for size instead of speed to Android, IOS, and HTML5 Many fixes for iOS on Mac bugs

  • New: Addition of basic analytics for File/Cook, File/Package, and Launch On.

  • Fixed: Stability improvements for Unreal Automation Tool and Unreal Frontend

  • Fixed opening functions in the code view using Xcode 5.1.1 on OS X.

  • Fixed use of AssetTool's diff command on OS X, making it possible to find and launch application bundles by name.

  • Fixed use of OpenGL sync objects across different contexts - they must be flushed to the GPU before attempting to wait on them on a different context.

  • Fixed some bugs with GL_TIMESTAMP emulation on the Mac and made it opt-in with the -EnableMacGPUTimestamp command-line flag since it still crashes some drivers.

Mac

  • New: Added deprecation macro support for OS X.

    • Update the RadioEffectUnit AU component to use the newer AUPlugIn API, not the deprecated ComponentManager API.

    • Update AVIWriter use an FEvent to wait for [AVAssetWriter finishWritingWithCompletionHandler:] to complete rather than using the deprecated finishWriting version.

  • New: Respect Xcode's compiler options so other compilers may be used & minimally support the analyze feature.

    • Parse the compiler selected in Xcode & find the Xcode plugin which contains the executable to run when it is not the default.

    • When the analyze option is enabled (either standalone or as a build setting) we need to pass through the analyze clang flag.

    • Pass in the Xcode max. parallel build tasks default to UBT as an environment variable rather than just assuming we want to use half the CPUs.

  • Many stability and performance improvements

Playstation 4

  • New: PS4 now supports VS 2013.

  • New: Positional Audio using libaudio3d.

  • Fixed up the packaging path to always be in the project, not Engine, and Shipping will archive the .pkg properly.

  • New: Updated to SDK 1.700.018

Xbox One

  • New: Updated to XDK June 2014 QFE 1

Android

  • New: Distortion rendering for Android

  • New: Improved device compatibility across many devices.

  • New: The FOnlineAchievementsGooglePlay::QueryAchievements function now works on Android.

  • New: Changed default Android depth buffer precision to 24 bit and added Android Platform Setting to choose preference.

  • New: Allow portrait-only orientations on Android tablets, but force landscape on devices with naturally landscape output (NVIDIA Shield, Google TV, Kindle Fire TV, Ouya).

  • New: Install batch file for Android APK generated by packaging now takes an optional device serial number to pass to ADB.

  • New: The engine now choses a better EGL config at startup, which fixes performance issues on newer Android devices.

  • New: Improved error handling in Android install batch file (with some output giving suggestions).

  • New: Added Android stack walking displaying function signatures. The addr2line tool can be used offline with the address displayed to get the exact source file and line number.

  • Fixed a crash on Android devices that don't support floating point render targets.

  • Fixed missing text in sample games on Android devices without support for half float textures.

iOS

  • New: Deploy from Windows to iOS. (Content only projects, No C++ projects)

  • New: Metal API support (if you compile with Xcode 6 beta 3).

    • Metal is not enabled by default yet, but you can enable this in your game's Project Settings!

  • New: Distortion rendering for iOS.

  • New: Addition of default movie for playback on iOS.

  • New: Tapjoy plug-in for iOS.

  • New: Updated to new PVRTexTool, which would be slower by default. Added a quality setting to Project Settings in the new Cooker section (0 is fastest, 4 is slowest).

  • New: Added a Blueprint node for calibrating motion. Implemented for iOS devices.

  • New: Addition of splash screen on iOS staying up until first render.

  • Improved the four-finger-console in iOS (properly saves/loads the history and now will reorder commands to always put the most recently used first).

HTML5

  • New: Updates to HTML5 to allow it to be used from Launch On and File/Package from a GitHub build.

  • New: Cooking on the fly for HTML5 - Mostly functional.

  • Various fixes and editor workflow improvements for HTML5.

  • Fixes for HTTP transport issues.

Networking

  • New: Support for asynchronous loading of network objects.

  • New: UBT modifications to allow third party frameworks that needs assets deployed.

  • New: Increased precision of replicated FRotator's.

  • New: Improvements to overall network guid management.

  • New: Improvements to sub-object network guid management.

  • New: Relax the check that will disconnect clients that are spamming the server.

  • New: Network profiler improvements.

  • Fixed memory leak that would occur with network guids every time a seamless travel occurred.

  • Fixed cases when non client related objects that call client RPCs (objects owned by AI say) would absorb the call.

Known Issues

  • Code Samples downloaded from the Marketplace will fail to deploy to iOS unless spaces are removed in the project name

  • Projects will fail to package for Xbox One if there are spaces in the file path

  • Separately downloaded ShooterGames are unable to connect unless the ProjectID in Config/DefaultGame.ini is the same. Players will connect correctly if using the same distributed build.

  • Menu windows don't open when "enable window animations" option is enabled via Editor Preferences. Workaround: set bEnableWindowAnimations to false under Engine\Config\BaseEditorUserSettings

API Update Notes

Editor and Tools

  • Added AddForce to the CharacterMovementComponent.

  • Added new class metadata Experimental and EarlyAccessPreview, which will trigger a warning section in the actor details panel.

  • Added CanCheckIn() to ISourceControlProvider.

  • Editor mode tools refactor to allow multiple FEditorModeTools instances

  • Deprecated API still exists and works to some degree, but please update your code as this will be removed in the next release.

  • GEditorModeTools has been renamed to GLevelEditorModeTools to signify that it applies only to the level editor modes.

  • Mode registration and creation is now handled by FEditorModeRegistry. Modes are no longer registered with an instance of the mode, instead with a mode factory that is able to create a new mode of that type. Please update any usage of deprecated APIs to use FEditorModeRegistry.

  • Editor modes now operate on FEditorViewportClients rather than FLevelEditorViewportClients.

  • All existing UMG assets should be abandoned, no upgrade path is provided for them.

  • Materials with LandscapeLayerBlend material nodes using the LB_AlphaBlend blending mode will be automatically updated to LB_WeightBlend, which more accurately describes the weight-based blending that is occurring. There is a new LB_AlphaBlend which performs actual alpha blending when wanted, but LB_WeightBlend should be used for cases where the previous blending behavior is desired.

  • Added PlatformInfo to DesktopPlatform and improved the editors Supported Platform UI.

  • Added a comment explaining why CachedAutoWrapTextWidth was cached in OnPaint() rather than Tick().

  • Added the concept of a primary asset editor to the asset toolkit manager.

  • Re-added support for custom categories in the Project Browser.

  • Removed all animation classes from EnginePrivate.h and edited their files to include only their dependencies.

  • Changed "Graph is linked to object(s) in external map" dialog to have a single "OK" button.

  • GC TokenIndex is now tracked in non-shipping builds to easily identify its origin.

  • Added new BlueprintCategory property to UBlueprints, use this to categorize your behaviour tree nodes in the right-click palette menu.

  • Added option to TriangulatePoly to avoid discarding colinear points (useful when subdividing something that will later be deformed and need to retain specified detail, etc...)

  • Created a base class SCommonEditorViewportToolbarBase with common Options, View, Show, TransformBar, etc... sections for other in-viewport editor toolbars to extend from

  • Added UFactory::GetDefaultNewAssetName to allow customization of asset name generation during creation

  • Added source control checkout or add when creating a new rich tooltip excerpt via the 'create' link

  • Added UFactory::CanCreateNew and make bCreateNew a protected member

  • Added ENGINE_API to FFindFloorResult & extra bConstrainToPlane condition to UCharacterMovementComponent::DoJump().

  • CharacterMovementComponent: Fixed bug with water raycasts using incorrect bounds dimensions.

  • CharacterMovementComponent: Fixed glitches with based-movement on physics objects (no longer lags a frame behind).

  • Exposed Controller::LineOfSightTo() to Blueprint.

  • Changed AddMomentum to AddImpulse in the Character Movement Component.

  • Fixed the Content Browser so it now refreshes when package dirty state is updated.

  • Fixed the move/save pivot options for brushes to now only be available for ortho viewports.

  • Fixed GCycleStatsShouldEmitNamedEvents so it now enables/disables correctly.

  • Fixed Play In Editor in New Window to respect resolution request if r.FullScreen is 1.

  • Fixed "undo then redo" on duplicated scaled geometry to no longer result in a brush at the default scale.

  • Removed bogus MapCheck_Message_WorldTraceBlocked message.

  • Removed bogus method PostScriptCompile that is never called.

Landscape

  • Added RecreateLandscapeCollision command to recreate all landscape collision component.

Blueprint

  • UCanvas now has Blueprint API.

Gameplay and Framework

  • Significant Changes to Engine Headers

    • Engine.h has had lots of headers removed to reduce game compile times. We have tried to only remove classes that are unlikely to be used by a game project, but if you see compile errors, you may need to include additional headers.

    • Slate.h no longer included by Engine.h, so if you are using Slate, you will need to include yourself.

    • EnginePrivate.h is now actually private to Engine module and should not be used externally

  • "Gameplay Tags" have undergone a large refactor in API and data storage that alter how they behave.

  • Added the ability to customize any low level UProperty type. The IPropertyTypeCustomization interface replaces the IStructCustomization interface. All customization functionality related specifically to structs has been deprecated but will still continue to function for this build.

  • Within *.Build.CS files, UEThirdPartyDirectory is now obsolete and should be replaced with UEThirdPartySourceDirectory. An error message will appear when attempting to build if this is not heeded.

  • Add ENGINE_API to UBodySetup::GetPhysMaterial().

  • Optimized FBox::TransformBy()

  • Added "IsWalking" helper to CharacterMovementComponent.

    • Equivalent to IsMovingOnGround()

  • Tags are no longer explicitly FNames, but instead FGameplayTags

  • FGameplayTagContainer only stores "leaf-most" tags instead of every tag in a hierarchy. As an example, pre-refactor if a user specified a container to hold the tag "Root.Child.Leaf," the container would actually have "Root," "Root.Child," and "Root.Child.Leaf" within it as separate tags. This caused logical problems during certain types of comparisons. The container in this example will now explicitly only hold the tag "Root.Child.Leaf" and none of the parent tags. The API has changed accordingly to allow queries against tags with or without their parents included.

  • Gameplay tags are now required to be located in existing data-driven dictionaries and cannot be individually created in code on the fly. Code can request a tag from the dictionary, but not explicitly create a tag by itself. This change allows for verification and ensures that tags used by code are also visible in editor.

  • Split non-EdGraph.h types out of EdGraph.cpp into individual files.

  • Change UKismetSystemLibrary::GetDisplayName to use UActorComponent::GetReadableName on components.

  • Added a helper function GetSimulationTimeStep(float RemainingTime, int32 Iterations) that computes the timestep given the total remaining time and current iteration.

    • During the final iteration, if there is not enough time within the time step limit, all remaining time is used and a warning is logged.

  • Added streamed audio chunk storage for runtime streaming or from DDC in editor.

  • Added blueprint exposed helper functions for interacting with tags/containers in BlueprintGameplayTagLibrary.

  • In Default Engine.ini declare the section [GameplayTags] and then add tag tables to GameplayTagTableList .

    • For Example: +GameplayTagTableList=/Game/DataTables/GameplayTagTable.GameplayTagTable.

  • Changed Gameplay Tag Pin to now only allows single select.

  • The list of enabled plugins is now stored in each game's .uproject file. The EnabledPlugins list in the engine config files is no longer used.

    • Game plugins are now enabled by default.

    • To enable an engine plugin, use the plugins window in the editor or manually edit the plugin list in your game's .uproject file:

    • "Plugins": [ { "Name": "LiveEditor", "Enabled": "true" } ]

    • To make an engine plugin enabled by default, set "EnabledByDefault": "true" in the plugin's .uplugin descriptor.

  • The "Packaging" settings in the editor now store the "additional directories to cook" relative to your project Content directory.

    • If you are using this feature, then you'll need to update your paths.

  • All of non-navigation AI code has been moved to a separate module, AIModule

    • May require including some headers in code using engine-level AI classes

  • World Browser was removed from Experimental section and now enabled by default. It replaces old Levels Browser. Old Levels Browser can still be activated using -oldlevels startup parameter. World Browser views were separated into three independent windows, each window can be summoned from a Levels Browser toolbar. World Browser managed worlds can now be toggled on through WorldSettings -> bEnableWorldComposition. Once enabled persistent level will be treated as a world root. No more '?worldcompistion' parameter workarounds. 'Open World' command was removed, all levels saved with world composition option can be opened through 'Open Level' command. Added bEnableWorldOriginRebasing parameter to WorldSettings, which controls whether world origin shifting should be used.

  • FString::IsNumeric() now accepts a leading '+' in numeric strings.

  • Made TMap::RemoveAndCopyValue and TMap::FindAndRemoveChecked move the value out instead of copying as an optimisation.

  • Made FText movable

  • Swap() is now implemented in terms of moves rather than copies by default.

  • Renamed variable UPrimitiveComponent::CanBeCharacterBase to CanCharacterStepUpOn, and UPrimitiveComponent::CanBeBaseForCharacter() to CanCharacterStepUp().

    • Made UCharacterMovementComponent::StepUp() check the surface it lands on with CanStepUp(), and reject if false and trying to step higher.

  • Level Browser can now summon details panel for a selected streaming levels. Details panel can be used for managing level transformations, streaming volumes and other streaming settings.

  • Renamed FStatusMessageContext to FScopedSlowTask which describes its purpose much more clearly.

  • CharacterMovementComponent: Exposed CalcVelocity(), and GetMaxJumpHeight() to blueprints.

  • Removed inner worlds processing from level streaming.

  • InstancedStaticMesh/Foliage now stores relative to component transformations in per instance data.

  • Changed OVERRIDE and FINAL macros to keywords override and final. The usage of macros is now deprecated.

  • Changed checkAtCompileTime into static_assert macro. The usage of checkAtCompileTime is now deprecated.

  • Removed DependsOn from the code. Now the DependsOn usage is forbidden -- instead user have to use proper #include..

  • New: Removed landscape/foliage headers from Engine.h, if you reference landscape or foliage classes in code you will need to add the appropriate includes.

  • New: Added support for touch in Puzzle template.

  • Added file to enable creation of puzzle projects from template.

  • Re-factored folder structure for game templates. Now use Public and Private and folders.

  • Added code to ensure OnlineBlueprintSupport is loaded during the LoadStartupCoreModules to ensure BP only projects that have online functionality work correctly.

  • Deprecated MovementComponent functions and variables related to speed modifiers.

    • Old implementations and uses of these functions should use GetMaxSpeed() and GetMaxAcceleration() instead, and apply the multiplier internally in their implementations or by changing the base values. The old functions are no longer used by engine code and only remain to maintain compilation and provide the deprecation message.

    • Deprecated functions UMovementComponent::GetMaxSpeedModifier(), UMovementComponent::GetModifiedMaxSpeed(), UCharacterMovementComponent::GetModifiedMaxAcceleration()

    • Deprecated variable UCharacterMovementComponent::CrouchedSpeedMultiplier.

    • Added MaxWalkSpeedCrouched - max walk speed when crouched. For older content, the initial value will be MaxWalkSpeed * CrouchedSpeedMultiplier (now deprecated).

    • Added MaxCustomSpeed - max speed used in custom movement mode (previously used MaxWalkSpeed, and will default to that value for existing content).

    • Added UCharacterMovementComponent::GetMaxAcceleration().

  • New: CharacterMovementComponent::bAlwaysCheckFloor now defaults to true.

    • Performance is only affected for Characters when they are not moving (by adding a floor check every update when standing still).

    • Some users may wish to set this back to false (especially for AI) for a small performance gain if they can verify that this is not needed for stationary characters in their games.

  • New: Revised assets causing Automation error in content examples.

  • Revised card cleanup in blackjack sample.

  • General improvements to network PIE game launching. Added waiting to connect message for editor. Fixed number of spawned instances. Improved window positions to accommodate multiple monitors.

  • New: Moved the project locations array into the game .ini for launcher created projects.

  • New: Removed assumption from GetBrush that second actor is always a brush and renamed it to GetDefaultBrush. Replaced GetBrush with GetDefaultBrush and made GetBrush deprecated. Revised comments appropriately.

  • Revised handling of incorrect commandlet. Now shows console and exits if commandlet is invalid.

  • Moved landscape MICs and textures to have the UWorld as their outer instead of the UPackage.

  • Revised exploding car blueprint in platformer game to prevent 'super jumps.'

  • New: Removed the optional parameter in FInterpCurve::Eval, EvalDerivative, EvalSecondDerivative.

    • Previously it was possible to supply an optional int32 pointer, into which the segment index used by the spline evaluation would be put. The method for obtaining the spline segment was recently changed and now yields different results, so it was decided not to expose this to users as it is an implementation detail.

  • New: ICU has been upgraded to 53.1 and modified to use loose files rather than a single data archive/package.

  • Reduced complexity setting when encoding Opus audio for voice chat. Better performance with negligible loss of quality.

  • Changed cubemap clearing logic to stop race condition on initializing render targets.

  • Stopped multiple transition nodes between 2 state nodes being placed on top of each other.

  • CookOnTheFly caching reliability improved.

  • Adding touch support for Slate List View, TreeView, and TileView.

  • Components created via the construction script are no longer transactional. Use the component instance cache to store values to be reapplied after the component has been recreated.

  • Child Actor Component has been significantly stabilized and will no longer result in duplicate actors under any scenario.

  • Added support for handles in the timer manager.

    • The timer manager can now identify timers by handle. Timers with a handle do not need, but my still have, a delegate that gets called when the timer expires.

  • Fixed Crash, Non-unity and Linux Editor build fixes.

  • Fixed memory leak in FFoliageEdModeToolkit.

  • Fixed crash from existing foliage that's based on blueprint components when running an uncooked game.

  • Fixed possible crash due to Foliage UI holding pointers to data inside a TMap which can be reallocated.

  • Fixed various undo-related crashes in landscape spline tool

  • Fixed crash caused by getting a duplicate landscape gizmo.

  • Fixed a bug in Morph Target importing that caused far more verts to be created than necessary.

  • Fixed landscape brush outline is still visible in orthographic viewports when switching from landscape tool.

  • Fixed an issue where SwitchEnum nodes who have their enums set during reconstruction on load would not have the correct friendly name.

  • Fixed an edge case where during async loading a Blueprint Generated Class could be created, but not yet preloaded at the time another object is loading it as an import.

  • Fixed auto generated Materials that used the old layout.

  • Fixed "Flatten to Target" for landscapes with a non-zero Z coordinate.

  • Fixed the flatten preview grid getting stuck on.

  • Fixed Misaligned Material Comments.

  • Fixed crashes caused by shared pointer delegate bindings when reloading the level editor.

  • Fixed undo issues with any class derived from UDataAsset due to missing RF_Transactional flag.

  • Fixed BlendRot (used in SmoothTargetViewRotation) to return a float instead of int32 (still very magic).

  • Fixed various issues with swimming in CharacterMovementComponent.

  • Fixed various float errors in several content examples.

  • Fixed lack of SlideAlongSurface() code when StepUpFails, or when it is not going to help (now very similar to Flying implementation).

  • CanEverSwim() wasn't checked for various workflows (initially starting in a water volume, or when landing after falling).

  • Characters more reliably jump out of water when colliding with BSP.

  • Fixed issues with vertical moving platforms starting below the character and then moving up through the character and being ignored.

  • Fixed GetAllocatedSize() for FNavLinkRenderingProxy and FLandscapeSplinesSceneProxy

  • Fixed an issue that stopped Tappy chicken from rendering.

  • Fixed potential crash from enabling collisions from standalone window.

  • Fixed and issue with splitscreen coordinate adjustment that affected HUD clicks.

  • Fixed miscellaneous errors in various samples games.

  • Fixed bug with gameplay tag editor widget not being correctly rebuilt after reimporting the backing data table.

  • Fixed the DefaultPhysicsVolume to no longer appear in the convert actor list in the details panel for Brushes/Volumes.

UI

  • Added HasNetOwner function that makes sure there is an actor capable of RPCs in the owner chain.

  • We now distinguish between actors that have no UPlayer but are in fact player owned (but disconnected) from objects that would never have a NetOwner.

  • Escape will now still first close a HUD UI even if it has lost focus.

Rendering

  • Release GBuffers early during the frame to allow reuse, PostProcessMaterial can hold on to it longer, granularity is all GBuffers, could be per texture but might not be worth the tracking.

  • Byte address buffer support for vertex buffers.

  • Made UMaterialExpression and several derived types extendable from outside of Engine.

  • Added ENGINE_API on several classes that are desirable to derive from.

Automation

  • Unreal Automation Tool now uses the game .ini files to add additional directories to cook and stage.

  • Automation test history visualization added.

    • Users can now choose to track history of tests and will see an overview in the test table.

    • This option to "Track History" is on the automation toolbar.

  • Improved tool tips for automation tests to show the machine instance they were completed on.

  • New: Added the ability to repeat a test a number of times.

  • New: Added Editor Screen Shot Capture console command.

  • Added a new test to find all Static Meshes with overlapping and out of bounds UV's.

  • New: Added a test to cycle through the Static Mesh Editor toolbar to test its functionality.

  • You can now setup presets in the Automation tab. This allows you to setup your own test groups for potential test runs.

  • You can now enable full size screenshots instead of just thumbnails. The Screenshot Compare tool fully supports this.

  • The Screenshot Compare tool can be set to Show only Nth Image.

  • New: You can now cluster the testing and results for a groups of devices based on certain criteria (e.g. GPU, machine name, CPU, OS, etc.).

  • Added a Test Results Report Card. The test results will now show a color graph for each device group or machine that had ran a test.

  • Updated the Load all Maps in Editor/Game test to take screen shots.

Unreal Frontend

  • Added in the automation test times for those which have failed. The durations were not reflective of this.

  • Updated the tooltips, for tests, to show which machine their operations were on.

Physics

  • Unused method UWorld::ComponentSweepSingle has been removed, use UWorld::ComponentSweepMulti instead if necessary

  • Unused method UWorld::ComponentOverlapTest has been removed, use UWorld::ComponentOverlapMulti instead if necessary

  • Added new optional ThirdParty library: Box2D 2.3.1, zlib license (https://code.google.com/p/box2d)

EQS (Environment Query System) changes

  • NOTE: Using the EQS now is NOT recommended. It is still in heavy flux due to early development, and it is completely disabled by default. If you do use it, be warned that we do not guarantee backwards compatibility in changes yet. We will announce when it's moved into the "Experimental" section in a future release.

    • Significant changes have been made to UEnvQueryTest and related files. If you are using EQS, you need to resave your Environment Query assets.

    • EQS Tests now support filtering on a range as well as just Min/Max.

    • EQS Test Details UI is significantly changed (hopefully improved), with more improvements to come. Filtering and Scoring are now handled in a more distinct fashion with less implicit reliance on each other.

Shootergame

  • Added code to assign created light component as RootComponent in ExplosionEffect - this prevented explosion effects from showing were not shown explosion blueprint was opened.

  • Added error handlers when joining a pending net game. Also added text wrap value on shooter message text.

  • Renamed ShooterExplosionEffects to ShooterExplosionEffect to match the class name and header file.

  • Revised bot behaviour. Bots now check LOS and look for another target if there is no LOS to the current one.

  • Revised OnEquipFinished so weapons auto reload on switching if ammo was collected with another weapon active.

  • Fixed a crash when running shootergame menu in PIE and trying to host a game.

Vehicle game

  • Added VehicleGameState and VehicleGameViewportClient.

  • Added code to controls remap menu to restrict certain bindings for certain controls.

  • Added function in UInputSettings to force an update of the keymaps after a mapping has been added/removed.

  • Added code to Remap button names and make them more user friendly.

  • Revised settings ini so that throttle/brake and be remapped in controls menu.

  • Fixed 'stuck' GO text and best lap display on vehicle game client.

  • Fixed control menus in Vehicle game. Also increased width of same.

Foliage is Being Refactored

  • UInstancedFoliageSettings is now broken into UFoliageType and UFoliageType_InstancedStaticMesh

  • The FoliageMeshes map is now keyed on a UFoliageType, not a UStaticMesh

Paper 2D

  • Several C++ classes were renamed to better match engine standards

    • Existing content should upgrade with no changes, but C++ code will need to be updated to match the new names:

    • Renamed UPaperRenderComponent to UPaperSpriteComponent

    • Renamed UPaperAnimatedRenderComponent to UPaperFlipbookComponent

    • Renamed FPaperAnimatedRenderSceneProxy to FPaperFlipbookSceneProxy

    • Renamed APaperRenderActor to APaperSpriteActor

  • The Paper2D plugin is now enabled by default so that content-only games can use it in cooked builds.

  • Moved tile map data from the component to a new class UPaperTileMap, and added a per-cell tile set pointer.

  • Switch mobility setup for sprite components to match static mesh components; UPaperSpriteComponent now defaults to Moveable and APaperSpriteActor defaults to Static.

  • Refactored the public interface of UPaperFlipbook (FramesPerSecond and KeyFrames must now be accessed via getters or a FScopedFlipbookMutator instance)

Core

  • FThreadSingleton can be used outside of Core now.

  • Added LockFreeList using 128-bit CAS operation (disabled by default, may be enabled via setting USE_LOCKFREELIST_128 to 1) Stats.

  • Stats files are now compressed, ratio for regular stats 30%, for raw stats 16%.

  • Better support for task graph stats.

  • Added options to access the stat description as an ansi and a wide string, for the external profilers.

  • C++ coding standard: We now use "override" and "final" keyword on all platforms (not "OVERRIDE", etc.)

  • Allowed optimized code to be debugged more easily on Windows.

    • Sets undocumented compiler command-line switch that enables debugging of optimized code (/d2Zi+)

  • Added HashCodeHelper to UBT for creating reasonable GetHashCode implementations.

  • Improved error message enforcing SListView item types are a pointer type.

  • TSets are now constructible from TArrays, and move semantics has been extended to TSet::Append and TSetElement.

  • TArray::FilterByPredicate function has been added and returns a new array containing a copy of all elements which passed the predicate.

  • TUniquePtr is now constructible and assignable from TUniquePtr.

  • MakeUnique now has more overloads on Visual C++ to compensate for the lack of variadic templates.

  • Cooked sandbox paths have changed from Game\Saved\Sandboxes\Cooked-Platform to Game\Saved\Cooked\Platform.

  • Default subobjects can no longer be created using NewObject, all existing cases will need to be replaced with ObjectInitializer.CreateDefaultSubobject.

  • Changes have been made to the #includes in generated code.

    • Includes are always relative to the module they came from, where possible.

    • All modules' roots are now on the include path and having same-named headers in your project may now pick up different files depending on the include order.

    • Plugin intermediate files are now written out to the project's Intermediate folder, rather than an Intermediate folder inside the plugin folder.

  • Moved XmlParser module from 'Developer' to 'Runtime' so it can be used in shipping games

  • Eliminated broken screen quad drawing functions; replaced with publicly-exposed DrawRectangle()

  • FTransaction now supports default constructors when deserializing objects, rather than just zeroing the memory.

  • FString::Replace will now assert on a null replacement string, rather than crashing.

  • TBigInt has been fixed for multiple-of-32-bit shifts, and ToString() no longer ignores significant lower-order zero words.

  • Added UStruct::GetStringMetaDataHierarchical

  • Made FBox2D Min and Max public to match how FBox works.

  • Converted ULinkerLoad::CreateActiveRedirectsMap to be static and externally callable.

  • Fixed a crash when using FInterpCurve::EvalSecondDerivative near the last point on the curve.

  • Fixed statically linking plugins in monolithic builds.

  • Removed bCompileNetworkProfiler. USE_NETWORK_PROFILER is now true whenever STATS is also true. You may safely remove this flag from all Target.cs files.

Slate API Updates

  • SComboRow RowContent is now replaced by a default slot as it matches Slate convention better.

  • Paint is now the non-virtual entry point to OnPaint to support required pre/post functionality.

    • Widgets override OnPaint as usual, but calls to tell a widget to paint should be "Paint" not "OnPaint".

    • ArrangeChildren renamed OnArrangeChildren. ArrangeChildren is now the non-virtual entry point for the same reason as Paint/OnPaint.

    • OnPaint and OnArrageChildren are now private so they are not accidentally called.

    • Added Stats for Paint time and ArrangeChildren time.

    • If SComboRow::OnGenerateWidget is not bound, a default STextBlock is generated reminding the user to bind that delegate instead of failing to compile.

  • Removed SCheckBox ReadOnly attribute.

    • Represented a general feature that all widgets do no support.

  • Removed MenuWidth and MenuHeight from SComboButton.

    • Removes unnecessary extra widget layer from almost all SComboButtons.

  • Removed Actor.bWantsInitialize has been.

Physics

  • Added UE_WITH_PHYSICS as a shorthand for (WITH_PHYSX || WITH_BOX2D).

  • Changed CalculateMass to use GetSimplePhysicalMaterial with the richer set of override points.

  • Replaced many FCollsionShape switches with a FPhysXShapeAdaptor helper.

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见