This release brings hundreds of updates for Unreal Engine 4, including 145 improvements submitted by the community of Unreal Engine developers on GitHub! Thanks to all of these contributors to Unreal Engine 4.13:

alk3ovation, Allegorithmic (Allegorithmic), Alwin Tom (alwintom), Andreas Axelsson (judgeaxl), Andrew Scheidecker (AndrewScheidecker), Andrian Nord (NightNord), ArnoB (ABeekhub), Artem (umerov1999), Artem V. Navrotskiy (bozaro), Błażej Szczygieł (zaps166), Brent Scriver (FineRedMist), Cedric Neukirchen (eXifreXi), Céleste (CelPlays), Chris Conway (Koderz), Chris528, Christoph Becher (chbecher), Christopher P. Yarger (cpyarger), DanielDylan, DaveC79, Derek van Vliet (derekvanvliet), DevVancouver, Douglas Lassance, Eric-Ketchum, Eugene (grisevg), Franco Salas (SupremeNinjaMaster), gameDNA (gameDNAstudio), ghost, Joel McGinnis (joelmcginnis), Jonathan Johansson (DualCoder), Jørgen P. Tjernø (jorgenpt), Joshua Kaiser (JoshuaKaiser), korkuveren, Kory Postma (korypostma), Krish Munot (KrishMunot), Kuts Alexey (krunt), Lars Jørgen Solberg (larsjsol), Lectem, Lee Reilly (leereilly), Lukasz Baran (iniside), madsystem, Manny (Manny-MADE), Marat Radchenko (slonopotamus), Markus Breyer (pluranium), Martin Gerhardy (mgerhardy), Marvin Pohl (pampersrocker), massanoori, Mateusz Polewaczyk (matii1509), Matthias Huerbe (MatzeOGH), Matthijs Lavrijsen (Mattiwatti), MaximDC, mfortin-bhvr, Michael Allar (Allar), Michael Schoell (MichaelSchoell), mik14a, Miłosz Kosobucki (MiKom), mkirzinger, Moritz Wundke (moritz-wundke), Nachtmahr (NachtMahr87), Narendra Umate (ardneran), NaturalMotionTechnology, Oleksandr Kuznietsov (Teivaz), OWIAdmin, Patryk Stępniewski (kodomastro), Paul Evans (paulevans), pfranz, Piotr Bąk (Pierdek), PistonMiner, projectgheist, Rama (EverNewJoy), Ricardo Maes (kukiric), Rick Deist (dreckard), Robert Segal (robertfsegal), RobertTroughton, Rohan Liston (rohanliston), Saffron (SaffronCR), Sajid (sajidfarooq), salamanderrake, Samuel Maddock (samuelmaddock), Sébastien Rombauts (SRombauts), Tanner Mickelson (DarthCoder117), Thomas Mayer (tommybear), tmiv, Tyler Thompson (Bogustus), Victor Polevoy (vityafx), Webster Sheets (Web-eWorks), Wesley Hearn (wshearn), yehaike, Yohann Martel (ymartel06), Yong-Quan Chen (wingedrobin), Yu He (yuhe00), Zachary Burke (error454)

What’s New

Unreal Engine 4.13 has arrived! In this version you'll find numerous improvements across the board.

Many new rendering features have been added, such as mesh decals, Blueprint drawing to render targets, GPU morph targets, refraction improvements and high quality, optimized noise functions are now available to materials. Shadow map caching allows for more shadow-casting dynamic lights in a scene than ever before!

Sequencer, our new non-linear cinematic editor, has been updated with a slew of new features for high-end cinematography. Live recording from gameplay has been significantly improved. Also, you can now transfer shots and animations back and forth from external applications. You can see these features in our SIGGRAPH Real-Time Live! 2016 demonstration.

Alembic support allows you to import complex and interesting vertex animations. And the new Physical Animation Component lets your characters respond realistically to physical forces by driving their skeletal animation through motors.

For mobile developers, dynamic shadows have been optimized, full-precision materials are supported, and custom post-processing is now possible. OpenGL ES 3.1 can now be used on Android, and binary shader caching will improve your iteration times.

VR games can now use capsule shadows, and stereo instancing has been optimized. Oh, and check out the new VR Template Project! It's a great example of how to use motion controllers to interact and navigate in your VR game.

Want to build your levels while in VR? Unreal's VR Editor has been improved with support for mesh and foliage painting, a new transform gizmo, and VR color picking. Finally, you now can instantly play your game right from VR! You can turn on "Enable VR Editing" in the Experimental section of your Editor Preferences.

Major Features

New: Sequencer Live Recording

Sequencer been updated with new Live Recording improvements as shown at Siggraph Real-Time Live! 2016 .

The Sequence Recorder allows you to capture live gameplay, including all animation, audio and effects into a standalone asset that you can edit using Sequencer! New features in this release:

Quickly record selected actors and automatically create camera cuts track if camera is recorded.

Ability to specify arbitrary components and properties to record.

Optionally record data to actor possessed in level.

Record transforms in world space when actor is attached but not recorded.

New: Shadow Map Caching for Movable Lights

When a point or spot light is not moving, we can store off the shadow map for that light and reuse it next frame. This is now done automatically and makes shadow casting movable point and spot lights much more affordable in games where the environment is often not moving.

The above image shows 33 dynamic shadow-casting point lights, with very minimal overhead:

Performance results on a 970 GTX at 1920x1200

33 shadow casting point lights without caching: 14.89ms to render Shadow Depths.

With cached shadow maps: .9ms (about 16 times faster!)

Note that it still costs 2ms to render the contributions of the 33 point lights, which can be optimized in other ways but is not affected by this change.

Memory used by the cache can be seen under ‘Stat ShadowRendering’ and was 25.6Mb in this scene.

Max memory used by the cache can be controlled with ‘r.Shadow.WholeSceneShadowCacheMb’

Limitations

By default, caching can only happen when: Primitives have mobility set to Static or Stationary Materials used do not use World Position Offset Light is point or spot, shadow casting, and mobility set to Movable but not currently moving

Materials that use an animating Tessellation or Pixel Depth Offset can cause artifacts as their shadow depths are cached.

New: Voronoi Noise Materials

We’ve added a new Voronoi noise option available for the Noise material node. Voronoi noise, also sometimes called Worley or Cellular noise, can be useful for procedural material creation.

Voronoi noise can be used to generate patterns for familiar physical materials such as marble, as seen on the statue below.

This example uses a Voronoi noise with a technique called ‘gradient mapping’ to achieve a marble look.

From Left to Right:

1) Standard Voronoi Noise, 1 octave

2) Voronoi with "Gradient" noise added to input position, set to 0.05

3) Gradient noise multiplied by 0.3 before adding to Voronoi input position

4) Using result of step 3 as texture coordinates for a random tiling texture

The Voronoi noise has four quality levels, with decreasing grid artifacts at the higher levels at the cost of significantly increased shading time.

Also, performance has been improved for several of the Noise Material Node features, with more detailed description of the performance tradeoffs in the function selection tooltips. Most of these can be slow for runtime use, so baking the results into a texture is encouraged.

New: Blueprint Drawing to Render Targets

Blueprint functions can now be used to draw materials into render targets. This enables a huge variety of game-specific rendering effects to be implemented without having to modify source code.

This is a fluid surface simulation implemented entirely in Blueprint and Material graphs. Characters and projectiles can push the fluid around!

Above shows a simple heightfield painter made entirely in Blueprint, by accumulating a height value at projectile impacts.

The new Blueprint function Draw Material to Render Target draws a quad filling the destination render target with the Emissive Color input in the material.

Upon starting the game, Begin Play is called and the render target is filled with blue. You can then right-click on the render target and save it as a static Texture which can be compressed.

For more advanced drawing to a render target, use Begin Draw Canvas to Render Target and End Draw Canvas to Render Target. These allow multiple draws to a subset of the render target efficiently, as well as font drawing methods through the Canvas object.

Being able to render off-screen from blueprint enables a ton of rendering features to be implemented quickly without a graphics programmer. It's also very easy to tank the GPU by doing a lot of pixel shader work with many passes to large render targets. These draw calls show up after typing 'ProfileGPU' in the debug console (under the WorldTick event)

Limitations

You cannot draw to a render target that is being sampled as a texture by the material you specify. Either use alpha blending to modify a render target in-place, or ping-pong between two different render targets.

Only the Emissive Color and Opacity outputs of the material are valid when drawing to a render target, lighting is not supported and nodes like WorldPosition may have unexpected values.

Emissive Color is clamped to be positive by default, but you can output negative values by enabling the material property ‘AllowNegativeEmissiveColor’

Check out the BlueprintRenderToTarget map in the ContentExamples project for working examples!

New: Alembic Importer for Vertex Animation (Experimental)

Alembic animation import is now supported! Alembic allows for complex animations to be authored offline, then rendered in real-time inside UE4! This feature is still considered experimental, but please try it out and send us feedback.

We allow importing Alembic caches in different ways:

Static Mesh . A single frame from the Alembic animation will be imported as a static mesh asset (no animation.)

Geometry Cache. This is a new type of animation asset that allows playback of vertex-varying sequences. The imported Alembic animation will be played back as a flipbook of frames. Performance will scale with your mesh’s complexity and may not be optimal in all cases

Skeletal Mesh. This is the most efficient way to play back an Alembic animation, as long as the vertex count doesn’t change. During import, your animation sequence will be compressed using a PCA scheme, in which common poses (bases) are extracted and weighted to compose the original animation during playback time. The percentage or fixed number of bases used can be set during import to tweak the level of compression

New: Mesh Preview Scenes

New functionality has been added to setup the scene used to preview Static and Skeletal meshes.

A new Preview Scene Settings panel has been added to the Static Mesh and Skeletal Mesh editors. Here, you can setup multiple profiles (scenes) to preview your meshes, and the profiles allow for changing:

Directional light (colour, intensity, rotation)

Sky light (HDRI environment map, intensity, rotation)

Post processing settings (identical to post process volume)

We’ve also added some showcase functionality:

Manually rotate environment (hold K key) and directional light (hold L key)

Automatically rotate lighting rig (directional light and environment)

Easily hide the floor (O key) and environment (I key)

New: Mesh Decals

The new Mesh Decals feature lets you efficiently splat materials on top of your static meshes, effectively allowing you to smoothly layer different materials on top of one another. You can think of it as a second mesh that sits above the underlying geometry’s profile with it’s own topology and materials.

The above pillars are each created as base mesh overlayed with a single detailed break mesh, as shown in the wireframe below. The left pillar is using a mesh decal to allow smoothly blended color, normals and roughness. The right-most pillar is a masked material, just for comparison.

Unlike deferred decals there is no projection involved, so a typical decal mesh which is tightly coupled to the underlying surface may need to include a surface offset in the material. Also, be careful if you have LODs where the mesh decal geometry would interpenetrate the LOD mesh.

New: Widget Interaction Component

Using the widget interaction component, you can now simulate hardware input events with widget components in the world.

You can attach it like a laser pointer to any object in the world to interact with widgets; there are also some other options available for more customized behavior. When standard input comes to the player controller, you’ll instruct the interaction component to simulate a particular hardware input such as Left Mouse Down/Up over whatever widget the user happens to be hovering at that time.

For users who were previously relying on clicking directly on Widget Components in the world using the mouse, that path is no longer supported. Users will need to attach an Interaction Component (In Mouse Mode) to their player, then forward input to the Interaction Component when the player receives it.

New: VR Project Template

We’ve added a new project template designed for Virtual Reality on desktop and console.

To access this, simply choose the new VR option in the New Project template selection window.

This Blueprint project has settings that are optimized to run in VR up to 90 frames per second. To support different types of controllers the template includes two methods of locomotion, split into two distinct Pawn Blueprints. The first is designed for gamepads while the second supports motion controllers. When using motion controllers, you can teleport to different locations and grab and throw objects. A C++ version of this template will follow in a future update. Also, mobile VR templates will be coming later too.

New: Custom Post-Process for Mobile

Custom Post-Process materials now can be used on Mobile devices! Here is a "TV Static" effect displayed using the mobile renderer.

This feature requires the " Mobile HDR " option to be enabled in your Project Settings

Supports fetching from PostProcessInput0 (SceneColor) with blendable location ‘Before Tonemapping’ and ‘After Tonemapping’

This feature does not currently work on older Android devices which require the ‘mosaic’ mode for HDR rendering.

Pixel depth information is not yet supported.

New: Lighting Channels on Mobile

Lighting channels now work in the mobile renderer! These allows you to selectively influence objects with specific lights. Great for cinematics of advanced lighting rigs.

Multiple directional lights are supported in different channels.

Each primitive can be affected by only one directional light. The first lighting channel set on a primitive determines which directional light will affect it.

CSM shadows from stationary or movable directional lights cast only on primitives with matching lighting channels.

Dynamic point lights fully support lighting channels.

New: Shader Model 5 Rendering for Mac

Mac Metal now has initial Shader Model 5 support enabled by default. This exposes all the available features of Metal on Mac OS X 10.11.6 that are applicable to Unreal Engine 4.

Implements the RHI thread & parallel translation features to parallelise render command dispatch.

Exposes support for Metal compute shaders.

Exposes asynchronous compute support on AMD GPUs.

Enables high-end rendering features previously unavailable on Mac, including: High quality dynamic exposure (a.k.a. Eye Adaptation). Compute-shader reflection environments - only available on discrete GPUs for 4.13. DistanceField Ambient Occlusion - only available on discrete GPUs for 4.13. DistanceField Shadowing - only available on discrete GPUs for 4.13.



New: Physical Animation Component (Experimental)

We’ve added a physical animation component that allows you to easily drive skeletal mesh animation through physical motors!

The component allows you to set motor strengths directly, as well as using pre-configured physical animation profiles which can be created and edited inside PhAT. The new "Physical Animation Profiles" feature in PhAT provide a powerful way to customize character physics in different game contexts, as well as fine tune it for special animations.

You can create and edit different profiles within the PhAT tool, and then change between them easily at runtime. Check out the new "Apply Physical Animation Profile" and “Apply Physical Animation Settings” functions in Blueprints, which allow you to to change physical animation behavior dynamically.

New: Procedural Mesh Slicing

There is a new utility in Procedural Mesh Component which will ‘slice’ a Procedural Mesh at runtime using a plane.

After slicing, we support adding ‘capping’ geometry, and creating a second Procedural Mesh Component for the ‘other half’ if desired.

Also, Procedural Mesh now supports simple collision, so physics simulation can be enabled! Finally, we added a utility to copy data from a Static Mesh to a Procedural Mesh (‘Allow CPU Access’ flag must be set on the Static Mesh for this to work in cooked builds.)

New: Mesh Painting in VR

You can now paint on textures and mesh vertices in using the VR Editor.

This allows you to use motion controllers to paint on static meshes while immersed in VR. To use this feature, open the "Modes" window in VR, then click the “Mesh Paint” tab. Now simply select an object in the world, then aim and pull your trigger to paint! Pressure sensitivity is supported on your controller’s trigger, and you can hold the ‘Modifier’ button to erase instead of paint.

New: Foliage Painting in VR

In this release, you can use motion controllers to spray down foliage instances while in VR.

Select a foliage type, aim your laser and pull the trigger to paint foliage! You can hold the modifier button to erase foliage. Pressure sensitivity on the trigger is supported. Additionally, the Foliage Editor has been improved to be a bit more functional while in VR, although some features, lasso tool and select tool, are still unavailable.

New: Color Picker in VR

The Color Picker window is now available in VR, so you can change color properties on lights and other Actors in your level. You can also use the Color Picker to select colors for Vertex Painting and Texture Painting in VR.

New: Play from VR Editor

To easily prototype your project it is now possible to play your game in VR from within the VR Editor. Press the "Play" button on the quick menu to start playing in VR! To instantly go back to the VR Editor, hold the Grip buttons on both controllers and squeeze both trigger buttons.

New: Improved VR Transform Gizmo

The VR Editor’s transform gizmo has been improved with better usability and new features!

Translating and rotating objects feels much more natural, and you can now uniformly scale objects or translate them along a single 2D plane in VR. We’ll continue to make improvements to VR gizmos in future releases.

New: VR Editor Flashlight

Using the Quick Menu, you can now add a flashlight to your controller, to light up dark parts of your scene or see how light interacts with different Materials.

New: Screenshots from VR Editor

You can now take screenshots right from VR!

New: Automatic Entry to VR Editing Mode

You can now enter and leave VR editing mode when the VR editor is enabled without having to use the VR button or escape manually! As long as the editor is in the foreground, when you wear the headset, you will automatically enter VR editing mode; when you remove the headset, you will leave it.

There is a setting under VR in the Experimental section of Editor Settings that will allow you to turn off auto-entry if you prefer.

New: Sequencer Import/Export

Sequencer can now import and export CMX EDL files for interchange with non-linear editing packages.

The above shot shows a sequence that was exported to Adobe Premiere Pro. Each shot in a sequence will be written to a separate movie file which is referenced by the EDL file. Any sequencing changes made in Premiere can then be imported back into UE4’s Sequencer!

Sequencer’s ability to export HDR data in OpenEXR files has been expanded to give the user a choice of the color gamut used to encode the HDR data.

Finally, Sequencer now supports importing FBX animation directly to an object or track. You can also export animated tracks to FBX!

New: Sequencer Burn-ins on Renders

When rendering out your movie sequence, you can now configure a "Burn-in" for the exported images. This is very useful in dailies for identifying and tracking shots.

New: Media Framework Overhaul

Media Framework API has been completely overhauled, with many new features! Media Framework allows you embed live video and audio into your projects, with numerous powerful features.

Playlist assets for playing multiple media sources in a row

Audio playback support has been added

Improved media file import workflow

Improved Blueprint integration

Performance improvements on several platforms

Pixel format conversion on the GPU

Support for dynamically changing video dimensions on some platforms

Android

Support for multiple audio tracks

HTTP Live Streaming (HLS) on devices supporting it (m3u8)

Playstation 4

HTTP Live Streaming (HLS)

Improved playback controls (Pause, SetRate, etc.)

Media files can be pre-cached to memory

Opening media from FArchive

Ability to play multiple videos at once (may require increased memory pool settings)

Windows

H.264 is now supported

Better support for HTTP(S) and RTSP streams

Better error handling and logging

Stability and usability improvements

Graceful handling of non-standard & unsupported codecs

Notes

Early experimental macOS/iOS support (AvfMedia plug-in)

Experimental Linux support (via VlcMedia plug-in on Github)

Experimental Video-Over-IP support (via NdiMedia plug-in on Github)

XboxOne (MfMedia) and HTML5 are not supported yet

Integration with Sequencer/Video Recording is scheduled for 4.14

PlatformMediaSource asset is not implemented yet

In every release, we update the engine to support the latest SDK releases from platform partners. Also in this release, you can remote compile iOS/tvOS projects from Windows in the binary version of UE4!

iOs/tvOS: Code projects are now supported in the Windows version of the binary version of UE4 with the Unreal Engine Launcher. (You do need a Mac somewhere to remote compile on)

Xbox One: Upgraded to August 2016 XDK

Playstation 4: Upgraded to PS4 SDK 3.508.201

Oculus Rift: Updated to the Oculus 1.6 Runtime

SteamVR: Updated to OpenVR 1.0.2

Google VR: Added Google VR (Cardboard) support for iOS

OSVR: Updated to v0.6-1194-g0c54f5e

Android: Google Play Games native C++ SDK updated to 2.1

Android: Google Play Services updated to 9.2.0

Android: Supports running on Nougat aka Android 7.0

Vulkan API: Updated SDK to 1.0.17.0 (for Android and Windows)

New: Improved Landscape Tessellation

Hardware tessellation on landscape is now much faster! Landscape will now only render hardware tessellation on the highest level-of-detail (LOD), fading out as the landscape approaches the second LOD. Subsequent LODs will no longer have tessellation enabled. This significantly improves performance of enabling tessellation for displacement or extra detail up close to the camera.

In the visualization above, the highest the LOD (white) is rendered with tessellation enabled, while the other LODs (colors) are rendered without tessellation.

New: Animation Pose Assets

We have added a new type of animation asset called a Pose Asset. This contains a set of named bone poses, which you can blend additively, in a similar manner to blend shapes for vertices.

One use for this is to support facial animation where either FACS (Facial Action Coding System) or viseme curves can drive poses. However you could use this system to create new animation by blending multiple poses.

Currently you create a Pose Asset from an Anim Sequence using Content Browser context menu or the Create Asset menu in Persona. When you create a Pose Asset, the pose names will be automatically generated. After that you can rename each pose manually, or use clipboard paste to rename all of them at once.

Poses are driven by normal animation curves. As long as they exist in the animation you can see the curve. In Persona, in order to preview a pose from a curve, you need to set the current Preview Pose Asset.

In the AnimGraph, you can use a Pose Blender Node (or Pose By Name) to output the pose based on the incoming curves.

To support this system, we have improved how we handle scale with additive blending. In the future we would like to support curves on other assets (e.g. Sound Waves) that can be used to drive Pose Assets and Morph Targets.

New: Pose Driver Animation Node (Experimental)

We have added a new Pose Driver node, which lets you drive a curve value (such as a morph target weight) based on a bone’s movement.

This uses an RBF (Radial Basis Function) to interpolate driven values based on the orientation of a target bone. You use a PoseAsset to define the target poses for the bone, and the desired curve values at each pose. This node can be used as a Pose Space Deformer, to drive corrective blend shapes based on the orientation of a bone.

New: Animation Node Pose Watching

Anim graph nodes can now be "watched" in Persona.

This allows you to see a representation of the pose being generated at any point in the anim graph dynamically. Multiple watches can be active at once allowing you to compare poses at different points and find the exact point at which any errors in your current pose are introduced. This can be very useful for debugging complex Animation Blueprints and previously would only have been achievable by connecting the node you wanted to view directly to the root node and recompiling the blueprint.

New: Improved Scene Capture

Scene Captures have been improved to be more useful with the new ‘Blueprint Drawing to Render Targets’ feature!

Orthographic projections are now supported.

When blueprints update a scene capture through the Capture Scene function, it happens immediately, allowing subsequent image processing with Draw Material to Render Target

Opacity is now captured in alpha, which allows partial rendering in a scene capture and compositing into another scene later.

Various GBuffer attributes are now available to be captured, including depth.

Added ‘Hidden Actors’ and ‘Show Only Actors’ arrays which can be used to easily control what is rendered into a scene capture.

Game specific effects like fog of war can be implemented by rendering meshes as visibility shapes into an orthographic scene capture, and then doing image processing with Draw Material To Render Target.

New: Improved Refraction Shaders

There’s a new "Pixel Normal Offset" refraction mode which uses the vertex normal as a reference, and computes the refraction offset from how different the per-pixel normal is from the vertex normal. This is non-physical but allows refraction to be used on flat water surfaces.

Left: simple scene with no refraction

Center: default refraction method which causes an undesired constant offset for a water surface

Right: Pixel Normal Offset refraction method which distorts based on the normalmap difference

New: Texture Coordinates from Line Traces

We have added a project setting to support texture coordinate (UV) info from line traces.

The option is under Project Settings -> Physics -> Optimizations. When this is enabled, you can use the ‘Find Collision UV’ function to take a Hit Result and find the UV info for any UV channel at the point of impact. Enabling this feature does use extra memory, as a copy of UV information must be stored in CPU memory.

New: Spline Editing Improvements

Editing Spline Component defaults in the Blueprint Editor

Now it's possible to set Spline Component points in the Blueprint Editor using the standard spline visualizer editing features. New instances of the Blueprint will be created with these defaults, although these too can be overridden on a per-instance level once placed.

The "Reset to Default" context action on the spline visualizer will set an instance back to the Blueprint default. Any changes made to the Blueprint default will be propagated to any instance whose spline points have not been subsequently edited.

Numerical editing of spline points in the Details panel

Before there was no way to precisely place spline points and assign scale, roll or tangents to them. Now these properties are exposed in the Details panel for selected spline points:

New spline point properties

Spline points can now be defined with distinct arrive and leave tangents, and an arbitrary input key. The former allows for splines with discontinuities, while the latter allows for greater control of interpolation speed between points. This allows for greater versatility when designing spline paths.

In the spline visualizer, in the Spline Component details, there is an option in the context menu to allow the arrive and leave tangents to be edited separately instead of locked:

As a consequence of being able to set arbitrary input keys per point, there is now also a way to specify the input key of the Loop Position for closed splines:

If input keys or a loop position are not specified, they will default to starting at 0.0 and incrementing by 1.0 for each point, as before.

Defer spline update in Blueprints

Sometimes it's desirable to build splines procedurally in a Blueprint construction script. Previously every operation on a spline point would cause the spline to be rebuilt, but now - for optimization purposes - it's possible to specify whether the spline should be rebuilt following a spline point operation. There's also an explicit Update Spline node.

Input Spline Points to Construction Script

Sometimes it's useful to be able to hand edit a spline with the spline visualizer, and then refine them with a Blueprint construction script. An example might be a Blueprint which locks all edited points to the surface of a sphere, like this:

This is now achievable by checking the "Input Spline Points to Construction Script" property:

New: Sub Animation Blueprints

You can now share animation logic by using a ‘Sub Anim Instance’ node within your Animation Blueprint to reference another Sub Animation Blueprint. This also allows you to break up large Animation Blueprints into separate assets, for example into ‘locomotion’ and ‘physics’ parts.

Member variables of the Sub Blueprint can be exposed as input pins on the node. The Sub Animation Blueprint must use the same Skeleton as the outer Animation Blueprint.

New: Animation Curve Viewer

We removed the Skeleton Curve tab from Persona, and moved that functionality into the improved Animation Curves tab. Here you can now rename and delete curves, as well as previewing curve data.

You can see all curves that belong to current skeleton or currently active curves from preview asset. And you could also filter by specific type of curves if you only want to see active curves. Please note that we named default curve to be called "Attribute", so any animation curves will be by default attribute curves.

If you want to modify the curve value, you can either turn off Auto check box option or just type the value.

New: Sprites in UMG Widgets

You can now use Paper2D Sprites as Brush inputs for UMG and Slate Widgets. In addition to allowing users to reference UI art that may have been developed as a sprite sheet, it permits users to more efficiently render widgets on platforms where the draw call count budget is tight. Sprites that are part of the same texture atlas can be batched together in Slate, provided they all share the same layer when rendered.

New: Optimized Instanced Stereo Rendering for VR

There have been a number of improvements to instanced stereo rendering, including moving the velocity pass to use instanced stereo rendering. Multi-view support has also been enabled on the PS4, which leads to significant performance improvements when using the ISR path.

New: GPU Morph Targets

Projects can now enable calculating morph targets on the GPU on Shader Model 5 level hardware. This frees the CPU from performing those calculations:

New: Optimized Landscape Shader Memory

Landscape now compiles dramatically fewer shader combinations for landscape materials, improving first-load shader compile times, improving editor iteration and reducing memory usage and shader cache size.

New: Shadow Optimizations for Mobile

Optimizations have been added to the Combined Static and CSM shadow mode added in 4.12. In this mode, a stationary directional lights cast static shadows from static objects and CSM shadows for dynamic objects. In 4.13, the appropriate shader is now automatically selected based on the bounds of the dynamic objects casting CSM shadows, and there is no longer any need to manually tag each primitive that will receive combined static and CSM shadows.

New: Landscape Import Plug-ins

A new plugin API has been added for landscape file formats, allowing developers to create plugins that add support for different heightmap and weightmap file formats to landscape. The existing raw and png support has been converted to the new API. The png support in particular makes a good reference for implementing new landscape file format plugins.

New: Automation Testing for Android

The Project Launcher is now able to package and launch your project onto multiple Android devices simultaneously. The app running on each device will communicate back to your host PC over the USB cable and the will appear in the Session Frontend window.

You can then launch Automated Tests on all the devices and see the results in the Session Frontend.

New: OpenGL ES 3.1 on Android

While UE4 has long supported many OpenGL ES 3.0 and 3.1 features on Android, you can now specifically target ES 3.1 on Android. This brings feature parity with Metal and Vulkan to higher-end Android devices and gives you access to 16 texture samplers as well as improved performance through the use of uniform buffers.

You can choose to package bothe ES 2.0 and ES 3.1 shaders for the same project, and the device will chooses the best shader platform based on the device’s capabilities.

New: Mobile Packaging Wizard

We have added a Mobile Packaging Wizard to help support packaging for mobile where a minimal app without any content is uploaded to an App Store and the rest of the content is downloaded from the Cloud.

This type of packaging is common with larger games that have regular DLC updates

It also allows the user to download only the specific content required for their device, such as the texture or shader format their device needs

Wizard can be accessed from Project Launcher window as an option for new profile creation

New: Full Precision Materials on Mobile

Materials have an option to use full precision (default: medium precision) in pixel shader when used on Mobile devices. For example this helps in cases when material uses world coordinates in computations.

New: Binary Shader Caching for Android

Compiled shaders will be stored on the disk on first use and then reused on subsequent application runs.

Requires GL_OES_get_program_binary extension

Disabled by default, can be enabled only on Android devices (r.UseProgramBinaryCache=1)

New: Localized Text Formatting Improvements

We’ve improved our localized text formatting to allow your translations to be more accurate.

Plural Forms:

Plural forms allow you to use different text based upon a numeric variable given to your text format. Plural forms may be cardinal, eg "There is 1 cat", “There are 4 cats”, or ordinal, eg) “You came 1st!”, “You came 2nd!”, etc.

Plural forms are specified as key->value pairs, and support any of the following keywords (as defined for your culture by the CLDR data ): zero, one, two, few, many, other. Values are an optionally quoted string that may also contain format markers.

Cardinal Format Example: "There {NumCats}|plural(one=is,other=are) {NumCats} {NumCats}|plural(one=cat,other=cats)"

Ordinal Format Example: "You came {Place}{Place}|ordinal(one=st,two=nd,few=rd,other=th)!"

Gender Forms:

Gender forms allow you to use different text based upon an ETextGender value given to your text format, eg) "Le guerrier est fort", “La guerrière est forte”.

Gender forms are specified as a list of values in the order of masculine, feminine, neuter (neuter is optional). Values are an optionally quoted string that may also contain format markers.

Format Example: "{Gender}|gender(Le,La) {Gender}|gender(guerrier,guerrière) est {Gender}|gender(fort,forte)"

Hangul Post-Positions:

Hangul post-positions help you deal with the grammar rules present in Korean, and will insert the correct glyph(s) based upon whether the value being inserted ends in a consonant or a vowel, eg) "사람은", “사자는”.

Hangul post-positions are specified as a list of values in the order of consonant, vowel. Values are an optionally quoted string.

Format Example: "{Arg}|hpp(은,는)"

To allow you to pass in the numeric/gender values needed for plural/gender form support, all of the FText::Format(...) family of functions now take their values as FFormatArgumentValue rather than FText. This can be implicitly constructed from any numeric type, ETextGender, or FText.

The ability to set these value types in Blueprints has been exposed using wildcard pins on the "Format Text" node:

You can also pre-compile your format pattern if you’re going to be re-using it for multiple calls to FText::Format(...). Simply create and store a FTextFormat instance and pass it as the pattern to FText::Format(...).

New: Multi-threaded Audio (Experimental)

Outside of the editor, sound cue evaluation and active wave instance determination can now run independently of the game thread. Benefits will vary per game depending on the quantity and complexity of active sound cues, however for some context, in early testing, we’ve seen a shift of approximately 1ms per frame off of the Game Thread and on to the Audio thread.

This feature is disabled by default in 4.13, but you can try it out by changing UseAudioThread to true in the [Audio] section of BaseEngine.ini.

New: Network Replay Backwards Compatibility

The replay recording feature now supports backwards compatibility. This means you can make modifications to a build, even add or remove replicated properties and then load replays on the new build that were recorded with an older build.

To test this feature out, you can simply record a replay with a certain build, change some replicated properties, and then load that same replay on a newer build!

Most of the work is handled by the low level reflection information we have for each replicated property. For custom serialized network data (UObject::NetSerialize), you can now use two new functions added to FArchive (FArchive::EngineNetVer() and FArchive::GameNetVer()) which allow you to obtain the current network version of the stream and handle old data manually.

New: Build Graph Scripting (Experimental)

BuildGraph scripts can be used to create custom sequences of UE4 build commands for build automation. Graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of a network of dependent nodes made up of tasks.

Some example BuildGraph scripts are stored under Engine/Build/Graph/Examples/…

New: Script for Making Installed Builds

The build process for installed UE4 distributions has been re-written using the BuildGraph scripting language, with a goal to making the process simpler and more transparent for other development teams with engine customizations. The script can be found at Engine/Build/InstalledEngineBuild.xml, and can be run by invoking AutomationTool with one of the following command lines:

Windows:

BuildGraph -target="Make Installed Build Win64” -script=Engine/Build/InstalledEngineBuild.xml -clean

Mac:

BuildGraph -target="Make Installed Build Mac” -script=Engine/Build/InstalledEngineBuild.xml -clean

Append the -listonly option to view a list of available options for customizing the build process.

New: TSets as Unreal Properties

TSets can now be used as a UPROPERTY for the purposes of automatic serialization, garbage collection, ini settings, and editing via the details panel (limited to entering as a string (i.e. "(1,2,3)")). Similar to TMap, TSet properties do not yet work as replicated members, nor can they be used in Blueprints.

Release Notes

AI

New: Added two appropriately named functions to the AI Perception Component The functions for "Get Currently Perceived Actors" and “Get Known Perceived Actors” have replaced the ambiguously named “Get Perceived Actors”.

New: Made AI Sight sense's collision channel configurable via the AI System's settings.

Bugfix: There was a case where EQS item score normalization where all all items had the same score. We used to normalize the score to 1, but now it's based on the shared item score.

Bugfix: The AI Controller was overzealously clearing out its Cached Gameplay Tasks Component on UnPossess, even if the pawn was not the owner of Game Play Tasks Component.

Bugfix: Blackboard Key Selectors were not being tied to the blackboard entries properly when used in Blueprint.

Bugfix: EQS queries were losing part of the data on asset duplication when they had more than one option branch.

Bugfix: The Processing of AI Messages has been fixed when a new message appears during a notify loop.

Made Simple Move To Location/Actor reset velocity only if the agent is already at goal.

Removed infinite loop protection from Gameplay Task event processing, as it was hiding source of issues.

Turned Graphs off by default in the Visual Logger.

Behavior Tree

New: Added v-logging of failures of adding dynamic subtrees to a Behavior Trees Component.

Bugfix: Crash fix when pasting comments over from Blueprint editor into Behavior Tree editor. This makes it a partial comment-support for BT and EQS editors. You still cannot place them by using context menu, but you can copy-paste it.

Bugfix: Fixed a Blackboard Key Select issue where you were not able to allow more than one UObject subclass.

Bugfix: Fixed Behavior Tree auxiliary nodes, parallel tasks, active tasks, and aborting tasks being ticked while the Behavior tree is paused.

Bugfix: Fixed Behavior Tree decorator remaining relevant and observing blackboard after its subtree was removed from the stack.

Bugfix: Fixed Behavior Tree getting stuck on instantly finished gameplay tasks.

Bugfix: Fixed Behavior Tree serialization spawning duplicates of task services nodes.

Bugfix: Fixed missing observers in behavior tree when dynamic subtree was changed and the tree was waiting for a full restart. The search ran out of nodes.

Bugfix: Fixed an issue where Stop Tree was not working if at the time of the call the Behavior Tree Component was waiting for a latent task to abort.

Changed behavior tree node instancing to use object duplication instead of spawning new object. This fixes missing values of Blueprint properties.

New: Added detailed config for gameplay debugger's categories in Project Settings. Each can now define category slot, default state and input bindings. This will be moved to user settings section in a future release.

New: Added logging of the current Move ID to Pathfollowing Component's vlog snapshot.

New: Added client to server replication option for gameplay debugger's input event handlers.

Bugfix: Fixed Gameplay debugger extensions to now activate during Simulate in Editor.

Bugfix: Fixed Gameplay debugger extensions and rendering to now correctly update after tool is closed.

Bugfix: Fixed Gameplay debugger to no longer get stuck with outdated data packs on Client.

Bugfix: Fixed an issue where Gameplay debugger was sometimes not activating on clients, since it was depending on the wrong initialization order.

Navigation

New: Added a "default navigation filter" property to AI Controller to be used in given controller's navigation queries.

New: Added a "meta navigation filter" that, when used, fetches the Default Navigation Filter from AI Controller.

New: Added more details to the information returned by path following request: Result flags. Fixed stacking and identifying move tasks started by Blueprint functions.

Bugfix: Crash fix for path update processing.

Bugfix: Fixed an issue where auto-repathing to world location where the path’s end was being erroneously used to perform pathfinding rather than the original move goal location.

Bugfix: Fixed an issue with Meta NavMesh Path doing navmesh path update without checking navigation agent if the path finding should be postponed (eg. when falling).

Bugfix: RVO avoidance updated for vehicles.

Bugfix: Fixed an issue where Navmesh obstacles were cutting corners too close when using string pulling in detour’s crowd simulation.

Bugfix: Fixed an issue where navigation mesh streaming was not correctly handling criss-crossed sub-levels.

Navigation generation conditions in Scene Component's code have been improved to avoid doing unnecessary work.

Removed Nav Collision from static mesh on property change and Post Load if static mesh is not supposed to have one.

Unified bounds tests for applying navmesh modifiers, always expanding bounds one cell height on Z axis to cover for voxelization roundings.

Changed the Nav Mesh projection code to use 2D distance when looking for the best point on navmesh.

Animation

New: Added a pin to the Montage Play node to allow choice over the return type of the node for either the length of the selected montage or its playback duration.

New: Added ability to override angular joint bias per-node for Anim Dynamics nodes.

New: Added blueprint node to allow the setting of an Animation Blueprints Root Motion Mode

New: Added dynamic simulation space switching to Anim Dynamics animation node, and exposed more properties as optional pins.

New: Added the number of morph targets to the Skeletal Mesh Content Browser info.

New: Added option for parent bone space to Get the Socket Transform.

New: Added the ability to use the spacebar as a shortcut to play/pause animation playback in Persona.

New: Added spherical constraints to the Anim Dynamics animation node.

New: Animation curve import options: Remove Redundant Keys: This removes redundant keys when importing a custom attribute as a curve. Do Not Import Curve With Only Zero Values: If all of values are 0, do not import. Not having the curve value is same as 0.f.

New: Changed animation compression settings so that they are edited in a dialog instead of directly in the Details panel. This stops animation compression settings from becoming out of sync with the actual compression used.

New: Import Animation: Renamed the Animation Name setting to Override Animation Name. Option to add suffix for importing material curves by name. By default _mat.

New: Animation sequences can now be marked as only being required by dedicated servers when they have root motion. Animation sequences still need to be flagged in the project cooker settings as being stripped on servers for this to have any effect.

New: Pose Asset supports runtime Retargeting option in Skeleton for Animation, Animation Scaled, and Skeletal.

New: Retarget Window: Automap button automatically attempts to map source skeleton to target skeleton. This doesn't work well with fingers, so you'll have to make sure to set them correctly.

New: Updated retargeting Animation Blueprints to a new skeleton so that it now finds all references to animations (in native properties and blueprint variables) and not just on animation nodes.

New: 'Showdebug Animation' displays Save Cache Pose nodes and subgraphs only once to keep display short. The Save Cache Pose and Use Cache Pose names are displayed.

New: Added search box to Socket chooser.

New: Socket copying in Persona now preserves bone attachment by default.

New: Support Step interpolation between key frames per animation. Please check property of Interpolation in Anim Sequence.

New: Added a tick dependency for slave components. Ensures that slave components always get ticked after master components. Prevents potential main thread stall updating morph targets in slave components.

New: Getting a Relative Transform now supports negative scale.

New: Getting a Socket Transform will now prioritize the socket name over the bone name.

New: Getting a World From Context Object is safe to be used in another thread, however the behavior is slightly modified. It will not use GWorld as an alternative option.

New: Exposed source indices for transition to runtime code so we can better identify which transitions are currently running when trying to determine elapsed times for anim getter nodes.

Bugfix: Fixed a crash when opening a skeleton when its assigned preview mesh doesn’t use that skeleton.

Bugfix: Fixed a crash when a Skeletal Mesh component gets destroyed while triggering a notify.

Bugfix: Fixed a crash when adding a section to a zero length montage. Fixed a nullptr dereference in the montage handling code and disabled the menu option to add section when zero length.

Bugfix: Fixed a crash when viewing an uncompressed animation.

Bugfix: Fixed a crash when debug drawing of some animation nodes while in PIE.

Bugfix: Fixed a crash when using undo/redo while editing the Animation Blueprints defaults.

Bugfix: There was an edge case in random sequence player where there might be an extra loop when waiting on a blend to finish. This made it impossible for a shuffle list to start with the animation that is currently playing, seemingly duplicating the animation.

Bugfix: Prevented an animation from restarting each time a new section is selected/inspected in the montage editor.

Bugfix: Updated animation initialization to now verify the mesh’s hierarchy matches with the skeleton.

Bugfix: Animation Retargeting: Fixed an issue with Additive Blend Space/Anim Offset. Fixed an issue for not making the package dirty.

Bugfix: Fixed a compression issue with remove linear key not working properly with additive animations.

Bugfix: Fixed an issue where Additive Blend Space thumbnails no longer generate single node instance warnings.

Bugfix: Fixed an issue when copying non-POD structs in the animation fast path has been fixed.

Bugfix: Fixed an issue where Root Motion for Everything would not blend correctly when using layered blend per bone.

Bugfix: Fixed an issue resulting in a slowdown in Anim Blueprints while dragging spin controls on default values.

Bugfix: Fixed abstract notify state classes to no longer show up in the create notify state menu.

Bugfix: Fixed Additive Animation scale to apply correctly.

Bugfix: Fixed Animation ‘fast path’ to now work with various corner cases (e.g. multiple inputs to array properties from structs).

Bugfix: Fixed Blend Spaces to no longer produce bad data when degenerate spaces are present.

Bugfix: Fixed an issue with animation compression caused by an uninitialized box variable.

Bugfix: Fixed Cached Posed Weighting to now ensure that the cached poses update with the highest weight they have been updated with, instead of just the first weight in their Animation Blueprints.

Bugfix: Fixed Custom Blend graphs to no longer ignore curve values.

Bugfix: Fixed an issue with saving recompressed animations that would cause the error Graph Linked External Object.

Bugfix: Fixed an issue when creating animations with additive curves that would apply the layer twice.

Bugfix: Fixed an issue where animation metadata was not being saved for the montage.

Bugfix: Fixed an issue with the Layered Bone Blend calling Update on branches with the wrong weight.

Bugfix: Fixed an issue where properties that were fed to a Skeletal Mesh component via the construction script were not being updated when edited.

Bugfix: Fixed an issue where assets were missed in Montage nodes due to the reference gathering for animation assets in an animation graph not searching the Ubergraph.

Bugfix: Fixed an issue with Root Motion calculation when the actor and the component transforms did not match.

Bugfix: Fixed some old Animation Blueprint nodes that maintained non-transactional pin links.

Bugfix: Fixed an issue that resulted in split pins not working as Anim Graph node inputs.

Improved handling of LODs for Anim Dynamics chains. Now when a leaf bone is removed from a LOD the rest of the chain continues to simulate as expected.

Prevented stale anim asset references from persisting in wired pins in animation blueprints.

Removed option to clear the compression scheme on an animation sequence as it is not valid to have no compression set.

Removed option to clear the default compression scheme as it is not valid to have no compression set.

Removed redundant copy in the Modify Bone animation node.

Removed Vertex Animation, and related code as they are deprecated. We have procedural mesh component that can be used for that. Vertex Anim Base has been removed, and replaced with Morph Target.

Removed various unnecessary bone container copies.

Renamed the Trigger Event curve to the Drive Attribute curve: In the UI, it will display as Attribute Curve.

Sequencer Scrub will display the Morph Target correctly.

Standalone games now benefit from parallel anim update if possible

Support different Sample Rate for reimporting with Set Range of time.

Audio

New: Added a setting to control dialogue wave audio filenames.

New: Added the ability to override the subtitle used on a dialogue wave. This is useful for effort sounds, plus some other cases, such as characters speaking in a foreign language not known to the player.

Bugfix: Fixed a crash that would occur when cooking in editor for non-xaudio platforms if a cooked sound is played during the same session.

Bugfix: Fixed an issue that resulted in the subtitle manager updating the wrong list of subtitles.

Bugfix: Fixed an issue with the output volume to make it more consistent with volumes of other PS4 games.

Automation

New: Added Tcp Message Transport, a connection-based message bus transport currently used for communicating with sessions launched on Android.

New: Added several enhancements to the automation framework and improving the UI: Tests in the UI now have a link to the source and line where they originate. There is now a general purpose latent lambda command you can use to run arbitrary code latently. Added Inlined Add Command for regular and networked commands to the base automation class, to avoid the use of the macro, which prevents breakpoints from working in lambda code. Frontend now has better column displays offering more room to the test name. Changed several events to the automation controller to multicast delegates so that many could hook them. The UI now refreshes the selection after tests finish so that the output log updates.

New: Logging ensure fails as errors. Automated tests with ensure fails will be unsuccessful.

Bugfix: Fixed a crash in Render Output Validation automation test when running with cooked content.

Bugfix: Fixed an issue that could prevent a static mesh socket from being imported with the correct rotation.

Bugfix: Fixed screenshots to now save locally when running an automation test and an Automation Worker Screen Message is received.

Bugfix: Fixed an issue where Test logic had a broken check that would cause infinite map reloads when trying to run one in game.

Removed Func Test Manager warnings about PIE when running on a standalone game binary.

UAT parameter -signedpak now no longer implies -pak.

Tweaking the padding to make it look more like other windows and to make everything not look so squished. Recursive expansion now works on tests.

Toolbar improvements: Removed the search box from the toolbar. It is now inlined above the test tree. Moved the filter group drop-down out of the toolbar and onto the line with the search box above the treeview and general improvements to the feeling of it.



Blueprints

New: Added "empty" keyword to Clear Array Node which will show the Clear Array Node in the Blueprint Graph Context Menu when searching using the word "empty."

New: Added "Get All Actors with Tag" blueprint node which returns an array of all actors with the given tag.

New: Added "negate" keyword to Boolean NOT node which will show the Boolean NOT Node in the Blueprint Graph Context Menu when searching using the word "negate."

New: Added a "Generate abstract class" option to Blueprint class settings.

New: Added a Blueprint Node to multiply a Vector2D by another Vector2D

New: Added Editor Preferences options in General/Appearance/Graphs to disable grid in the Blueprint and Material editor, as well as change grid colors.

New: Added new macro to help scale and position materials that are drawn to canvas.

New: Added support for emitting the Blueprint Description as tooltip metadata for the compiled Blueprint class (displayed in class pickers, etc...)

New: Exposed the web browser widget's ExecuteJavascript method to widget blueprints

New: Added Interface properties can be exposed on spawn.

Bugfix: Fixed a crash in Graph Node widgets when handling invalid pins.

Bugfix: Fixed a crash when compiling Blueprints caused by Set Boolean (by ref) node.

Bugfix: Fixed a crash when compiling Blueprints caused by Expand Enum As Execs metadata used with an enum containing a hidden element.

Bugfix: Fixed a crash while loading Blueprints that are circularly referenced by their interface.

Bugfix: Fixed a crash that would occur after editing a Blueprint that had been opened in the diff tool.

Bugfix: Fixed a crash when hovering over Create Widget node in Blueprints.

Bugfix: Fixed a crash when opening Kite Demo.

Bugfix: Fixed a crash when transforming an actor after applying instances changes.

Bugfix: Fixed a crash for the struct editor that could occur when editing Name member variables.

Bugfix: Fixed a crash when loading of a Blueprint class containing an integer property tagged as a bitmask with missing enum type metadata.

Bugfix: Fixed a crash that would occur when attempting to display a node that was already removed.

Bugfix: Fixed a crash that would occur when giving an event in a child Blueprint the same name as an event in its parent.

Bugfix: Fixed a crash that could occur when opening the Blueprint palette window.

Bugfix: Fixed a crash that could occur while updating Blueprint instances on compile.

Bugfix: Fixed a crash that was possible when removing a corrupted Blueprint component node if it’s found to have no parent attachment.

Bugfix: Fixed a crash when using the Blueprint Documentation commandlet.

Bugfix: Fixed a crash when copying and pasting collapsed graphs.

Bugfix: Fixed a crash for the debug target picker when trying to access an invalid world.

Bugfix: Fixed a crash when breaking all links to a MakeArray node with split struct pins.

Bugfix: Fixed a crash for a needed component that was being garbage collected during Blueprint compilation.

Bugfix: Fixed a crash for modifying and hot-reloading a Blueprint superclass.

Bugfix: Fixed a crash for an assert when loading a Blueprint with instanced sub-objects.

Bugfix: Fixed a crash when opening a Blueprint with a component that has all inherited properties hidden.

Bugfix: Fixed a crash when breaking a link to a pin on a MakeArray node that is any array type.

Bugfix: Fixed a crash for dragging a component into the Event Graph in a Blueprint that inherits from a C++ class.

Bugfix: Fixed a crash for connection to a split struct pin in a MakeArray node.

Bugfix: Fixed a crash for Blueprint node to Macros that would happen sometimes.

Bugfix: Fixed a crash that would sometimes happen when adding unsupported pin types to a Custom Event node.

Bugfix: Fixed a crash for an editor-only crash that could occur during instancing of an uncompiled Blueprint class with a modified array property in the native parent classes default object.

Bugfix: Fixed an issue where the Get Class node would fail to appear in the Context Menu when pulling from a self reference pin into an empty space in the Blueprint Graph.

Bugfix: Fixed an issue with Blueprint Function Libraries not working with class/function redirectors.

Bugfix: "Add Component" nodes will now be fixed up at load time if they are found to not be associated with a unique template object.

Bugfix: Associated component template(s) are now being cloned when duplicating Blueprint function graphs containing one or more Add Component nodes.

Bugfix: Basic shape components (cube etc.) will now apply the correct override material to instances when they are added to the component tree in the Blueprint editor.

Bugfix: Functions can now be properly overridden that are nested in an Interface Inheritance Hierarchy.

Bugfix: Changes made to settings in the Blueprint Profiler will now persist.

Bugfix: Changes to string literals that only affect case are properly applied (e.g. 'Hello' can be changed to 'hello')

Bugfix: Component data cache template objects will now properly remain referenced during garbage collection.

Bugfix: Components instanced as default subobjects of and attached to components instanced by Blueprint class construction script (i.e. nested default subobjects) are no longer being included in the Level editor's components tree view, as property values on these instances currently cannot be edited properly.

Bugfix: Copy-and-paste of Actor instances from the current level to the components tree view in the Details panel will now add components that have been properly initialized.

Bugfix: Customized defaults are now fully propagated to new instances at construction time during non-Actor-based Blueprint class re-instancing.

Bugfix: Details panel in the Blueprint diff tool is correctly set to read only again so that the user cannot edit the values.

Bugfix: Compiled Blueprint class assets in the Content Browser would give an invalid ensure (warning) when force-deleting.

Bugfix: Phantom asset being created when ‘Accept Source’ was used in the Blueprint Merge Tool.

Bugfix: Child Blueprints inherited variables would not display the replication settings set in the parent Blueprint.

Bugfix: The Details panel Macro where the tooltip for the "Keywords" and “Compact Node Title” was displaying the same “Category” rather than their respective tooltips.

Bugfix: The Structure editor would collapse all values in the Default Value panel after undoing any changes.

Bugfix: Widget Blueprints would collapse values in the Details panel after changing the default value of any Blueprint variable.

Bugfix: Unsupported pin types are no longer supported for Blueprint Event Nodes.

Bugfix: Corrected issue that caused a compile error in CustomEvent nodes.

Bugfix: Corrected issue that caused a MakeArray node to assume the type of a split struct pin rather than the parent struct when pasting from a Make Array node with split pins.

Bugfix: The Make Array node no longer gives incorrect indices when removing elements with split pins.

Bugfix: Fixed an issue where copying and pasting return nodes would fail to copy links to other nodes.

Bugfix: Fixed an issue where an automatically generated Get Display Name Blueprint node would not be connected when connecting a self reference output pin to a string input pin.

Bugfix: Fixed an issue where a wildcard Output Pin of an Array type could not connect to a split pin of an array type in a Make Array Blueprint node.

Bugfix: Fixed an issue where Blueprint compilation logs were being cut off and not output.

Bugfix: Fixed an issue where Blueprint Node Comment Bubbles would not save changes when losing focus.

Bugfix: Fixed an issue where copying and pasting a Blueprint Event Node along with one or more linked nodes would not also copy any links.

Bugfix: Fixed an issue where copying and pasting a Make Array node with added values would create a wildcard Make Array node rather than a copy of the original.

Bugfix: Fixed an issue where cross sub-object pointers could be invalid post load.

Bugfix: Fixed an issue where double-clicking on a component listed in the results of a "Find-in-Blueprints" search would not select the component in the Blueprint editor.

Bugfix: Fixed a cosmetic issue where dragging from an input pin would cause the link to appear from an output pin if the pins share the same name until the connection is completed or cancelled.

Bugfix: Fixed an issue where including a period in the name of a Blueprint function would cause double clicking the function name to do nothing instead of open its Blueprint Graph.

Bugfix: Fixed an issue where multiple Primitive types (eg. Vector, Rotator, Transform) would not automatically type cast to Text when trying to connect them to a Text Input Pin on a Blueprint node.

Bugfix: Fixed an issue where native interface functions were being miscategorized.

Bugfix: Fixed an issue where output nodes sometimes would not be generated when collapsing.

Bugfix: Fixed an issue where overridden component properties could be cleared on load.

Bugfix: Fixed an issue where split struct pins would disconnect on load.

Bugfix: Fixed an issue where the Blueprint editor's initial zoom focus transition could not be interrupted.

Bugfix: Fixed an issue where toggling the Comment Bubble button on Reroute Nodes would not properly toggle the Comment Bubble.

Bugfix: Fixed an issue where the functions filter when searching with Find-In-Blueprints would list components from SCS in addition to matching Blueprint functions.

Bugfix: Fixed several issues that were causing a number of issues after Blueprint compilation for bad property read/writes, infinite loops, and crashes.

Bugfix: Fixed a minor spelling error in the tooltip for "Save On Compile" in the Blueprint Editor.

Bugfix: Fixed a potential data loss issue when loading a serialized non-native component class instance that's owned by an Actor-based Blueprint class instance.

Bugfix: Fixed a potential infinite loop when replacing variable nodes in a Blueprint graph via drag-and-drop.

Bugfix: Fixed a potential loss of "Get Class Defaults" node output pin links on load. This was due to a dependency load order issue.

Bugfix: Fixed an ensure that would fail when dragging off a self pin when another actor was selected in the Content Browser.

Bugfix: Updated an error message on Create Event nodes to make it more clear when signatures no longer match the delegate they are bound to.

Bugfix: Fixed an issue with latent nodes making Blueprint bytecode generation more deterministic.

Bugfix: Fixed an ensure when dragging a level from the Levels window into Blueprint event graph.

Bugfix: Fixed an issue with the direction of Get Overlap Info parameters.

Bugfix: Fixed instances where "Asterisk" was misspelled as "Asterix" when searching in the Blueprint's Event Graph Context Menu.

Bugfix: Fixed an issue where macro Blueprints were triggering other Blueprints to recompile every time they were loaded.

Bugfix: Fixed an issue where Multi Line in User Defined Structs was not working with arrays of string or text properties.

Bugfix: Fixed a regression in My Blueprint panel as displayed in the Blueprint Diff Tool - was not displaying any values.

Bugfix: Fixed a stack overflow that could occur when compiling huge blueprints.

Bugfix: Fixed an issue where a wrong value of an Enum literal would be used with functions from Array Library.

Bugfix: Updated function return nodes to be more fail-safe. You can no longer remove them in overridden/inherited functions and the function's signature is maintained even when disconnected.

Bugfix: Fixed an issue to immediately apply transform updates to component template instances when changing the scene component hierarchy root in a Blueprint class.

Bugfix: Improved "variable not found" warning messages. You can now jump to the offending node.

Bugfix: Fixed an issue in the Blueprint Profiler so that the nested event node is now distinguished from its top-level event with the addition of "(Entry Node)".

Bugfix: Fixed an issue so that moving a child component in a child blueprint does not force the parent to become dirty anymore.

Bugfix: Fixed an issue so that collapsing Blueprint Nodes to a function when there are multiple input execution paths is no longer allowed. The resulting function would have ambiguous execution logic.

Bugfix: Collapsing Blueprint Nodes to a function will no longer create a return node if there are no return values.

Preserved relative scale on the root scene component when converting an Actor instance to a Blueprint Class.

Editor Performance Updates: Removed a redundant Blueprint class compilation pass after a variable type change. Significantly improved PIE startup time when automatically recompiling Blueprint classes that have multiple dependencies. The Ed Graph Pin is no longer a UObject, this will improve load times significantly on projects with many large blueprints. Note that content does need to be resaved in order to see the improvement in load time.

The "Delete Unused Variable" feature now considers the "Get Class Defaults" node. Output pins representing unused properties will now be removed from the node if they're not linked.

The "Get Class Defaults" node will now update immediately in response to structural Blueprint Class changes.

The Minimum Area Rectangle function is now callable without a World Context parameter.

When pasting a component in to the blueprint component tree, relative position and rotation is now cleared and will not be offset to its previous world position.

Optimized Math Expression parsing.

Core

New: Improved "DumpParticleSystems" console command to now print totals for each of the categories that were already listed for each individual particle system.

New: Added a new "-checkpak" command line switch which will attempt to verify every chunk in a signed pak file is valid when the pak is opened.

New: Added more detailed message when TArray's Bulk Serialize fails

New: Asset registry memory optimisation: Made sure all dependency node link arrays are sized exactly as they need to be.

New: Crash callstacks will now be output to log by default.

New: Crash handling on Linux saves the Crash Report Client logs in the same location as the main game/server log. Helpful for easily associating CRC logs with the session that crashed on Linux game servers.

New: Dedicated servers will no longer use memory logging by default.

New: Added minor logging and debugging enhancements for signed pak files to detect corruption.

New: Added config file based system for marking which classes aren't required by a dedicated server or client. Added class names to the new options in the project cooker settings in the editor. Overridden Needs Load For Server and Needs Load For Client functions on each class will still overrule the config file.

New: Optimized cooked asset registry dependency node data structures to reduce memory usage.

New: Added Option to show warnings and errors visually on the HUD in development builds. Controlled by Duration Of Errors And Warnings On HUD in Engine.Engine section of DefaultEngine.ini (0 = disable).

New: Split Garbage Collection cluster index and internal object flags to allow more than 8 million UObjects in editor builds.

New: When graphics driver crashes the engine will now assert so that we can send a crash report. The Crash Report Client will now attempt to initialize Slate Renderer multiple times before it gives up in which case it will send the crash report in unattended mode.

Bugfix: Fixed a crash occurring in serialization when signed paks are used with compressed packages.

Bugfix: Fixed a crash when editing UObject’s in a Map property box.

Bugfix: Fixed a crash for Automation Tool when deploying to a default PS4 devkit.

Bugfix: Fixed a crash in UHT where an "Ambiguous search" error when a delegate has an own class declared.

Bugfix: Fixed a crash when loading an empty cached asset registry.

Bugfix: Fixed a crash when loading two stat capture profiles simultaneously.

Bugfix: Fixed a crash when pasting T3D into the Content Browser from the clipboard.

Bugfix: Fixed a crash when selecting a different capture in the stats dump browser of the profiler when another file is still loading.

Bugfix: Fixed a crash when spawning an actor using a template object with instance components.

Bugfix: Fixed a crash when saving a package which has an unresolved dependency.

Bugfix: Fixed a crash for hot-reload when a USTRUCT used is used as a field has a UPROPERTY field pointing to a hot-reloaded CDO.

Bugfix: Fixed a crash after opening edit config data for remote build and then trying to package.

Bugfix: Updated Exclusive Internal Flags so that they are now respected when passing in a null Object Package in Static Find Object Fast Internal Thread Safe.

Bugfix: Fixed an issue with null reference exception when connecting to the Swarm Coordinator.

Bugfix: Fixed and improved log message when garbage collector cluster assumptions are violated.

Bugfix: Updated DLC pak file path mappings to be relative to Game Dir instead of Root Dir.

Bugfix: Fixed Enum bitflags not being hot-reloaded properly.

Bugfix: Fixed an infinite loop in the editor that would happen if a directory that is being watched is deleted.

Bugfix: Fixed an issue with leaked linkers created by blocking load requests during async loading.

Bugfix: Fixed an issue with leaked log archive.

Bugfix: Fixed an issue where there was an incomplete/missing callstacks reported by thread heartbeat when a hang is detected.

Bugfix: Fixed an issue where there was potentially missing log output when serializing text of length equal to the async log writer buffer size.

Bugfix: Fixed an issue when serializing packages over 2GB when cooking. Usually this was caused by lightmaps.

Bugfix: Fixed an issue with Cook-on-the-fly server asset paths when the game name differs from its folder name.

Bugfix: Fixed timestamp checks of uncooked files when starting up the cook-on-the-fly server.

Bugfix: Fixed Asset Pointer remapping issues for duplicated level packages (level Save As, level Duplicate).

Bugfix: Updated most Box functions to use FORCEINLINE to improve Debug Game performance.

Bugfix: Made Launcher Tasks have unique names so we don't end up with stat name collisions which spam the log.

Bugfix: Fixed FPS pop-up updates when loading new stat file.

Bugfix: Removed an obsolete error message about INI file case sensitivity in the Unreal Header Tool.

Updated exporting to silently skip creating exports from a package where the outer is also an export and has been filtered at runtime during loading.

Updated the engine to no longer attempt to flush log messages in Check Rendering Thread Health if a critical error has already occurred. Crash handlers flush log anyway.

Updated the thread heartbeat to be killed when reporting ensures so that it doesn't get triggered when the report takes a long time to generate.

Updated the thread heartbeat to be stopped when the engine crashes to prevent it from interfering with generating crash reports.

Updated the thread heartbeat to be suspended when a message box is being displayed to fix false positives in hang detection.

Updated Media Player objects to not be added to any Garbage Collection clusters because they can load additional assets after they had PostLoad called on them and that results in Disregard For Garbage Collection assumptions being violated.

Non-backup files will no longer be deleted when cleaning up the log folder.

You can once again specify more than one ini override on the command line.

Removed a few redundant Add Referenced Objects functions to speed up Garbage Collection.

Modified crash handling code (on Windows) to handle two threads crashing at the same time properly. Previously the second crash would force the process to exit before generating the crash report.

New: Updated the "Description" field for a blueprint function to be multi-line to encourage big descriptive tooltips.

New: Added a setting to allow recording of actors in the sequence recorder that are spawned by sequencer itself.

New: Added hotkey (ctrl-T) to toggle between showing frame numbers and time.

New: Added plugin support to the editor class wizard.

New: Added a "Console Variables" command under the main editor Help menu. This creates a local html page with browse and search functionality for all cvars.

New: Added a setting to invert the Y axis in editor viewports for mouse look and orbit in Project Settings.

New: Added rich tooltip support to enum combo-box entries.

New: Added support for creating a HLOD cluster from a single actor, as long as it has two or more static mesh components in it. This improves handling when including Blueprints.

New: Added track for string properties.

New: Added UI for loading and browsing multiple stats dumps from a folder in the session frontend profiler for easy comparing of perf stats.

New: Changed how materials are generated by the Hierarchical Level of Detail (HLOD) system. They are now created as material instances to reduce the overall shader count

New: During a "Play in Editor" session, automatically regain focus after user takes over mouse control. This allows the editor to continue to process hotkeys without having to click on the editor manually to regain focus.

New: Added the ability to set PNG and JPG files as a Splash Image from the Project Settings.

New: Locking the mouse to a viewport is now determined by an enumerated value (Don't Lock, Lock on Capture, Lock Always) rather than a boolean.

New: Changed sRGB Preview to be the default in the Color Picker.

New: Changed Memory Profiler 2 to deselect current bar when clicking off the histogram. This allows the user to see the top level group data again.

New: Updated Interface classes to now have their own entry in the New C++ Class wizard.

New: Updated Obj exporter to now export all mesh components contained in Blueprint Level instance.

New: Refactored the way debugger commands are executed in PIE. Now they are controlled using the Editor Key Bindings, for Play/Pause/Stop...etc, rather than the Debugger Commands ini settings. You can now do things like bind stop to Shift+Escape, if you wanted to test showing a menu when Escape is pressed, instead of closing PIE.

New: Added support to Scene Importer for rigid mesh animation.

New: Added substring matching for console command suggestions, with space as a wildcard.

New: Added support to the Scene Importer for .OBJ files.

New: Added a new flag to the Merge Actor settings 'Use Vertex Data for Material Merging' and renamed 'Bake Vertex Data' to 'Bake Vertex Data to Mesh'.

New: Updated UnrealGameSync to hide *.uprojectdirs files by default in the project file selector, to discourage their selection by accident.

New: Added the ability for Resave Packages commandlet to now also rebuild asset registry paths with consistent case. This produces much cleaner results than using the text export method (which will use the internal names for user defined structs).

New: You can now package a plugin from the plugin browser. Select the plugin and there's a small link at the bottom of the plugin tile letting you execute the package operation for sharing your plugin.

Bugfix: Fixed a crash when renaming the current level in the Content Browser.

Bugfix: Fixed a crash with the curve editor widget if you box selected outside of the visible area.

Bugfix: Fixed a crash for exporting the current level to an OBJ file and exporting materials as images.

Bugfix: Fixed a crash for selecting a Grid Snap size with a corresponding Decimal Grid Interval Value of 0 units.

Bugfix: Fixed a crash when exporting actors with non-scene components to FBX.

Bugfix: Fixed a crash that could potentially happen when selecting a spline point in the editor after having deleted another point.

Bugfix: Fixed a crash Importing a brush, so that the brush is always validated (relinked), whether it is a static or dynamic brush. This fixes an occasional crash when copy/pasting BSP brushes from one level to another.

Bugfix: Fixed a crash when hovering over a submenu while entering a Blueprint node comment in the Context Menu. In general, issues with opening submenus while a parent menu has focus.

Bugfix: Fixed a crash caused by repeatedly undoing and redoing a change in a level.

Bugfix: Fixed a crash for clicking the Install button multiple times when creating a new code project without a compiler installed.

Bugfix: Made a number of fixes to spline mesh collision generation: A serious issue with DDC ID generation was fixed, in that the static mesh itself wasn't forming part of the key, hence any two splines with identical properties but different meshes would yield the same cache entry. Fixed how different collision boxes are transformed when rebuilding physics meshes. Convex collision transforms are now correctly taken into account, and spherical and capsule collision now gets correctly translated when a scale is applied to the start or the end of the spline mesh. Optimized physics rebuilding. A new Body Setup object is now only created when needed, otherwise it is reused. Fixed Spline Mesh collision building so that geometry does not default to being auto-inflated in PhysX.

Bugfix: Updated Actors placed in the current viewport to no longer snap to surfaces if surface snapping is disabled.

Bugfix: Fixed an issue where compiling a parent Blueprint would sometimes result in all of its child Blueprint assets adding toast notifications that they require check out.

Bugfix: Updated the Rotator UI showing Roll/Pitch/Yaw in some places. It will always show as X/Y/Z now.

Bugfix: Improved the "Repaired Painted Vertex Colors" log message. This is now done once on levels at load in the editor, instead of for every component (massive log spam). Total load time caused by the fixup is reported.

Bugfix: Updated auto-reimport to now be disabled inside an editor running in unattended mode.

Bugfix: Fixed an issue where editing condition property value changes would not propagate to instances of template objects.

Bugfix: Updated the Fbx importer to now import static mesh socket rotation correctly.

Bugfix: Updated the Fbx importer to now prevent importing a mesh with a size of zero and log a message to the user.

Bugfix: Fixed an issue where audio was being disabled after recording a movie.

Bugfix: Fixed an issue with Decal Visibility so that its behavior matches other visible actors with regard to the "Actor hidden in game" flag. This also makes it possible to animate it's visibility correctly with sequencer.

Bugfix: Updated nodes in folders to be filtered so that other unfiltered children aren’t visible.

Bugfix: Fixed an issue when parsing LOD in a Static Mesh component when importing custom properties.

Bugfix: Fixed an issue where selecting a color with the eyedropper tool would sometimes prevent the user from being able to Play in Editor.

Bugfix: Fixed an issue with a localization warning that would happen when you opened the GameMode menu.

Bugfix: Fixed a longstanding issue where sometimes BSP geometry was not correctly rebuilt after editing vertices in geometry mode. Levels with incorrectly built geometry (due to invalid poly normals) will now issue a warning in the log upon load, and can be fixed by resaving the level.

Bugfix: Fixed a thread metadata warning in the output log when using the project launcher in the editor.

Bugfix: Fixed an issue with Actor position being set to origin after using undo.

Bugfix: Fixed an issue where the output log was prevented from remaining anchored to the bottom of the window.

Bugfix: Fixed an issue where sometimes spline components were debug rendered incorrectly when not selected in the editor.

Bugfix: Fixed an issue where the "All Classes" tab of the mode panel would not refresh when a new class was added to the project.

Bugfix: Fixed an issue where the surface properties of a BSP would erroneously persist in the details panel after the BSP was deleted.

Bugfix: Fixed an issue where the transform gizmo would prevent a user from dragging a material onto a mesh.

Bugfix: Fixed an issue where stopping ‘Cancel’ from correctly ‘Cancelled’ resulted in P4 asynchronous ops.

Bugfix: Fixed an issue importing an array inside a JSON Data Table. The JSON importer for a Data Table was appending the new data to the array rather than replacing it. It now clears the array prior to importing.

Bugfix: Fixed an issue when moving translation of the child when attached to the mirrored parent in viewport.

Bugfix: Fixed an issue when multi-selecting scaling when objects are rotated.

Bugfix: Fixed an issue where Post Process settings for blendable picker were not readable in the Details panel.

Bugfix: Fixed an issue with single player PIE so that the window position is correctly fetched and saved, even when running a dedicated server. This does not interfere with stored positions for multiple client PIE.

Bugfix: Fixed an issue where geometry operations were not undoable (eg. Material Placement).

Bugfix: Fixed an issue where foliage instances were not being included when exporting a scene to FBX.

Bugfix: Fixed an issue where the Launcher Profile settings window was not always showing all available maps for cooking.

Bugfix: Fixed Blueprint widgets "is Enabled" property to now animate properly.

Bugfix: Fixed the Editor Mode plugin sample to no longer provide a bad starting example for where to create your widgets.

Bugfix: Fixed the File menu option for "Import into level" so that it now re-imports the original blueprint instead of overwriting it.

Bugfix: Fixed an issue where multiple text cursors would appear when editing Keyboard Shortcuts in Editor Preferences.

Bugfix: Fixed a formatting issue for the error of Error_TooManyMaterials message.

Bugfix: Fixed Datatable select next row.

Bugfix: Fixed a small typo in GraphEditor.h.

Bugfix: Fixed missing END_OPTIMIZATION macro to SOutputLog.

Bugfix: Fixed issue preventing generation of JSON for nested structs in DataTable rows.

Bugfix: Reverted the change to the Merge Actor tool where you could not merge a single mesh. This is needed if you want to have a single Actor merge multiple materials but not be merged with another Actor in the scene.

Bugfix: Fixed the scale widget axes to render correctly while the current viewport is in an orthographic view mode.

Bugfix: Fixed the Texture Editor to properly display Mip Level Count and Format for 2D Dynamic Textures.

Bugfix: Fixed the "Game Gets Mouse Control" setting in the preferences for the Level Editor to be correctly applied when Playing in Editor.

Bugfix: Fixed the names of Automation tests within the standalone Session Frontend to be displayed correctly rather than as solid white blocks.

Bugfix: Fixed UnrealGameSync to now exclude deleted files when searching for the editor target name, which was sometimes preventing the editor from launching.

Bugfix: Fixed UnrealGameSync so that syncing no longer fails if the current workspace has files open for move or add.

Bugfix: Updated structs to export as JSON when displaying them in the Data Table editor.

Bugfix: Updated the F4 debug key binding to match what is in ShowFlags.cpp.

Bugfix: Fixed importing a morph target so that it no longer imports textures and materials for a base mesh that has already been imported.

Changed the 'Merged Physics Data' flag in the Merge Actor tool to be true by default in order to match user expectation.

Disabled the Paste context menu action if a property in the Details panel is marked as "EditConst".

Updated importing assets into a level so that assets that do not come from FBX or OBJ files are no longer supported.

Improved the performance of the details panel when thousands of objects are selected.

Improved moving parent & grouped child actors so that it now does not result in deltas being applied twice.

Updated the Editor so that new windows will no longer open in between monitors when the primary monitor is not set to monitor 1.

Improved DataTable import/export.

Improved mesh vertex color painting: Lower LODs are now automatically fixed up for instances which were created in a previous bugged version of the engine. Since lower LODs cannot currently have their vertex colors edited, their vertex colors are always derived from LOD0. A bug has been fixed when building lower LODs so that vertices in neighboring octree nodes are considered when looking for the nearest vertex from LOD0 which corresponds. This improves the appearance of lower LODs' vertex colors. An issue has been fixed where static meshes with imported LODs would not have the lower LODs' override colors set when "Copy instance vertex colors to source mesh" was used. Various crashes when using mesh paint mode have been fixed, e.g. when selecting a previously selected mesh, when deleting an asset which has an instance currently selected.

Improved MemoryAnalyser2: Upgraded to Visual Studio 2015. Clean up solution configurations. Only leave "Any CPU". Switch project to build with "Any CPU" rather than "x64".



Content Browser

New: Added the ability to select a base Physical Material class when creating a new Physical Material.

Bugfix: Fixed a crash caused by the Content Browser allowing drag and drop operations to import assets while the File Picker dialog was opened.

Bugfix: Fixed a crash for an issue that could occur when a class and a folder have the same name.

Bugfix: Fixed an issue where Blueprint Actors would sometimes appear in the preview thumbnail of other assets.

Bugfix: Fixed an issue where a Skeletal Mesh asset was prevented from editing thumbnails in Thumbnail Edit Mode.

Bugfix: Fixed an issue where Material thumbnails would display an extreme close-up of the material rather than the entire preview asset.

Bugfix: Fixed an issue where there was a duplicate "Font" entry in the asset picker menu.

Bugfix: Fixed an issue with the selection of objects in the Content browser from WorldSettings.

Redirector objects are now deleted after selecting the "Fix Up" option from their right-click context menu.

Updated World thumbnails no longer cull primitives. This is because the camera is very far away and if terrain pieces are culled, the level is not visible.



Landscape

New: Added right-click options to fill and clear landscape layers

New: Added support for "Max Pitch Angle" and "Random Yaw" foliage options in procedural foliage.

New: Automatically filled the first weight-blended landscape layer (if a layerinfo is specified at landscape creation time). This stops the landscape being black when first created, and fixes problems with the first paint strokes not having proper falloff. The old workaround of painting a landscape layer over the whole landscape to make painting work right is no longer necessary!

New: Added a Generate Overlap Events flag to Landscape Actors.

Bugfix: Fixed a crash when cooking landscape for mobile.

Bugfix: Undoing the deletion of a landscape or changes to its properties will no longer cause a crash.

Bugfix: PIE no longer crashes when using Landscape Splines with bPlaceSplineMeshesInStreamingLevels.

Bugfix: Fixed a crash that could happen when switching to the Landscape Pattern brush.

Bugfix: Fixed a crash with the Landscape Circle brush.

Bugfix: Removed all use of deferred exec commands from the landscape code. This solves numerous crashes during commandlets, etc. with landscape infos not being initialized because they do not tick the engine.

Bugfix: Fixed an issue where after resampling or changing landscape component size, any new components that correspond to previously deleted components will remain deleted in the new landscape.

Bugfix: Fixed an "Object in another map" error when packaging a project containing Landscape for Android.

Bugfix: Fixed an "Object in another map" error when saving a Landscape streaming level after using Mobile Preview and the landscape Move to Level tool.

Bugfix: Fixed Global Illumination textures being visible in the content browser when r.GenerateLandscapeGIData is enabled.

Bugfix: Fixed that the "Rebuilding Hierarchical Instanced mesh component, please resave map" error wouldn’t go away after a resave.

Bugfix: Fixed an issue with foliage being placed on top of Blocking Volumes.

Bugfix: Fixed a hang that could happen when changing a material which is used on a Landscape.

Bugfix: Fixed an issue causing the incorrect UV coordinates when tessellation is enabled for Landscape.

Bugfix: Fixed an issue where the Landscape flatten target grid preview is displayed on the wrong Landscape when switching landscape target.

Bugfix: Landscape "continuous" sculpting now works in multiple viewports.

Bugfix: Fixed an issue with Landscape "Layer Alphamap Type" being visible when in "New Landscape" mode even though it only affects "Import".

Bugfix: Landscape layer import can now be undone.

Bugfix: Fixed an issue where Landscape spline control point meshes were being offset if "Place Spline Meshes in Streaming Levels is ticked.

Bugfix: Fixed an issue where Navmesh generation would use Landscape simple collision issues with Landscape Holes.

Bugfix: Fixed an issue where new Landscapes would render with the material’s layer preview weights instead of using the actual (all 0) weights.

Bugfix: Fixed an issue where Landscape Splines were not able to be extended if the current level was different to the selected spline.

Bugfix: Fixed an issue that would prevent selecting Landscapes from the World Outliner while in the "new Landscape" tool. It will now switch to editing whenever Landscape you select.

Bugfix: Added the ability for Landscape Grass Type to exclude decals by using the Receives Decals member.

If a landscape material contains both a "Layer Blend" node and other landscape nodes referencing some of the same layers (e.g. sampling a layer for grass), the landscape editor will now use the ordering from the blend node for the target layers list.

Stopped Landscapes compiling so many shader combinations.

Material Editor

Bugfix: Fixed a crash when editing text in "Libraries Category Text" field of a material function.

Bugfix: Fixed a crash when pasting a material function call node from one project to another in which it is not defined.

Bugfix: Fixed an initial hitch when dragging around in a Color Picker opened from a Material Expression node.

Bugfix: Fixed undo and redo to now work correctly when making changes to Material Functions.

Matinee

Bugfix: Fixed an issue preventing keyframes from being added when an asset browser was opened in the same window as Matinee.

Cascade

New: Updated the Particle Event Receiver Spawn module to now filter collision events based on Physical Material. The Physical Material of the collision is now also accessible in Blueprint.

Bugfix: Fixed a crash while in Cascade when enabling/disabling a module.

Bugfix: Fixed an issue where Instance parameters for Spawn, Required, and Typedata modules in Cascade were not being auto populated.

Renamed the two "Collision" choices in the Collision submenu to "Actor Collision" and "Scene Depth Collision" in the Cascade editor..

Persona

Bugfix: Crash fix with crash or data corruption when reverting changes to the "Event" structure in the animation notify editor for montage assets.

Bugfix: Fixed a crash when deleting curve keys after animation keys had also been removed.

Bugfix: Fixed the "Isolate" option on Skeletal Mesh materials that was not working correctly with Clothing asset sections.

PhAT

Bugfix: Fixed scaling widget in PhAT in some viewport modes.

World Outliner

Bugfix: Fixed an issue where Actors were not being removed from the World Outliner when they were added and removed on the same frame.

Bugfix: Fixed an issue where the Empty Level is named "NewWorld" in the World Outliner as opposed to "Untitled".

Static Mesh Editor

Bugfix: Fixed a crash caused from trying to import an FBX file after a previous import attempt had failed.

Bugfix: Fixed a crash from the FBX importer when it attempted to import a mesh only made up of degenerate faces. An error is now logged if the importer tries to import a mesh with no valid faces.

Bugfix: Fixed a crash that would happen when reimporting a static mesh that was exported from a geometry brush asset.

Bugfix: Using the Material list reset button in the Static Mesh Editor now prevents the Static Mesh Component materials array from growing.

Bugfix: Reimporting or overriding a LOD other than the base mesh now prevents the Material list array from growing.

Source Control

New: Git Plugin implemented the Sync operation to update local files using the git pull --rebase command.

New: Git Plugin now allows you to make an initial commit when initializing a new project.

Bugfix: Fixed an issue where the wrong status icons were being shown.

If multiple assets need to be checked out, a single notification is now created for all files rather than creating one notification for each file.

When submitting changed assets to source control, files that were previously deleted are no longer resubmitted to source control.

World Browser

Bugfix: Sub-Level layers were not showing up in the Layers tab when loaded as part of the world composition.

Bugfix: The World Composition levels window was not correctly updated when creating or renaming levels using the Content Browser.

Bugfix: World Composition origin shifting was not accounting for shifting the Dynamic Directional Light shadow casting.

Bugfix: World composition sub-levels that had a child actor inside were becoming modified if any other sub-level was unloaded.

Foliage

New: Added support for Lighting Channels to Foliage and Landscape Grass.

New: A Foliage Type now includes all relevant fields from its Body Instance for editing.

Bugfix: Fixed an issue where the "Rebuilding hierarchical instanced mesh component, please resave map" warning was showing up when loading or entering PIE in maps with valid foliage.

Bugfix: Fixed an issue where deleting a Foliage actor from the Foliage menu did not remove actors from PIE until the editor was restarted.

Cooker

New: Added more options to the Cooker for selecting Garbage Collection frequency: The new Cook Settings’ Max Memory Allowance setting is a percentage value which will trigger Garbage Collection if exceeded. The new Cook Settings’ Min Free Memory setting allows you to set a minimum free memory value which will trigger Garbage Collection.

New: Added -skipcompile flag for running from Visual Studio. This will skip compilation when the -multiprocess flag is used.

Bugfix: Fixed a deterministic cooking issue with Static Mesh Component caused by using a Static Mesh before postload was called.

Bugfix: Newly discovered session instances were not being added to an existing session in the Session Browser.

Bugfix: Selecting an instance in a session with multiple instances did not deselect the previously selected instance correctly.

Bugfix: Deterministic cooking issue where the shader name was stored inside the shader code for debugging purposes, but is now removed.

Added a minor cooking optimization to unsolicited package markup.

Added an optimization to string asset reference resolution to bring back performance lost from memory optimizations.

Prevented clients from cooking when building only server configs.

Improved cooking performance: Allow cooker to save packages opportunistically if the current package is compiling shaders. Allow cooker to load additional packages if blocked by other packages and memory is free.

Improved cooker peak memory usage: Moved resolving string asset references to be just before package save instead of after load. Provide opportun