We have now refactored our PhysX Vehicle support as an optional plugin! This makes it easy for games that are not using vehicles to exclude this feature and save disk space and memory. This work also adds several useful physics extension points to Engine (e.g. OnPhysSceneInit/Term, OnPhysSceneStep) to make it easier for other developers to write their own similar systems.
New: Making the UI for adding/removing parameters in custom Blueprint functions behave similarly to the struct creation dialog in the Content Browser.
The New button is no longer in the bottom right of Inputs and Outputs. Instead, add via the + icon in the Category header.
Parameter ordering controls have been moved onto the main parameter row instead of being nested inside the collapse panel.
A tooltip will now let you know the full parameter name and type when you hover over the editable name field.
New: Added RotatorToAxisAndAngle function.
New: Added aliases for "dot" and "cross" math operations in the Blueprint Math Expression node.
New: Added support for DataTable members variables in Blueprints.
BugFix: Fixed a crash on load for Blueprints casting to a ChildActorComponent's parent.
BugFix: Fixed a crash when using "Select All Input nodes" option from the Blueprint pin menu.
BugFix: Fixed a crash which could happen when using reroute nodes in Blueprints.
BugFix: Fixed a crash when selecting an enum value from a Blueprint node's enum combo box.
BugFix: Fixed a crash that could happen after receiving a "Graph is linked to object(s) in external map" error message.
BugFix: Fixed a crash when debugging Blueprints across multiple worlds.
BugFix: Fix crash in execArray_Append that could occur when one of the target array's UProperties was missing.
BugFix: Fixed a crash that would sometimes occur when collapsing nodes to a function or macro.
BugFix: Fixed a rare crash in IsTypeCompatiableWithProperty.
BugFix: Fixed a crash during bootup involving CDO of nativized Blueprints.
BugFix: Fixed a stale object crash in HandlePlaceholderScriptRef.
BugFix: Fixed a crash caused by an object name collision that could occur when loading some older Blueprint assets.
BugFix: Fixed a that would occur when loading a Blueprint with a collapsed node with a split struct pin.
BugFix: Fixed a crash with Undo/Redo commands causing the component and actor selection to become unsynchronized.
BugFix: Fixed a regression in which nested scene component subobjects would no longer be registered after construction of an instance-added component.
BugFix: Fixed inaccurate ensure message that could trigger when choosing a bad target from the Blueprint debug menu.
BugFix: The Vector2D default pin values are now properly saved
BugFix: Fixed the inability to edit an Instanced Static Mesh Component instance array on Actor instances when the Instanced Static Mesh Component is inherited from a Blueprint class.
BugFix: An explicit warning is now logged on BuildCookRun or a standalone cook when the -nativizeAssets flag is omitted from the command line for a nativization-enabled project.
BugFix: Fixed various component instance data loss issues for components added to an Actor through one or more Add Component nodes in a Blueprint graph.
BugFix: Fixed attached root scene component relative transform values after reconstruction of an Actor-based Blueprint instance.
BugFix: Fixed a bug that would drop pin connections when ctrl dragging them.
BugFix: Fixed a bug that would cause Volume Actor Reference nodes to use the wrong class icon.
BugFix: Fix for breakpoints failing in Level Blueprints when multiple Clients are running in PIE.
BugFix: Fixed an issue with CreateRenderTarget2D called in construction script during cooking.
BugFix: Fixed an issue which could cause invalid Blueprint warnings when using a cast node.
BugFix: Fixed an issue in the struct editor that would prevent you from including spaces in a variable name.
BugFix: Fixed an issue that could cause a Blueprint compiler warning when using one of the Ease nodes.
BugFix: Fixed an issue where Blueprints could improperly warn/error about missing variables.
BugFix: Fixed a bug where Blueprints could improperly error about missing Event Dispatchers.
BugFix: Fixed a bug that could cause latent Blueprint nodes to lose pin connections when using a split pin.
BugFix: Fixed an issue where copying variable nodes and pasting them into another graph with a variable of the same name and type would prevent that node from showing up in a reference search.
BugFix: Fixed an issue where Reroute nodes for variable would not always mirror data properly from the source pin.
BugFix: Fixed an issue while loading of circularly dependent Blueprints when a user defined struct's default value was part of the dependency graph.
BugFix: Dragging and dropping a function into a graph can not be properly undone.
BugFix: Corrected the behavior of nativized UserDefinedEnums. Sometimes enum names did not match the normal version of the data.
BugFix: Fixed an issue for "Graph Linked to External Private Object" error when deleting folders via the Content Browser when the folders include Actor Blueprints
BugFix: Fixed cyclic dependencies with Nativization that occur while native class construction happens.
BugFix: Fixed a data-loss issue related to non-native Blueprint classes that override inherited component default values from a nativized Blueprint class hierarchy.
Changed ClearRenderTarget2D default alpha to 1, which is necessary for correct compositing.
The Graph Editors can now set their grid snap size via the Editor Preferences > Appearance.
Pre-Populated Blueprint nodes now attach all matching outputs to parent Blueprint calls (not just exec pins).
The CreateSaveGameObject node now alters its output type based on the SaveGameClass input.
IntVector can now be used in Blueprints.
Blueprint Context menu now has improved results for 'sel', 'sele', 'selec', 'bra', and 'foreach'.
Create Event node now displays the signature of the function that is desired.
Adding a component in the Blueprint Editor now adds the component as a child of the selected component.
Blueprint compact nodes no longer have two different looks. Now, all compact nodes have rounded edges and have a matte color.
GetReflectionVector math function has been exposed to Blueprints.
Exposed a new function, GetCommandLine, to Blueprints which will return the command line used to launch the process.
You can now select Blueprint assets for nativization in the Project Settings > Packaging.
The Blueprint nativization feature will now be automatically enabled for the project when a Blueprint class is marked for nativization in the Blueprint Class settings view.
Interface class dependencies that are not enabled for nativization will now raise an error at cook time if dependent classes are marked for nativization.
We now hide 'EditInstanceOnly' properties when viewing/editing SCS component defaults in the Blueprint editor, as this does not apply to an instance context.
New: Added support for " in FName so they will be converted properly to " internally.
New: Removed defunct "USING_SIGNED_CONTENT" define.
New: All platforms are now compiled with C++14 standard.
New: Allow enabling sound (-enablesound commandline switch) if the game disabled it by default.
Bugfix: Fixed a garbage collection crash when copying an empty timeline.
Bugfix: Module Manager shutdown fixes:
Shutdown Module is now called in reverse order to when Startup Module is FINISHED. This allows modules to reference dependencies in their Startup Module to ensure they are loaded, and be sure they will still be around in Shutdown Module.
HTTP Module now shuts down in Shutdown Module and not Pre Unload Callback.
Added comments to Module headers to indicate this new change in behavior.
Removed manual startup of HTTP module in Launch Engine Loop as it's no longer needed. This should save the module from being around if not really used by engine.
Bugfix: Many fixes to cooking complicated blueprints when s.EventDrivenLoaderEnabled is turned on.
Bugfix: Fixed a bug on 32-bit targets, some int64s could be aligned to 4 bytes and then passed into platform atomics functions. On apple platforms, those atomics functions can crash when passed in a non-8 byte aligned int64. Some explicit alignment has been added to those variables to 8 bytes.
Bugfix: Fixed Cancel Async Loading crashes when EDL was enabled.
Bugfix: Fixed memory stomps in SSL certificate initialization.
Bugfix: Fixed wrong reporting of ever increasing STAT_TextureMemory_ and STAT_RenderTargetMemory_ numbers in memory profiler.
Changed the Segment Dist To Segment Safe function in FMath to handle the case where either (or both) of the input segments create points.
When CVar override is denied, current value of the CVar will be printed in the warning message for clarity.
Updated Generate Distill File Sets Commandlet so that it resolves string asset references after loading packages, to ensure that it finds all required files.
Updated Json Object Converter so that, by default, Struct To Json Attributes now skips transient properties.
Pak signing has been properly integrated with the new event driven loading system.
Added optimizations to the signature checking system so it is much faster.
AES encryption can now be configured for use with pak files, and has been integrated with the new event driven loader system.
bEncryptIniFiles=True can be added to your projects DefaultGame.ini to encrypt all ini files in the pak files.
Both AES encryption and pak signing are now configured from an Encryption.ini config hierarchy. See Config\DefaultEncryption.ini and Config\Windows\WindowsEncryption.ini in the ShooterGame sample project for an example of how to configure both encryption and pak signing.
Minor change to how bulk data is async loaded, allowing it to be freed correctly after first copy when requested.
Added some extra logging information to try and help catch a corrupt archive chunk crash seen in live builds.
Prevented reinstancing UEngine-derived objects on hot reload as this class is not reinstanceable.
Enabled full callstacks in non-monolithic builds by default.
Made Assemble Reference Token Stream thread safe for blueprints loaded on the async loading thread.
Pak platform file will now only be used if pak files exist regardless of command line params like -pak, -signedpak and -signed.
It is no longer necessary to rebuild the cooked exe to enable the Event Driven Loader. EDL and the new async IO are now controlled with ini settings only (through Project Settings). EDL can now be enabled in Blueprint only projects and binary distribution of the engine.
Event Driven Loader is now enabled by default.
New: Added to Sequence Recorder:
New: Improved search for matching Material on FBX mesh import. Added a "Search Location" dropdown in the Material Import Options to control how the search will be performed. When an imported mesh references a Material, the importer will search for a Material with the same name in the assets folders. The search is performed in the following order based on the “Search Location” setting:
"Local" option will behave as before with a non recursive search in the destination folder (e.g. in /Game/Content/Assets/MyImportFolder/ only).
"Under Parent" option performs a "Local" search first followed by a recursive search from the destination folder and a recursive search from the parent's folder (e.g. in /Game/Content/Assets/MyImportFolder/ and subfolders then in /Game/Content/Assets/ and subfolders).
"Under Root" option performs an "Under Parent" search first followed by a recursive search from the root folder (e.g. in /Game/ and subfolders).
"All Assets" option performs an "Under Root" search first, followed by a recursive search of every asset folder (e.g. in / and subfolders).
New: Users are now able to customize the Class Browser/Picker to filter out developer folders as well as hide internal use classes via INI settings.
ViewOptions button has been added to enable users to choose whether or not these filters are enabled. By default, internal only classes will be hidden and you will be limited to your own developer folder.
Go to Project Settings >Class Viewer >Class Visibility Management to customize the default classes and paths used by the filter.
New: Added new sorting options for Statistics Window so that it now sort columns based on types and texture dimensions.
New: You can now export Static Mesh LODs from the editor. This requires that the Static Mesh be in the Level and use the FIle > Export options.
New: The Gameplay Tags UI has been improved:
In the Project Settings window, Gameplay Tags will show up as a tree instead of as a list.
In the treeview, an Add Subtag button has been added to each tag that will add a new subtag in the same INI file.
Comments can now be attached to gameplay tags, and will show up in the tooltip for a tag.
Each tag has an options drop down menu that allows you to search for references to that tag. In the Project Settings window, the dropdown also has options to delete and rename tags.
When creating a new gameplay tag, you can specify what INI file it will be created in.
New: Added option to import an FBX with front X axis.
New: The FBX exporter can now export Bone Scale.
New: It's now possible to shift-drag (Camera follows the object being moved) an object in the Level Viewport and move the 3 axis at the same time (drag the center of the manipulator).
New: The FBX importer is now able to import LOD groups with the Combine Mesh option enabled.
New: Added a shortcut for the Merge Actor functionality to right-click Context menu on Actors inside of the Level Viewport.
New: FBX imports now support using Multi-Sub-Object Materials generated by 3DS Max to prevent importing unused Materials.
New: FBX now takes into account all scene conversion options that were set at import.
New: Added support for detail customizations on root structs.
New: Added the ability to set and retrieve a host tab manager from the details view.
New: Added the ability to extend default layouts.
New: Added "Plane" to the Basic Shapes category of the Modes window.
New: Added the ability to create groups within groups in the Details panel customizations.
New: Added the ability for struct customizations to add categories to the parent object in the details customization.
New: Added support in MallocProfiler2 program to use nm.exe to symbolicate callstacks for clang-based platforms that have nm.exe that can look up symbols. It is easy to subclass the base support for each platform.
BugFix: Fixed a crash when importing Skeletal Mesh FBX file that contain one or more materials or textures with the same name as the FBX filename.
BugFix: Fixed a crash in the details customizations when the asset picker is used without a property.
BugFix: Fixed a regression where motion blur was enabled in editor views.
BugFix: Fixed a crash when importing a FBX with some node containing unused materials.
BugFix: Fixed a crash on Editor close after VR Foliage editing.
BugFix: Fixed a crash when using the Editor while Simulating (SIE) with an Actor copied to the clipboard.
Affects Mac when navigating the Editor or simply updating the selection to an actor component.
Affects Windows when showing a menu containing a Paste option (for example the Edit menu in the main menu).
BugFix: Fixed a crash in the Curve editors when scaling to fit after resetting the curve to default.
BugFix: Fixed a crash when importing an FBX that does not contain any mesh.
BugFix: Fixed a crash when importing a Skeletal Mesh with no Material.
BugFix: Fixed a crash occurring when trying to merge meshes/actors with their lightmap UV index set to 0.
BugFix: Fixed a crash in the Texture editor when opening a texture that does not have a valid texture resource.
BugFix: Fixed the Output Log filter that was not updating when text was committed.
BugFix: Fixed an issue that prevented skipping of intro movies using the Default Game Movie Player by using a keyboard or gamepad input.
BugFix: Fixed an issue where the "IDE downloading" would remain open if the Add Code window was closed while the toast was active.
BugFix: Fixed the functionality to drag a folder and its sub-directories from the OS file system into the Content Browser.
BugFix: Static Mesh Component's Overridden Lightmap Resolution previously displayed the value it was set to, even when bOverrideLightMapRes is false. The behavior is to use Lightmap Resolution on the Static Mesh member instead when bOverrideLightMapRes is false. The UI was adjusted to reflect the more accurate behavior.
BugFix: The Build Settings will now be set properly when reimporting with different options.
BugFix: FBX Reimport of an asset that originally imported from a file containing multiple objects will reimport only the FBX content that match the selected asset in the Content Browser.
BugFix: The FBX importer now imports local (parented) and global (non-parented) sockets correctly.
BugFix: Fixed an issue where AssetPtrs/Asset IDs were not getting properly fixed up when renaming assets in the Editor.
BugFix: Changed the maximum LOD level for merging actors to 7. Previously this was set to 8, which was invalid.
BugFix: Material settings are now completely disabled in the Merge Actor tab when Material Merging is disabled.
BugFix: Fixed a situation in advanced preview scenes where hiding the environment would not apply to reflections.
BugFix: Fixed shadows being faceted/hardened in advanced preview scenes.
BugFix: Fixed Material and Vertice count issues with Skeletal and Static Mesh conversions.
BugFix: Fixed Full Scene Importer changing Actor mobility when reimporting.
BugFix: Fixed an XML Parser assert when parsing a root tag that completes on the same line.
BugFix: Fixed hidden black callstack text in the Crash Reporter Client.
BugFix: Fixed an issue with compressed.ddp not containing all the shaders needed to load up the Editor for the first time.
BugFix: Fixed an issue when collapsing all, hiding everything in the settings editors.
BugFix: Fixed stretched Landscape Editor Icons.
BugFix: Fixed an issue when opening new assets in a minimized window not restoring that window.
BugFix: Fixed a number of Keybindings problems:
Removed editor keybindings from Project Settings. It should not have been in there (already in Editor Preferences).
Removed duplicate registration of editor keybindings from Editor Preferences.
Fixed memory leak regenerating keybinding widgets when ending PIE world.
Cleaned up styling a bit to make keybindings widgets clearer.
BugFix: Fixed the menus in the Editor not appearing in certain preview builds of Windows 10.
BugFix: Import Commandlet Fixes:
BugFix: Fixed an issue with UGS with Perforce having a branch root with a lowercase drive letter. UBT Intermediate response files include path names and are case sensitive, so it's important that they are always consistent. Windows seems to always include a drive letter in uppercase.
BugFix: Fixed an issue with UGS where editor .target file being deleted when doing a content-only sync, causing a prompt to rebuilt the editor when trying to launch.
BugFix: Fixed an issue with UGS to ensure the project config file remains valid even if sync is aborted due to files needing resolve. This prevents user configuration from not being applied onto build steps.
BugFix: Fixed material assignment error when importing multiple mesh with Combine Mesh option enabled in the Import Options.
BugFix: Fixed an issue where rebuilding geometry for the current level would actually erroneously build dynamic brushes from all levels.
BugFix: Fixed an issue where UBT was not correctly passing quoted strings as defines to the code build environment for PS4 and Mac targets.
Reorganized the Post Process settings so they appear as categories in the parent and so that they have better categories to make it clear what all the settings do.
Added ability to UGS to use Ctrl + A to select all in the log window.
Added ability to UGS for Perforce Settings window, allowing users to set optional values for tuning Perforce performance on unreliable connections.
Changed installed plugins to be disabled by default, but display a notification in the editor the first you load a project with a new one. Installed plugins which are new to this project will be adorned with a "New!" badge in the plugin browser.
The cost of deleting hundreds of Actors simultaneously has been reduced by reorganizing how we check for Blueprint dependencies on the Actors.
Some of the plugin templates define Editor specific plugins. If created and a Standalone build is run, the application will attempt to link in editor libraries in game mode and will run into issues when you hit any key. The fix is to specify an Editor module description for these plugins.
The scrollbar will now remain at the bottom of the Output Log when a filter is specified.
Importing a Camera from an FBX will now create a Cinematic Camera with the specified focal length, field of view, and film back settings.
FBX Reimport now log messages in the message log window.
The FBX Reimport API now always returns false if there was some error when reimporting an asset.
FBX import now logs a message when there is too many bone influences on a vertex.
FBX files with multiple meshes with the same name is now supported.The importer will generate a number at the end of every mesh with a name clash.
Spline mesh actors in the Level Viewport can no longer be moved by transform gizmos in other viewports.
Clicking on a row in the Data Table editor before committing changes for the current row will now switch to that row after committing the changes.
Map properties that contain a struct as the value type are now editable when editing a component's properties in the asset editor.
The Color Picker will no longer stretch if a very long value is entered into a color component field.
The FBX Scene Reimport is now marking all reimported asset dirty.
The FBX importer is no longer using SkinXX workflow to import Static Meshes. It now uses the Material Name Slot workflow.
Changed how vertex colors are propagated when merging Spline Meshes using the Merge Actor functionality. This used to caused faceted vertex colors.
Now when painting, you won't be able to activate any other input other than the painting input.
Changed Panel Widget's Remove Child At function to not release slate resources if the child is a User Widget.
Near Clip Plane now adjusts to the user's scale to avoid clipping too early at small sizes.
Updated first include of Plugin Templates as Private PCH files were deleted.
Disabled "Convert to Static Mesh" option if only unsupported types are selected (e.g. Cable Components).
Level viewport 'show stats' option is now enabled by default, which avoids confusion with artists thinking lighting is built, when really the message is hidden.
Object's IsAsset function now returns false if the outermost package is RF_Transient as well. Also, updating the creation of the Transient Package to be RF_Transient. This makes it so transient packages created by sub-editors for things like previewing a streamed in level instance no longer show up in the Content Browser.
Made rebuilding lighting faster by importing lightmaps in multiple threads.
Added extra content to crash analytics and crash reports from the Editor.
Made an optimization to pasting multiple brushes, so that geometry is not constantly rebuilt for every brush that's added. This improves performance by a couple of orders of magnitude!
Editor creates a string representing user activity from the details of the currently active tab.
Editor user activity is sent as part of crash-related analytics and crash reports to give context.
New: Added current camera to Level Sequence Player Snapshot to allow any property to be displayed in the burn-in. Adjust Default Burn In to include a few more parameters like Focal Length and Focus Distance.
New: Added toggle to Movie Scene Capture to override Engine Scalability Settings to use Cinematic Scalability option.
New: Draw where the In and Out points of the show section are, just like sub-sequences do. Change to only draw the green starting line if Start Offset is negative.
New: General Options button menu has been refactored into Play Options and Select Options.
New: Added Select Sections in Selection Range and Select All in Selection Range.
New: Added hotkey, Ctrl + L, to toggle Camera Cut track to lock/unlock the camera.
New: Added the ability to copy/paste tracks in Sequencer.
New: Sequencer now shows the Camera Name in the Cinematic viewport.
New: Added the option in Sequencer to lock the playback ranger per movie scene.
New: Added the option in the Curve Editor to show time in frame numbers.
New: Added Minimum handle size for time slider scrubber.
New: Added menu options in Sequencer to reduce keys of all sections in the current Level Sequence.
New: Exposed Curve Editor settings to Editor Preferences.
New: Added the ability to trigger Events with parameters.
New: Added hotkey to Sequencer for the ability to restore all states that have been mutated by Sequencer by using Ctrl +R. See "Restore Animated State" button on the toolbar.
New: Added the ability to override bindings when playing back a Level Sequence on a Level Sequence Actor.
New: In Sequencer, added the ability to step to beginning.
BugFix: Fixed a crash caused when attempting to stop a Level Sequence player while it is being evaluated.
BugFix: Fixed a crash when there are multiple components to attach. Added a component selector when there are multiple components that have sockets to attach to.
BugFix: Fixed the offsets that were created when moving multiple sections. The offsets were being created because section bounds were being generated for all sections except for the current section. Instead, they should be computed for all sections except for any that aren't being moved.
BugFix: Fixed an issue with export from Master Sequence not finding bound objects.
BugFix: Fixed an issue with Sequence Recorder to not update the current sequence name if it's already set. This fixes a bug where if you pass in a sequence name to record to, it gets reset to the name in the sequence recorder settings.
BugFix: Fixed an issue with Cinematic Camera to allow manual focus distance when focus smoothing is enabled.
BugFix: Fixed issues to allow for component keyframing.
BugFix: When converting Matinee to Level Sequence, fixed matinee 3D scale track conversion to Level Sequence.
BugFix: Fixed an issue with Cancel when doing a Save As so that it doesn't continue to save.
BugFix: Fixed some recorded components not being generated.
BugFix: Updated Sequencer to properly fire events once per loop.
BugFix: Teleport simulating components when moving them through the transform track. This fixes bugs with recording simulating actors (ie. vehicle game) where recorded actors don't playback with the recorded positions and there are warnings about attempting to move a fully simulated Skeletal Mesh.
BugFix: Fixed the play rate track interaction between servers and clients.
In the Curve Editor, Set Tangent to user when flattening or straightening tangents only when the tangent mode is auto and the interp mode is set to cubic.
Set Snap Time to Dragged Key on by default.
Set the paste keys time to the current time, rather than the mouse time.
Remove click to rename shot functionality in the shot thumbnail. Added rename shot to the Shot Context menu.
When converting Matinee to Level Sequencer you can set the default scale when converting matinee move tracks to sequencer.
Audio Start Time in Sequencer is now deprecated in favor of Start Offset which is an offset into the audio clip.
In Sequencer, the Spawnables are no longer destroyed when the cursor leaves the master playback range.
In Sequencer, Remove click to rename shot functionality in the Shot Thumbnail. Added a Rename Shot to the Shot Context menu.
New: Force Feedback Effects can now be previewed via the Content Browser.
New: Significance Manager plugin has been moved out of Experimental.
New: The Gameplay Abilities system has been moved into a plugin. It can be enabled in the Plugin settings, but it is still experimental.
New: Added the ability to override Crouch/Uncrouch status in Character Movement Component with Update Character State Before/After Movement.
New: Added Set Auto Activate Blueprint function to Set Auto Activate, which is safe to call from Construction Scripts.
New: The Gameplay Tags Editor module has been moved to a plugin, while the Gameplay Tags module is now part of the core engine. System internals and performance have been significantly improved.
Gameplay Tags can now be added directly from C++ code with AddNativeGameplayTag. Tags added this way do not need to exist in another ini or data table.
There is now a Gameplay Tags Project Setting page that allows editing all shared tag settings and managing existing tags.
It is now possible to Find Reference, Rename, and Delete tags from the tag management UI. Find Reference will only work on assets that have been resaved in 4.15.
Much of the existing C++ API for Gameplay Tags has been deprecated and replaced with a simpler API using Matches/Has or MatchesExact/HasExact. Some broken utility functions were removed.
New: Added two "virtual buttons", Virtual Accept and Virtual Back that should be used for your menus if you ever need to run on a platform where the Face Button Right is accept, not Face Button Bottom (i.e. Switch). Engine and Epic game code has been updated to use them.
New: LOD distances have been consolidated between Skeletal, Static and HLOD meshes.
BugFix: Avoid a crash when calling a Character's Set Replicate Movement when not on the Server.
BugFix: Fixed a crash when travelling between levels if an Always Loaded sub-level was hidden.
BugFix: The correct significance is now chosen when multiple viewpoints are in use.
BugFix: Tick functions that are disabled in a frame where they were scheduled to execute will now be prevented from executing.
BugFix: Blueprinted Level Sequence Actors will now correctly receive a tick event in their Blueprints.
BugFix: When modifying properties of an Actor during Simulate in Editor (SIE), Expose on Spawn properties will no longer be reset to class defaults.
BugFix: Player Camera is once again positioned correctly at the start of a level even if the game is immediately paused.
BugFix: Player Controllers are now kept in the same order when going through a seamless travel map transition, which fixes Get Player Controller calls.
BugFix: Fixed extra white space not being removed in front of console commands.
BugFix: Actors attached via the World Outliner to a Child Actor will now remain properly attached when making viewport changes.
BugFix: Fixed Game Mode Base's Get Game Session Class to return Game Session Class when set.
BugFix: Fixed an issue where Character Movement Component's "On Teleport" was improperly changing movement mode.
BugFix: Fixed an issue so that Volume Bounds no longer vanish after hot reloading custom trigger volume code.
BugFix: Fixed Project World To Screen Blueprint node to work for letterboxed viewports.
BugFix: Fixed an issue where Sound initiated via the Play/Spawn2D sound functions now correctly display subtitles.
BugFix: Setting the Max Draw Distance for a primitive component in a Blueprint Construction Script will now work as expected.
BugFix: Fixed an issue with Spline Mesh Components that would cause them to distort over long distances.
BugFix: Fixed the streaming pause rendering feature starting a movie even if a movie was already playing.
BugFix: Child Actors now properly get Begin Play called when spawned from the Begin Play of the Parent Actor.
BugFix: Fixed an issue that could result in duplicate Child Actors in uncooked Standalone games.
BugFix: Fixed Character Movement hanging on to a bad/penetrating floor check result and not continuing to check for a valid floor.
This only occurred if bAlwaysCheckFloor was set to false. This could, in rare situations, cause the character to continue to attempt to depenetrate an object far away from it until another floor check occurred. To prevent this, we now force a floor check after the depenetration.
Bugfix: Keys can no longer be added to read-only curves in curve tables.
Bugfix: Actor Component, Scene Component, and Primitive Component functions are flagged as "Unsafe During Actor Construction" where appropriate.
Bugfix: The correct socket is now always used when calculating the new world location for attached components.
Bugfix: When an actor/component is selected that has a Child Actor, the components of that Child Actor are now properly highlighted with the selection indicator.
Bugfix: Subclasses of AInfo will no longer display a warning when running commandlets about having a natively added scene component.
Begin Play will now be called in a consistent order, regardless of whether they were placed in the Persistent Level, a streamed level, or dynamically spawned.
Components are now properly removed from their Owner when manipulated through edit inline new properties.
Clicking on components of a Child Actor in a viewport will now select the related actor/component.
Incremental unregister component time and batch size can now be edited from the Project Settings > Engine > Streaming.
New: Media Assets: Added support for quadraphonic audio sinks.
New: Media Assets: Added Blueprint functions to query width, height, and aspect ratio of Media Texture instances.
New: Media Assets: Exposed "Can Play Source" in Blueprints.
New: Media Assets: Moved media player implementation into reusable class; also moved overlay text handling into separate asset.
New: Media Assets: Allow pausing while buffering media.
New: Wmf Media: Added support for Motion JPG (.mjpg).
New: Wmf Media: Added support for non-RGB32 uncompressed formats.
New: Wmf Media: Added rudimentary H.265 HEVC support for Windows 10.
New: Wmf Media: There is now a progress bar showing while the media is being resolved.
New: Added for video framebuffers with horizontal and vertical padding.
New: Added "On Get On Screen Messages” delegate to Core Delegates. This delegate can return severity-categorized text messages to be displayed on screen.
BugFix: Wmf Media: Fixed a crash when attempting to play or seek with an uninitialized Media Player.
BugFix: Wmf Media: Fixed an issue with RGB32-encoded AVIs rendering upside-down and too bright.
BugFix: Wmf Media: Reworked fallback stride calculations to fix issues with some video formats.
BugFix: Media Player Editor: Media player selection is ignored if media specifies player overrides.
BugFix: Media Player Editor: Fixed successful attempts at opening media reporting failure in some cases.
BugFix: Media Player Editor: Fixed an issue to show desired player name instead of current player name if no media is loaded.
BugFix: Media Player Editor: Media Player asset is properly marked as dirty when creating a sound wave or texture for it.
BugFix: Media: Fixed NV21 conversion shader scaling.
BugFix: Media: Fixed NV12 and NV21 support.
BugFix: Fixed platform Media Source so that they work correctly in the editor and in other non-cooked use cases.
Removed most game thread and render thread dependencies from Media Framework (more to follow in 4.16).
Optimized media handling of RGB input.
Moved media related enumeration types into separate header file, so they can be shared.
Continued effort to implement subtitle tracks.
Media caption tracks were split into captions, subtitles, and generic text tracks.
Caption Sinks were renamed to Overlay Sinks.
Prevented the user from nesting a platform Media Source in another platform Media Source. There are also runtime guards against this situation in case it's created through code.
Prevented loading of media plugins in console apps, such as game servers.
Added better error message for when no suitable media player plugin was found.
Media Player Editor: Removed property buttons from Platform Media Source customization.
Wmf Media: Disabled plugin on Windows 10 because it is currently broken.
Platform-specific release notes for PS4, XBoxOne, and Switch are available in the forums and UDN for approved console developers.
New: Added support for MadCatz C.T.R.L.R. controllers.
New: Added the ability to set element value with new text parameter for UPL .
New: Added new Project Setting "Use ExternalFilesDir for UE4Game Files". This will place all files into ExternalFilesDir for automatic cleanup on uninstall for distribution packages, if enabled.
New: Added a first pass at improved virtual keyboard for Android. This is an experimental feature.
Enabled by placing -NewKeyboard on the commandline, or setting IsUsingIntegratedKeyboard to a value greater than zero in AndroidPlatformTextField.cpp.
Currently does not deal with Slate editboxes covered by the keyboard; make sure you place your controls in a visible area.
BugFix: Fixed a crash on 1st generation Kindle tablets if loading Oculus libraries as part of a project.
BugFix: Fixed a crash that would occur if you changed the orientation of your device during the Splash screen on Android when set to Sensor Orientation.
BugFix: Fixed an issue to allow Android console command sender to work with ADB version 1.0.36.
BugFix: Fixed an issue when deploying an Android apk over wifi using Launch On.
BugFix: Fixed IWYU issues for Location Services plugins.
BugFix: Fixed x86 and x86_64 libpng libraries for Android.
BugFix: Corrected memory stats for Android so that it now works like Linux.
BugFix: Fixed handling of ETC2 filtering by Google Play Store (If only ETC2, require ES3.0+, but doesn't use texture filtering manifest).
BugFix: Fixed #includes in deferred Android OpenGL.
BugFix: Fixed a driver bug and using separate context for MediaPlayer14, which corrects some render state problems with the movie playback.
BugFix: Fixed some issues with cooking when sending "On Target Platform Changed Supported Formats" when format changes in Android Project Settings.
BugFix: Fixed deploy packagename to use Target Name instead of App Name.
BugFix: Fixed some warnings from TcpMessaging that appeared in the Editor session's log window when launching on Android.
BugFix: Fixed issues where most textures appeared black when running in Vulkan mode and packaged with ETC1 textures.
BugFix: Fixed issues with Mac and Linux install and uninstall scripts if ANDROID_HOME not set.
BugFix: Fixed the handling of numbers in input dialog for number fields, which now allow for sign and decimal.
Standardized the media track DisplayName in Android media player.
AndroidManifest now contains ES2.0 instead of 3.0 minimum when Multi and ETC2 and PVRTC selected and enabling all texture formats removes all restrictions.
New: It is now possible to launch your project on a remote Linux machine from the editor or UFE.
New: Updated bundled libc++ to 3.9.
New: DSOs can specify the mode (RTLD_GLOBAL/LOCAL) with which the engine will open them.
New: Added support for touch events (e.g. from a touchscreen).
New: Server will now crash the hung thread with SIGQUIT.
New: The engine will default to OpenGL 4.x code path on Linux unless -opengl3 is passed on command line.
New: All Linux targets will use binned malloc by default (previously some would use jemalloc).
New: Linux architecture (x86_64, ARM, etc) can now be set per project.
New: Added CEF support on Linux (x86_64 only).
New: Added prebuilt websockets library for Linux.
New: Added verbose printout whenever GL context's vblanc sync is being configured.
New: Linux remote devices added in editor's device manager will now be saved in Project Settings.
New: Linux touch events are filtered to prevent multiple OnTouchMoved events with the same location.
New: Added support for AArch64 (64-bit ARM) architecture.
New: Added build-essential to dependencies installed by Setup.sh so the engine can be built on Windows 10 Ubuntu subsystem.
BugFix: Fixed a crash when editing Skeletal Meshes on Linux.
BugFix: Fixed a crash on exit due to unsafe use of virtual functions in FRunnableThreadLinux.
BugFix: Fixed long-standing GL crash when using vertex attrib binding.
BugFix: Fixed a crash when opening Project Settings on Linux.
BugFix: The engine will not refuse to start as root on platforms other than x86_64 (e.g. ARM).
BugFix: Projects are now properly associated with the engine version or installation.
BugFix: Fixed GL4 rendering issues with tessellation.
BugFix: Fixed remote deploying of a packaged build to Linux.
BugFix: Fixed launch on a remote Linux machine.
BugFix: Fixed an issue for determining installed Linux cross-toolchain.
Bugfix: Use response files for ar (fixes cross-compilation failing due to too long command lines).
4.15 will compile with clang 3.9.x with fewer suppressed warnings.
Disabled XGE when cross-compiling on Windows again (does not work well with clang 3.9).
Updated code which determines number of cores to produce the correct result on ARM boards.
Test configuration will drop core by default.
Removed hard-coded paths to mono binary and replaced it with a script.
"always_inline" is no longer applied to FORCEINLINE functions in debug builds.
Speed up bForceCompilationAtStartup=True when nothing changed.
Remove forced -windowed when launching from the editor.
Bootstrap script is now independent of the working directory and can be started via symlink.
Large mouse movement workaround will not be applied if the application has only one window.
SDL audio subsystem will no longer be initialized (it is not used anyway).
New: Experimental Metal EDR/HDR output support for Macs with HDR displays running 10.12 or later.
New: Disabled OpenGL support on Mac. -opengl command line param is now ignored, we always use Metal. On old Macs that do not support Metal we show a message saying that the app requires Metal and exit.
New: Added Mac support for the experimental Alembic importer plugin.
New: Changed "OS X" to "macOS" in few places where we display it and updated the code that asks users to update to latest version to check for 10.12.2, as this version is strongly recommended.
New: Implemented Info string in Avf Media for display in Media Player Editor.
BugFix: Fixed a rare crash in CoreAudio on quit.
BugFix: Fixed a crash caused by an attempt to use Global Play World Actions in Play World Commands before it is initialized when showing suppressible warning dialogs in Editor Engine's Update Auto Load Project.
BugFix: Fix a potential crash due to unnecessary reinitialisation of the MetalRenderPipelineDesc mutex.
BugFix: Fixed an intermittent crash caused by trying to record statistics on an unregistered thread in Mac Metal.
BugFix: Fixed a crash opening Skeletal Mesh assets on Mac caused by a bug in SSkeletonTreeView.
BugFix: Setup GPUSkinCache so that it can be enabled on Mac Metal without crashing, though rendering errors persist.
BugFix: Ensure that only Mac Metal compiles shaders that use Volumetric & Vertex-Shader-Layer rendering features, allowing 3D color look-up textures for the tone mapping to be used on Mac.
BugFix: Avoid a suspected bug in Nvidia's Metal driver that caused flickering tiles on screen by using the older tiled-reflections algorithm on Metal for now.
BugFix: Fixed an issue with Metal that meant updates to G8_sRGB textures could corrupt the texture data.
BugFix: Fixed an error in vertex-declaration handling for Metal that could result in corrupt particle rendering.
BugFix: Fixed a Metal validation error caused by using a GizmoMaterial in-game which wasn't configuring the compositing parameters correctly.
BugFix: Fixed incorrect rect initialization in Mac Get Display Metrics.
BugFix: Fixed an issue with HTTP. If-None-Match response code on Mac and iOS.
Changed the minimum supported macOS version setting in Info.plists to 10.11.6.
Changed the Mac-specific high DPI code to use system backing Scale Factor only if "NS High Resolution Capable" in Info.plist is set to true. This solves the problem with macOS Sierra giving us actual backing Scale Factor values even in low DPI modes.
Decreased the number of max open files for a thread on Apple platforms from 256 to 192 to leave more file descriptors to Cocoa. This will hopefully fix some rare, random crashes in Cocoa.
New: Added support for saving 32-bit EXR images when saving HDR frame captures.
New: Added "Force 128-bit buffers for rendering pipeline" to the High-res Screenshot tool UI which forces full 128bpp rendering and EXR capture.
New: Added support for texture streaming on Vulkan.
New: Vulkan now uses the glslang source from SDK 126.96.36.199.
New: Added support for global clip plane on Vulkan.
New: Changed some RHI Clear methods to Draw Clear Quad as some platforms can't support scissor/excluderect.
New: The View Matrices struct has been made immutable.
New: Enable or Disable the Temporal AA jitter during the Custom Depth pass is a project setting now.
New: Complemented the ENQUEUE_RENDER_COMMAND macro with a debuggable Lambda version: EnqueueUniqueRenderCommand.
New: First step in making the Engine more Friendly for Pipeline State Objects.
New: Improved memory usage and texture load order for texture streaming.
New: The texture streaming build can now be run through the resave package commandlet.
New: New way to synchronize with future and pending texture streaming requests.
New: Added "-FullscreenDisplay=N" commandline where 'N' will be the display index always used for fullscreen applications.
Bugfix: Fixed a crash when running the "RecompileShaders All" command.
Bugfix: Fixed a crash when using too many texture coordinate sets in a skeletal mesh material.
Bugfix: 16-bit images for all formats are no longer incorrectly flagged as sRGB on import. Existing content will be unaffected.
Bugfix: Fixed comments in Rendering Interface.
Bugfix: HLOD now respects the FreezeRendering command.
Bugfix: HLOD now correctly handles visibility across multiple views such as split-screen.
Bugfix: Fixed GPU skin cache getting disabled unless using recompute tangents. It is now always on.
Bugfix: Fixed missing velocity vectors due to depth fighting when using Pixel Depth Offset.
Bugfix: Fixed a case where rainbow-like artifacts would appear in the editor caused by uncleared post-process buffers.
Bugfix: Fixed incorrect cubemap size displayed in the texture editor.
Bugfix: Fixed fog opacity on alpha composited material.
Bugfix: Fixed a corrupt texture bug in the Download Image blueprint node, on some platforms.
Exposed API for Material Expression Noise and Material Expression Vector Noise.
Re-enabled Temporal AA for high-res screenshots as long as the frame delay is active (r.HighResScreenshotDelay).
Improved error and exit codes when failing to find a good Vulkan driver/version.
Prevented Drop Detail settings from triggering when using fixed framerate.
The Film Tonemapper (r.TonemapperFilm=1) and DBuffer Decal (r.DBuffer=1) support have been enabled by default for new projects.
Scene Capture 2D can specify a global clip plane, which is useful for portals. This requires the global clip plane project setting to be enabled.
Removed Mac Graphics Switching plugin. OpenGL is not supported and Metal currently cannot do live GPU selection.
New: UMG: Expose label browser for UMG.
New: Combo box widgets now support keyboard focus.
Bugfix: Fixed the calculation for widget components screen position if the camera aspect is constrained.
Bugfix: Fixed some HDPI mode problems with widget position calculation when projecting world to viewport / screen, and other absolute space related transforms.
Bugfix: Fixed a bug in the widget traversing code in sequencer; widgets inside of Named Slots should now be animatable.
Bugfix: Fixed some issues with HDPI mode in the widget designer.
Bugfix: Fixed the web browser widget crashing on Android when packaged for Distribution.
Widget Blueprints that are saved without a root widget will no longer add a Canvas Panel widget when opened in the editor.
The Widget Hierarchy will now remember which nodes have been collapsed when moving or renaming widgets.
Widget Blueprints will no longer experience compile issues when moving a widget from one Widget Hierarchy to another.
Dynamically changing the style for an editable text box or a multiline editable text box from Blueprints will now update it correctly.
Space and Enter will now fire OnClicked events for focused buttons.
Deleting widgets from the Widget Blueprint Hierarchy will no longer scroll the hierarchy view back to the top.
Widget Interaction Components now default to tick while the game is paused. Widget components that do not tick while the game is paused can no longer be interacted with when the game is paused.
Spin boxes can now be spun correctly when simulating touch events with the mouse.
When playing an animation, the first frame of the sequence is now immediately evaluated instead of waiting for the next tick.
Widget Component's Draw At Desired size property now should also work correctly if the widget is in screenspace.
We no longer also take the platform DPI scale (used for HDPI) into account when applying UMG's UI scale. Since UMG already provides a DPI scaling system, compounding it with the native OSes produces undesirable results, since the DPI scale curve does not take into account some unknown platform scale set by a user.
Restored the ability of the Widget Component to directly receive hardware input. The Widget Interaction Component is great for just about every interaction use case - the one it is not is when you actually want the 3D widgets to take focus, and to be able to be typed directly into by the user. The kind of situation where you might want to use them as a 3D menu, in a non-VR environment. By default - Widget Components will not behave in this manner, but you can now use the option Receive Hardware Input to enable the ability for Widget Components to function more like a widget in the screenspace of the viewport.
New: Added a warning when a thread-specific pak file reader is used on the wrong thread. This is unsafe, and it can lead to difficult-to-reproduce race conditions.
New: Added a default constructor to TTuple which value-initializes its elements.
New: Added PUSH_MACRO() and POP_MACRO() macros for preserving and restoring the state of a macro definition.
New: Added FCString::Strtoi64() for converting a string to a 64-bit signed integer.
New: Added a THasInserterOperator metafunction for testing if a left-shift operator exists between two types.
New: Added GET_ENUMERATOR_NAME_CHECKED for returning an enumerator name as a string while statically verifying that the enumerator name is a valid entry in the enum.
New: Added aliasing constructors to TSharedPtr and TSharedRef, which allow pointers to subobjects, keeping the outer object referenced.
New: Deprecated some core functions:
Deprecated GetUniqueDeviceId. Use GetDeviceId now instead.
Deprecated all platform independent usages of GetMacAddress and related functions. It was not reliable the way it was implemented on PC, and generally a bad idea.
Deprecated GetMachineId. Use GetLoginId now instead. That's what it really was.
New: Added debugger visualizer support for delegates.
New: Added an error report when deserializing a bool which isn't 0 or 1, which means archive corruption.
New: Added UEnumProperty which supports non-byte enum classes.
New: You can now hook delegates to be informed when new classes have been added or replaced via hotreload.
New: TArray now has InsertDefaulted to complement AddDefaulted.
New: SearchableNameMap has been added to the Linker and Asset Registry, and is used to find Gameplay Tag and Data Table Row references inside assets.
New: Added FGCObjectScopeGuard and TStrongObjectPtr as a convenient way to keep a UObject alive without having to add it to the root-set
Both use FGCObject internally to reference the object and keep it alive.
FGCObjectScopeGuard is designed to be lean and used as a guard for an existing pointer, whereas TStrongObjectPtr is more "full-fat" and designed to be a replacement for a raw-pointer.
Of the two, you should prefer FGCObjectScopeGuard where possible. Also note that TStrongObjectPtr isn't supported by UHT/UPROPERTY as you should just use a raw-pointer in that case (it would do the same thing).
Bugfix: Fixed Algo::IsSorted() to work with C arrays and initializer_lists.
Bugfix: Fixed MallocStomp to always allocate at least one byte instead of returning null.
Bugfix: Fixed TSparseArray::Reserve so that new elements get allocated earlier in memory instead of later, giving the more expected iteration order.
Bugfix: Fixed some bad memory allocation semantics (e.g. mixing FMemory::Malloc and delete).
Bugfix: Fixed the TIsZeroConstructType specialization for TScriptDelegate.
Bugfix: Fixed UObject::IsA crash when reinstancing blueprints.
Bugfix: Fixed typo in FMallocLeakDetection.
Bugfix: Fixed FArchive::bCustomVersionsAreReset not being copied when the archive is copied.
Bugfix: Fixed race condition crash when serializing UClasses.
Bugfix: Fixed it so calling CreateDefaultSubobject with the bTransient=true flag correctly sets the Transient Object Flag on the created object.
Bugfix: Fixed several cooking issues with editor-only components and sub objects.
Bugfix: Fixed TSparseArray debugger visualization of types smaller than 8 bytes.
Bugfix: Fixed parsing of standalone macros like PRAGMA_DISABLE_DEPRECATION_WARNINGS in UnrealHeaderTool.
Bugfix: Fixed a memory leak in the task graph.
Bugfix: Fixed a regression causing an assert to fire in the editor related to UGCObjectReferencer.
Bugfix: Fixed a very old bug with lock free lists, probably not relevant to anything we currently use.
Bugfix: Fixed return value of Ar.Tell() being assigned to int32 instead of int64.
Bugfix: Added a thread safety fix for UBlueprintGeneratedClass::PostLoadDefaultObject while UBlueprintGeneratedClass::SerializeDefaultObject runs on the async loading thread.
Clarified the error message emitted when binding a delegate to a pending kill object.
Made TFunction::Unset protected. This is an implementation-only function which doesn't properly destroy the binding (can leak memory).
Deprecated the use of TEnumAsByte with enum classes.
Improved comments and added useful utility functions to FAssetPtr, TAssetSubclassOf, and TSubclassOf.
Shortened LexicalConversion namespace to Lex.
Added some extra safety to FEvent by proxying them avoid bugs with stale events.
Made FindShaderResourceById and FindShaderById return a raw pointer instead of TRefCountPtr to prevent creating temporary TRefCountPtrs. It is no longer necessary to use TRefCountPtrs as shader serialization has changed and shaders are no longer registered on the async loading thread.
Added multiple thread safety checks to async loading code.
Thread Heartbeat will no longer report the same hang multiple times.
Async Loading code will now detach the linker when resetting async package loader to avoid situations when loading the same asset multiple times results in the following load request finding the old linker after the package has been loading but the async package hasn't been deleted yet (async package for the old request in limbo state but linker exists).
ModuleManager will now use a critical section instead of FMultiReaderSingleWriterGT to make it thread safe.
Async Loading stability improvements: