New: Added support for ticking ability tasks.
New: Added support for a negative play rate on timeline components.
Added support for an active GameplayAbility blocking other abilities from activating based on ability tags.
New: Added FGameplayTagCountContainer struct, which contains a counted set of GameplayTags.
New: Added target homing ability to the Projectile Movement Component.
New: Added conditional loop decorator.
New: Added CleanupMemory function to BTNode class.
New: Added csv parser.
New: Added ability to specify a font hinting algorithm to use when rendering fonts with slate.
New: Added setting to allow for 'transparent' box selection in perspective viewports.
New: Added constant-velocity versions of various interpto functions.
New: Added AActor::UnitializeComponents and UActorComponent::UnitializeComponent to pair with the existing InitializeComponent(s) functions.
New: Added EQS Logging to Visual Logger.
New: Added editor option to draw/visualize NavOctree.
Behavior tree service notify moved from execution start to search start for better results with condition checking services.
New: Can now create a new blueprint directly from button next to class dropdowns for classes that are blueprintable.
New: Converting a TSubclassOf property to a TAssetSubclassOf property will now work automatically. Automatic conversion is also now supported for converting arrays of UObjects to arrays of TAssetPtr
Added code to UAT to support platforms that compile unique executables but use cooked data from a different platform. It is currently not accessible from the command line
Enabled EQS Debugging as part of Gameplay Debugger - it works with client-server games too. It's disabled for projects without EQS.
Extended LogVisualizer tool. It's possible to select and render specific EQS query data.
Extended GameplayDebugger to collect EQS data from Pawn and AIController simultaneously (some queries can be executed on pawn and some on controller)
Extended Visual Logger and UObjects can log data directly. There is no need to log only from Actors any more but there is a catch - object has to redirect his logs to Actor and this Actor will own logs.
Extended GameplayDebugger data view for Simulate in editor. Properties from GameplayDebuggingReplicator Actor (Actor visible only during Simulate) can be used to switch debug views.
Enhanced debug information for single item in EQS Debugger (GameplayDebugger feature).
New: GetGlobalTimeDilation blueprint node is now available.
GameplayDebugger can debug multiple EQS queries now and we can switch between them to view selected one.
New: IsGamePaused is now available as a blueprint node.
Added SetSupressViewportTransitionMessage to library functions.
Added some extra info to the check in RecompileBlueprintBytecode to indicate which blueprint has an invalid genrated class.
Added several string manipulation functions to blueprint string library.
Added metatags to many widgets for new tutorial system.
Changed viewport transition message to default to off.
Max agent step height can be defined per navmesh.
Many functions in the identity and session online subsystem interfaces now have overloads that take an FUniqueNetId instead of a LocalUserNum.
Removed RenderingSettings.h and AudioSettings.h from Engine.h, including them where actually used.
The "Read Leaderboard Integer" Blueprint node now works correctly for Google Play on Android.
Project settings can now be accessed quickly from the Settings menu on the editor toolbar. World settings moved in to the Settings menu instead of having its own button.
New: ToggleDebugCamera camera rotation now works with touch input (or when bUseMouseForTouch=true).
Removed MinimalAIP from UCurveBase and UCurveLinearColor to allow extending in another module (editor.)
New: Split Pin for blueprint struct pins is now enabled for all users and is no longer an experimental feature.
Fix: Camera frustum visualization is now updated when camera component properties are modified.
Added check for level bounds while adding to NavOctree.
Added AActor::FinishSpawning to compartamentalize duplicated steps in numerous places. Ensure it only gets called once.
Added dynamic allocations for path finding, removed hardcoded limit of 128 polys in path corridor.
Added support for projecting multiple points on navmesh and raycast with known starting poly.
Added go to C++ file and documentation to right clicking on content browser assets.
Added localization gathering from native, fixed-size array properties.
Added Brazilian Portuguese and Spanish translations to UE4.
Added workaround for .NET framework issue with Chinese cultures in OneSky logic.
Added workaround for OneSky giving project names with an appended null-terminator.
Added IsUsingDefaultBounds to ALevelBounds to indicate that because there are no Actors in the level that contribute to the bounds, the default bounds are being used.
Added a slow task for adding sublevels to a persistent map.
Added CulturePointer.h, which typedefs ThreadSafe TSharedRef and TSharePtr for FCulture. These should be used instead of the manual template instantiations for consistency.
Added a command line option (-nosharedpchs) to UBT to disable shared precompiled headers.
Added Cultures-to-Stage list to Project Packaging Settings. Default value includes only English. Packaging now only stages specified localization data as per the previous comment or by passing "-CookCultures=".
APlayerController::DeprojectMousePositionToWorld and DeprojectScreenPositionToWorld both now return false when unable to deproject, due lack of mouse cursor, valid scene view, etc.
APlayerController::GetMousePosition now returns false when a mouse is not attached.
Attachment replication now takes into account RelativeScale3D.
SimulatedRootMotionPositionFixup: handle zero play rate, and better communicate "Server ahead of Client" pre-requisite.
Removed SkeletalMeshComponent dependency on Character.
Character controlling its Mesh TickPose(), so that only its mesh is affected by it, and not every SkeletalMesh attached to it.
Better NavMesh rendering performance when using GetDynamicMeshElements way.
bIgnoreForFlushing is now propogated from AudioComponent to ActiveSound and works when used for Play In Editor.
Culture fallback logic improved and made consistent - any locale can be used if its internationalization data is present and some parent of it has localization data.
Corrected issue with ICU internationalization data and UE4 localization data not being properly staged.
Consistent localization-related commandlet path-handling with regards to relative paths. From now on, please specify paths relative to to the project's directory or the Engine directory.
Clear smoothing state when Time Dilation changes to avoid lagging sensitivity artifacts.
Clicking on source links in blueprint projects now works correctly.
Continued work on in-editor mobile preview. This feature can be enabled from the experimental editor settings, and then selected from the "Quick Settings" menu.
Improvements and fixes to resolution switching functionality, and initialization precedence for all our various config files.
Datatable editor now refreshes correctly when the datatable is reimported.
DrawDebug* blueprint nodes now have a consistent API.
Dynamically bound nodes are now found in function graphs as well as the main event graph.
EdGraphSchema constant variables are now static variables.
Ensured that Actor's in levels that have been unloaded do not get a tick if they were already scheduled.
EnableInput will always create an InputComponent if one doesn't exist even if there are no BP bindings to add.
Enable Static Mesh Collision view, by default.
FKey is now a BlueprintType.
FEdGraphSchemaAction now uses FNames instead of FString for RTTI.
FAttenuationSettings properties now properly marked as BlueprintReadWrite.
Geometry edit mode now has a UI priority order.
Gathering from assets and metadata nows loads required modules before trying to load packages. Specify modules using ModulesToPreload in the commandlet config files.
Generating archives will now fail if the archives are of the wrong version. This helps to avoid users losing data due to a resave with a different verison and not being able to repair the old data.
Input stack will no longer be cleared when initializing player input as other Actors may have already pushed their input component on to the stack.
Improved messages regarding falling back to the base language of a culture when there is no localization data for the specified culture.
Launching PIE-V as Client, with a Dedicated Server no longer crashes.
Many places that were using FActorIterator now use optimized TActorIterator as appropriate
Moved the per-user DDC cache into a version-agnostic engine folder.
Modified TArray::FilterByPredicate to be const correct (passes const data to the predicate and is a const function itself)
Moved the Release/Development shaders button functionality to a CVar.
Modified reimport analytics to clarify exactly what file type was reimported.
Multiple clients are now spawned correctly when launching a listen server.
Newly spawned Actors in the editor now have more correct unique names.
Optimizations for GameplayDebugger, both regular and related to network data replication and replication channel bandwidth.
Pawn's move action won't be paused by non-move actions.
PIE prefix is now properly stripped when looking for GameMode based on map prefix.
PushInputComponent will put the input component in to the stack even if there are no bindings.
PinFriendlyName is now used consistently across the UI
Primitive component's bCanEverAffectNavigation flag can be now changed in instances
Purge duplicate AxisConfig entries in cases where the ini files have gotten messed up.
PlatformApplication's IsMouseAttached exposed to SlateApplication.
Rich tooltips added to brushes in Modes window.
Recompile-on-startup now shows the project name and file names for out of date modules.
Shaders are now included in projects for standalone games.
Sprite and GPU particles now support Custom UVs.
Switch Enum now uses a proper enum typed pin rather than a generic byte
Streaming strategy for textures calculated based only on primitive mobility settings.
Turning off Surface Snapping in the editor viewport now prevents surface alignment during placement.
Transforms for mesh particles are now passed into the vertex shader correctly. Still not available in pixel shaders.
Transition map for seamless travel correctly marked as Game or PIE world.
Types in blueprint pin tooltips and variable type pickers are now displayed in more readable format.
UAnimInstance::GetWorld() will no longer crash when called on the Class Default Object.
WidthScaleCurve property of trail anim notifies now searches and auto-fills bone names.
@param and @return portions of blueprint functions/events will no longer display in tooltips.
Renamed all localization data and code using the erroneous "zh-CN" locale instead of the correct "zh-Hans-CN" locale for China.
Reworked the new project dialog.
Categorized templates into Blueprint/C++ templates and organized them into tabs.
New categories can be specified in the templatedefs.ini file of a template project using a Category tag: Category=NewCategory.
New category types can be registered with a proper description and icon in code through FGameProjectGenerationModule::RegisterTemplateCategory.
Added preview images to templates.
Generally tidied the UI.
Added hardware targting options to the dialog.
Replaced crude csv parsing (used for data table importing and the like) with FCsvParser use.
Removed deprecated editor mode API that was marked for deprecation in 4.3.
Removed the built in shaders option from the material editor.
Removed unnecessary game thread task from FRecastRenderingSceneProxy.
Removed circular dependency between AIModule and GameplayDebugger.
Removed logic in PO import/export that failed to read/write from culture directories if only one culture was specified.
Reduced UE_VLOG overhead when recording with disabled visual logs.
Refined text rendering on content browser thumbnails.
Switch Node Polish
Name and String have + Add Pin button.
Enum doesn't display Remove Execution Pin on right click.
All types have proper default in selection box.
Add call to EndPlay for quit in standalone game.
Move logic for when to dispatch EndPlay in to a non-virtual RouteEndPlay function.
Only call EndPlay if the Actor has been initialized and the world has begun play.
The physics scenes for a world are now destroyed after cooking a package containing the world. If multiple worlds are in memory at cook time, too many scenes were being allocated and causing a deadlock when locking a scene for read/write
Moved asset thumbnail dirtying code out of ContentBrowserSingleton and into AssetThumbnail.cpp. Updating thumbnails is not the responsibility of the Content Browser since many systems use thumbnails now.
Path pickers that allow context menus will once again allow the creation of a new folder. This also fixes the bug where pickers configured to the extend the menu actually never get a chance to extend anything.
Made the default level streaming class an editor user setting.
Reduced the number of GetTimeStamp calls when checking for DDC files by 1, which reduces I/O burden on the shared DDC a little bit.
Worlds with no Actors in them no longer crash in PostLoad.
Added null checking for missing expressions and comments when fixing up materials on load.
Expanded the particle system audit commandlet to find particle systems with a high spawn rate or far lod distance.
Added FPackageName::ObjectPathToPackageName to match ObjectPathToObjectName
You can now configure which asset types cause a forced GC in the cook commandlet. By default, world assets cause this to happen, which is the existing behavior.
Asset pickers no longer match an asset's class name if there is a filter for exactly one class.
All path views are now affected by the "Show Engine Content" checkbox (and show developers and show plugins), not just path views found in content browsers.
SAssetPickers can now save their view settings. The SAssetDialog saves it's asset picker view settings.
Deprecated ULevelStreaming::PackageName in favor of the new WorldAsset TAssetPtr. All existing usage of PackageName has been replaced with GetWorldAssetPackageName() and SetWorldAssetByPackageName().
If you have Actors from multiple levels selected, you can now move them to the selected level via the level browser. It will only move Actors that are not already in the destination level.
Added support for removing dynamic mount points. Added more information to the OnContentPathMounted delegate as well.
TAssetPtr UProperties now properly report string asset references when saving packages. Also, string asset references with empty values no longer include "None" in the list of references.
Clicking on a folder in any SPathView in the editor will now prioritize discovering assets in that folder.
Removed the "Show only assets in selected folders" editor preference for the Content Browser. This is implied from "Show Folders" and should have been removed when folders were added.
Illegal characters in names are now only reported once, even if they show up in the illegal characters or test string list multiple times.
Fix for loading the mainframe module while in a commandlet. There are no key events when running in a commandlet.
Fixed a performance problem in the editor when discovering paths in the project initially.
Fixed Character and PaperCharacter not properly setting Mesh/Sprite tick pre-requisite to happen after MovementComponent tick.
Fixed uninitialized bounds in some circumstances for NavLinkRenderingComponent.
Fixed minor bug where referencing packages would show up multiple times when fixing up multiple redirectors referenced by the same package.
Fixed some problems that caused code bases that excluded code for certain platforms to generate projects correctly.
Fixed a bug where not all assets would be removed from the disk cache in the asset registry when deleting a package containing multiple assets.
Fixed a rare crash involving releasing the AdjacenctIndexBuffer on Static Meshes.
Fixed inertial scroll not being cancelled when entering overscroll.
Fixed not being able to import FBX animations into camera anims.
Fixed measure tool calculating the wrong size.
Fixed crash when hot-reloading the Level Editor.
Fixed resetting cooldown decorator memory on reentering the same subtree.
Fixed infinite loop decorator hang.
Fixed cycles in blackboard's parent chain.
Fixed multiple nodes connected to special pins in behavior tree editor
Fixed box collision export for navmesh.
Fixed navigation path's string pulling.
Fixed crash in UEditorEngine::TeardownPlaySession.
Fixes for Simulate mode in blueprint component view.
Fixes inside FRecastRenderingSceneProxy to work with GetDynamicMeshElements correctly.
Fixed bug where blueprint node warning/error banner did not display if the message had multiple object parameters and the last one isn't a pin or node.
Fixed bug where sounds could be started by thumbnail worlds.
Fixed crash with ChildActor component due to renaming to an object name that is already used.
Fixed Doppler not working when showing debug information about playing sounds.
Fixed garbage collection issues with some playing sounds that are not referenced via an audio component.
Fixed crash in AGameMode::Restart if the Pawn is torn off (destroyed) during the call to PossessPawn.
Fixed crash in treeview with negative index.
Fixed null ptr crash in undoing camera group modification.
Fixed debug rendering for NavMesh collision geometry
Fixed freeze issue with AIMoveTo blueprint node.
Fixed compilation issues with disabled USE_EQS_DEBUGGER flag.
Fixed crash in EQSRenderingComponent.
Fixed EQS debug data for sorted EQS items (it's slower method to sort items but only active with USE_EQS_DEBUGGER flag).
Fixed rendering for paths (from path finding) while using GameplayDebugger (client/server too).
Fix for null ptr crash that can occur if ending a PIE session when slate widgets are active (viewport gets cleaned up before the widget).
Fix for LogVisualizer, to get rid of duplicated Actors on logs list.
Fixed order in which serializing text marks packages for requiring localization. Resolves issue where some text was not being gathered from assets for localization.
Fixed improper iteration over directories when trying to enumerate which cultures have localization data.
Fixed an issue with passing a gather text configuration file path featuring spaces when running the GatherText commandlet.
Fixed text test that was incorrectly comparing the number of code units in a string of one type to the number of code points in another type.
Fixed case insensitive source string comparison when checking if multiple UTextProperty are identical.
Fixed locales/cultures that don't have base language localization data being omitted from region & language drop downs.
Fixed GatherTextFromSource commandlet gathering text in its escaped form - it now unescapes gathered text. Fixed escape/unescape handling in PO file import/export.
Fixed escaping of double quotes when storing manifest/archive strings from their data structures into a JSON object. The manifest/archive JSON serializers already properly escape text consistently before writing to file.
Fixed FUProjectDictionary incorrectly treating projects as foreign when non-foreign projects are specified with a relative path.
Fixed it so scalability settings are correctly written to the user config file when saving settings, and are properly reset to in memory values when reset.
Fixed several issues that occurred when reattaching components while changing graphics quality settings.
Fixed a bug where FText could become corrupted while editing assets.