This release includes 189 great changes that were submitted from Unreal Engine's amazing community of developers. Thanks to all of these contributors to Unreal Engine 4.8:

3dluvr, Adrian Gasinski (gasnica), Adrian Irwin (adrianirwin), Albino Rodrigues (Bino-), Alexander O'Mara (AlexanderOMara), Andrew Zhilin (zoon), Angelo Miner (angjminer), Artem V. Navrotskiy (bozaro), Ash Matheson (Nuclearfossil), Audiokinetic Inc. (audiokinetic), Ben Rog-Wilhelm(zorbathut), BhaaL (BhaaLseN), Black Phoenix (PheonixBlack), Błażej Szczygieł (zaps166), Cengiz Terzibas (yaakuro), Christopher P. Yarger (cpyarger), codetackler, Craig Wilson (hamo2k1), Dainius Masiliūnas (GreatEmerald), Daniel Mahashin (dmahashin), Daniel Zeligman (dzeligman), David Palacios (hevedy), Derek van Vliet (derekvanvliet), devbm, Dewitt Buckingham (DaJoker29), Eugene Elkin (eelkin2000), Ezekiel Warren (zaucy), gatools, Henrik Danielsson (TwoD), Jackson Egan (Sneagan), JaredTherriault, Jason (Abatron), Jason Maskell (TamedTornado), Jay Mattis (braindx), jdh84, Jeff Rous (JeffRous), Jefferson Pinheiro (Ixiguis), Jeremy (OPTIPlanet), jlamarche, Joshua Sheard (jsheard), karolz, Kazumasa Ohashi (KazumasaOhashi), Korshikov Anton (tnako), korypostma, Lee Berger (MrCrowbar), Leon Rosengarten (lion03), Leszek Godlewski (inequation), Lucas Dohring (nykac), Lukasz Baran (iniside), Luna Duclos (PSG-Luna), Marat Radchenko (slonopotamus), Marc Kamradt (MarcKamradt), Marco Antonio Alvarez (surakin), marynate, Maurice Laveaux (mlaveaux), Michael Allar (Allar), nsf, Omar Pakker (Omar007), Paul Eremeeff (PaulEremeeff), Pierdek, PjotrSvetachov, radu-danciu, Rama (EverNewJoy), Rene Rivera (grafikrobot), Richárd Németh (hsdxpro), Richard Biely (richardbiely), Robert Chubb (SaxonRah), Robert Williams (Rottbott), Salamanderrake, Sasha Petrovich (xulture), Satheesh (ryanjon2040), Sebastian Köcke (byte3), Sébastien Rombauts (SRombauts), Stephen Whittle (stephenwhittle), Simon Taylor (simontaylor81), Spencer Brown (JedTheKrampus), thk123, Thomas Mayer (tommybear), threadlock, Tobias Mollstam (mollstam), Tore Lervik (hallatore), Will Stahl (merlin91), x414e54, Yohann Martel (ymartel06), zombiesnu

This was a really big focus for Unreal Engine 4.8. With every Unreal Engine release we fix hundreds of bugs and add many new features, but with Unreal Engine 4.8 we've worked hard to improve editor and game stability, as well as to address many of the most common engine bugs and small feature requests. We hope that the result is a very solid engine runtime and editor, and we'll continue to make stability a big focus of future releases.

Unreal Engine now has comprehensive support for Valve's SteamVR API and HTC Vive hardware!

Full support for both room scale and seated experiences.

All HTC Vive motion controller features are supported, and controller buttons/touchpads are bindable

Preview your game instantly on a connected HTC Vive using the "VR Preview" button!

The latest Sony Morpheus hardware is now supported, along with support for 120Hz rendering using temporal reprojection.

3D audio playback in VR has also been greatly improved for this release.

Unreal Engine now supports both 60hz and 120hz Morpheus development kits

The new grass system dynamically renders instanced grass and other ground clutter meshes on the landscape around the player.

See the "Landscape Grass Tools" section below for information about how to set this up!

Grass is efficiently rendered using a hierarchical instancing system that implements culling while keeping draw calls to a minimum. LOD transitions are per-pixel and fairly seamless due to Temporal AA.

Grass instances are procedurally generated by a background task according to the grass density map.

Artists author grass density through the landscape material, by outputting density to a Landscape Grass Output node. This allows the grass placement to match the terrain texturing!

As the player moves through the world, new instances are added, and instances no longer in range are removed.

This new Hierarchical LOD feature automatically creates LODs for groups of meshes! This greatly reduces draw calls and polygon counts when they are visible from a distance. This is great for open world games!

LOD meshes are generated as part of the 'Level Build' process, or by selecting Build LODs in the Build menu.

Individual Actors can opt out by disabling their Enable Auto LOD Generation option.

To use Hierarchical LOD, set Enable Hierarchical LOD System to be true in World Settings. Once enabled, you'll be able to edit settings in the LODSystem section.

Groups of meshes to combine are found automatically. If Simplygon is available, it will be used to generate the low-detail mesh for a group. If not, the LOD version of each mesh will be combined (using the Merge Actors feature). Materials are merged automatically if possible, to reduce section (material) count.

There is a new experimental feature for procedurally generating huge (or tiny, or medium-sized) regions of foliage instances quickly.

Multiple procedural foliage types can be simulated alongside one another to generate the foundations of an entire forest!

Foliage Type assets now have properties to customize how they spread and grow over the course of a simulation.

Unreal Engine games have full game replay recording and playback. New in 4.8, you can now "scrub" to a specific time while viewing network replays!

Take a look at Shooter Game to check out this feature.

Find your replay in the replay browser, and select it to play it

Exit to the main menu when you have enough footage

Make sure "Record Demo" is on

Fill it up with bots (to make it interesting!)

At the main menu, host a new game

While viewing a replay:

You can click anywhere on the timeline bar to scrub to that location!

There is a button on screen to pause/play

Out of the box, the engine is configured to store replays locally. We have a system that allows you to easily swap out replay streamers. This allows you to use a streamer that saves replays locally, or you can use a streamer that is designed to save replays to the cloud with full streaming support. More on that in future releases!

Baked into 32x32x32 LUT so it is 50% faster than before.

New film like color and tone response

Supports a distance based blur to simulate light scattering through the atmosphere

High performance DOF technique with circle bokeh and nice transitions from in to out of focus

The foliage editor has recently undergone a redesign! Besides improved usability, the new layout gives you the ability to more easily work with a large number of foliage types in the palette at once.

You can now activate or deactivate multiple foliage types at once with multi-select.

Foliage thumbnails have buttons for toggling visibility and saving the asset, as well as the total instance count.

Easily create new Foliage Types directly from the foliage view with the "Add Foliage Type" button.

We have a brand new system for supporting dynamic NavMeshes in large open worlds.

To enable this, configure your project's Navigation System for this mode and add a Navigation Invoker Component to relevant actors.

The engine now dynamically generates NavMesh on demand in the areas where it is needed.

We've designed a new, high resolution version of the Unreal Example Character included with our templates!

The high resolution version is included -- you can grab the low resolution character from the Marketplace for free!

There are two versions, a high resolution model and a low resolution version suitable for mobile devices.

Unreal Motion Graphics now has a curve editor!

You can also play, rewind and loop your animation while previewing it using the new Transport control buttons.

You can select numeric value tracks in a widget animation and animate those using the new curve editor.

Translucent surfaces can now dynamically reflect other objects on the screen!

Enable on translucent materials with the 'Screen space reflections' option

You can now summon a pop-up menu to quickly switch between different asset editors and tool tabs by pressing Ctrl+Tab.

You can also activate a tool tab in the editor for the current selected asset or show the asset in the content browser by using the mouse

You can Ctrl+Tab or Shift+Ctrl+Tab to cycle thru open assets, sorted by last activation time; releasing Ctrl activates the asset you picked

New editor features have been added for setting up instanced meshes for the grass rendering system.

Connecting a Landscape Layer Sample node directly will allow a landscape layer to specify the grass density. You can also connect a network of nodes to create more complex placement rules such as automatically removing grass based on surface normal or altitude or using multiple landscape layers.

A grass density map is generated from the landscape's material. A Landscape Grass Output node should be added to your landscape material, and one or more Landscape Grass Type assets can be assigned. For each grass type, a new input connection will appear, which is used to specify the grass density.

Each type of grass is described by a new Landscape Grass Type asset type, and each grass type can specify multiple static meshes for variation.

Just as you can in subclasses, properties of components added in the components section of the Blueprint can be modified on a per-actor instance basis.

A few caveats: Components created by the Construction Script cannot be modified, and properties that are modified on components by the Construction Script cannot be modified on the instance and will appear as read-only in the Actor details panel. However, if the Construction Script explicitly sets the property value to the default, we cannot distinguish that from not having set it at all and it will be editable at the instance level.

Just as with Actor properties, modified Component properties can be applied to the Blueprint defaults with the Apply to Blueprint

Ever wondered how much memory an asset takes up? Well, we have a new editor feature called "Size Mapper" that helps you figure that out!

Any asset editor : Open the File menu and choose "Size Map."

Reference Viewer : Right-click on some nodes and select "Size Map."

Level Editor : Right-click on actors and select "Size Map", or press Alt+Shift+M with actors selected.

Content Browser : Right-click on assets (or a whole folder full of assets) and select "Size Map."

You can access this feature all over the editor:

You can also view the sizes of lots of assets at once! Size Mapper will show all assets that are shared between your selected assets inside its own top-level group.

It shows the memory used by an asset along with everything it depends on. Use the mouse wheel to "drill down" into referenced assets, and double-click to jump to that asset in Content Browser.

Your editor layout and keybinding settings are now shared between all of your projects!



Previously, every project had its own saved layout/keybinding settings, and it was cumbersome to rebuild your layout with every project you switch to. In the future we'll be moving even more editor preferences to be globally shared between all projects.

You can now interact with wires directly in any graph editor!

Hover over the wire to highlight it or see the tool-tip for the associated pin

Ctrl+LMB Drag to move the connection to a different pin

The new Procedural Mesh Component lets you create meshes at runtime using C++ or Blueprints.

We have also added a utility library, including a function to generate smooth normals and tangents, given mesh vertex positions and UVs.

This is similar to the existing Custom Mesh Component, but has many new features such as multiple sections (materials), collision support, and the ability to specify normal, tangent, UV and color per vertex.

When using the Static Mesh Editor to automatically generate a collision mesh for your model, the generated mesh will be of much higher quality and will complete more quickly!

There are helpful new settings on all notifies to control when animation notifies trigger:

LOD - Only trigger this notify if the owning mesh is below this LOD. For example a setting of 2 will mean that the LOD will only trigger if the mesh component is rendering at LODs 0 and 1

No Filtering - Notify will always trigger (assuming it passes the Trigger Chance setting)

Notify Filter Type - The Filtering mode to apply to the notify, currently there are two choices:

Notify Trigger Chance - A number between 0.0 and 1.0 to denote a random change for the notify to trigger (0.0 = Never Trigger, 1.0 = Always Trigger)

Previously to 4.8, this feature was available as an Experimental setting. It's now fully supported in 4.8!

When running the game in a debugger or similar, you will need to add -filehostip=xx.xx.xx.xx (using the IP address of the computer running the editor)

When enabled, the Launch On button will now do perform all asset cooking inside the editor, on demand, over the network. This will allow your game to start much more quickly (similar to when using the "Cook on the Fly" feature.)

To enable this for your game, check out the "Enable cook on the side" option in the Cooker section of your project's settings.

"Cook on the Side" is a new Project Setting that allows your game to startup on a device very quickly.

Games can choose to make sure DLC doesn't reference Engine content (that Epic will be changing over time).

Added support for cooking DLC (Downloadable Content). This allows you to create Pak files that can be distributed to users later.

You can now generate Patch Files for your game that have only the content files that have changed since a previous release!

To generate a patch off that release use the "generate patch" check box in project launcher

When releasing games use the "Create release version" check box in project launcher and give it a name (example "1.0")

These are generated by comparing new assets with the files that were originally in the shipped game. Check out the new Unreal Frontend settings for this (shown above.)

The Localization Dashboard is now usable as an experimental feature. Use this feature to manage your project's localization pipeline.

You can also manage outstanding issues with any of the existing localization data, as well as control all aspects of localization data gathering here.

You can organize localization targets (sets of localization data), and which cultures (languages, regions, and scripts) should be localized for are specified.

Sprite components can be selected and painted on when in Mesh Paint mode

Note: Only texture painting mode is supported, vertex painting does not currently work with sprite components.

The source texture, any additional textures, or textures referenced via the material can be selected and painted on

Collision geometry and a custom metadata key can now be specified on a per-tile basis in the tile set editor

Various workflow/editing improvements (key binds for layer operations, drag-drop works as expected, existing painted tiles can be selected using Shift+LMB+Drag, etc...)

Staggered Isometric and Staggered Hexagonal projections are now supported, and the grid/cursor previews are improved in all modes

Tile map color can now be controlled both per-layer and across the entire tile map

Programmatically working with Tile Map Components from Blueprints (both querying and building from scratch) is now fully supported

Materials for sprites can define additional texture 'slots', with the actual textures defined in each sprite asset, allowing multi-texture sprites to be easily used.

Note: Each texture does not have to be the same size, but the portion corresponding to a specific sprite must be at the same relative location in each (there is only one source region defined per sprite)

When you create a sprite or import a sprite sheet, the source folder is automatically checked for an associated normal map named the same as the base texture with a N or Normal suffix, which will be plugged into additional texture slot 0 for you. This can be configured in Project Settings (Paper2D - Import)

Connect your additional textures in the sprite asset.

Place SpriteTextureSampler nodes in the material, defining whether each should sample from the source texture or one of the additional textures

Some examples where you might want to use this are custom materials requiring additional mask textures (e.g., pulsating emissive eyes/lines), a lit sprite with an associated normal map, or splitting a translucent texture into two opaque textures (one containing alpha data) for ETC1 compression on Android.

2D Snap Layers are an easy way to manage level layout when working with a 2D game (or a 3D game with 2D gameplay)

Move selection to the bottom layer (Shift+Ctrl+PageDown, also changes active layer)

Move selection to the top layer (Shift+Ctrl+PageUp, also changes active layer)

Move selection down a layer (Ctrl+PageDown, also changes active layer)

Move selection up a layer (Ctrl+PageUp, also changes active layer)

At any time (even when disabled), a series of keyboard shortcuts can be used to snap to the active snap layer or change layers

When the layer snap mode is enabled, any newly placed actors will automatically snap to the active snap layer

The snap axis and snap depths / names are customizable as well

The overall feature can be enabled or disabled, controlling the presence of the Snap Layers control in the editor viewport

The settings for the snap layers feature are in Project Settings - 2D

Snap layers can be used to either automatically or manually snap actors to a specified layer (e.g., Foreground, Playfield, or Background)

The Extract sprites dialog allows more control over how sprites are split out from a texture, making it quicker and easier to import/prepare assets for use with Paper2D

Grid-based allows you to specify the width/height of one grid cell, and optionally how many cells wide/tall to extract (in case there are different sized grids sharing the same texture)

Automatic will identify islands of continuous pixels and treat each one as a sprite, which works well for many kinds of assets, but may require custom pivots for flipbook animations that are different heights or create too many sprites for things like particle systems

There are two modes: Automatic and Grid-based

You can specify a naming pattern and starting offset for the created sprites

The dialog can be triggered on a texture via the Content Browser context menu Sprite Actions..Extract Sprites, or on an existing sprite in the Source Region Edit mode using the toolbar button

A grouped sprite component allows many instances of one or more sprite assets to be drawn together in a minimal number of batches (separate materials or textures will still split batches).

These kinds of sorting issues only apply to Translucent materials, Masked materials don't have the same issues but they only work for binary (0 or 1) opacity.

Sorting will be done as a whole unit. If you have some translucent foreground sprites and some translucent background sprites, you probably don't want to group them together. With the sort button they'll sort correctly relative to each other, but a translucent player in the mid-ground can't pass in between the two of them, it'll either draw in front of both or behind both.

Culling will be done as a whole unit. Either all instances are drawn or none of the instances are drawn. You probably don't want to group sprites from opposite ends of the map together.

Note: All sprites in a group will be drawn as one or a few draw calls (the minimum required given the materials and textures). This means that:

You can sort them based on the rendering project settings TranslucencySortAxis, so that batches that contain translucent sprites render as expected.

You can split a sprite group back into separate actors if you need to move/reposition something, and can then re-merge them.

You can convert selections in the level editor into a grouped component using the Merge button in the details panel if all selected items are sprite actors, or the right-click context menu if the selection is mixed (it will leave non-sprite objects alone but delete sprite actors, replacing them with a merged actor).

You can build them programmatically in the same way you might use a UInstancedStaticMeshComponent for 3D meshes, but they have fewer limitations (you can mix/match sprites and materials in one, it will generate additional draw calls as necessary)

The new "Interpolate To" Movement Component can be dropped onto actors. This will let the actor move automatically!

You can specify multiple points to interpolate between, and a number of different behaviour options are available (e.g. looping, ping pong, etc.)

Added support for downloading .obb (large data) files from the Google Play Store has been added.

Allows for a custom background image support for the download screen.

Sometimes the data file isn't downloaded from the Store, this ensures the game downloads it and can run.

Added support for building iOS Code Projects on a remote Mac using SSH.

The previous, but unsupported, method (UnrealRemoteTool) can still be used if you set bUseRsync to false DefaultEngine.ini

You can check the key into source control to share with your team.

Use the Generate SSH Key button to generate local credentials to a password isn't needed when compiling

DeltaCopy or other SSH and Rsync software for Windows

An iOS signing certificate installed in the system keychain

Materials that animate vertices using World Position Offset can now output accurate motion vectors. The motion vectors allow per-pixel motion blur from the procedural animation. Additionally Temporal Anti-Aliasing and Distance Field Ambient Occlusion can correctly reproject to prevent undesirable blurring.



Visualization of per-pixel velocities from a tree animated with World Position Offset.

Note that this feature can only support velocities from changing time, not parameters set by blueprint or gameplay code.

The Speedtree wind node needs 'Accurate Wind Velocities' to be enabled

You can disable the feature per-material with the setting 'Support accurate velocities from Vertex Deformation'

You must enable the new project setting 'Accurate velocities from Vertex Deformation'. This feature causes motion vectors to be output during the base pass which has a small performance cost whether you use these materials or not. Changing this setting requires a restart of the editor.

Cooked builds can use a dedicated thread for package streaming instead of using time-slicing approach. You can enable this in your project with a new config option. This can make asynchronous loading of assets up to three times faster!

Async load percentage accessible via 'stat levels' now takes PostLoad into account

Introduced TryCollectGarbage function which skips garbage collection if any of the worker threads executes code inside of FGCScopeGuard scope. TryCollectGarbage is now used by default by level ticking code.

Introduced FGCScopeGuard helper struct that works on a similar basis to FScopeLock except that it prevents GC from running while the current scope is being executed on a worker thread.

StaticFindObject, FindObject and FindObjectFast functions are now thread safe too. Keep in mind that if they're used on a worker thread and the return value is referenced only on the stack, garbage collector may claim the object if not referenced by anything.

UObjects construction is now thread safe and can be performed on worker threads. This requires all UObject-derived class constructors to be thread safe.

Async loading thread will be automatically disabled on platforms that do not support multithreading and on dedicated servers.

Due to the above restrictions, async loading thread is disabled by default to give everyone time to make sure their code meets the thread-safety requirements. Async loading thread can be enabled via AsyncLoadingThreadEnabled ini setting under [Core.System] section.

All Serialize functions defined for UObjects and UStructs are now required to be thread safe.

PostLoad is still performed on the main thread and is time-sliced due to most of the PostLoad functions not being thread safe yet.

Marked Character Movement Component's Set Avoidance Enabled function as unsafe for blueprint construction scripts, since it's not safe to be called there

Marked AISenseConfig_Blueprint as abstract so that it doesn't clutter senses' dropdowns

Lots of AI Perception bugfixes and improvements to bring it up to blueprint-usable state

Improved Environment Querying System query editor's menus to include new blueprint classes created during given editor session, as well as remove freshly deleted classes.

Fixed Blackboard Component's ClearValue function not really doing what it says

Fixed a bug in AI Controller that would result in a crash if AI Controller was called to posses a Null-pawn while already having a valid pawn already set.

Fixed a broken condition in AI Perception Component's Get Actors Perception function that was making the while function useless by never returning any information.

Added editor-time changes to a Blackboard asset propagate to all other assets derived from that particular assets

New: Unified support for nested nodes, copy & paste and drag & drop operations in AI editors (Behavior Tree, EQS)

New: Made Blackboard Component blueprint-spawnable so that blueprint users can start using it outside of AI Controllers

Fixed AI not ignoring their own pawns when checking for visibility

Added a BP function for easy spawning of AI noise events, damage events and requesting prediction update

Added a component that when added to an actor will make that actor auto-register with AI Perception System

Made all Pawns by default auto-register as sight stimuli sources

Senses can now specify if AI Perception Component's On Perception pdated should be called for their stimuli only if the perception state changes (like sight) or on every update (like hearing)

Added a way for AI senses to request auto-registering of new Pawns as sources of this sense stimuli

New: Added support for physx based projection in EQS generators.

New: Added new modes for selecting single result from EQS query: random from best items (top 5% ) and random from good items (top 25% )

New: Added new modes for EQS test's scoring/filtering against multiple contexts.

New: Added console command DestroyAllPawnsExceptTarget which will destroy all other non-player pawns except for the one you are pointing at

New: Added batch pathfinding EQS test. Better performance for scoring multiple items in single area, not suited for few items far away from each other.

New: Added a function to Perception Component to retrieve all actors perceived with a given sense.

When you run a query you get a 'query instance', which has an Event called On Query Finished Event that will fire once the query is finished. The instance also has functions for accessing the query's results.

You can now use the Environment Querying System from Blueprints!

Fixed a bug in Gameplay Debugger that would result in a crash when used tried to debug a Pawn and there was no navigation data present on the map.

Navmesh generation issues with World Composition have been fixed

Made Scene Previews not construct Navigation System instances, which was a source of multiple awkward navigation-related glitches

Made a change to Floating Pawn Movement that allows controlling it with "player-like" input even if it's owned by AI. This kind of control is possible only when AI is not following a path at the moment.

Made a change to determining navigation relevancy of components to improve its reliability. It directly affects influence of component's collision toggling on NavMesh generation.

Improved mechanics of figuring out if a Primitive Component should influence NavMesh generation

Fixed warnings reported during Play In Editor session from simple move to functions.

Fixed Path Following Component's issues with determining path's starting point on receiving new path

Fixed NavMesh not rebuilding to proper settings when changing NavMesh generation properties

Fixed Navigation Octree creation policy so that it doesn't get created if Navigation System is not expected to generate navigation data

Fixed Min Region Area parameter not being used in NavMesh generation.

Fixed issues with NavMesh rendering in editor. It's consistent with other Show flags now.

Fixed immediate rebuilding of postponed paths after moving or invalidating goal.

Fixed cycles in pathfinding when using overestimating heuristic weight.

Fixed crowd simulation sending AI directly through wall in some rare cases.

Fixed crash on using direct navigation paths (without pathfinding).

Fixed automatic repathing when AI resumes movement after finishing hotspot interaction or falling.

Fixed Navigation Data's Runtime Generation option not being settable to "Static" in Project Settings

Fixed AI path-following issue where AI wouldn't care about NavMesh while following last path segment to a dynamic goal actor

Fixed AI path following crashes happening when AI tries to follow a straight-line path while there's no navigation data on the level (no NavMesh).

Fixed AI not getting notified about externally-caused navigation path updates, like for example when move goal actor changes location

Fixed AI moving to actor occasionally failing due to path's final point not being on NavMesh. In practice these points were usually too far above NavMesh.

Fixed a bug in "AI Move To" blueprint node that resulted in AI not being able to properly move to dynamic actors. AI simply would not update the path when goal actor changed location.

Editor should now correctly stream-in chunks of a navigation mesh. Before it was working only in game worlds.

Fixed NavMesh generation crashes occurring as a result of user changing NavMesh generation properties via Project Settings

Fixed Navigation System's issues that resulted in improper handling of actors in "always loaded" sublevels

New: Tweaked default "AI Move To" blueprint node's Acceptance Radius parameter for better AI stability

New: Navigation mesh has new option for runtime rebuilding - Dynamic Modifiers Only. It's the same as completely static navigation mesh but supports mesh modifications through NavMesh modifiers (dynamic obstacles). It has a little extra memory overhead compared to the completely static version. Supports streaming.

New: Navigation links will now connect to cheapest area in snap radius.

New: Custom navigation components can now override parent actor's relevancy.

New: Crowd's avoidance query range is now independent from velocity.

Fixes NavMesh projection in area with significant height difference between NavMesh polys and walkable ground.

New: Added optional raycast to conform NavMesh walking closer to underlying geometry

New: Added option to skip navigable geometry export from primitive components that are relevant for navigation.

New: Added more NavMesh generation properties' validation for safer parameter tinkering

New: Added a per-instance way to configure whether navigation collision of a navigation relevant actor is gathered lazily or instantly

New: Added a feature to Static Mesh Editor to preview the way static mesh will be presented to Navigation System. There is a new tool bar button for this.

New: Added a configurable limit to total number of tiles NavMesh can contain.

New: Added a configurable flag to Navigation System that if set will result in creating navigation system on multiplayer clients.

New: A way to limit number of simultaneously rebuild NavMesh tiles has been added.

Prevented a crash when a skeletal mesh LOD has zero vertices

Avoid calling the Blueprint transition rule when there is a C++ rule

Prevent most allocations and reallocations for transition evaluation

Optimized animation code that that was copying a reference skeleton instead of taking a reference.

Minor optimization for anim node updates when one or more non-pose input pins are wired to an expression or variable in the graph by using a fast calling path

Improved the way we import tangents of curves from FBX files

Improved skeleton reimporting. If the skeleton's hierarchy has changed dramatically during reimport, it will fix up all animation assets.

Fixed viewport visibility calculation in Persona so that multiple hidden instances of Persona no longer cripple editor performance.

Fixed undo not working properly when changing a material on a skeletal mesh

Fixed a crash with Spring Bone Controller when running with Parallel Anim Evaluation

Fixed state machine update crash caused by the Persona preview instance being deleted

Fixed sockets on skeletal meshes ending up in the wrong place if the bone they are attached to is not part of the current LOD

Fixed skeletal mesh actors that are placed in the level not updating animation when animation has changed in the detail panel

Fixed aim offset not being converted correctly during retargeting anim Blueprint

Fixed root motion calculation when component space does not match actor space

Fixed play state in Persona getting reset when changing which montage is being played

Fixed notifies at the end of animation sequences in montages not triggering because of blend out.

Fixed morph target loading issue where smart name gets corrupted due to loading order.

Fixed morph target identifiers sometimes being corrupted on load.

Fixed Montage not being stopped if Blend Out Time changes after it's been triggered once.

Fixed master pose component being able to be assigned in construction scripts

Fixed location offset value not being hooked up properly in Play Particle Effect blueprint notify.

Fixed issue where update rate wasn't properly applied to all the skeletal mesh components of a single actor

Fixed issue in notify track panel where vertical scrolling of the panel would take precedence over panning the track

Fixed index mismatch in child anim blueprints if the parent is structurally changed and the child is a data-only blueprint causing incorrect behaviour and crashes

Fixed hiding slave bones when bones are hidden on a master pose component

Fixed crash when attempting to retarget an animation with a single key

Fixed crash when "modify bone" node bone name is set to None

Fixed bug in the creation of the output package during Merge Actors

Fixed being unable to record animation when not simulating.

Fixed animation length calculation being incorrect when importing an animation with a length not divisible by the resample rate.

Fixed an issue with selecting bone dropbox not displaying after search in retarget manager.

Fixed an issue with retarget translation option crashing the editor for different compression setting

Fixed an issue where Native Transition Delegate wasn't checked when dealing with conduit entry rules

Fixed an issue where Blend Space input preview isn't working when opened first time.

Change Single Node Anim Instance to account for asset play rate when performing "is finished" logic

Fix use of negative play rates in composite animations

Fixed infinite loop that would occur when playing montages with a negative play rate

Fixed crash when playing an anim montage in reverse with a segment that has a negative play rate

Fixed issue where montages with a play rate of -1 and a current position of 0 would not progress.

Fixed a variety of cases where a negative play rate would break the animation system

Fixed a crash when selecting an existing "Two Bone IK" node in an animation graph.

Fixed root motion weighting issue when blending between animations in sync groups

Fixed root motion not being cleared on additive animations. This caused the preview mesh in Persona to move when it shouldn't

FBX importer/exporter now supports UTF8 for name of meshes, bones, materials, and morph targets.

Disabled creating new animation from Content Browser. You'll create animation assets by importing them from FBX files.

Changed the anim compression dialog so that it automatically closes at the end of compression.

Changed Retargeting Option to be Advanced Option in Skeleton tab since it includes a variety of other options.

We now allow deselecting bones in Persona by clicking on a bone that is not in the mesh

Adding an Anim Notify state to an animation should properly mark the asset as needing to be saved

Added ability for retargeting window search to include bone name, display name and node name

New: When you import animation, now it provides a option to delete all existing morph target curves

New: We now queue Montage events during ticking, so they're triggered after Anim Notifies.

Accessed via the viewport Show Menu (Show -> Scene Setup -> Auto Align Floor To Mesh)

Previous behaviour was equivalent to Auto Align being switched on. This would move the floor in Persona to align with the bottom of the mesh bounds. Switching Auto Align off moves the floor back to the origin

New: Added new option in Persona to toggle "Auto align floor to mesh" on and off

Avoided calling the BP transition rule when there is a C++ rule

Prevented most allocations and reallocations for transition evaluation

New: Optimized code that updates physics bodies/collision shapes to match animation.

New: Exposed Skeletal Mesh Component's Find Socket function to the blueprint system

The BP defined transition rule is ignored and the automatic rule is evaluated directly in C++ when this is enabled, providing a speed and workflow benefit whenever the rule is sufficient

The 'can take transition' rule is defined as Player.CurrentTime + CrossfadeDuration >= Player.SequenceLength

It is an opt-in on the transition node, available when there is only a single sequence player node in the source state

Fixed issue with deleting multiple animations at the same time deleting the wrong notifies

Added "Replace with" option in right click menu for existing notify nodes.

Calculates a pose a certain amount into the future and interpolates towards that

Allows root motion without having to tick every frame

New: Added Root Motion from Everything support to Skeletal Mesh Update Rate Optimization.

New: Added Look at controller interpolation/clamp options

New: Added logging of material names to material merging during Merge Actor

New: Added filtering to Preview Asset Menu in Persona so that unattachable items are not shown.

New: Added ability insert a frame while editing animation in Persona

New: Added a drop-shadow to bone names when rendered in the Persona viewport

New: Added 5 custom fields to the Humanoid Rig which you can be used for game-specific additions

The slot manager will search references and prompt for them to be reconciled before performing the operation

The new feature is accessed through the Slot Group window. Note: the user must resolve any references to the slots in existing Montages before deleting.

This release adds the ability to rename and delete Slot names (for use with Montages).

Spatialization being used on a multi-channel sound will correctly report only once per Sound Wave asset, not once per time that Sound Wave is played.

Removing distance as a factor for Sound Node Param Cross Fade when calculating the max distance of a Sound Cue.

Fixing sound source volume setting on Android platforms so that they are accurate to the linear volume and are inaudible when set to 0.0.

Fixed bug where sounds that were playing when the source .wav was reimported would not be restarted.

Fixed an issue where the stat display for audio components did not include the associated asset

Copy-pasting an Ambient Sound that uses an internal SoundCue now works correctly

New: Audio Component's Is Playing function is now a Pure blueprint function

To enable creating a new audio device for every PIE session launched, there is a new advanced multiplayer option.

Because new audio devices may impact Editor performance for lower-perf machines, a default of 2 audio devices is currently set (1 for the main audio device, and 1 for a PIE session). More than 1 PIE session will fallback to using the main audio device.

One device serves as the "main" audio device for the Editor, and is where "real-time" audio plays, then new PIE sessions will create new unique audio devices.

This allows for a more accurate representation of audio from different player's perspectives.

New: A unique audio device instance will now be created for each PIE window.

The Load All Maps in Editor automation test will no longer run on the maps found in the engine content folder.

Fixed the cooking process on exFAT file systems, which was failing due to the way it stores timestamps.

Certain complex automation tests that relied on content need the asset registry to be full loaded. The automation framework will now wait for the registry to be loaded before tests are run.

The open asset types tests can be found in the Tools section of the automation test hierarchy in the Unreal Frontend.

This allows you to run this test on an individual asset instead of all of them at once for that same asset type.

New: The open asset type automation test is a 'complex' test again.

The static mesh UVs check no longer runs on the engine content assets.

It can check individual meshes instead of all of them at once.

New: Refactored the static mesh UVs check so that it is now a 'complex' test.

The 'project' category is for any test or tool that is project specific.

The 'system' category is for any test or tool that is project agnostic.

New: Engine automation tests are now grouped into two categories: System and Project.

New: Added additive flag to rotation multiplier bone controller node in animation graphs

When pasting Event nodes in Blueprints, if there is a ghost node version of the Event, that node will be removed in favor of the newly pasted Event.

When entering PIE, there will no longer be log errors from function call nodes in the level Blueprint due to missing scope.

When dragging a function in the My Blueprint window, a mouse decorator is immediately shown.

When deleting Blueprint assets, child Blueprints will not be re-parented and recompiled when they are also slated for deletion.

We now refresh the selected Actor's component tree in the Level Editor when a component Blueprint Class changes its parent class.

Variable renames will no longer break math expression nodes that utilize them.

Using the up and down arrow keys for selection in the My Blueprint window will correctly select them.

Undoing an "Apply Changes to Blueprint" action will no longer leave the editor in an invalid state that will lead to crashes with proceeding to redo and undo, or move the selected component.

Uncategorized functions will no longer be categorized into a "Class" category in the Blueprint node context menu when a being displayed for a currently selected level Actor.

Updates comment bubbles so that when a comment is entered through the context menu the bubble automatically displays/hides based on comment string content.

Modified actor workflow so that when an actor is converted to a blueprint the component names the user has chosen are preserved.

Implemented missing comment bubbles from array nodes which had previously just been overlooked.

Fixed the problem with variables showing as out of scope in the blueprint debugger.

Inconsistencies between the comment bubble and material expression properties

Comments being lost when compiling or closing the blueprint

The comment being applied as a custom event name instead of affecting the comment text

Fixed some of the following problems with comment bubbles in material expressions.

Fixed issues found with blueprint graph actions causing garbage collection to fail when switching levels in certain circumstances.

Fixed an issue whereby timelines containing external curves attempted to deep copy the curve as if it was owned by the timeline. External curves are now skipped leaving the reference in tact. Additionally deep copies on owned curves are now not redundantly deep copied during blueprint re-instancing.

Fixed an issue where comment bubbles could modify comment text in read only graphs.

Fixed an issue causing asserts related to the way the map levelscript is renamed and regenerated during duplication

Fixed a bug in the blueprint action database refresh that would assert if a blank level is compiled.

Restored the correct functionality specific to comment nodes with regards to their comment bubbles. The comment bubbles designed purpose here is to display when the comment nodes title is no longer easily readable under zoom and to be not present otherwise.

Removed the workaround code to display hint text in the comment bubble's and enables the newly available functionality to display the hint in the text field widget.

Disallowed users from editing the comment text in the reference viewer.

After this change if the owning graph is read-only the title bar toggle button for the bubbles will no longer display.

Disallowed the ability to modify nodes comment bubble's visibility state in read only graphs

Disallowed nodes from allowing pins to be added/removed incorrectly when the owning graph is read only.

Disallowed levelscript actions from external levelscripts incorrectly being placed in the current blueprint.

Disallowed comment bubbles from having their visibility or pinned state changed when they are situated in read-only graphs.

Disallowed blueprint components from being re-parented to anything other than Actor Component and derived classes incorrectly.

Modified timing component naming so the actual timeline node name is indicated for clarity to the user

Improved updating of available level script blueprint actions between map changes to ensure they are kept up to date more dynamically.

Fixed problems with watch values in the blueprint debugger reporting themselves as out of scope incorrectly.

Fixed detection of Global Editor Utility based blueprint functions and exposes the blueprints editable variable's to the Call In Editor actor blutilities through the actor details panel.

Fixed an issue with functions being dropped onto graphs using the skeleton class rather than the authoritative class which resulted child blueprints losing array parameter pins

Fixed a problem that caused a crash in editor blutilities when the custom event had parameters.

Fixed bugs when comments are resized to contain other comments, fixing the relative depth to all enclosed comments ensuring selection is possible afterwards.

Changed multi-line comment bubble's text to be more inline with editor standards. In order to insert a newline in the comments you are now required to use Ctrl + Enter

Fixed text visibility issues with blueprint documentation nodes. Previously we had black text on a black background which was unreadable. This has now been modified to display a lighter background.

We now track component blueprint compilation and update the relevant part of the actor details panel so it stays up to date.

Compiling the component blueprint would result in component values being displayed incorrectly and out of date.

Fixed issues when editing instances of blueprint components in the actor details panel in the main editor.

Added automatic shutdown of any asset editors that are currently editing play in editor scoped assets upon exit of play in editor mode.

The comment bubbles now require shift + enter to insert a newline when editing text.

This addresses issues with node comment bubbles newline modifier key not matching similar examples in the editor.

The re-route node will show its comment bubble if hidden when the mouse hovers over the node.

Now the re-route node comment can be pinned and shown/hidden the same way other nodes comments can.

Fixed differences between the way comment bubbles worked on re-route and other nodes.

The pop up menu will now scale with zoom instead of clipping the content in the menu.

Fixed an issue with Gameplay Tag Widgets whereby the the popup menu would be unusable when a graph window was zoomed.

The Render to Texture blueprint no longer requires using the "High Resolution Screenshot" dialogue to export visualization buffers as it handles that by entering the console command 'r.BufferVisualizationDumpFrames 1'

The Days In Month Blueprint function now logs a warning instead of asserting when an invalid month is used.

The Custom Event Node now handles generating the proper signature when dragged from a standard, non-multicast delegate pin

Switch On String node will obey case insensitivity by default as the details view says it is set to.

Suppressed wrong warning "No value will be returned by reference."

Sub-items in the My Blueprint panel will no longer be mis-categorized into the Function's section.

Small fix to prevent automatically added parent nodes from overlapping the child nodes.

Selecting all nodes in a graph using keybindings will no longer assert due to null nodes being present in the graph list.

Reroute nodes now function correctly in an Animation graph after compiling an Animation Blueprint.

Reparenting a component-based Blueprint Class asset between scene/non-scene base types will no longer corrupt an Actor-based Blueprint Class asset's component hierarchy.

Renaming macro pins will no longer rename any macros within the graph that have pins with the same name.

Removing Custom Event nodes and other nodes that spawn graphs will free up the name.

Removed some excessive verbose logging when the "Find Sessions" node finds sessions.

Removed 's' at the beginning of a return pin tooltip when @returns is used instead of @return in the comment block

Removed requirement that Blueprint variables be marked "Editable" to be accessible from other Blueprints.

Relative transform updates resulting from component attach/detach operations in the Blueprint class component editor are now immediately applied to instances of the Blueprint class.

Pasting local variable nodes outside of scope will no longer show them as valid.

Overridable functions list in My Blueprints now correctly hides hidden categories and functions for the class hierarchy.

No longer spamming "Files need check-out!" when compiling a blueprint - especially verbose when compiling a blueprint from which many other blueprints derive

No longer given the option to override functions in macro libraries in the right click menu of the My Blueprint window.

Newly created Blueprints will no longer be marked as needing to compile.

Native C++ components marked 'Edit Anywhere' can now be re-edited after being set to 'None' in the Blueprint editor Details panel.

Modifying multiple Math Expression nodes at once will no longer crash.

Minor performance improvements when finding referencers during post-compile reinstancing (slight reduction in overall Blueprint Class compile time).

Minor fix to ensure only editor worlds are considered when gathering valid level script blueprint actions.

It's no longer possible to add incompatible macro actions to a graph that would prevent child Blueprint Class assets from saving.

Fixed one cause of disappearing default values in blueprint classes

Improved default values for some blueprint math nodes. This will not affect existing blueprints

Strings in bytecode reference graph names no longer change between each compilation of the blueprint

Float to int conversion defaults to truncate rather than floor. Does not change behavior of existing blueprints

Functions with no return value and no input parameter show up as overridable in the My Blueprint dropdown

Input pins in call function node are properly updated after hot reload.

Input pins for macros can again be set to type 'wildcard'

Hidden comment bubbles will no longer reappear when doing unrelated actions.

Functions from function libraries will not be filtered from the Blueprint context menu based on the Blueprint's hidden category metadata.

Function tooltips will display the sanitized function name if there is no other tooltip available.

Format Text nodes can no longer have breakpoints set on them.

For Loop With Break and For Each Loop With Break don't increment index after break anymore.

Keys that are not blueprint bindable will no longer appear in Key selector dropdowns

Fixes a Blueprint-related crash during editor shutdown relating to the ClassV iewer.

Fixed Undo/Redo of changes to properties defined in "Native" C++ components

Fixed trailing numbers and letters that appeared on initial load of a blueprint for some set/break struct nodes

Fixed the name of the Cross product node to be correctly labeled "X"

This was causing a huge increase in the size of the DDC, especially for network shared DDCs with multiple people working on the same map

Fixed spline mesh components in blueprints adding a new entry to the derived data cache for their collision data every time the map is loaded

Fixed several crashes when calling certain functions from Game Instance's Receive Init event in a standalone game.

Fixed replicated variables defined in actor component blueprints. These variables will now actually replicate.

Fixed Refresh behavior of Make Array node - previously it would not remember which pins had been 'split'

Fixed problem, when blueprint was marked as dirty after Play In Editor was triggered.

Fixed problem that caused many unnecessary warnings while Blueprint loading.

Fixed possibility of name collision between component variables and component nodes that would prevent blueprint compilation

Fixed objects referenced only by the undo/redo buffer for blueprint constructed components being garbage collected.

Fixed naming convention issues when adding new variables or event dispatchers to Blueprints. They will now be formatted like other items in Blueprints: New[Type]_[Number].

Fixed member functions of some output pin objects not showing up when dragging off a different output pin.

Fixed member functions of output pin objects not showing up when dragging off a different output pin

Fixed issues with editing local variables multiple times, often seen when editing vectors or transforms.

Fixed issue with some ease node pins resetting themselves when the node was refreshed or reloaded

Fixed issue with default values in nested structures used in blueprints - under some conditions they would reset to the original default value

Fixed issue where adding triggers to Matinee particle tracks would cause the associated Matinee Blueprint node to have redundant pins

Fixed issue that prevented Blueprints from being based on other Object Blueprints.

Fixed issue that could cause circularly dependent blueprints to crash with a TRASHCLASS error when executed

Fixed inability to save a Blueprint Function Library asset containing a function that references another function in the same library after it's been loaded.

Fixed handling of blueprint merges when no changes to the local blueprint were desired

Fixed faulty assertion in Make Struct node when adding a text array to a user defined structure.

Fixed editor crash when an inherited variable is set in a child blueprint

Fixed crash when using Canvas Render Target objects in Blueprints

Fixed crash when Timeline Play Rate Blueprint node was copied and pasted between Blueprints.

Fixed crash when Text property was read from null object.

Fixed crash when rotation value in transform struct is edited

Fixed crash when caused by Anim Blueprint while Hot Reload

Fixed crash when blueprint uses an interface function , that takes as parameter another interface.

Fixed crash when blueprint is compiled shortly after its child was reparented.

Fixed crash when applying changes to blueprint if an Actor needed to be reinstanced.

Fixed crash when an event on a component, that is called from an actor's constructor, is deleted.

Fixed crash when a parent class of an actor in a level is recompiled.

Fixed crash when a node expands pins for a structure that was deleted.

Fixed crash that occurred when shutting down the Blueprint Diff or Blueprint Merge tool when they were launched via the command line

Fixed crash caused by hanging event graph in Data Only blueprint.

Fixed broken Actor attachments during post-compile reinstancing when the parent and child Actor are of the same Blueprint Class type.

Fixed Blueprint compile issues after undo/redo of any action involving a Format Text node.

Fixed an issue with dependent parent/child Blueprints, where the child's property values could be reset on load.

Fixed an issue where it was possible to end up with an orphaned Animation Blueprint in a PIE session, which could result in more than one available instance in the Debug Filter menu while debugging the event graph.

Fixed a regression in the Blueprint class defaults editor in which changing the material on a mesh component would not be applied to instances of the Blueprint class.

Fixed a cyclic dependency bug where changes made to a Blueprint's defaults wouldn't save until you compiled the Blueprint first.

Fixed a crash with creating Macro Blueprint Libraries or Function Blueprint Libraries and attempting to spawn default events.

Fixed a crash when creating a blueprint that is based on a C++ class if no destination folder was selected during creation.

Fixed a crash when closing a Blueprint Editor while a variable is selected.

Fixed a crash hitting F7 to compile a Blueprint while focused on a default value entry node in the Blueprint editor

Fixed a crash caused by improper handling of Restrict To Class metadata keyword

Fixed a bug with the Get Data Table Row node, where its output type could revert on load resulting to disconnected pins.

Fixed a bug with the Blueprint editor's details tab, where a crash could happen if you closed and reopened it.

Fixed a bug with Multi Gate nodes, where executing multiple from different functions would stomp memory and likely cause a crash.

Fixed a bug where the Blueprint context menu wouldn't show AddComponent options associated with assets you have selected in the Content Browser.

Fixed a bug where renaming a timeline node would not update timeline variable nodes.

Fixed a bug that would mark new function call nodes with an error until that Blueprint was fully recompiled.

Fixed a bug that would let you modify a Blueprint's defaults while playing in the Editor.

Fixed a bug that could result in a crash when deleting a Blueprint interface, before removing it from other Blueprints.

Fixed a bug that could cause Blueprint EventDispatcher nodes to have the wrong signature.

Fixed a bug that could cause Actor bound event-dispatcher nodes to break on load (no longer firing when the associated Actor triggered the event).

Fixed a bug that could cause a seemingly random crash sometime after opening the Blueprint Editor (after an aborted asset deletion took place).

Fixed a bug that could cause a crash while opening the Blueprint context menu after changes have been made to a Blueprint with open children.

Fixed a bug that could cause a crash when opening the context menu in a Blueprint that was created from the Content Browser via the "Create Blueprint Using This..." option.

Fixed a bug that could cause a crash when loading a level with a Blueprint that implements an event that has since been removed.

Fixed a bug that could cause a crash when deleting a Blueprint function-event from a super-class.

Fixed a bug that could cause a Blueprint to not revert its default values when nodes overwriting them are removed from the construction script.

Fixed a bug on Mac, where you couldn't delete a component selected in the Blueprint Editor's viewport.

Fixed a bug in the Blueprint context menu that would not show array-node options when dragging from non-array pins.

Fixed a bug in the Blueprint component hierarchy that would crash when reparenting the Blueprint and reordering components.

Fixed a bug in Physics Collision Handler Blueprints that would cause a crash when using the right-click context menu.

Fix undo/redo issues where destroyed blueprint created components could remain attached to an actor

Fix issues in Blueprint preview window resultant from using game behaviors

Fix issues after undo/redo caused by registering a component that is about to be destroyed by rerun construction scripts.

Fix graph linked to external object errors when saving a map that contains an actor with a blueprint created component that has its own default subobjects.

Fix for new Blueprints not immediately appearing in the Class Viewer (or Class Picker instances).

Fix for "Graph Linked to External Object" error in Data Only Blueprint.

Fix crash during blueprint recompile when a scene component has been removed.

Fix a bug where split array node pins could be recombine on Blueprint load (disconnecting certain wire connections).

Alternatively, exposing the advanced section and checking 'const' will enable some compile-time checks that will enforce a read-only 'self' context within the function graph. This allows the function to be called from other 'const' functions.

Note that 'const' and 'pure' as function attributes have different meanings in the Blueprint edtior. 'Pure' controls whether or not the execution pins will appear on the function call node; true functional purity is not currently enforced.

Exposed a 'const' attribute on user-defined functions as an advanced option in order to allow other Blueprint functions to be called from 'const' BlueprintImplementableEvent overrides.

Expanding a function node with function nodes inside that are scoped to the current Blueprint will no longer be missing the call function nodes.

Editor should not stall when pasting large amounts of text into the Blueprint node context menu filter.

Dragging local variables over other actions in the My Blueprint window gives an error stating that it is invalid to do.

Do Once Multi Input now works in languages other than English

Divide-by-zero warnings (and others) at runtime in a Blueprint function will now include a script callstack when '-scriptstackwarnings' is enabled on the command line.

Default placed events in Blueprints correctly have their comment bubbles showing.

Decals and Emitters spawned from Blueprints will no longer be inadvertently garbage collected.

Current Max Draw Distance can now only be read in blueprints, not written to.

Creating a Blueprint based off another will no longer cause a transaction for an "Add Node".

Crash fixed, when Text was passed from None object into native function.

Crash fix that would occur when deleting an in-level Blueprint and it's parent with attempting to retrieve some Asset Registry tags.

Copy pasting collapsed graph nodes with spaces in their name will no longer lose pin connection data.

Copy and pasting custom events that have pins with spaces in their name will no longer create individual pins for each word.

Cooked projects with a Blueprint Game Instance assigned will no longer crash.

Conversion from mouse/screen position to world and back to screen position now works correctly when Resolution Quality reduced.

Comment bubble colors now obey property set on the comment node.

Changing the value of a component property on an instance of a Blueprint Class asset will now clear any event bindings to delegates on the component instance referenced by the previous value. This fixes an issue in which all previous bindings would persist each time the value was changed.

Changing pin values can now be undone.

Changes made to GameMode via the Blueprints dropdown on the level editor toolbar will now mark the GameMode/Level as dirty

Changelist number in Blueprint diff tool will no longer display with commas.

Changed Blueprint palette tooltips to more closely reflect the corresponding node's tooltip.

Can no longer duplicate Timeline variables in the My Blueprint window.

Can hide the "Tick" category in Actor classes from displaying in Blueprint details.

Blueprints can no longer attempt to enable/disable Cull Distance Volumes or modify their Cull Distances dynamically.

Blueprints are marked dirty when they are re-parented.

Blueprint nodes are not executed after the return node is reached. The "Print String" node on the picture won't be executed.

Automatically generated array for macro input is empty. Previously it had one default element.

All input pins in "Set member in .." node are hidden by default.

Adding or renaming function pins in Blueprints, will correctly refresh all active uses of the function.

Added support to catch Blueprint variables that conflict with new parent variables. We auto-rename the child's variable to avoid a name collision.

Added support for interface pins connecting object pins. Conversion nodes are now auto-injected upon connection, and cast nodes will accept either type.

Added better guards to prevent the Blueprint Editor's node menus from crashing on invalid entries.

Added a number of small fixes to deferred dependency loading (the system, introduced in 4.7, that fixed Blueprint cyclic dependency load issues).

Actor properties no longer appear in the details view when editing native C++ component defaults in the Blueprint editor.

Absolute (int) and Sign (int) functions updated to normal naming conventions in the Kismet Math Library.

New: A native structure containing a static array can be a parameter of a function in blueprint.

New: "Spawn Actor From Class" node will no longer disconnect remaining pins when changing the class.

New: When converting a Blueprint cast node from impure to pure, surrounding execution wires will now be automatically fixed to maintain execution flow.

New: Use compact representation for Increment, Decrement and Negate macros

New: Undo/Redo actions that do not affect a Blueprint will no longer cause it to become unsaved when open

New: The text and string pins now are now multiline capable. Using Shift+Enter will create a new line.

New: Camera Component is now Blueprintable, allowing self-contained 'smart' cameras to be created more easily

When you change this setting you will be required to close and re-open any graph editor before changes are observable.

This setting also controls the default comment node colors

The setting is located in editor preferences under the graph editors section and is named Default Comment Node Title Color

New: Exposed the default comment node title color to node comment bubbles so users can set their own color preferences.

The ability to hold both Ctrl and Alt simultaneously and place both a get and a set node was also added.

New: This change modifies the behavior of drag dropping variables into a graph to consider if Ctrl/Alt modifier keys are active at any point during placement rather than only before placement begins to place a get/set node.

The option is located in the advanced section of the blueprint variable details panel and should provide indication of which config file should be used to set the value.

New: Added the ability for advanced users to set blueprint variable default values from the config files which can then be customised between different projects and configuration setups.

"Tiling Hand Placed Meshes" is a mode that auto wraps each placed mesh across the canvas to create a tiling texture. This mode is most useful for making tiling rock textures from high resolution source rocks.

"Random Tiling Physics Drop" which simulates a given number of meshes from a list colliding into a plane and then converts the result into a tiling texture automatically. Useful for making riverbeds or tiling pebbles. Collision can be disabled to generate simple random mesh distribution such as grass or flowers. By pressing 'K' to keep simulation a layered result can be created.

New: The Render to Texture Blueprint has two new modes:

New: The Render To Texture Blueprint can now render motion vectors for Flipbooks. Motion vectors are used to morph frames so that fewer frames are needed to get a smooth result. There is a companion material function called Flipbook_MotionVectors; it can also be used with motion vectors generated in separate programs. Coming soon to imposters.

New: The Render To Texture Blueprint camera orientation was flipped to match the way normal maps are rendered in world space. This removes the need for any channel flipping in captured textures.

New: Subclasses of Actor Component defined via Blueprints can now call Destroy Component on themselves.

New: Streaming levels now expose an Is Streaming State Pending function to blueprints. This can be used to check if a sub-level is fully streamed-in or out.

New: Streaming Level LOD now exposed to blueprints

New: Replacing actors in the level viewport will automatically replace all references in the level Blueprint.

New: Player Start can now be subclassed via blueprints

New: Object and class pins will now filter listed items based on parameter metadata.

New: New functions for timer: they takes a delegate of an event instead of the event's name.

New: Light Component classes can now be subclassed via Blueprints

New: When a select node is created from the context menu we now connect the dragged pin to the index pin of the select node

New: Interpolation functions are now available for 2D vectors, previously these were only available for 3D vectors

New: Can now append multiple strings using a single 'Append' node by right clicking on the node and selecting 'Add Pin'

New: Infinite loop messages while running PIE will now be posted to the message log instead of a modal dialog.

New: In "Region and Language" you can toggle localization of node and pins in all graph editors.

New: Improved searching for pin type classes to find classes, structs, enums, and objects when searching with a sanitized versus the unsanitized version of the name.

New: Input: Gesture Keys are now blueprint bindable

New: Exposed subtraction of two DateTimes to Blueprint

New: Change to implement the ability to pin reroute node comments that offers an alternative for users to the current display on hover functionality.

New: Can undo changes to drag and dropping variables to change category.

New: Can drag and drop multiple components variables into a Blueprint to have them all be placed as nodes.

New: Blueprint search makes better use of multiple processors, doubling search speed for some machines

New: Blueprint Call Function nodes will now display localized function names.

New: Added support for direction flipping for reroute nodes that travel backwards, avoiding the 'topknot' effect

New: Added new increment, decrement and negate macros

New: Added GetObjectName to return the exact object name of a UObject

New: Added GetDisplayName as an acceptable autocast from object to string

New: Added Get Light Color blueprint accessor for Blueprints that returns a Linear Color.

New: Added Blueprint Editor Setting for enabling/disabling of the default nodes being placing in new Blueprints. They are enabled by default.

New: Added an optional "Owner" parameter to the Blueprint Spawn Actor From Class node.

Editor Preferences -> Blueprint Editor -> Hide Construction Script Components in Details View (default is ON)

New: Added an option to the Blueprint Editor settings to control the visibility of components added in the Construction Script in the components tree view in the Details panel.

New: Added a menu option when right clicking on Blueprint nodes to view node's documentation.

New: Added a "target context" menu to the Blueprint graph menu, to give users more control over the menu's context. Users can now search functions belonging to the Blueprint, when dragging from an object pin.

New: Actor SetOwner now callable from blueprints

New: "The path is never executed." blueprint compiler note.

New: "The path is never executed." blueprint compiler note added.

New: "The execution path doesn't end with a return node." blueprint compiler note.

Just right-click on a GET node and select "Convert to Validated Get" to toggle the feature!

You can now right-click any GET variable node and convert it to an "impure" node that will branch based on the validity of the value. This makes it easier to handle errors.

Get Nodes can Check for Validity

The results will be a new pin, already named and connected.

To use this feature, just drag a pin connection over the node:

Drag and drop a pin connection onto Function and Macro Entry/Result nodes, Collapsed Graph nodes (and their entry/result nodes in their graphs), and Custom Event nodes to create a pin connection.

Blueprints: Drag and Drop to Create New Pins

XML parser can now parse nested '=' characters and named entities correctly in attribute strings.

Coalesced ini files are no longer written out.

UAT will not skip symbolic links on non-Linux platforms (fixes packaging projects on Windows servers that have data deduplication enabled).

Timer functions on objects that exist across level transitions now continue to fire in the new level.

Structures, with values different than default ones, are properly saved.

Stats - Fixed a crash when capturing stats from the beginning

Stats - All stats should be visible now on the hud when using command 'stat groupname+'

Simple stat commands no longer hang the game when triggered from blueprints in shipping builds

Removing a stray '/' character from the final user ini, in the config cache.

Reduced the likelihood of hitching during texture streaming by moving some temporary memory allocations to a worker thread.

Profiler - Fixed a crash when opening any asset with live data preview running in the Profiler

Profiler - "Filters'n'Presets" window should now update properly according to the selected profile

Fixes components in derived blueprints not inheriting default values from their parent blueprint.

Linker circular dependency fixes: ensure that any parent default subobjects have been loaded before trying to create a CDO.

Improved the method by which we allow dynamic data changes during the Construction Script to target non-movable components (changes which are otherwise not allowed at runtime).

Fixed Unreal Swarm resolving its own IP address when the machine had more than one network adapter.

Fixed texture DDC threading issue that could crash on boot

Fixed some of the the Editor's BSP (binary space partitioning) operations, that were mistakenly clearing flags informing if given object shouldn't be loaded for client or server.

Fixed property change propagation from default object to its instances.

Fixed newly spawned tick group to not run a second time

Fixed merging config files on Engine startup, which could result in the engine locking up

Fixed map's missing asset reference, which could appear if that asset wasn't saved before the map was saved. This situation could happen for newly created objects in the Editor.

Fixed Lightmass crash that was occurring for big enough (~4GB) files during saving.

Fixed issues that would allow Actor's Attachment Replication structure to become out of date resulting in incorrect attachment hierarchies on the client.

Fixed destructibles ignoring damage parameters that are imported from APB

Fixed crash when Pointer Event was passed to an event dispatcher

Fixed config system bug that meant default ini syntax was not used when editing a file outside the games config directory.

Fixed check() when console variables are getting set in a certain order.

Fixed assertion at startup when same shader format is specified twice in a project's engine config file

Fixed a crash when loading a package with invalid package version caused by progress reporting object not being cleaned up properly.

Fixed a bug that caused dynamic primitives using distortion (e.g. effects) to never render if no static primitives (e.g. meshes) with distortion were also present on the screen.

Fixed subtitles showing the same line multiple times instead of each line once when using multi-line subtitle

Fixed Client Restart not getting called correctly when depossessing and possessing a new pawn

Fix issue where Begin Play would get called on Actors that had already had Begin Play called on them due to being carried over from previous level during seamless travel.

Fix issue that could cause an Actor to get Begin Play called on it twice on the client.

Fix crash when doing seamless level transitions in PIE due to garbage collection failing to clean up the previous World.

Fix crash when Child Actor Component is used without an owning Actor.

Fix component-bound events to correctly bind to the class that owns the delegate signature. This fixes issues with renaming events.

Fix bug where actors without a position were treated as being at 0,0,0 for computing net priority, causing replication differences depending on camera position

Dynamically spawned Actors/Components that are static will now be affect by Cull Distance Volumes.

Date & time objects now provide accurate Unix timestamps for dates using a 64-bit value, rather than a 32-bit value.

Custom replication conditions like Owner Only are now checked for custom delta serialization, previously they always replicated and ignored the condition.

Changing the value of a parent class variable will now properly update after hot reload

Change many string replace/compare/find operations which use a fixed case search pattern to be case sensitive. This avoids unnecessary expensive string case operations when searching for things like dots and slashes.

Begin Play will no longer called on Actors that are marked Pending Kill (about to be destroyed)

Attached actors will no longer pop to the world origin and cause overlap events as part of being destroyed.

Alt-Enter will now work to toggle fullscreen in cooked builds

Added safeguards to prevent the engine from crashing when opening corrupted packages that are very small or empty.

Added checks to skip duplicating objects while saving packages. This prevents breaking assets on save if engine is in inconsistent state.

New: Tweaked task graph visualizer to display more elements on the screen

New: Tweaked stats processing for better performance for high fps, 60 and above

New: Timeline Set Playback Position now has a boolean parameter to determine whether to fire the update pin after changing the playback position.

New: The Flush Level Streaming function is now exposed into blueprints. Flush Level Streaming blocks the game thread until all level streaming operations have finished.

New: The editor now checks for additional command line arguments stored in a UE4CommandLine.txt file in the root installation directory. Create this file to set arguments that the editor should always be run with.

New: The editor now allows modifying metadata for user plugins from the plugin browser.

New: Better stats for decompress audio worker, now it also includes a name of the wave

New: After executing the command "StopFPSChart" the location of the stats will be opened via file explorer

New: Added performance stats for tasks running on the thread pool

New: Added more stats to improve memory profiler accuracy

New: Added a new stats group "LoadTimeVerbose", which is disabled by default, this group can be used to monitor a very frequent stats that should be disabled by default to not decrease the performance, currently used when memory profiler is active

To see the results use the Unreal Frontend command, usage: "UnrealFrontend.exe -run=MEMORYDUMP -INFILE= ", it will generate two CSV files with all memory allocations

To run the game with the profiler use command line parameter "-memoryprofiler", to stop the profiling use the console command "stat stopfile", it will generate a new file with extension ue4statsraw located in the folder \Saved\Profiling\UnrealStats

New: Removed ability to test if a console variable has changed.

New: Reduced ticking overhead and optimized the task graph

New: Modified how feature packs are built from template data to reduce download size.

New: Minor improvements to 'stat levels' output to include the loading progress of a packages imports in its load percentage

New: Level Streaming objects have a new property "Disable Distance Streaming". This can be used by a Blueprint to temporarily disable distance-based streaming for any streaming level.

Or by CancelAsyncLoading() native C++ function

This can be achieved through Cancel Async Loading function in Blueprints

New: It's now possible to cancel async loading.

New: Added a guard to abort opening a project if the project's PackageFileUE4Version is higher than the currently running engine's.

New: Improve floating point precision when rendering very far from the origin. This change can prevent subtle bugs such as camera wobble or vertex wobble.

New: Fixed the Editor crash during auto-save failure, which could happen even if the failure was a result of OS state (e.g. no disk space). Now it will log the error and notify the user about it without crashing.

New: Encapsulated Child Actor Class and exposed Set Child Actor Class to Blueprints

New: Enabled the ability for content projects to include plugins from third-party developers. This will link the game with the plugin making it available during game execution.

New: Automatic world origin rebasing behavior (Distance, 3D or 2D) can now be adjusted from config files.

New: Alt-Enter will now work to toggle fullscreen in cooked builds

This makes the Load Map transition consistent with Seamless Travel transition.

New: All Objects contained in a world will now be marked for garbage collection when transitioning between worlds avoiding the possibility of lingering references that prevent the old map from being garbage collected.

New: Added warning log message when Engine fails to read an environment variable.

New: Added 'togglecvar' console command which allows toggling an arbitrary CVar between two values (useful when bound to a key).

This interpolates between colors in HSV space, taking the shortest route between hues. Also interpolates alpha.

New Blueprint function: "Lerp Using HSV (Linear Color)" (in C++, you can call FLinearColor::LerpUsingHSV)

New: Added HSV-based linear color interpolation function (Blueprint and C++)

Writing a default config file with no hierarchy no longer causes a crash.

Widgets displayed for Make EditW idget transform properties now correctly rotate to match their orientation

When you changed name of row, and selected new row without hitting enter, name is changed on the newly selected row, instead of the old one, which works counter intuitive.

We now rerun construction scripts after changing properties/attachments on instanced components in the level editor, in case the Construction Script is dependent on those values.

VSync is no longer forced on in the editor even when the project's system settings enable it for non-editor runtime.

Using the "Create Camera Here" command now copies the FOV of the current camera as well as the location and orientation

Fixed another issue where only the device profiles for the running platform are loaded on game builds.

To avoid autosave popups that disrupt using the editor, autosave is now prevented for a small amount of time when there is any interaction in the editor.

The UMG palette view now opens the common category by default

The Simplygon Mesh Proxy tool will no longer try to merge meshes with non-opaque materials.

The Simplygon Mesh Proxy tool will no longer crash when one of the source meshes has an empty material.

The reference viewer no longer loads assets that you right click on to make navigation faster.

The post process settings on Camera actors and Post Process volumes have been cleaned up and now show their own categories inside the Post Process Settings field in the details panel.

The measuring tool in orthographic viewports now works correctly when Matinee is open

The Group Actor pivot location now correctly updates when adding or removing actors to/from the group.

The Git source control plugin now searches more paths for the for the required Git executable

The current feature level mode will now persist when creating new maps or loading existing ones

The connection error popup message in the Git source control plugin has been restored

The "Merge Actors" tool now uses the source Actor name's for the merged mesh instead of source mesh asset's name

The "Merge Actors" tool now correctly processes static meshes with disabled 'Recalcuate Normals' option

Stopped group actor bounding brackets from being rendered on viewports which are in Game View.

Added functions to set Menu owner, Menu Style and various click delegates

Some minor revisions to Game Menu Builder to make it a little more usable

Some less common editor viewport settings have been moved to the advanced section of the editor settings

Reset to default on properties in the details panel now properly propagates changes to any child instances of a Blueprint

Removed the invalid right-click context menu from the Reference Viewer when clicking on the background.

Project settings which require an editor restart will now provide a toast notification when changed, asking the user if they would like to restart.

Prevent toolbox being summon with keyboard shortcut when the module is unavailable.

Moved buffer visualization setup code around so it can uses showflags AFTER overrides have been applied, allowing them to work correctly in non-editor modes when debug view modes are allowed.

Mouse cursor no longer pops back to start point when you finish painting in a TileMap.

Materials for the high res screenshot functionality are now only loaded when in editor builds

Material flattening should now produce better results on materials that are using scene properties

Map-travel failures in PIE will now simply shut down PIE rather than try to load the default map. Avoids potential fatal error if default map subsequently fails to load.

Made sure there's no outstanding streaming request when Play In Editor starts.

Instead of marking all objects created during initial load as root set, only loaded objects will be marked as such. This fixes some issues with loading and creating blueprints.

We also automatically close the class wizard so that you're not left looking at an error message saying that "the class name is already in use".

In the case where adding a new class fails to hot reload (probably due a compiler error) we now state that the class itself has been added, but that you'll need to recompile the module before it will appear in the editor, and offer an easy way to open the output log to see more detailed compiler output.

The fact that the error message said "failed to add class" despite the class itself being added was causing confusion.

Improved the error message when adding a new class fails due to a compile error

If a transform property is marked as "Use 3D Widget", the widget rotation is now correctly represented when in local space mode.

Gated editor flight controls to only take effect while modifier keys (ctrl, alt, shift, cmd) are not held down, to allow things like [modifier]+PageUp can be bound to other actions

Fixing a bug in garbage collector where purging would not call destructors on objects residing in permanent objects pool while performing exit purge

Also allow material to be read and changed at runtime.

Fixed unloaded Blueprint components sometimes having the wrong icon

Fixed the measure tool in orthographic viewports not working when Matinee is open

Fixed the level editor always becoming focused when ending PIE even when it was not the active tab

Fixed the GPU profiler window having several missing textures when it was opened in a standalone game

Fixed the editor sometimes hanging when a graphics tablet was connected

Fixed the display of the "referencing property" when saving a package with "graph linked to external private objects"

Fixed the delta translate feature not being undoable

Fixed the curve editor so that the Alpha graph can be edited just like the other color channels.

Fixed the "Align Brush Vertices" operation on rotated or scaled brushes.

Fixed text export of Model objects, so that Brush objects are forward declared before being defined. This was previously causing "Ambiguous search" messages clogging the output log.

Fixed subobject instancing when creating new objects from a template other than Class Default Object.

Fixed 'show volumes' and 'show collision' console commands so that volumes and BSPs are correctly shown.

Fixed several race conditions which caused crashes in the loading screen movie player

Fixed several crashes when undoing operations on BSP brushes.

Fixed several build errors when utilizing standalone Unreal Frontend to build game projects.

Fixed scene capture components not updating correctly in the editor or when they are part of a blueprint

Fixed scene capture actors updating with data from the wrong scene in a multi-scene environment. Scene capture actors are now only updated when the scene they are associated with is updated

Fixed problem where a component couldn't be added to an empty actor with attached children.

Fixed orthographic viewport box selection for Brush Components, so they are no longer all selected when not passing over any edges or vertices.

Fixed object scaling when the pivot has been moved from the actor origin.

Fixed lots of crashes/issues with reimporting mesh with LODs (many were material index related)

Fixed LOD settings for Billboard Component and Material Billboard Component being hidden.

Fixed issues with the Brush Clip tool which would prevent clipped brushes being copied/pasted.

Fixed issues with BSP surface texture transform when the parent brush is scaled or rotated.

Fixed issues with actors sometimes being deleted when moving them to a new level

Fixed issues when building filenames for maps in the top level folder of a new project.

Fixed issue where moving actors from one level into the currently selected level, when hidden, would result in the actor being mutated or deleted entirely.

Fixed issue where certain physics-simulated components would have incorrect transforms when running in standalone mode.

Fixed issue where Actor properties were not having their name fetched from the actor label if no PropertyEditor were specified.

Fixed issue where "Assets could not be loaded" notification was misleadingly appearing when fixing up redirectors on a folder.

Fixed inability to use ctrl modified hotkeys when tile map editor was focused.

Fixed graphical corruption in the editor when on a breakpoint inside a UMG widget tick event

Fixed foliage tutorial to line up with new setting and UI changes.

Fixed FBX import window sometimes getting locked into an inconsistent state when importing static meshes as skeletal meshes

Fixed empty categories appearing in the details panel of the UMG editor

Fixed editor viewports drawing when their tab was not active or visible

Fixed edit/extrude BSP operation with multiply selected brushes. Also fixed scale for the limited case that there is exactly one surface selected.

Fixed drag-dropping a child-attached actor in the scene outliner to the World giving a bogus error message and not allowing you to reparent it.

Fixed details panel buttons not being clickable in object properties with very large names. Slightly reworked were the asset buttons are.

Fixed crash when pressing shift while already in tile map painting mode.

Fixed crash when launching or Stopping PIE when Running 'Effects Cave' and 'Elemental' Demos.

Fixed crash when importing multiple assets at once with the same name.

Fixed crash when clicking repeatedly on a sprite with multiple source regions.

Fixed crash during hot reload after removing code responsible for creating a default subobject without removing its property.

Fixed crash clicking on columns in the Visualize Texture window

Fixed bug when fading in sounds with a start time set

Fixed bug in Color Picker where original color wasn't correctly restored upon pressing Cancel.

Fixed brush transform settings not updating in real time when changed in the details panel

Fixed browse button in the details panel not being usable on object properties when a value cannot be edited

Fixed animation and UMG blueprints having the wrong corner text

Fixed an issue where world types might change when loading a world through a redirector when streaming levels in PIE

Fixed an issue where the output log would sometimes not auto-scroll to the bottom during initialization.

Fixed an issue where the orbit camera delayed hiding the mouse cursor until the following update.

Fixed an issue where the Data Table editor could stop working depending on its window layout

Fixed an issue where startup movies were not being rendered in the viewport.

Fixed an issue where project settings updated the default config files with two entries.

Fixed an issue where if a project or the engine was located in a directory which UE4 uses as a platform name, the entire project or engine would be excluded from the build/creation of a game.

Fixed an issue in which the root component of an actor would be lost after hot reload if its class had changed.

Fixed an issue in the Class Viewer which was preventing the currently selected class from being dragged and dropped into the level.

Fixed an error being generated when creating a project if new project files could not be added to source control

Fixed an editor crash when using 'undo' and painted vertex colors.

Fixed an editor crash when renaming levels in the content browser which are referenced as streaming levels in the world.

Fixed an editor crash when attempting to assign a maximum texture size to a non power-of-two sized texture.

Fixed a small issue where custom set LoD materials were lost after reimporting a mesh.

Fixed a problem that could cause a crash when trying to show collision in a cooked build.

Fixed a few framerate spikes when streaming content caused by big seek times when loading bulk data

Fixed a crash which occurred when opening a texture in the Texture Editor whose assigned LOD group had been deleted from BaseEngine.ini.

Fixed a crash which could occur when drag selecting actors in orthographic mode if there were already a large number selected.

If any other edit is being made (any change that can be undone in the editor) when Play In Editor or Simulate is started, the start command will be ignored and a message will be displayed to explain why this happened.

If an actor is mid-drag in the viewport and Play In Editor or Simulate is started, the drag operation will be cancelled and undone before starting the game.

Fixed a crash when stopping Play In Editor or Simulate. It happened when Play In Editor or Simulate was started using a keyboard shortcut while dragging an actor in the viewport.

Fixed a crash when replacing an actor with a new actor twice in a row

Fixed a crash when opening the Level Blueprint for the first time, if there is an Actor in the level with the same name as the level.

Fixed a crash when loading corrupted asset. This will now result in a warning instead.

Fixed a crash when Garbage Collector is triggered while streaming caused by Garbage Collector claiming objects referenced only by streaming code.

Fixed a crash when attempting to turn an edge in Geometry Mode whose associated polys are coincident.

Fixed a crash when attempting to generate too large a font texture.

Fixed a crash when a material is used in a loading screen before the engine is fully initialized

Fixed a crash summoning the component visualizer context menu when a viewport was in immersive mode

Fixed a crash renaming a level which has not been saved yet

Fixed a crash on exiting the game after package streaming failed.

Fixed a crash in the Simplygon Mesh Proxy utility when one of the source meshes has no material assigned

Fixed a crash in the Property Editor when validating an external property while there are no instances

Fixed a bug where the "image" field on a Slate brush was not found when searching the details panel

fixed a bug where automated tests could crash if the host platform was not defined

Fixed a bug that could crash the editor under OpenGL.

Fixed a bug that could cause the line attractor to crash the engine if both start and end point were in the same location.

Fixed a bug that could cause Play-in-Editor client instances to load an incorrect map if the current map hadn't been saved yet.

Fixed "select immediate children" in the world outliner selecting recursively

We don't perform a full map check on loading a map in the editor, but some objects perform self-checks on load and add them as map check errors

Fixed "Map Check" error messages that were added during loading a map not being shown

Fix stall during streaming in sublevels due to async loading being flushed by destroying a child actor component.

Fix so that pausing a PIE session (with the Pause key) actually works when PIE is in a new editor window.

Fix skeletal meshes not allowing editing of any materials if none were found during FBX import.

Fix crash running game/PIE when an image asset has be set to none in the touch interface layout.

Fix crash attempting to reimport a render target. Render targets cannot be reimported since they aren't generated from source art data

Fix an issue where icons would not display in the curve asset editor if you enabled small icon mode.

Corrected the name of the folder to import to when inserting feature packs

Changed Play From Here so that it doesn't snap-adjust the click location to use.

BSP converted to static meshes will no longer leave the BSP brush remaining in the level

All users focus are now set to the main viewport in PIE, fixes 2nd + players controllers not having control until you click in the PIE viewport.

Adjusting the mouse capture tip to only ever be collapsed or hit test invisible. It was previously blocking clicks because the border was visible.

Added back in the setting to toggle using MiKKTSpace tangent generation for static meshes

Added a setting in the Matinee record movie tool to specify whether or not UMG/Slate HUD should be included in the recorded movie

New: You can now double-click components in your Blueprint or actor details to focus the viewport on the component.

New: Valid stats console commands now appear in the in-game console auto-complete list, and no longer output an 'unrecognized command' message.

New: User is warned when packaging a binary that doesn't exist.

New: Updated how importing factories are sorted and prioritized.

It works on arrays of Transform or Vector properties as well, showing one widget for each element of the array

Editable properties on scene component and actor subclasses can be tagged in C++ using meta=(MakeEditWidget) or in Blueprints using "Show 3D Widget"

New: Transform and Vector properties on Scene Component subclasses can be manipulated in the level editor

New: The Simplygon Mesh Proxy tool now has support for Metallic, Roughness and Specular material properties.

New: The Pen tool in Geometry mode now disallows creating geometry whose edges self-intersect.

New: The OBJ file format is now accepted when importing LODs

New: The Message Log system now supports adding a button to perform one-time actions such as repairing damaged content. Once the button is pressed and the action has been performed, the button is removed.

New: The general feel of the Unreal Widget has been improved, in particular that of rotation, which should now respond smoothly to the user's mouse movements.

New: The "Merge Actors" tool now has an optio