新規：Game Mode クラスと Game State クラスの簡略化

既存クラスの Game Mode と Game State の親として、Game Mode 基本クラスと Game State 基本クラスを追加しました。すべてのゲームで必要になる主要機能は基本クラスに入り、レガシー機能およびシューティングに特有の機能は Game Mode/Game State に入るようになりました。新しく開始したプロジェクトは基本クラスから継承し、既存プロジェクトはレガシーを使うデフォルト設定になっています。さらに、いくつかの新機能がブループリントに公開されました。

Release Notes 「訳注： 以下は、非常に技術的な部分が含まれるため、翻訳を省略します。」

AI

New:Added an “Enable AI System” flag to the World Settings that controls whether the AI System will be created for the given map.

Bugfix:Fixed an issue with AI Sense Sight’s time slicing unintentionally skipping queue-aging if the given time limit was reached.

Bugfix:Fixed an issue basing whether the AI should turn or not by comparing the current desired rotation vs the last update's desired rotation.The AI should be turning based on whether or not the current desired rotation is different from the rotation of the Pawn.

Improvements for the consistency of loudness usage in AI Sense Hearing.

Minor cosmetic fix to EQS test scoring function’s preview.

Selecting Geometry trace mode will no longer project onto the Nav Mesh first in the Projected Points EQS generators.

Behavior Tree

New:Expanded the BT Decorator Is At Location function with an option to use AI Data Provider.

New:Multi-node comments are now supported in the Behavior Tree editor.This is similar functionality to the Blueprint editor.

Bugfix:Fixed an issue with BT Decorator Compare BB Entries function so that it works regardless of the order of the supplied BB keys.

Bugfix:Fixed an issue with navigation export for the capsule component.

Bugfix:Navlink’s “Snap to cheapest area” mode now works correctly with dynamic navmeshes.

Bugfix:Navmesh generation no longer gets stuck in an infinite loop.

Bugfix:Fixed an issue with parameters of vehicle RVO avoidance.

Bugfix:Fixed an issue with Path Following Component for “Has Reached” not using the Goal’s Radius when “Use Nav Agent Goal Location” is set to false.When “Use Nav Agent Goal Location” is set to true, we want to avoid using the Goal’s location on the navmesh, but instead the acceptability of a radius should be based on the Goal’s radius.

Path Following Component distinguishes between partial and full paths in terms of acceptance radius used.This will make partial paths behave as expected with non-trivial big acceptance radii.

Layer limit for navmesh generation has been increased.

Update Move Focus will only clear the focus if the path following component is idle.This keeps the AI rotated in the correct direction when movements get paused.

Animation Curve Cached UID list has now been moved to Bone Container from Anim Instance in preparation of supporting curve linking to bone feature, so that you could cull out for a certain LOD.

Changed “Create Physics Asset” in the context menu for Skeletal Meshes to enable creation of a Physics Asset without having to assign it to the Skeletal Mesh.This makes it easier to make new assets for Capsule Shadows.

Changed inline curve name editing to only change the name of that specific curve, instead of renaming the SmartName itself.

Animation Blueprint

Bugfix:Fixed a crash using anim debug with sub-instances that are preceded by branching nodes.

Bugfix:Fixed a crash when forcing ref pose during Anim Blueprint initialization when using sub anim instances.

Bugfix:Fixed a crash when using sub-instances in non-entry states.

Tools

New:Added Skeletal LOD workflow refactor.

Now we track source files for LODs to save time when reimporting LODs often.

Bugfix:Fixed an issue with Android sessions not appearing in the Session Frontend.

Bugfix:Fixed support for PS4 in Installed Builds.

Bugfix:Fixed various connection reliability issues with TCP Message Transport used for automation testing on mobile devices.

Bugfix:Fixed various issues for PS4 deployment.

Bugfix:Fixed support for Xbox for Installed Builds created via Build Graph script.

Automation - Presets are now stored in json files stored in Config so they can be shared, and human readable.Working on screenshot automation, getting it where it needs to be to permit us to have repeatable tests for comparison.

Each session launched from the Session Frontend Launch tab now has a unique GUID and they will correctly appear as separate sessions in the Automation tab.

Excluded some more intermediates from the Installed Build.

Functional Tests now run correctly in non-editor build.

Functional tests will no longer move the camera if the user is using a debug camera.

Blueprints

New:Added a new “Is Standalone” node which returns true if the game is running in Standalone.

New:Added ability to change curves used by a Timeline at runtime.

New:Added an option in Editor Preferences Blueprint section to “Display Unique Names for Blueprint Nodes” rather than the node type.

New:Exposed the method to "Is Any Rigid Body Awake" for primitive components to Blueprints.This enables a Blueprint to determine if Physics Simulation is being done on the object and fulfills a request to determine if an object is "awake" or "asleep".

New:Replication condition property flags are now exposed to Blueprints.This can be set in the Properties Details panel.

New:Single layout Blueprint is no longer an experimental feature.The option to disable it has been removed.

New:Widget and Animation rich diff tool is no longer experimental.

Some changes are not detectable by the diff tool, but they are mentioned in a warning to the user.

New:Enabled instances of Hierarchical Instanced Mesh Components to be moved around with the transform widget in the Blueprint Editor, just like Instanced Mesh Components!

Bugfix:Fixed a crash in the Blueprint Profiler when compiling or profiling that had the following:

Contains a loop.

Nested Macros.

Collapsed Nodes.

Called parent functions or events.

Bugfix:Fixed a crash caused when compiling a Blueprint after hot-reloading its base class.

Can no longer drag child actor from World Outliner to a Level Blueprint and create an invalid actor reference.

Default event nodes in child Blueprints now wire up parent call inputs so you can use them as is without breaking functionality.

Duplicating levels that have Blueprints with “Knot” nodes attached to events will no longer fail with a "Graph is linked to external private object" error.

EaseIn/EaseOut descriptions corrected to match actual behavior.

Core

New:Added a config based system for specifying which classes should be stripped on dedicated server and client builds.

Class names can be specified in the project cooking settings in the editor

All engine classes that relied on “Needs Load For Server” or “Needs Load For Client” have been moved over to the config based system.

“Needs Load For Server” and “Needs Load For Client” still function as they previously did.

New:Added a new file into the ini hierarchy to begin fixing the Engine/Base > Project/Default > Engine/Platform > Project/Platform confusion.

We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform.However, Engine/Platform will soon be deprecated as we move things over to Engine/BasePlatform, that are safe to move.

New:Added ability for arrays of structs to specify a property to be the key.

So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will replace the first with the second, instead of adding two entries with the same name.Set by @ArrayName=KeyPropertyName.Per Object Config sections need a little different handling, which uses * (see Base

New:Added new Module Types:"ClientOnly" and "ServerOnly"enabling better control of when modules are compiled and loaded.

Can be used to slim down server / client builds.

New:Added some extra information to an assert when “Cpp Structs Ops” has not been initialized.

New:Added the ability for plugins to reside outside of the Engine/Plugins and Game/Plugins directory.

This is useful for plugins that are shared across game teams, but don't want to be placed in Engine/Plugins.

New:Accepting comma in milliseconds separator when parsing Timespan.

New:Minor changes to pak file security delegate.Now all files that don't exist in the pak file will be passed through the security delegate, regardless of whether they exist on disc or not.

New:Only accept "log=<filename>" and "abslog=<filename>" command line values if the filename has a ".log" or ".txt" extension.

New:Refactored handling of some UI and rendering code when running headless (i.e. with -nullrhi switch).

New:Upgrading an existing UProperty from FVector to FVector4 is now seamless and preserves data properly.

Bugfix:Fixed a rare crash when async loading objects caused by linker being detached too early, before other package’s import has been fully processed.

Bugfix:Fixed a crash on cooker exit due to unpredictable destruction order of static tickable objects and their collection.

Bugfix:Fixed a crash with potential memory corruption when loading Data Tables.It sometimes would allocate less memory than was required.

Bugfix:Fixed a crash in PhysX cleanup if an exception occurred during shutdown.

Bugfix:Fixed a thread safety issue in the load module code that could crash if multiple threads were trying to load the same module at the same time.

Bugfix:Fixed an issue where “Get All Assets” would not return data about live objects when passing bIncludeOnlyOnDiskAssets=false.

Bugfix:Fixed an issue with task graph memory leaks.

Bugfix:Fixed an issue with TMap deserialization in struct serializer and updated unit tests.

Bugfix:Fixed an issue to display a meaningful error and shutdown cleanly if Core modules fail to load on engine startup.

Bugfix:Fixed an issue so that dynamic delegates can no longer get double bound when copying an Actor.

Bugfix:Fixed a potential race condition and minor memory leak in FMonitoredProcess.This could result in the editor hanging on startup.

Bugfix:Fixed an issue where “Force Garbage Collection” might not force a GC immediately if run on a server with no clients connected.

Bugfix:Fixed a memory corruption when instancing subobjects of a TArray property.

Fixed a memory overrun when reading an SSL certificate.

Fixed an invalid memory access when shutting down FInputBindingEditorModule.

Bugfix:Fixed an issue where duplicate log lines appear when commandlet “Log To Console” is set.

Bugfix:Fixed an issue with FAssetPtr remapping issues for duplicated packages, which was a case with operations like Level Save As and Level Duplicate.

Bugfix:Fixed an issue with Malloc Binned “Get Allocation Size” for aligned allocations, which caused crashes with the poison proxy.

Bugfix:Fixed an issue with Parse “Value” when there is whitespace between the command and the argument.

Bugfix:Fixed an issue where Unreal Build Tool would fail when trying to delete a module’s manifest file in a non-existent directory.

Bugfix:Fixed an issue where newline escape sequence wasn’t written to the pipe.

FScopedCreateImportCounter will now always store the current linker and restore the previous one when it exits.

This should fix some of the linker warning messages reporting wrong package name.

Invalidate string asset reference tags after finishing up loading of an async package.

Fixes some problems with asset refs not updating correctly after a package was loaded asynchronously

Lines of output text from FMonitoredProcess are no longer truncated at the default pipe buffer size, and are no longer returned with trailing CR characters on Windows.

Made sure Skeleton assets are loaded before “PostLoad” is called on them to avoid crashes when async loading animations.

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

Thread safety fixes for the async log writer + made the async log writer flush its archive more often.

Thread safety fixes when using the async loading thread.

We now abort a directory watch if we lose access to the directory in question to prevent an infinite loop.

Editor and Tools

New:Added a warning message to indicate that HLOD clusters do not have a valid proxy mesh, similar to the “lighting unbuilt” message.

New:Added a commandlet to enable command line importing of any asset type that the engine supports.

New:Added an ability to vsync the editor.This is disabled by default.Set “r.VSyncEditor” to 1 to enable it.

New:Added an option in the FBX importer to automatically convert the unit in the FBX file to Unreal Units.

New:Added asset cooking path length in their tooltips so that you can detect cooking path issue before you are cooking.

New Added checkbox for “Show All Advanced Details” config variable so that it will auto-expand all advanced property categories.

New added command line option to enable movie capture burnin.Use the commandline -UseBurnIn=yes.

New Added mesh simplification plugin picker to the Project Setting under Editor > Mesh Simplification.The menu to pick simplification plugins also contains a link to find other plugins in the Epic Games Launcher Marketplace.

New:Added the ability for Ctrl + Middle Mouse drag will give options to switch to different viewports.

Drag to Left, Right, Up, and Down will match the viewport intuitively.

Drag to Up-Left is Front, Up-Right is Back, Bottom-Left and Bottom-Right are both for the Perspective viewports.

Dragging exceeding a certain distance will jump to that viewport directly whereas dragging a little will bring up a popup menu showing which viewport it’s going to switch to.

New:Added a new view option for “Show C++ Classes” in the Content Browser to enable you to hide the C++ classes you may not want to see.

New:The Engine version including branch name will now be displayed in the Title bar by default.

New:Extended “Select all input nodes” function to general Blueprint editor.

New: FBX Exporter now exports all LODs.

New:The Date Time fields in the editor are now displayed and entered in the local user’s timezone.

The time entered is saved into assets using the value converted in the UTC timezone.

The timezone that is used is configurable in the Editor Settings under Region & Language for Internationalization settings.

New:There’s now support for generating a “Content-Only” plugin from the new Plugin Wizard.

New:Added Show Flags for Widget Components.

New:Reference viewer now provides options to show/hide soft and hard references and dependencies with different line color.

New:Added Asset Picker support to the Script Interface properties.

New:Added unique asset icons for Sound Concurrency assets.

New:The Widget Reflector now has a configurable delay between clicking to take a snapshot and taking the snapshot, which is helpful for reflecting widgets in a state that involves the cursor or other timing factors.

New:Added the ability for users to specify a Base material to create Material Instances instead of just creating materials when importing an FBX.

New:Added project file to source control when creating a new project.

Bugfix:Fixed a crash when moving Instanced Static Mesh Component in editor when it had no mesh set, but had instances.

Bugfix:Fixed a crash on undoing a deletion of a mesh in mesh painting mode in the VR Editor.

Bugfix:Fixed an occasional crash on editor shutdown due to a race condition in FTcpMessageTransportConnection.

Bugfix:Fixed several crashes in the Session Frontend when viewing profiles.

Bugfix:Fixed a crash issue where making changes to components in the Blueprint editor when there is an active component in the component visualizer.

Bugfix:Fixed an issue where batching optimization for dragging components onto Blueprints.Adding thousands of static mesh components now takes seconds instead of up to an hour.

Bugfix:Fixed an issue so that comments will now be preserved on “Parameter” nodes when converting them to “Constant” nodes within the Material Editor.

Bugfix:Fixed an issue that prevented a material from being saved when copying a comment node from a Material Function to a Material.

Bugfix:Fixed an issue so that the Crash Report Client can now correctly restart Editor sessions that were run from the Launcher.

Bugfix:Fixed an issue where the cursor would remain hidden after left-clicking in the Orthographic view.

Bugfix:Fixed an issue that would cause Custom keyboard shortcuts to no longer switch between the Command and Control keys on Mac when the editor was restarted.

Bugfix:Fixed an issue so that debug lines will now render correctly in orthographic views if their thickness has been specified.

Bugfix:Fixed an issue where FBX and OBJ files containing a UV channel with no name were not imported correctly into the editor.

Bugfix:Fixed an issue so that the FBX importer will correctly re-import a mesh when the combined mesh checkbox was set to true.

Bugfix:Fixed an issue with “On Mouse Button Up” not resetting SButton’s Brush state from “Pressed” to “Hovered.”

Bugfix:Fixed some issues with the LODGroup workflow:

During FBX Import, LODs are now recomputed with the correct settings.

In the Static Mesh editor, Extra LODs are removed when changing the LODGroup.

Bugfix:Fixed various crashes when manipulating BSP geometry in the editor.

Bugfix:Fixed a crash while importing FBX scenes if objects contain procedural textures, which is not supported.

Bugfix:Fixed a crash when setting a closed loop on a Spline component which has no spline points defined.

Bugfix:Fixed an issue where the dialogue “Actors are referenced, are you sure you want to delete?” from appearing when you are copying a lot of actors to another level.

Bugfix:Fixed a warning that would spam the log when opening the Editor’s Blueprint menu.

Bugfix:Fixed an issue where an actor deletion while in Mesh Paint mode would not be undoable.

Bugfix:Fixed an issue where all collision would be disabled if you don’t auto-generate a simple hull when importing an FBX.

Bugfix:Fixed an issue where importing a Texture asset while an editor window was open for that asset would cause the Details Panel to disappear.

Bugfix:Fixed an issue where occasionally changing tabs in the Editor would cause the UI to freeze briefly and undock the selected tab.

Bugfix:Fixed an issue where painting override vertex colors on a SpeedTree mesh would cause its wind animation to cease or look incorrect.

Bugfix:Fixed an issue where structs containing enum values with whitespace characters would not correctly serialize when copied from the Details Panel.

Bugfix:Fixed an issue where Unreal Frontend and other standalone tools would not display tooltips on dropdown menu items.

Bugfix:Fixed an issue with assigning of materials on components would not work if you multi-select multiple components of a Blueprint and assign the Material.

Bugfix:Fixed an issue when choosing “Yes to All” was not functioning properly when asked to delete many actors.

Bugfix:Fixed an issue with in-game console command parameter display to include all parameters.

Bugfix:Fixed an issue with loctext related warnings when opening the Blueprints submenus on the Level Editor toolbar.

Bugfix:Fixed an issue with missing widgets when using Mobile Preview mode with a Mobile HDR disabled project.

Bugfix:Fixed an issue with single player PIE so that the window position is correctly fetched and saved when running a dedicated server.This is held separately to stored positions for multiple client PIE.

Bugfix:Fixed an issue in the output log filter not updating when text was committed.

Bugfix:Fixed an issue where Mobile Packaging Wizard will not find any project maps if UE4 and the Project are installed on different drives.

Device button text in “Device Output Log” window should be more readable now.

Bugfix:Fixed an issue so that .exe icon is correctly set for packaged Windows games.

Bugfix:Fixed an issue so that String Asset Reference properties will now only open an Asset picker (not an actor picker) as the goal is to reference an asset.

Bugfix:Fixed an issue where “find culprit” dialog did not honor the user's choice.

Bugfix:Fixed an issue with Unreal Game Sync where database events were being returned out of order could cause builds to show as never completing.

Bugfix:Fixed an issue with Unreal Game Sync showing a build failure/warning dialog immediately if you submit while the build is yellow/red.This now ignores builds before your last submitted CL.

Bugfix:“Play in Standalone Game” does not assume -window as a launch parameter therefore you can now specify -window or -fullscreen.

"Select all input nodes" now have a corresponding "Select all output nodes" for nodes that are output nodes.

Deleting many assets at once will now batch them as a single source control command instead of one for each asset.

Directional Light icon in the viewport changed (the two arrows within the icon were removed), as the asset itself provide another arrow indicating the light direction.

“HighResShot” console command now supports the same functionality as the Editor UI version and improved the help with usage examples.

Improved editor hitching while using launch on by delaying package save until all data is cached.

Minor update to the layout of the User Defined Struct editor.

Improvements have been made to the Unreal Frontend Project Launcher Progress page:

The custom profile name is now visible above the progress bar when launching a profile.

The Task and Status views can now be resized.

Columns for “Errors” and “Warnings” have been added to the Task view to show which tasks have problems.

Previously completed tasks are no longer cleared when the launch is cancelled.

The message log will now only scroll to the newest message when the log is scrolled to the very bottom.

Removed the Experimental “Live Editor” feature from UE4

Live Editor was an early attempt at automation of editor features using external hardware, such as MIDI.

This feature was never fully completed and we have no plans to continue work on it.

If you’d like to use MIDI devices in your editor plugins or games, please check out the new “MIDI Device” plugin available in this release!

Unreal Game Sync:Improvements to “Clean Workspace” dialog.

Empty folders are now set to be deleted by default.

Added a context menu to select all/none/empty/default for a subtree, as well as to open Windows Explorer at that location.

We now export the collision mesh when exporting to FBX.Disabled by default.

Removed "Cmd:UpdateLandscapeSetup" log file spam during while editing World Settings on maps with landscape.

Material Editor

New:Added the ability to clear the preview mesh on a material instance.

New:Added the ability to highlight all nodes connected to an input.

New:Added tooltips to the inputs of the Material Final Result node.

Bugfix:Fixed a crash when loading cooked Materials in the editor.

Bugfix:Fixed an issue where "Select all linked nodes" function would not show up in Material Editor for output nodes.

Matinee

Bugfix:Fixed an issue with incorrect subtitle timing and rendering when scrubbing.

Persona

New:Added better bulk import reporting so current progress through a bulk animation import can be seen, rather than only showing progress through the current animation.

Bugfix:Fixed a crash when changing scene settings and hitting undo in Persona with complex cloth active.

Bugfix:Fixed bounds calculations in Persona that include bones to respect LOD (and other required bones).

World Outliner

New:Added the ability to collapse and expand folders in the World Outliner.

Static Mesh Editor

New:Added Console Command "FORCELODGROUP" that will apply a Static Mesh LODGroup to selected groupless meshes in the editor.This can batch mesh-reduce (ie, Simplygon) all meshes in a level.

Source Control

Bugfix:Fixed an issue where history and merging do not work if the user has “format.pretty” setting in their gitconfig.

Silenced some redundant P4 errors that could be generated when running a “stat update” on a file.Some of the options produced errors when working with newly added files.These errors are now downgraded to infos like they are for the main stat command.

World Browser

Bugfix:Fixed a crash on Changing sub-level visibility under certain conditions.

Disabled use of World Composition with multiplayer PIE using separate process option, as it not properly supported now.

Foliage

If set in the scalability settings, it reduces the memory requirements of the "off" setting at the expense of having to reload the level when changing the setting from "off" to a higher level.

New:Implemented filter to enable painting foliage on other foliage (e.g. vines on trees).

Bugfix:Fixed an issue where painting foliage on blocking "query" actors was not working.Actors which are not themselves moving only need to be set to "Query" to be blocking, but the foliage tool was checking for both "Query & Physics."

Prevent landscape grass generated in the editor viewport from being duplicated for Play In Editor (PIE) sessions.

Cooker

New:Added -mallocbinned commandline option to use it while cooking.Binned allocator is faster to cook in some cases.

New:Added experimental Partial Garbage Collection feature for cooker.Added “-partialgc” commandline option for cooker.Instead of cleaning all packages when GC, this cleans up packages which will not be required for cooking later.

New:Fixed an issue with deterministic cooking for bake distributions.

New:Improved peak memory usage by the cooker by only resolving string asset references for the current package being saved.

New:Added “GameModeBase” and “GameStateBase” classes as parents of existing classes “GameMode” and “GameState.”The core functionality needed by all games is in the Base classes, legacy and match-specific features are in the child classes.

Blueprint access has been added to Game State Base for “Has Begun Play”, “Has Match Started”, “Get Player Start Time”, “Get Player Respawn Delay”, “Game Mode Class”, and “Spectator Class.”

Game Mode Base “Must Spectate” and “On Change Name” are now called properly.

Added “Restart Player At Player Start” and “Restart PLayer At Transform” to manually control of where player pawns are spawned.

Updated the GameMode documentation to reflect these changes and add extra context.

New:Added access to both the game's “Unpaused Time Seconds” and “Time Seconds” from Blueprints.

New:Added the ability to set the mouse position from Blueprints via the Player Controller.

New:Components can now specify whether they replicate from the Blueprint Property editor.

New:Components that are referenced by an “Edit Anywhere” property but are not created as part of object construction can now be edited via the in-world component editing panel.

New:Cull Distance Volumes no longer globally update on every Actor property change.This should reduce hitches after changing properties entirely unrelated to cull distance in levels with large Actor counts.

New:More Cheat Manager functions have been made available to call and to override from Blueprints.

When enabled, the server doesn't evaluate streaming volumes.Instead, each client independently decides what volumes to stream in/out, depending on its players' cameras.

New:Particle System and Audio Components now route “Activate” and “Deactivate” events to Blueprints.

The “Delta Seconds” passed to Tick functions when using a “Tick Interval” will now represent the amount of world time that has passed since the last tick of the function.

The levels of a world are now categorized into different collections: dynamic, static, or duplicated.Levels default to dynamic, and this preserves existing behavior.

Streaming levels can be marked as static in the Levels Details panel.This distinction has no effect on how the levels are rendered, but it will cause the levels to be placed into the corresponding collection.

Games may opt-in to duplicating the dynamic levels when the world is loaded, and they will be maintained separately from the original levels.The game may use these duplicated levels at runtime, if desired.

New:The logic for selecting which Game Mode to spawn for a URL can now be overridden in “Game Instance”, implemented in “Preload Content For URL”, “Create Game Mode For URL”, and “Override Game Mode” Class.

The rules for selecting GameMode based on map prefix or alias is now modifiable in the Project Settings > Maps and Modes under the advanced options.

Bugfix:Fixed an issue where after duplicating a level you would have two instances of a Child Actor.

Bugfix:Fixed an issue where Child Actors would sometimes be created at the wrong location.

Bugfix:Client-side only components attached to a replicated component will no longer be removed from the “Attach Children” array when a change to attachment is made on the server.

Bugfix:Fixed a check in Character Movement’s “Step Up” to properly account for distance the component is above the floor.

Bugfix:Fixed an out of date with Radial Force Component’s “Collision Object Query Params” by adding a “Begin Play” event callback.

Bugfix:Fixed an issue with Gameplay Statistic’s “Spawn Emitter Attached” using wrong scale when “Snap To Target (Keep World Scale)” option is used.It was being used as a relative scale.Also, improved the comments for “Spawn Emitter Attached.”

Bugfix:Fixed an issue with bounds calculations for local camera animations.

Correctly calculated bounds as local to the initial transform in the track.

Bugfix:Fixed a crash during garbage collection after deleting Audio Volume.

Bugfix:Fixed a crash in GetPredictionData_Server() when a player is destroyed and the server Player Controller checks to see if it needs to force a network update.This, also, fixes similar crashes when calling a Character’s “Set Replicate Movement” when not on the server.

Bugfix:Fixed an error icon indicating lighting issues not going away after resolving the issue on a light that was created by copy/pasting a light that had a lighting issue.

Bugfix:Fixed some typos in “Only Trace While Ascending” and “Deproject Screen To World.”

Bugfix:Fixed UK2Node_GetInputAxisValue using default flag for “Override Parent” value on the created binding, causing previous bindings to be squashed.

Bugfix:Fixed an issue with network replication for actors in “Always Loaded” sub-levels not working after seamless travel.

Bugfix:Fixed an issue with FPreviewScene-based worlds so that they now render correctly in-game.

Added new “Editor Preview” and “Game Preview” world types and deprecated old “Preview” world type.

Bugfix:Fixed an issue to prevent Camera Anims without a “Field of View” track from making any modifications to the camera’s FOV.

Bugfix:Fixed “Set Game Paused” now correctly returns whether the paused state was changed when setting it to false.

Component “Activate” functions now fire for “auto-activate” components if the component belongs to an actor placed in a level.

Component's are now correctly removed from their World's needs end of frame update list.This fixes a rare crash when a component is moved between worlds as part of seamless travel.

Improved logic for when the transform of a static scene component can be modified.

Load game from slot will no longer sometimes fail if using a Blueprint defined class.

Mouse smoothing is now based on the application frame time rather than the dilated world time.

Native classes will now properly run construction script on PostEditMove.

Native Components created by “Create Default Subobject” that have been removed will no longer still exist in existing instances of that class.

Scene Component Attach Children will no longer periodically get duplicate entries on the client for some replicated components.

The FOV is now reset on the Player Camera Manager’s Camera Actor when it's initialized.

This fixes cases of stale FOV values after playing Camera Anims that don't end with the FOV at its base value.

Base FOV can now be edited in the Camera Anim properties.This enables you to specify what the FOV keys are relative to.Previously it was always using a base FOV of 90 degrees.

The position of the (null) bounding volume of an empty Text Render component is now correct.

Wind source components now correctly “Activate” and “Deactivate.”

Localization

New:Added a way to mark text in text properties as culture invariant.

This enables you to flag properties containing text that doesn't need to be gathered.

New:Added “As Time”, “As Date Time”, and “As Date” overrides to Blueprints to let you format a UTC time in a given timezone.This defaults to your local timezone.Previously you could only format times using the "invariant" timezone, which assumed that the time was already specified in the correct timezone for display.

New:FText properties/pins will now preserve their existing identity (namespace + key) where possible when changing the source text.

New:Translations are now exported/imported per-identity rather than collapsing identical strings within the same namespace.

This enables translators to translate each instance of a piece of text based upon its context, rather than requiring a content producer to go back and give the entry a unique namespace.

It also enables us to optionally compile out-of-date translations, as they are now mapped to their source identity (namespace + key) rather than their source text.

This change also adds FLocTextHelper as a high-level API for dealing with uncompiled localized text.This should be preferred for all new code rather than dealing with manifests/archives directly.

Bugfix:Fixed a crash when dealing with code-points outside the basic multilingual plane on platforms with UTF-32 FStrings.

Bugfix:Fixed a crash that could occur in the source code gatherer where it would sometimes underflow an array.

Bugfix:Fixed an issue where localized assets were not working with “Launch On” in the editor.

Bugfix:Fixed an issue where the PO exporter writing out invalid escape sequences.

FText can now format pre-Gregorian dates correctly.

Removed validity check on source cultures when remapping, as platforms may use invalid cultures that need to be remapped.

The internationalization system now correctly detects whether the local machine is in a timezone with daylight savings active

We now favor Traditional Chinese for Hong Kong and Macau.

Networking

New:World Origin rebasing has been added as an experimental feature!

This means that the World Origin can be different on both the client and the server.

This feature will continue to be improved over the next releases.

Bugfix:Fixed a crash that could occur with FCurlHttpRequest’s “Debug Callback”.

Bugfix:Fixed an assert that could occur when playing back a replay that was recorded on a client that uses torn-off actors.

Bugfix:Fixed an assert in channel cleanup code that could occur if the connection was cleaned up and there were “Keep Processing Actor Channel Bunches Map” in-flight still.

Bugfix:Fixed an issue where gameplay tags will work better with backwards compatibility in replays.

Bugfix:Fixed various issues with remapping objects that lose/gain relevancy.

Bugfix:Fixed an issue with replays that could cause scrubbing to a specific time to go to the wrong time.

Bugfix:Fixed an issue that could cause memory-constrained platforms (such as consoles) to run out of memory when scrubbing in replays in rapid succession.

Bugfix:Fixed an issue where replicated references that would remain null indefinitely due to becoming non relevant, and then becoming relevant again

Disable hot reloading when using single process MP PIE.This fixes some conflicts that can otherwise occur.

Don't strip map/package name from commandline on shipping config on dedicated server in the Game Instance’s “Start Game Instance”.Don’t ever parse “-replay” on dedicated servers.This enables specifying map name on servers via commandline.

Bugfix:Fixed a crash when creating a Destructible mesh from a static mesh that uses SpeedTree materials.

Added a warning message when attempting to do so now.

Bugfix:Fixed an issue with APEX Cloth disappearing if an actor containing a component with clothing had its custom time dilation set to 0.0.

Bugfix:Fixed an issue with box collision shapes not scaling correctly after using Merge Actor tool.

Bugfix:Fixed an issue with Destructible asset importing failing if one of the submeshes in the asset file had no geometry.

Bugfix:Fixed incorrect tooltips for collision channels.

Bugfix:Fixed an issue with line traces against a component not returning face index, where appropriate.

Bugfix:Fixed an issue with line traces against a specific component not returning closest hit in triangle mesh case.

Bugfix:Fixed an issue where mesh corruption in clothing assets would happen when importing a new mesh that requires a uint32 index buffer over a clothing asset that previously required uint16 indices.

Bugfix:Fixed an issue where scales like (1,0,1) not being clamped to something valid in physics code.

Bugfix:Fixed an issue where “Support UV From Hit Results” not informing user an editor restart is required.

Altered Skeletal mesh bounds calculations to ignore clothing actors if they aren't simulating on the currently active LOD.

Changed some exposed properties on Destructible meshes to be hidden as they are only supported for non-Destructible Skeletal meshes.This addresses an issue where Physics Shadow Assets were properties were visible.

Enforced block size of 16K for PhysX scratch memory when simulating.

Ensure that physics handle automatically wakes up any object it's grabbing on release.

Improved comments for Hit callbacks.

Platforms

New:Add HarfBuzz support for proper text shaping in languages the require it such as Arabic.

New:Add support to Windows and Linux for swapping allocators with -ansimalloc, -binnedmalloc, and -binnedmalloc2 to enable easy comparison at runtime.

New:Added "Is Gamepad Attached" to Android so users can determine when a gamepad is attached to the device.

New:Added support for Android local notifications using the existing local notification Blueprint mechanisms.Using these Blueprint nodes will work on both Android and iOS now.

New:Added support for making the game window borderless (no system border or title bar) on desktop platforms.Disabled by default.

New:AndroidManifest.xml will now include the texture format used in packaging.The appropriate "supports-gl-texture" tags will be added for the texture format chosen at packaging.

New:Engine will select the first shader platform in [/Script/WindowsTargetPlatform.WindowsTargetSettings] as the current RHI.

New:Support Metal shader compiling when cross compiling on Windows.

This must be enabled in the IOS Build Settings page since it can significantly increase build time.

New:Enable the ability to change ports for a firewall to pass them through rsync.This addresses UE-24679.

New:Upgrade emsdk toolchain to 1.36.11 - emscripten.

New:When launching the app on iOS within the editor, the device console logs are piped into the Editor's Console Log window.

Bugfix:Fixed an issue with cooking for compressed content where the bit window used for compression was consumed by the wrong parameter.

Bugfix:Fixed a couple of problems with Mac app bundles modifying their content that made them incompatible with the Mac App Store.

Bugfix:Fixed an issue that was causing Sound Mixes to not properly finish at the end of certain sound effects when played on a device.Now, their behavior now matches PIE.

Bugfix:Fixed an issue that was causing the module Android_ASTCTargetPlatform to fail to load on Mac.

Bugfix:Fixed an issue where setting a new Touch Interface to none would cause any input present on the Virtual Joysticks to continue on indefinitely.Input now clears before setting a new Touch Interface.

Bugfix:Fixed an issue where shader compression used the cooking host platform instead of the target platform when selecting shader compression settings.

Bugfix:Fixed a race condition in threading code that affected pthread-based platforms, such as Linux, Mac, Android, iOS, etc.Threads are now properly joined instead of busy waiting.

Bugfix:Fixed an issue where iOS Movie Player can’t handle videos at resolutions that aren’t multiple of 16.Now an assert is thrown when attempting to play a non-power of 16 resolution.

Bugfix:Fixed an issue where occasionally a movie isn’t played on iOS.

Give a more friendly error message when UHT fails with an invalid error code.This will help when trying to build without the prerequisites installed.

Make the "Running <Projectname> on <Device>" Toast stay active when launching a game to an Android device until the game has finished running on the device.Previously the toast was closing prematurely.

Pass down any extras used to launch SplashActivity to GameActivity.This enables code that relies on intent data (such as GCM) to function as expected.The GameActivity will receive the info and not just SplashActivity.

The cooking process now respects the per-platform chunking manifest configuration in the game ini.If you specify -manifests it forces all platforms to generate a manifest.

Improved the error message that displays as Unknown Error when failing to supply a Remove Build server for iOS on Windows.

Changed the “OOM Backup Memory Pool” to enable each platform to set how much memory to allocate.See the “Get Back Memory Pool Size” function in “Platform Memory.”Defaults to 0, which was the previous behavior with the now removed “Support Backup Memory Pool” function in “Platform Memory,” which was only true in Windows and PS4.

Bugfix:Fixed an unnecessary execution of some binding steps even when nothing has changed.

Bugfix:Treat abort() / SIGABRT as a crash.

This fixes some abnormal exits not being reported.

Disabled rebuilding hlslcc during installation given that it is now built against the bundled C++ library and will always match the engine.

Equals character is now enabled as part of commandline parameter value.

Minor robustness improvement in Linux crash handler.

More robust check of installed packages on Ubuntu in installation scripts.

Reduce amount of logging when launching externals procs.

ShaderCompileWorker will be told to dump core on crash in Debug editor builds to aid debugging.

Startup time of modular builds (e.g. editor) are 10x faster due to exclusion of unnecessary symbols.

Mac

New:OpenGL support is now deprecated and Metal SM4 was replaced by SM5 in 4.13.

We no longer compile OpenGL and Metal SM4 shaders by default to save cook time and decrease cooked data size.

Running under OpenGL will now display a dialog warning that Mac OpenGL is no longer supported and may not run correctly.

New:Added a commandline switch for Mac "-RedirectNSLog" that will capture the output of NSLog using an NSPipe and write it into our log instead when not running under the debugger.

This will capture the output from underlying libraries that would otherwise be lost when outside a debugger.

New:Added a cvar named “r.Mac.OpenGLDisabled” to disable OpenGL support on Mac.

If a Mac that does not support Metal launches while this cvar is set to 1 then they will get a dialog box describing that they do not support Metal and the process will close.

New:Added more statistics for Metal to track how many textures are allocated a frame and how much buffer memory is allocated per frame.

New:Added support for compiling Vulkan shaders for Android on Mac.

New:Added optional cache inside Metal RHI for disposed texture objects so we may reuse them.This is controlled by the console variable "rhi.Metal.TextureCacheMode".

0 = off.

1 (default) = will attempt to reuse private memory texture objects within the frame they are released otherwise they are disposed of as before.

2 = extends the caching to all textures - though Managed/Shared textures cannot be reused until after the frame in which they were released has been processed on the GPU.In this mode id<MTLTexture> objects are never returned to the OS so in order to conserve VRAM calls to setPurgeableState are made to enable the driver to reclaim unused memory if required.

This setting can't be changed at runtime.

New:On MacOS, tvOS and iOS, the RHI and shader platform initialised on startup will now be decided by the options specified in the project's target settings rather than assumed in code.

When the initial selection in the target settings is not available on the current device the code will gracefully fallback, if possible or alert the user if not.

On Mac:Order of initialisation is the order listed in TargetedRHIs specification.

On iOS/tvOS:Order is explicit:Metal MRT > Metal ES 3.1 > OpenGL ES 2.

Bugfix:Fixed a crash under the validation layer and Nvidia’s El Capitan (10.11) drivers when Distance Field Particle Collisions are used without any scene Distance Fields available.We now bind the black volume texture when that is the case to avoid bad access on the GPU.

Bugfix:Fixed a crash caused by trying to restore Help menu item on Mac if MenuBlock didn't contain it.

Bugfix:Fixed a crash caused by Metal context releasing its contents in some cases on MacOS 10.12.1.

Bugfix:Fixed a crash in CoreAudio on unpause.

Bugfix:Fixed a crash in the editor on displaying a new window on MacOS 10.12+.

Bugfix:Fixed an issue to always bind buffers to all particle shader inputs to avoid a validation error in Metal.

Bugfix:Fixed an issue with AV Foundation video playback causing validation errors in Apple's debug tools, as the textures that it returns to us can't be used as render-targets and are stored in CPU-accessible memory.

Bugfix:Fixed an issue with AVFMedia plugin failing when a movie has captions.

Bugfix:Fixed an issue in MetalRHI that caused the first render query result to return the wrong result, which manifested as paused particle animations.

Bugfix:Fixed a focus problem in the asset picker that forced users to click on the search text field to be able to type.

Bugfix:Fixed an issue with game window not rendering its contents in some cases on macOS 10.12.1.

Bugfix:Fixed an issue with HLSL->Metal conversion for calls to asuint/asfloat where the input type matches the output type.

Bugfix:Fixed an issue with TBasePassVertexShaderPolicyParamType not setting values for all shader parameters that would then cause an error in Metal's validation layer.

Bugfix:Fixed an issue for Metal shader translation retain more precision for float constants -1.0f >< 1.0f by emitting them in scientific notation.

This prevents Hammersley constant amongst others from being flushed to 0.

Bugfix:Fixed an issue with FMac Metal not natively supporting PF_G8 + sRGB as Apple claims that not all Mac GPUs have single-channel sRGB formats.

Changed the ShaderCache not to cache resource bindings in the draw states for shader platforms that don't use them.

Disabled the lazy-encoder construction in Metal for AMD.There is a situation that causes the lazy construction to perform a clear that isn't wanted.

Enabled more concurrent ShaderCompileWorker instances on Mac now that they don't consume such excessive amounts of memory.

Ensure that command-buffer failure in Metal is always fatal as there is no way to recover and make the default number of command-buffers sufficiently large to handle texture streaming in Mac games.

Rework Metal's handling of RHI Set Stream Source calls that override the stride of vertex declarations to be much more efficient.

Update the GPU identification code in Metal to handle changes made in macOS Sierra.

Use a read/write mutex to protect access to Metal's internal shader pipeline caches so that parallel threads can progress in the common case where new shaders are not being compiled.

Use Metal's internal setBytes API to upload buffer data that is less than a single CPU page as this is much faster and avoids fragmenting Metal's internal heaps.On Nvidia GPUs this is always used but for iOS versions without the feature or Macs running El Capitan on Intel GPUs an extra ring-buffer is used instead.

Use private memory for the Metal stencil SRV workaround needed on OS X El Capitan for a small performance improvement.

PlayStation 4

New:Added a PS4 Device Profile when connected to a 4K TV.

New:“Get Num Of Tracking Sensors” and “Get Tracking Sensor Properties” are now supported by PSVR.This will return the properties for the PS4 tracking camera.

New:When a game supporting PlayStation Pro is connected to a 4K TV, the game may choose to automatically create 4K backbuffers or to continue with 1080p backbuffers.

This choice should be made on a per-game basis taking memory cost and performance into account.

Use “r.PS4Allow4kOutput” to enable.Disabled by default.

Bugfix:Fixed a crash that could occur with audio threading when the Kernel took over core 7 and starved the audio thread.

Bugfix:Fixed a possible GPU hang on PS4 when using DrawIndirect or DispatchIndirect.This hang could be seen in projects using DistanceField AO or DistanceField Shadowing.

Bugfix:Fixed an issue with render target alignment bugs on PS4 Pro.

Bugfix:Fixed some audio drops on PS4 media playback.

PS4 Time’s “SystemTime” now returns local machine time instead of UTC.

Stopped PS4 from always staging all ICU data files.

Upgradeable apps will now have the app_type field in Sony Project Files (.gp4) generated with the spelling 'upgradable' which is consistent with what Sony expects.

Removed the mapping for the Play controller's "Select" button, as it is reserved by the system.

Xbox One

New:The default Xbox One XDK is now August 2016 QFE 2.

New:Added support for multiple binaries in Xbox One deployments.Removed the need for binary renaming during deploy.

New:Added support for using the virtual keyboard on Xbox One.

New:D3D12 Movie player updated to a fast SIMD implementation.This will be replaced in a future SDK when the hardware decoder is supported.

New:Improved Xbox One deployment performance and iteration times.

Fixed an issue where staging could be performed twice per build from Visual Studio.

Ensured files that have not changed are not recopied for staging or deployment.

Modified manifest generation to avoid writing a new manifest if the contents are unchanged.

New:Added better compression buffer sizing during pak creation, which will result in more files being compressed for use with hardware decompression.

New:Added support for staging era.xvd from the XDK, which is required by newer XDKs for application launch.

Bugfix:Fixed an assert when saving/loading games.

Bugfix:Fixed an ESRAM memory leak caused by Volume Textures.

Bugfix:Fixed an issue that would cause the leading character in complex AppxManifest settings to be ignored.

Bugfix:Fixed an issue where the shift key on a physical keyboard connected to an Xbox One kit could be ignored.

Bugfix:Fixed an issue with corrupted screenshots.

Bugfix:Fixed an issue where DirectX 12 support was not being marked as experimental for the Xbox One.

Bugfix:Fixed an issue with hardware compression and decompression to always fall back to the software implementation if the hardware implementation fails.

This could happen if data built before hardware compression support was added is decompressed through the hardware decompression path or if compression or decompression occurred before the RHI was initialized.

Disabled engine analytics on Xbox One shipping games.

HTML5

New: upgrade emsdk toolchain to 1.36.11

OSX binaries: clang.

Rebuilt ThirdPartySoftware libs for HTML5.

Windows binaries: clang.

Windows

New:Add support for multitouch in Windows 7-10!

New:When loading a UE4 module DLL, the engine now manually scans through project and plugin binaries and pre-loads dependent DLLs.This removes limitations caused by a maximum length of the PATH environment variable.

Bugfix:Fixed an issue where maximized borderless game windows would render their contents offset by 8 pixels from the top and left sides.

All Mobile

Programming

New:Generated project files now include intellisense definitions and include paths for all UE4 modules, rather than just those in the standard UE4 editor target.

New:Unreal Build Tool now supports the Intel C++ compiler on Windows.

New:Added a -nolink command line option for Unreal Build Tool, which enables compiling a target without linking it.This is useful for automated build tests, such as non-unity compiles.

Bugfix:Makefile is now invalidated if any generated headers are deleted that fixes an issue where files are moved from one module to another, and the original module no longer contains any generated headers; its include path needs to be removed from the compile environment.

The Unreal Build Tool now deletes any DLLs in output folders which share names with build products.The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).

Updated the Unreal Build Tool so that programs can now be built as part of editor/client/server solution configurations.

Updated UnrealVS so that open documents are now saved before running a single file compile.

The GUBP build tools have been removed.Scripts to create binary UE4 distributions are now implemented in Build Graph.

Rendering

New:Added a new “Cinematic” Scalability level to the scalability system.

This level is intended for offline rendering of cinematics only.

New:The PS4 defrag pool size is now controlled by a new variable "r.PS4DefragPoolSize", and is not bound anymore to "r.Streaming.PoolSize."It will need to be configured to fit the project needs, in term of graphic resources.

New:Added 1000 nit HDR output option.

New:Added a cvar “r.DumpSCWQueuedJobs” to help tracking ShaderCompileWorker crashes.

New:Added -emitdrawevents command line parameter to enable draw events from startup.This can be useful when capturing with third party graphics debuggers.

New:Added material nodes “Atmospheric Fog Sun Direction” and “Atmospheric Fog Sun Color” so that materials can very easily get access to the direction and color of a directional light that has been marked as the atmospheric fog light.This can reduce the need to use MIDs or MPCs.

New:Added shader resource compression.This will compress shader resources in memory.It is on by default for all platforms except for Xbox One.

New:DirectX 12 RHI implementations for PC and Xbox One are now mostly merged.

Some platform specific implementations remain, but optimizations and fixes will now affect both platforms at the same time.

New:Hierarchical LOD transition distances can now be adjusted based on Scalability settings.Use “r.HLOD.DistanceScale.”

Defaults to 1, but higher values will make the transition happen farther away.

New:Make shadow radius culling take field of view into account.

Note that this may affect shadow depth rendering performance positively or negatively, depending on the camera's FOV.

New:New scalability setting "r.Streaming.LimitPoolSizeToVRAM" to limit the texture streaming pool to how much video memory is available.

Improved the behavior when using adaptative mip bias ("r.Streaming.UsePerTextureBias") so that the scalability bias is only used to generate over-budget warnings.

New:New texture streaming build status available through "r.Streaming.CheckBuildStatus."This is used to warn the user when a texture streaming build is required.

New:Particle cutout optimization no longer requires SubUV animation.

It is now on the “Required” module and there is now a Project Setting under Rendering > Optimization > Particle Cutouts by Default that will automatically set up the cutout optimization when materials change on an emitter.

New:Console variable “r.SSR.MaxRoughness” can now be used in a Shipping build rather than as a development-only feature.

New:The command "ListTextures" now outputs stats in terms of "in memory" and "on disk" to improve readability.Now, results are also more consistent between cooked builds and non cooked builds.

New:Vulkan shaders are now using glslang from SDK 1.0.24.0.

New:When running with the D3D11 RHI on Windows under RenderDoc, draw events are now enabled by default.

New:When running with the OpenGL RHI on Windows under RenderDoc, draw events are now enabled by default.

New:Added a fix for Vulkan drivers returning infinite number of swapchains.

Bugfix:Fixed a crash exiting VR Preview when using OpenGL 4 on Windows.

Bugfix:Fixed a crash when using High Quality Particle lights.

Bugfix:Fixed a potential crash when painting in the Landscape editor.

Bugfix:Fixed a crash when updating hierarchical instanced static meshes on the fly.

Bugfix:Fixed a crash in Procedural Mesh slicing when no verts are generated.

Bugfix:Fixed a crash when using tessellated materials with Blueprint "Draw Material To Render Target" nodes.

Bugfix:Fixed a crash with Post Process Volume when using Planar Reflections with Instanced Stereo.

Bugfix:Fixed an issue to always bind a value for “Is Stereo Parameter” in the Planar Reflection shader parameters to avoid an invalid GPU access on Metal in shaders that perform an if-test on this variable.

Bugfix:Engine no longer attempts to release Static Mesh resources if the mesh was never rendered, and therefore never initialized the resources.This also fixes some incorrect stats related to static mesh memory usage.

Bugfix:Fixed an issue where Skylight Occlusion Tint would not properly apply the material's diffuse color.

Bugfix:Fixed a fencing bug with the async compute translucency lighting volume clear.This could cause a flickering or a rare GPU hang on PS4.

Bugfix:Fixed an issue with divide-by-zero in certain cases in the Motion Blur Post Process.This resulted in artifacts in certain cases.

Bugfix:Fixed an issue with Foliage where lighting would always needs to be rebuilt.

Bugfix:Fixed an issue where changing Detail Mode not propagating to components.

Bugfix:Fixed an edge-case when replacing texture references in a material that caused sampler type updates to fail.

Bugfix:Fixed an issue where gamma was being incorrectly applied to vertex colors of Procedural Meshes.Fixed Bounds Scale not being applied to Procedural Mesh Component.

Bugfix:Fixed an issue with “Get Capsule Mesh” not working correctly when oriented.

Bugfix:Fixed an issue with normals on cap section when slicing Procedural Mesh Components.

Bugfix:Fixed an issue with possible low resolution textures when they were used within UMG.

Bugfix:Fixed the Primitive filter in the Statistics window of the editor.

Bugfix:Scaled instanced static meshes will now correctly compute world normals.

Bugfix:For FRCPassPostProcessVelocityScatter use the Empty vertex declaration not the Filter vertex declaration as the vertex attributes aren't read in the shader, which fixed a Metal validation error.

Removed the console variable “r.Vulkan.UseGLSL”, now we use SPIR-V everywhere.

Don't create material resources if we are in a build that can never render - Saves a few MB of memory

Made shadow radius culling take field of view into account.Note that this may affect shadow depth rendering performance positively or negatively, depending on the camera's FOV.

When using the GPU skin cache experimental feature, less shader permutations are now needed.

On XboxOne, the Vertex and Index buffers are now allocated with the right nextwriteoffset to prevent stomping old data on future writes.

FX

Bugfix:Fixed a rare crash in Particle Trail Emitter instances.

Lighting

New:Added “Capsule Indirect Shadow Min Visibility” to Skeletal Meshes, so that artists have control over indirect Capsule Shadow darkness without changing cvars.

New:Added flag for “Visible In Reflection Captures” to Primitive Component, which is useful for hiding objects too close to the capture point

New:Added “Distance Field Bias” to Static Mesh Build Settings for mesh Distance Fields, which is useful for reducing self shadowing on meshes that have ambient animation.

New:Changed the default Planar Reflection “Distance From Plane Fadeout End” from 600 to 100, which reduces artifacts and is a more intuitive initial setting.

New:Clamp Indirect Lighting Quality to 1 in preview builds to keep previews useful even with Indirect Lighting Quality jacked up to 10.

New:Distance Field Ambient Occlusion and Ray Traced Distance Field shadows are now enabled in High and Epic scalability settings by default.

New:Planar Reflection Actor show flags can now be edited.

New:Static light source shapes will no longer draw black in Reflection Captures.They will now fade out instead.

New:Static lights with Min Roughness = 1.0 don't get their source shapes drawn into reflection captures, since they are being used as virtual area lights.

Bugfix:Fixed an issue where lightmaps would not be applied because of how component transforms were computed.

Bugfix:Fixed an issue where the Global Distance Field was not dirtying previous object position on Update Transform.This left behind a phantom shadow on teleports.

Bugfix:Fixed an issue with Instanced Static Meshes being unbuilt after a lighting build if you ever cancelled a previous lighting build.

Bugfix:Fixed an issue with pre-shadow artifacts with multiple scenes, like the character receiving Stationary Light shadows from static environment.

Bugfix:Fixed an issue with Ray Traced Distance Field Shadows on PS4.

Bugfix:Fixed the “r.AllowStaticLighting” flag in the pixel inspector.

Bugfix:Fixed an issue Screen Space Reflections disappearing when the camera direction is near perpendicular to the pixel’s normal.

Bugfix:Resolved HLOD self-shadowing interactions in Lightmass.

Bugfix:Scene captures and Planar Reflections force a scene color alpha channel to be used when they are capturing.This fixes Planar Reflections with “r.SceneColorFormat=3”, which happens due to scalability.

Lighting channels can now be edited on components with static mobility, since dynamic lights can still affect them.

Lightmass area shadows only mark texels as mapped inside the light's influence, which fixes multiple Stationary Lights with the flag
“Use Area Shadows For Stationary Light” interfering.

Now clamping light Min Roughness to .04 to avoid NaNs from Vis_SmithJointApprox on materials with Roughness 0

Shortened lightmass export filenames to prevent path length issues.

Materials

New:Added "pre-skinned local position" material graph node.Available in the vertex shader only but can be passed through Custom UV interpolators.

New:Added new material functions to engine\content:

Interior Cubemaps:Maps specified cubemaps to a virtual box.Useful for displaying insides of buildings without using polygons.

Ray March Heightmap:Performs a ray march through a heightmap as if it were a volume.Enables more volumetric lighting for heightmaps and flipbooks.

High Pass Function:Performs a high pass operation on a specified Function.Requires multiple offset samples of the function to be hooked up.

High Pass Texture:Performs a high pass operation on a texture object.

Unsharp Mask Function:Performs an unsharp mask operation on a specified function.Requires multiple offset samples of the function to be hooked up.

Box Intersection:Returns the ray entry and exit positions and distance traveled inside a box.Box is axis aligned.To support arbitrary rotations, transform the view ray into the local space of the new coordinates.

Bugfix:Fixed cases where chained calls to the same function will overwrite input connections on previous calls in the chain by linking function inputs into the caller graph before re-entering after compiling an input.

Updated the Actor Position node to now be set to the position of the actor you are attached to instead of your owning actor.

Postprocessing

New:Added Alpha output support for postprocess materials (optional as a property of the material).

Anti Aliasing method has been removed from Post Process volume settings, and can now only be set from Project Settings under the Rendering section.

Optimizations

This can give significant performance gains in cases with large numbers of per-object shadows (e.g. many characters with a single stationary light).

Note:Writing to stencil during testing negates the use of high stencil on many GPUs, but this change is still a clear win an all the cases we tested.

Updated material resources to not be created if we are in a build that can never render - This saves a few MB of memory.

Mobile Rendering

New:Improved Mobile Scalability options. Each mobile material quality level can now specify a CSM shadow filtering quality, and the Fog calculation can now be enabled and disabled for both HDR and non-HDR mobile games.

New:Added on screen warning for invalid reflection captures.It can be seen only in a game running with mobile renderer.

New:Added option to mobile quality level settings to control the quality of filtering applied when rendering with CSM shaders.

New:Android device profiles can now elect to disable support for Vulkan and fallback to OpenGLES.

Use the console command r.Android.DisableVulkanSupport to disable support for Vulkan.

New:Mobile vertex fog is now a project option.

It can now be enabled or disabled regardless of Mobile HDR project setting.

New:Added basic mobile support for global clip plane project setting.

This fixes rendering issues with planar reflections on mobile.

New:Added more stringent checks for Android ES3.1 compatibility.

Android ES3.1 devices must also support floating point render targets and shader IO blocks.

Improved logging when ES3.1 support has failed.

Bugfix:Fixed a crash on startup when using Vulkan on Android devices with Mali-based GPUs.

Bugfix:Fixed Average Brightness property being applied to reflections in gamma space in the mobile base pass.This would cause ES2 reflections to be overbright.

Bugfix:Fixed case where Sky Light could be rendered in green color on some Android devices.

Bugfix:Fixed an issue where the editor ES2 Feature Level Preview and Mobile Preview PIE modes were not correctly limiting materials to only the 8 textures available on ES2.

Bugfix:Fixed issues with modulated shadows and decals on some PowerVR54x based android devices (such as Galaxy S4).

Updated planar reflections on mobile to no longer cause GPU particles to be updated twice per frame.

Updated scene captures to now correctly decode scene color on devices that do not support floating point targets (such as the pre-updated Galaxy S6).

Previously, Mobile HDR setting implied vertex fog.If your project does not use Mobile HDR, you may wish to disable Vertex Fog in the Project Settings.

UI

New:Added delegate to the Game Viewport Client that notifies when the Game's platform specific window is being closed, and can be used to prevent the game from being exited (and the window from being closed).

New:Textures, Materials, and Paper2D Sprites can now be added to Widget Blueprints directly from the Content Browser.

New:Updated the Text Render Component to support multiple font pages.

Updated Circular Throbber widgets to no longer support Period values less than zero and they will no longer throw an error when set to zero.

Updated the viewport to no longer lose mouse focus if a visible cursor clicks inside of it when the cursor should be visible.

Updated drag operations to only be completed or canceled by the finger that started the operation, when using touch input.

Slate

New:Added support for underlined text rendering.

The Text Block Style can now specify a brush to use to draw an underline for text (a suitable default would be "DefaultTextUnderline" from the Core Style class).

When a brush is specified here, we inject highlights into the text layout to draw the underline under the relevant pieces of text, using the correct color, position, and thickness.

New:Added the Window Title Bar Area widget (and UMG wrapper for it), which can be used to specify which regions of the UI should enable the user to drag the window on desktop platforms.

New:You can now use the Content/SlateDebug folder to store any Slate resources that shouldn't be used in a shipping build.

LastResort.ttf has been moved to this folder.

Bugfix:Fixed jittering that could occur when using a fixed wrapping width with an editable text.

Bugfix:Fixed an issue preventing Editable Text and Multi Line Editable Text from setting the correct foreground color when painting.

Updated material blend states to match what is expected of Slate rendering, which differs a lot from the scene renderer with the way it treats alpha.

This fixes translucent rendering with the retainer widget, users will need to set their materials to Alpha Composite though for it to behave as expected.

Updated Menu Anchor and Scroll Box to now work with invalidation panels.

UMG

New:Added controller support to Combo Box widget.

New:Added support for outline fonts.

New:Updated the Copy, Cut & Paste animation tracks to be fully supported in UMG now, though not fully supported for Sequencer in general (outside of UMG).

New:Updated the safe zone widget in both Slate and UMG to have the ability to control which sides are accounted for.

This can enable the nesting of these widgets to solve situations where you want parts of your layouts to extend to the edge of the viewport.

New:Updated the selection of animation tracks in UMG to automatically update the selected widgets now.

New:Added an option to exclude all UMG widgets and slots from dedicated server builds.

Set bLoadWidgetsOnDedicatedServer=false for this behavior.

New:Exposed a trace channel for the Widget Interaction Component.

Defaults to Visibility.

New:Took the Widget Component and Widget Interaction Components out of experimental.

Removed old importing support for upgrading ancient versions of widget components.

Removed parabola distortion, as users can now do whatever they want in their custom MID they can override the widget with.

New:Updated the designer so that you can disable and enable the dashed lines around containers by using ‘G’ to toggle game mode.The option in the settings is now used as the default when you startup a designer.

New:Updated the UMG "Replace with" function to now support "Replace with *Selected Widget*".

New:Updated UMG Project settings to now show/hide different widget classes and categories in Palette view.

Set this option under Project Settings->Editor->UMG Editor.

Bugfix:Fixed an issue where renaming a widget would cause the slot content animation track to be invalid.

Bugfix:Fixed an issue where buttons inside a scroll list with a click method set to Precise Click would activate if the mouse was released when they are out of view.

Bugfix:Fixed an issue where removing a Widget from Panel Widget did not invalidate layout, which could leave it still visible accidentally.

Bugfix:Added missing base includes and forward declarations for Progress Bar and Text Block.

Updated Combo Box (String) widgets to now correctly clear the currently selected option if that option is removed from a Selection Changed callback.

Prevented widget animation from being named the same as one of the override functions in a User Widget.

Updated the Experimental Class warning to now have a more detailed description.

Updated minimized windows to no longer behave like they are visible when determining what widgets are located under the mouse cursor.

Updated the grid panel to now properly set padding on slots as it is intended to.

Updated the wrap box so that the second row now properly receives "inner" vertical padding.

Documented the meta parameters allowed on widgets, like we do for regular UObjects.

For binding widgets from blueprints you can now do BindWidget (unchanged), and to simplify binding widgets optionally, you can now just use BindWidgetOptional, rather than the combination of BindWidget and setting OptionalWidget to true.

Improved setting focus for users on widgets.

If we are unable to set the focus immediately, possibly because the user is setting focus in the Construct callback before the widget is in the tree, we now update the Slate Operations FReply on Local Player to set focus in the next frame when it is more likely the widget will become focus-able.

Updated retainer widgets to now contain the Virtual Window directly in the hierarchy.This should now make it possible to reliably focus elements inside the retainer widget.

Updated Button and Widget to no longer multiply color and opacity twice.

VR

New:Added support for getting the HMD Device name (e.g."OculusRift," "SteamVR," "PSVR," etc) through Blueprints and C++.

New:Added the "Start in VR" project setting, which enables projects to specify that they would like to automatically attempt to run in VR mode, regardless of whether or not -vr is passed on the commandline.

New:Added the ability to re-enter VR preview in the Editor after exiting from it using the quit option inside the SteamVR overlay.Previously one had to quit and restart the Editor to re-enable VR.

It is now possible to reliably exit a game from the Steam VR overlay exit button, even when previewing in the Editor.

New:Added the ability to select which HMD module to use on startup by passing "hmd=<name>" on the command line.

This is useful if you have more than one type of device attached to your machine.If no device matches the name passed in, a warning will be printed to the log and VR will be disabled.

New:Added support to the Oculus Rift for the "r.ScreenPercentage" console variable if it is set manually.

The obsolete console command "HMD SCREENPERCENTAGE" will still work, but assigning to "r.ScreenPercentage" is now the preferred way.

New:Updated the PSVR 2DVR texture to now be a UTexture, so it can be a RenderTarget, etc.Also improved error reporting for this and some other PSVR features.

Bugfix:Fixed the "Get bounds node" for SteamVR to return the correct bounds if they have changed since initialization.This could happen if the HMD was outside of tracking area during start up.

Worked around a bug in SteamVR that caused VR to fail to initialize if SteamVR isn't running when launching the application.

Added positional tracking information on PSVR even when the device isn't optically tracked.This enables proper IPD to be taken into account for rendering.

Added support for the left menu button on the Oculus Touch controllers.

Adjusted Hidden/Visible area masks to eliminate black crescents at the top and the bottom edges of the PSVR HMD.

Updated changing world to meters scale while running in VR Preview mode in the Editor on Oculus Rift so that it now correctly applies the changes to the Oculus Touch controllers.

Updated VR play-in-editor to always use "Game has mouse focus" option, to ensure that motion controllers are routing input correctly to the game.

Added a PSVR Morpheus project setting to set the reprojection wrap mode to Mirror or Clamp To Border.This determines how left and right reprojection artifact pixels are filled.

Mirror, the default, fills them with some nearby pixels.

ClampToBorder fills them with the border color (usually black).

Most content works best with mirror.

Updated PSVR to now ignore partial HMD tracking data before the HMD has been tracked in a game session because orientation based re-projection does not function until that happens.There is a project setting to disable this, should the PS4 behavior change in the future.

Other

New:Added the ability to change Device Profiles at runtime.

Use "dp.override <name>".If you do it again to another one, it will reset the settings to what they were originally, before applying the second new Device Profile.This is because the second Device Profile may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.

Changed “Set Quality Levels” function, in Scalability.cpp, to no longer change the “SetBy” priority when setting console variables.This now keeps the “SetBy” the same as it was, which helps with conflicts between game settings and Device Profiles.See the “Set With Current Priority” function.

New:Added an option to toggle full screen with F11 key in addition to Alt+Enter in games.

New:Added Parse function to JsonObject.cs to be able to parse a string instead of only files.

New:Env Query Instance Blueprint Wrapper is now Blueprintable.

This enables you to make Blueprints that enable more complex 'wrapper' behavior when using the Blueprint node “Run EQS Query” (on the EnvQueryManager).

Made “EEnvQueryStatus” a Blueprint type, which makes it much easier to work with in Blueprints.

Changed FMallocStomp::GetAllocationSize() to return the requested allocation size instead of the physical allocation size to make FMallocStomp work properly with FMallocPoisonProxy.

Changed checkSlow() to check() when verifying type compatibility in GetDefaultObject<> because this is potentially an unsafe static cast.

FindObjectWithOuter once again enables ClassToLookFor to be null as comment indicates is allowed.

Increased the initial memory allocation size for FLargeMemoryWriter to reduce the number of allocations when saving or cooking.

Lowered verbosity of several error messages that happen when deleting native properties or components.

Lowered verbosity of several warning messages that happen when deleting properties or components from parent classes.These issues used to require resaving the child blueprint or level.

Made FString::Mid assert when passed a negative count.

Made Unreal Header Tool able to parse final classes.

Moved RemoveNamesFromMasterList from UEnum destructor to BeginDestroy to avoid potential issues when its package has already been destroyed.

Removed blueprint stack warning messages from shipping builds, the stack was missing so the warnings were pointless.

Updated stack captures to now always go down the fast path.This avoids a game going unresponsive on Windows when printing or capturing large numbers of callstacks such as with the 'mallocleak' command.

Updated the JSON writer to now write floats with a suitable level of precision, where before it was always writing many redundant zeroes.

Editor and Tools

New:Added allocation tagging to MemoryProfiler2

See FMallocProfiler::AddTag and FMallocProfiler::RemoveTag.Tags should be in the format "Category:Tag", and the "Tag" part may include "/" to create levels in the tag hierarchy (as shown in the tool).

Added object, package, and class tags by default (this uses FScopeCycleCounterUObject, so the stats system is now enabled when malloc profiling).

New:Optimization and usability improvements of the MemoryProfiler2 tool

Optimized the processing of the Callgraph, Histogram, and Short lived allocations views.

Added a user-configurable list of allocator functions to trim (which now includes FMemory and operator new by default, and produces much cleaner callstacks).

Bugfix:Fixed FDetailCategoryImpl::ShouldBeExpanded not honoring bShouldBeInitiallyCollapsed when bRestoreExpansionState was true.

PostEditComponentMove will now be called correctly when stopping a drag operation of a scene component of an actor in a level.

UWorldComposition::GetTilesList function can now be used in game code (previously only in Editor).

Fixed all static analysis warnings in Editor builds.

Content Browser

Bugfix:Fixed an issue where re-scanning a package file may leave old assets in the asset registry.

It used to not clear out anything associated with the old package before scanning the file, which could result in old assets being left if they'd since been removed from the package.

This also exposes a PackageDeleted function to enable manually clearing anything associated with a package (if doing some custom asset work).

World Browser

UWorldComposition::GetTilesList function can now be used in game code (previously only in Editor)

Sequencer

New:Added interface to extend the matinee to level sequence converter.

Gameplay Framework

New:Actors can now specify via bRunConstructionScriptOnDrag whether PostEditMove should fire the construction script on every move or only when the move is considered finished.

New:Added a bWasCancelled parameter to GameplayAbility::EndAbility.This enables us to determine if an ability was ended prematurely.Added an OnAbilitySucceeded delegate for determining when an ability was successfully ended.

New:Added an FName constructor to FCollisionProfileName.

New:FLocalPlayerContext functions no longer check by default.

New:UPrimitiveComponent now has an optional list of components it will ignore collision with when performing movement sweeps.

New:UWorld now has a member that accumulates the dilated/clamped game time even when paused called UnpausedTimeSeconds.

Bugfix:Fixed an issue where FGameplayTagContainer::HasTag(Tag, IncludeParent, IncludeParent) would miss some matches.Added tests to find other issues.

Bugfix:Fixed an issue where FindTeleportSpot used when spawning actors would sometimes fail to find a valid nearby spot depending on the previous collision results.

Bugfix:Fixed CharacterMovement hanging on to a bad/penetrating floor check result and not continuing to check for a valid floor.This only occurred if bAlwaysCheckFloor was 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.

Bugfix:Fixed tooltip text for p.NetEnableListenServerSmoothing command (it was a copy/paste from another command).

Updated bRemoteOwned to no longer be settable in FSpawnActorParameters as only spawning a replicated Actor from the replication code should ever have been setting this to true.

Updated Components to no longer need to specify whether they want begin play or not.

Updated GetNextViewablePlayer to now check and return correct PlayerState.

Localization

New:Added basic support for localizing plugins.

Wrapped UMaterialExpression::MenuCategories in WITH_EDITORONLY_DATA to avoid gathering it for game-only localization.

Networking

Updated UDPPing to enable a stack size to be set for the individual threads that the ping will be performed on to compensate for third party injected code that exceeds stack space available in default 32k limit.

Online

New:Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread.

New:Added a UChatroom class that does some basic chat room join/create/leave functionality using the online chat interface.

New:Added an ExpirationDate field to FOnlineStoreOffer.This value is initialized as FDateTime::MaxValue().

New:Added GetSessionIdStr to FOnlineSessionSearchResult and FOnlineSession as convenience functions.

New:Added OSS.VoiceLoopback <0/1> to debug chat by including local talkers into remote talkers audio queue.Additionally added "ONLINE VOICE DUMP" exec command to print out known state of voice interface for troubleshooting.

Removed spurious log message during voice initialization as it is covered by other logging.

Added proper GetResolvedConnectString functions for PS4/Live.

UPartyGameState::ResetLocalPlayerState() iterates over local players rather than game state player array for the very rare cases where AGameState is null.

Physics

New:Kinematic actors now excluded from active transforms generation.This saves time in fetchResults.

New:PhysicsConstraintComponent now exported and can be subclassed outside Engine.

New:Sweeps can now take a rotation parameter that will enable the shapes used for the sweep to have their orientation changed.

Bugfix:PhysX no longer returns NaN from some penetration tests.

Bugfix:Fixed crash from user doing unsafe things during fetchResults by moving OnConstraintBreak delegate so that it fires outside of fetchResults.

iOS

Mac

New:Changed the code responsible for generating RPATH entries to enable third party dylibs on Mac to be loaded from plugin subfolders.

New:Implemented IsGamepadAttached() function.

Bugfix:Fixed indexing of iOS and tvOS-specific files in Xcode project.

Changed FString(const NSString* In) constructor to use CFStringGetBytes instead of [NSString cStringUsingEncoding].It's faster and solves the problem with the previous implementation's incorrect assumption that UTF32 string returned from cStringUsingEncoding would be zero-terminated.

Playstation 4

New:Added support for displaying one and two button message dialogs on Playstation 4.

New:Refactored symbol uploading in Unreal Automation Tool (UAT).The new system supports both Windows and Playstation, and handles the submission of build symbols to a symbol server as part of a UAT build script.

New:The "Play Together" feature is now implemented on PS4!You can override OnPlayTogetherEventReceived on UGameInstance to handle the event.Check out ShooterGame for an example implementation.

New:Upgraded to PlayStation 4 SDK version 4.008.061.

Bugfix:Fixed a bug introduced by trying to get the taskgraph broadcast to work on PC.

Bugfix:Fixed a typo in a define that could cause Visual Studio 2015 to crash.

Bugfix:Fixed Clean process during a Hot Reload.

Bugfix:Fixed issue where project-specific modules could be considered out of date, when building multiple targets through Visual Studio at once.Unique build id strings in .modules files are now shared until an existing file is modified.

Bugfix:Implemented various fixes for building with -nosharedPCH.

Bugfix:Implemented various fixes to enable the Editor to be compiled in Monolithic mode.

Rendering

New:Added delegates called after resolving scene color (e.g. to do custom post-processing).

New:Added direct support for the creation and binding of Pipeline State Objects at the RHI level.This is the first step on the road to moving PSO handling to the high level rendering code to have a unified solution for DX12, Vulkan, and Metal.

New:Updated DrawDebug functions to now compile out in Shipping and Test builds.

If you wish to generate compile errors for trying to call them at all, you can define SHIPPING_DRAW_DEBUG_ERROR=1

New:Exposed GPU revision ID as GRHIDeviceRevision and added it to the FPS chart analytics (gathered on D3D11 and D3D12 only).

New:Added the first implementation of the new RHI functions for Pipeline State Objects on DX12.

New:Refactored the GL shader compiler to enable GLSL variant platforms to modify behavior without a lot of #if checks everywhere in the GL code.

Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects.

Added ability for GL shader compiler to return the original resources names ("VertColor" instead of "u_v[3]" or whatever) to the shader compiler shader parameter metadata.This does NOT change the generated GLSL code.

Bugfix:Fixed an ensure fail when initializing point light shadow maps and simplified the logic for cubemap render target resolution parameters.

Bugfix:Fixed a race condition where debug drawing code was trying to read data off the SceneProxy from the Gamethread.

Exposed full USceneCaptureComponent classes to plugins instead of select methods.

Materials

New:Refactored material properties during graph translation.

Fixed material properties are being phased out in favor of better encapsulated and more extensible attribute lists.

This is the first in a series of changes moving towards per-project attribute controls and improved high-level usability.

UI

Slate

Bugfix:Fixed SWrapBox InnerSlotPadding.Y not applying between the first and second lines.

VR

New:GetNumOfTrackingSensors and GetTrackingSensorProperties are now supported by SteamVR as well as Oculus Rift.

Bugfix:Fixed saving of a few VR related config flags.They were being saved under the wrong name, preventing them from being read in again.

Bugfix:Fixed the tracking camera orientation returned from GetTrackingSensorProperties on the Oculus Rift to now point in the correct direction.Previously it was pointing towards the back of the camera instead of its facing direction.

Other

New:Added ability for custom implementations of UGameplayModMagnitudeCalculation to specify they have dependencies external from the ability system that may invalidate their calculated magnitudes.Dependencies are specified by multicast delegate that is expected to fire when the magnitude needs to be updated.

Also added advanced variant of the implementation enabling clients to also trigger the dependency invalidation and update themselves appropriately.Designed to only be used for extreme cases (such as games relying heavily on network dormancy) and only on attributes that are not gameplay-impactful (and therefore safe for the client to locally compute).

New:Added new API function for DrawDebugSolidBox, which takes an FBox instead of a Center and Extent.It also enables specifying a transform as well (but defaults to using the identity transform for convenience).

New:Added option to disable uploads to Crash Report Receivers while they continue to answer pings from clients.

New:Crash Report Process now has option to output crash files to Amazon S3.

New:CrashReportProcess passes new BuildVersion string to MinidumpDiagnostics for symbol lookup.

New:Introduced the concept of "evaluation channels" to non-instant gameplay effects within the ability system!Evaluation channels enable game-specific control over the order in which modifiers are evaluated in attribute calculations.

A game may specify how many channels it would like to use, as well as what they are named, and then modifiers can specify which channel they work on.The channels are evaluated in order, with the numerical output of the first channel serving as the input to the second channel, and so on.

Example:Imagine a sample attribute with a base value of 100.Now apply a multiplicative mod with magnitude 1.1 in channel 0 and a multiplicative mod with magnitude 1.1 in channel 1.The result will evaluate as ((100 * 1.1) * 1.1) instead of (100 * 1.2).

To use channels in a game, two settings within the INI section for AbilitySystemGlobals must be configured.First, bAllowGameplayModEvaluationChannels must be set to true, and second, the channels that should be used (and their names) must be specified in GameplayModEvaluationChannelAliases.Additionally, a game can optionally specify a default channel to use via DefaultGameplayModEvaluationChannel.

In addition, added various new channel-related functionality to the ability classes' API, such as the ability to base the magnitude of a modifier off of an attribute only evaluated up to a certain channel.