Unreal Engine 4.3 includes greatly improved mobile support, awesome new rendering features, improved Blueprint workflows, and strides toward an excellent experience on Mac and laptops. Be sure to check out the new World Composition tools, spline features, and the preview of Paper2D, our 2D toolset! Today we’re also shipping SpeedTree 7 support, our work on Metal API for iOS 8 to date, and new Oculus Rift features such as time warping.
We’d like to extend our gratitude to all of the amazing developers who contributed code to the upcoming 4.3 release.
3dluvr, abergmeier, alixSilkin, Allegorithmic, bigzer, Chris-Bond, CoherentUE4, Rama, Ixiguis, mpolaczyk, pzurita, raziel2001au, robert-wallis, RushPL, solid-angle, stephenwhittle, thk123, timdonkssbc100, vakathil, Xaklse, Zoubi
New Features
Rendering
New: Movable Skylight
Skylights can now support the Movable mobility setting!
- This type of light supports dynamic scene changes.
- It gets shadowing from SSAO and a new feature called Distance Field AO.
New: Distance Field Ambient Occlusion
This feature computes AO from Signed Distance Fields which are used to represent the static meshes in the scene. The static meshes can be moved at runtime and the AO will update.
Original:
With Distance Field AO:
New: Skylight Global Illumination
Lightmass now computes global illumination for Stationary and Static skylights!
Original:
With Global Illumination:
- You can use Indirect Lighting Intensity on the sky light to control how bright the bounce lighting is.
- Just like all Stationary lights, if you change the color or intensity at runtime, it only applies to the direct lighting, since the bounce lighting is baked into the lightmap.
New: Translucency Shadowing from Stationary Lights
Stationary lights now properly shadow translucent materials!
Original:
Static Shadowing for Translucency:
- This is achieved by computing a shadow depth map in Lightmass covering the light's influence.
2D Game Tools Preview
The Paper2D plugin is now enabled by default in the engine, so it will be usable in content-only games in 4.3.
A 2D side scroller game template has been added as well! (BP and C++ variations)
Editor and documentation now work to properly message the state of Paper2D in 4.3
- Sprites and Flipbooks are ‘Beta’
- 2D collision/physics, terrain splines, atlasing groups, and tile maps are ‘Experimental’ (hidden behind enable flags where possible)
AI Tools: Behavior Tree
Blackboard Editing & Debugging in the Behavior Tree Editor
You can now edit and debug Blackboard entries inside the Behavior Tree Editor. You can access the Blackboard Editor by switching to the new ‘Blackboard’ mode:
You can then edit the blackboard in a similar way to Blueprint variables by adding keys:
You can also remove and rename keys with hotkeys & the right-click context menu.
When debugging, blackboard values are displayed for inspection. As before you can still switch between current and saved (previous) debugging contexts:
The blackboard is also displayed for quick reference in the behaviour tree mode:
New: “New Node” Shortcuts
The Behavior Tree Editor has had some new buttons added to its toolbar, allowing users to quickly create new Blueprint node types for tasks, decorators and services:
- Blueprints for these new nodes are created in the location of the currently edited behavior tree. If there is more than one potential class to create a node type from, then the button will appear with a dropdown to allow class selection.
New: Oculus Rift Upgrade
- Upgraded to new Oculus SDK (0.3.3-pre.1 SDK), with latest goodies!
- Oculus Rift DK2 supported out of the box, with full motion tracking
- New direct rendering path and time-warping, which significantly reduces latency on the device.
- Check out our new “Couch Knights” sample, created to show off the new Oculus Rift DK2’s capabilities
New: SpeedTree 7 Supported
You can now import SpeedTree assets into Unreal Engine!
SpeedTree trees and plants will all include light map UVs, dynamic LOD and wind effects. Those who download the new version will have several options:
- The SpeedTree for Unreal Engine 4 Subscription Modeler, available on Windows and Mac OS X at $19 USD per month. No royalties, per-title or per-platform fees apply.
- Trees for sale – seasonal variations, various triangle counts etc.
- Three free sample trees that can be dropped into any UE 4.3 project.
- Everything will be available at the SpeedTree Website.
Large World Support
New: World Composition
You can create sub-levels and position them anywhere on this map. They will be loaded automatically in the game.
- Turn on Enable World Composition in your level’s World Settings to activate this (the level must be saved to enable this feature).
- You can use the Minimap button on the Level Browser toolbar to access a world map.
- New documentation and Sample Games will be coming later.
- This feature replaces the experimental World Browser feature in earlier builds.
Level Browser Redesign
The Level Browser (accessed through the Window menu) has seen a significant update in 4.3.
- All the file operations (create new, save, save as, add, merge, etc) were moved from context menu into the toolbar button Levels.
- Status bar has new view options: Display actor count for each level and Display full package names.
- Less used operations like level transformations, Streaming Volumes management, and others can be done though Level Details panel which can be summoned by clicking a Details button on the Levels panel’s toolbar. Level Details is independent from the regular Details panel, that means it will show only selected level details. It also supports multi-selection.
- In PIE the Levels panel will show simulation status of each level, hidden levels will have their visibility “eye” closed and unloaded levels will have their name color in gray.
- When you drag a level into blueprint graph it will create GetStreamingLevel node for that level.
- If something is missing or work incorrectly in a renewed Levels tool you can switch back to old Levels tool by using –oldlevels commandline parameter.
New: Render To Texture Blueprint
New texture baking features available with the ‘RenderToTexture_LevelBP’ Blueprint! In the Engine\Content\ArtTools\ directory now houses a blueprint named the RenderToTexture_LevelBP. This blueprint offers a few different baking options.
Some quick notes on usage:
- RenderToTexture_LevelBP must be located at 0,0,0 in the world
- You must have a player start in the world at 0,0,0 with 0 for rotation as well otherwise the camera will get the editor viewport rotation.
Render Unwrapped Material to Textures
This unwraps with a companion material function using a vertex shader. This can be useful if you want to bake out the result of something like World Aligned Textures to cut down on cost or if you for some reason needed to capture the engine static lightmap of a mesh to do something custom with it.
Render 3D Imposter Sprites
Imposters are like sprites that are represented from all view angles so they can rotate and light in 3D.
Example Imposters:
One of the meshes near the middle is a real static mesh, the rest are imposters.
It also supports a mode called "Single Rotation Axis" which is meant to represent a billboard for a distant object on the horizon. What that does is only rotate the mesh around Z so that you get either more frames or more resolution than a full imposter.
This is a test scene using the Single Rotation axis imposters. Here the material was set to randomly rotate the position of the 'flipbook' by using worldposition, giving each a unique rotation.
Render a Per Object Shadow Depth Texture
This mode bakes a depth map from a specified light view and can be used to do a custom Per-Object shadow within a material. This example tree material is unlit and the shadow is provided from a depth texture. This was used on the Apple Zen demo.
Flipbook Animations
This mode is very similar to the Imposter sprite function. It uses a series of mesh rotations but this time they are specified by user input rather than pre-set by the blueprint.
It renders out the desired image types as a flipbook texture which can be animated on a sprite anywhere in the engine such as a particle effect.
There is also the option to pass an "Animation Phase" parameter to the target mesh in order to render a vertex shader animation to a flipbook.
New: Credits (Thank you!)
Past and future contributors are immortalized in Unreal Editor with our new Credits screen. We can’t thank you enough!”
You can access the new Credits screen through the editor’s Help -> Credits menu.
Blueprints
New: Spline and Spline Mesh Components
We now have the ability to edit Splines directly in the world! By simply adding a Spline Component to your Blueprint and selecting an instance of that Blueprint, users gain access to editing splines within their levels.
You can also use a Spline Mesh Component to deform a StaticMesh along a spline. You can define a start and end location and tangent in the Details panel (or by calling functions).
Click on keys to select them.
- Use the translate widget to move them around (the ‘tangents’ are automatically updated by default).
- Alt-drag with a key selected to add a new one.
If you want more control:
- Use the rotate widget to rotate the tangents.
- Use the scale widget to extend them.
You can also right-click on a key to get a context menu:
If you want, you can also construct the spline inside your Construction Script using the AddSplineWorldPoint and SetSplineWorldPoints functions. If a spline is constructed inside the Construction Script in this way, the ‘Allow Spline Editing Per Instance’ flag should be turned off in the Blueprint defaults.
New: Reroute Nodes
Add Reroute Node... now shows up in the context menu when you click-drag off of a pin; you can make connections to a reroute pin like normal, move it around (by dragging near it or ctrl + dragging on it), and remove it by Alt + Clicking.
You can also put comments on a reroute node by double-clicking on the draggable area below, or hitting F2.
New: Split Struct Pins
Users now have the ability to split a struct pin directly in place on the node instead of having to insert the Make and Break nodes.
This works for both input and output pins of any struct, and if the split struct also contains structs, they can also be expanded. This is currently an Experimental feature and must be enabled in the Experimental section of the Editor Preferences.
New: Expand Enum for Output Pins
You can now enable expanded Enumeration execution pins for Blueprint Nodes. This has existed for input pins for sometime now, but now can be enabled for output execution pins:
- Now you can just create an enum, have one as an output parameter for your function, and mark that output parameter it as ExpandEnumAsExecs in the UFunction metadata (C++).
New: Data and Curve Table Support
Evaluate Curve Table Row will return you the output value for Row Name at XY:
Get Data Table Row will return you a Row struct that can be broken into its individual component variables:
New: Blueprints Control of Anim Trails
You can now control Anim Trail emitters in Blueprint (and code) without anim notifies.
- The only restriction with this is that the particle system component must be the child of the skeletal mesh component from which you are sampling socket locations.
- The Begin Trails function of the component will start all Anim Trail emitters in the Particle System.
- The EndTrails function of the component will end all Anim Trail emitters in the Particle System.
- You can also alter the trails properties while it is running. Here we alter the width each tick using the game time.
New: Global Blueprint Search
Find-in-Blueprints has been given a significant revamp to accommodate feature requests and should now be more robust and useful.
Searching should be more all-encompassing than ever before, finding: nodes, pins, pin values, graphs, variables, variable values, as well as searching animation graphs.
Searching is an asynchronous process, meaning it will not prevent you from using the editor as the search completes, you can also make multiple searches in different Blueprints at the same time.
Find-in-Blueprints now leverages the DDC for the searchable data - when Blueprints are updated their information is refreshed and when another user syncs that Blueprint the searchable data will be unreachable.
When Blueprints are not indexed in the system, it will inform you, as in the below image:
- Note: Level Blueprints are not fully supported, though you should be able to search your current level without a problem.
Scalability Updates
For 4.3 we’ve focused on editor performance and CPU usage of the editor
- To improve editor performance scalability settings are now auto-applied by measuring CPU and GPU performance at editor startup.
- Scalability settings may reduce the quality of some rendering settings and disable realtime preview in viewports to improve performance. You can read more about the scalability settings that can be applied here.
- You can disable this feature and change scalability settings manually in the editor via the Quick Settings menu in the level editor toolbar
- CPU Usage has been significantly reduced when the editor is minimized.
- For laptops running on battery power, the editor framerate is throttled to a maximum of 60 hz in order to preserve battery life
Static Mesh Editor
New: Customizable Static Mesh Collision
The Static Mesh editor now supports adding multiple collision primitives of differing types, allowing for the quick creation of a custom collision setup, and modifications to existing collision to fix any issues affecting gameplay.
This can be used to make it easier to shoot through or traverse more complex geometry, as well as place blockers when you do not want to user to be able to. For example:
The Static Mesh Editor now supports Capsule/Sphyl collision geometry too.
- It attempts to calculate the correct axis it should align itself with, along with the best fit for the mesh. For example:
- All the collision primitives can be selected with the mouse and moved, rotated, and scaled with the editor widget (Spacebar and W,E,R keys toggle manipulation type).
- Collision primitives can also be multi selected (Ctrl+LMB), focused (F key), duplicated (Alt+drag) and deleted (delete key) if they are no longer needed - all of which should be transactional.
Release Notes
Marketplace
Black Jack is made completely in Blueprint and is mobile ready!
Learning Resources
- In-Editor tutorials
- New: In-Editor tutorial screens for Paper2D: Sprites and Flipbooks
- New: SpeedTree documentation is included
- New: Math Expression Node documentation page
- New: Performance & Profiling Guide
- New: World Composition documentation page
- New: Matinee Track Reference
- New: Android Quick Start guide
- Updates & Improvements to Lighting documentation
- New: Lighting Quick Start Guide
- New: Distance Field AO Information & Video
- Updates & Improvements to Physics documentation
- PhAT
- Collision
- Walkable Slope
- Updates & Improvements to Animation documentation
- AnimNotifies & AnimTrails
- FABRIK
- Persona Animation Editor Modes
- Added written tutorial & video tutorial links to the in-editor tutorial home screen
- Introduction to Cascade Video Tutorial Series
- Introduction to UE4 Programming Video Tutorial Series
Unreal Engine Launcher
- New: Improved Layout: moved the top navigation elements to the sidebar and freed up space for the content display on the right.
- New: Introducing the Library: Clicking on the Library tab brings you to the new home for all your engines, projects, and downloaded content.
- New: Introducing the Vault: The vault contains all the items you have downloaded from the marketplace. You can quickly create new projects from the vault as needed. The vault allows you to easily remove or update vault items without worry of impacting projects you have already created.
- New: Support for Preview builds of the Editor
- Fixed: User should now see the newest download of an engine version instead of seeing older versions
- Fixed: Fixed an issue creating projects with the 4.3 Editor that could cause a crash
New Additions
Editor and Tools
- New: Credits! The editor now has a credits screen with everyone who has contributed from the community so far.
- New: Added low FPS detection to the editor.
- New: Property editor for default values in User Defined Structure.
- New: Character Movement Component: Movement input & external forces can now be applied during path following.
- New: Brush wireframe is now rendered stippled when behind objects when being moved.
- New: Added Supported Platforms settings to the editor.
- These provide a way to list the platforms your project is expected to run on.
- New: Add Code to Project wizard improvements:
- Improved the way you're notified whether a class with be Public or Private.
- Added support to create non-UObject classes (empty C++ classes, Slate widgets, and Slate style assets).
- The module header is now included relative to a known include path (to fix an issue creating classes inside sub-folders).
- New: Asset View now supports secondary sorting.
- New: The Packaging settings in the editor now lets you specify additional directories to stage.
- New: Pressing Alt+Shift+R will now bring up the reference viewer for any selected objects in the level editor and asset viewer.
- New: Added Edit Asset option to the Reference Viewer context menu.
- New: Added Randomly Select Seed Array functionality to Random seed settings in Cascade.
- New: Added the "local space cloth simulation" option in Skeletal Mesh Component.
- New: Added cloth visualizations for convex collision volumes.
- New: Added Editor-only functions to allow nodes to override their in-editor icon display.
- New: Brushes now have unique labels.
- New: Added Blueprint icon to show which nodes use Blueprint for their logic.
- New: Added a manager to queue and process My Project requests, and added a cool down. State is now polled.
- New: Deleting assets forces the Mode tab's Recently Placed list to be refreshed.
- New: Supports cloth blending between simulated positions and skinned positions.
- New: Supports to emit particles from simulating cloth vertices/surfaces.
- New: Revamped LOD panel for skeletal mesh to look like static mesh LOD.
- New: Auto-save improvements and performance tweaks:
- You are now able to restore asset files that have not yet been saved to disk as a .uasset file.
- New: Enable box selecting other kinds of actors in orthographic views (based on the bounds of any visible primitive components)
- New: Added drop shadow and scaling based on thumbnail tile size to IES lumens display to make it readable.
- New: Allowed non-interactive, in-editor tutorials to have multiple pages.
- New: Copy/pasting from a property matrix which does not have common pins no longer crashes.
- New: Raw and Unit Time Stats now display correctly if Unit Graph is not already enabled.
- New: Color picker now displays an error when renaming a theme the same as another.
- Fixed source control state to no longer be fetched for every content browser widget.
- Fixed the Settings editor to no longer relies on read-only state of ini files.
- Fixed grid lines to zoom correctly when switching to power of two in preferences.
- Fixed crash when accessing the localization settings more than once.
- Fixed crash when syncing 'root' directories from the content browser.
- Fixed crash when deleting then attempting to rename blackboard key.
- Fixed crash opening a new Behavior Tree.
- Fixed crash when importing .jpeg files.
- Fixed crash caused by the slow task progress dialog.
- Fixed static lighting on Blueprint mesh components.
- Fixed RescaleSimpleCollision so that ConvexElems position is updated when the build scale is increased (previously just scaled the verts).
- Fixed the "build paths" option in the editor.
- Fixed compiler error and minor optimization.
- Fixed up Content Browser source control state delegate to use shared pointer semantics.
- Fixed Behavior Tree diffs being backwards.
- Fixed landscape editor mode being disabled after undoing the creation of a landscape.
- Fixed the landscape dropdown in the landscape editor not updating to match the active landscape.
- Fixed crash when force-deleting a mesh used by foliage. Note: Still not a good idea!
- Fixed foliage placing on translucent and "no collision" meshes.
- Fixed typo of "Orthographic"
Persona Animation Editor
- New: Asset Picker now supports rename functionality.
- New: Added Tweak UI for Cloth physics properties in Mesh Details tab of Persona.
- Fixed animation import to detect and scale existing animation curves on import and reimport to avoid keys becoming inaccessible.
Behavior Trees
- New: Behavior Tree nodes are now categorized.
- New: Added 'new node' buttons to Behavior Tree Editor.
- New: Added new Behavior Tree icons.
- New: Added FRotator as new Behavior Tree blackboard type.
- New: Blackboards are now edited within the Behavior Tree Editor.
- New: Added improved Blackboard editor & replaced simple Blackboard debug view.
- New: Created unique icons for the Behavior Tree editor.
- New: Blackboard assets are now easier to create - via right-click menu in the Content Browser or from inside the Behavior Tree Editor.
- Fixed Behavior Tree nodes going pink after undo.
- Fixed Behavior Tree root nodes to now have the correct tooltip.
Scene Outliner
- New: Added functionality stop the double click events from propagating up to the parent widget.
- New: Scene Outliner folder expansion states are now saved.
- Changed Scene Outliner inactive selection state to be derived from the main selection state, rather than being hard-coded.
- Changed expansion states for outliner folders to now be stored in per-user temporary config files.
Static Mesh Editor
- New: Static mesh editor can now create Box/Sphyl and have multiple collision primitives, which can be manipulated.
- Fixed Sphere collision to apply BuildScale.
- Fixed Ctrl+W to duplicate the select physics body correctly.
Material Editor
- New: Any material nodes that have a preview which serves no purpose are now set to collapsed by default.
- Fixed the LandscapeLayerBlend material node when using non-weight blending. Previous content using LB_AlphaBlend will be automatically updated to use LB_WeightBlend, and LB_AlphaBlend now performs regular alpha blending for non-weight layers.
- Fixed a situation in which material expression node 'scene color' could return solid white.
- Introduced a new material compiler error “Only 'surface' material domain can use the scene color node"
Tiled Landscape
- New: Added option for weight-blended layers
- New: Added reimporting of a tiled landscape (heightmap, weightmaps). Reimporting options can be found in context menu of a loaded and selected levels.
Launcher
- New: Multiple projects can now be created from one 'app' and all get listed in My Projects section.
Slate
- New: Added SMultiLineEditableText and SMultiLineEditableTextBox.
- These should have feature parity with SEditableText and SEditableTextBox, however please note that they are still under development so may yet require API changes.
Blueprints
- New: SplineComponent and SplineMeshComponent now usable in Blueprints.
- Includes ability to edit SplineComponents in the level.
- New: Added a generic Array Shuffle to the Blueprint array lib.
- New: Added reroute nodes to help organize wires.
- 'Add Reroute Node...' shows up in the context menu when you click-drag off of a pin; you can make connections to a reroute pin like normal, move it around (by dragging near it or Ctrl + dragging on it), and remove it by Alt + Clicking.
- You can also put comments on a reroute node by double-clicking on the draggable area below, or hitting F2.
- New: Math expression node added to Blueprints (no longer "experimental"), where you can enter a textual math expression which in turn gets translated into a set of nodes.
- New: Find in Blueprints redone to provide better search results and multithreaded.
- New: User is now warned when a blueprint has hit an infinite loop, a dialog appears informing them which blueprint has caused the issue.
- New: On blueprint nodes, struct pins can be split in to their component elements by right clicking on the node.
- New: Blueprints can now request that certain components or actors be hidden in a scene capture. Thanks to community members Neo and bigzer.
- New: Added a check during Blueprint editor startup to determine if the current project is Blueprint or code based.
- New: Subtrees are now hidden when empty in Pin/Variable Type menus in the Blueprint editor Details tab.
- New: Will no longer mark a child blueprint dirty on load if it contains a component that's attached to a parent blueprint or native class component.
- Changed the way Unreal Engine 4 generates default names for newly created assets (interfaces, function libraries, macro libraries).
- Changed redundant UI refresh operations after compiling a Blueprint with one or more child Blueprints (reduced the overall Blueprint compile time).
- Fixed a crash when refreshing an interface during compile-on-load
- Fixed a crash when removing a variable from a parent class and then attempting to recreate the variable in a Blueprint based on that class.
- Fixed a crash when selecting instanced static mesh components in the Blueprint editor with instances added via construction script.
- Fixed "jittery" transforms when both parent and child nodes are selected in Components mode within the Blueprint editor.
Rendering
- New: Added VisualizeSSR show flag to allow visual and performance tuning for Screeen Space Reflections.
- New: Whole Scene Directional Shadow GPU optimization
- Uses depth bounds tests (if available) rather than the stencil. Saves approx 0.1ms of GPU on GTX780.
- New: Added r.RefractionQuality to control for low-perf device, especially Mobile Devices (Disabled by default for iOS, Android, HTML5).
- New: Speedtree v7.0 integration.
- New: ShowLayer command - can toggle the visibility of any meshes in a layer.
- New: Static and Stationary SkyLights now have one bounce of diffuse GI computed by Lightmass.
- New: Translucent materials are now shadowed from Stationary lights.
- New: Added MSAA support to the mobile rendering path.
- New: Added clear coat shading model.
- Changed order of refraction with translucency (non separate translucency is now refracted, can change look).
- Changed the default setting of the LensFlareIntensity property to be 0 (off) for better performance and a clean look out of the box , can be set to 1.0 if you want the old look.
- Changed default quality of screen space reflections to start lower for better performance. It can be changed in postprocess settings to be like before.
- Fixed issue where distortion does not work properly with translucenct objects.
- Fixed issue with ScreenSpaceAmbientOcclusion (was not applied any more).
- Fixed issue with Shadow Bias being exposed on Pointlight and Spotlights and has no effect, removed legacy value.
- Fixed issue where Owen material was very light.
- Fixed crash when using affectsindirectlight checkbox and not having LPV enabled.
- Fixed incorrect reflection capture filtering.
- Fixed SSR noise when temporal AA is off.
- Fixed transform of Canvas Material rendering for ES2 on devices.
- Fixed the Clamped Material node inputs to avoid negative colors, NaN and inconsistent shading. This can change the look of translucent materials that formerly relied on non physical color ranges. Too dark particles can be fixed using the emissive output.
Movable SkyLight
- New: Uses a new feature Distance Field Ambient Occlusion to provide occlusion from scene meshes which can change dynamically.
Gameplay and Framework
- New: Anim Trails can now be used via Blueprints. See Docs for details.
- New: Added font attribute to SErrorText widget.
- New: Navmesh library (Recast/Detour) moved to UE4 module, will be added to project automatically depending on bCompileRecast flag in target's build configuration
- New: Added crowd simulation based on Detour's crowds.
- Can be used by AIControllers with CrowdFollowingComponent (replaces PathFollowingComponent).
- Dupports custom velocity sampling patterns.
- Detailed per agent config.
- New: UBT XML configuration improvements:
- XSD driven IntelliSense.
- Defaults read from code (default XML file will be regenerated on UBT startup if is different than it should be).
- Configurable fields have to be now annotated with XmlConfig attributes.
- New: New feature that enables setting affinity profile per thread..
- New: Added FBox2D type.
- New: Allow TActorIteractor to take actor class to look for.
- New: Optimized ArrowComponent rendering .
- New: Added the ability to use unlit materials with Slate. Materials are usable on any brush type and there is a new brush type (FSlateMaterialBrush) for dynamic materials.
- New: CPU usage has been significantly reduced when the editor is minimized. Added a setting to also apply this reduction when the editor is not in the foreground but still could be visible.
- New: Support casting static shadows from foliage.
- Note: We still do not support static lighting or shadowing *of* foliage.
- New: Particles using the Skel Vert/Surf Location module can now inherit the color information from mesh vertices using the Inherit Vertex Color property.
- New: Stale shader compilation jobs are now removed from the compile queue. In many cases this should greatly reduce the number of shaders being compiled and improve material editor workflow.
- New: Windows Redistributable prerequisites for running UE4 games on Windows (Visual Studio and DirectX DLLs) are available into a standalone installer at Engine\Extras\Redist\en-us\UE4PrereqSetup.msi.
- New: Editor modules now have an 'API version' changelist number embedded into them by UnrealBuildTool for determining API compatibility. It is no longer necessary to include a custom VERSIONINFO section in Windows RC files.
- New: IDE project generation now works correctly for foreign projects created in the same root as the engine.
- New: FText's can be regenerated when the culture changes, rebuilding even concatenated FText's
- New: Added support for storing compressed & encrypted files in .pak files. Enabled by adding -compress or -encrypt to files in UnrealPak response file or by passing -compressed to UAT.
- New: Allow animation evaluation to be run as a graph task, spreading the load across worker threads.
- New: Add Content Browser buttons (find in, use from) to Animation Blueprint selector in skeletal mesh details panel.
- New: Added Blueprint events for montage blending out/ending.
- New: Allow editing of thumbnail info through details panel/property matrix.
- New: Functional Testing framework got a face-lift, lots of features and full compatibility with Unreal Frontend's Automation.
- New: A Max Threshold can now be specified for Passive Sound Mixes OEM keys can now be bound as FKeys A plugin has been added to allow Mod Tracker files (StreamTracker, ImpulseTracker, etc.) to be imported in to the editor and played back.
- New: Added side scroller template for code and blueprints that uses the experimental paper plugin.
- New: Spline Component visualizer improvements: tangents now editable, undo/redo support, and a right click context menu allows segment types to be defined (curve, linear, constant). Endpoints can optionally be specified as having no tangents (stationary).
- New: Added new methods to the Blueprint interface.
- New: Exposed Box Sweep to blueprint.
- New: Added Twist and Swing mode for motors.
- New: Exposed constraint limits and types to blueprint.
- New: Added default terminal velocity to project settings.
- New: Per poly skeletal mesh collision queries are now available.
- New: Exposed double sided flag to allow for scene queries on double sided geometry.
- New: Provided native device access from the RHI, useful for 3rd party plugins that wish to directly render using the underlying device. Currently only exposed for D3D11. Based on GitHub pull request 199 by CoherentUE4.
- New: Overlap / Touch notifications are now processed before blocking hit notifications during component movement.
- New: Make sure to abort overlap reporting if previous events mark the actor or component for destruction.
- Prevents incorrect overlaps reported in cases such as a fast moving projectile that explodes early in a sweep, and which should not report overlaps with objects later in the sweep.
- New: Exposed control over max simulation iterations and max simulation time step per frame for Character Movement Component.
- New: Automatically detect changes in position outside CharacterMovementComponent's normal updates and force floor updates when in walking mode.
- New: PhysicsVolume terminal velocity is only applied in the gravity direction (assumed to be down) in CharacterMovement falling mode.
- Previously the terminal velocity was limiting the overall magnitude of the velocity which was incorrect.
- Now it limits the contribution of acceleration. Initial velocities over terminal velocity are allowed, but no further acceleration is applied.
- New: Characters can now swim by default (bCanSwim = true on NavAgentProps).
- New: Improved physx penetration handling and improve reported normals when in penetration.
- New: Proxy Mesh tool now produces assets in a separate packages.
- New: Proxy Mesh and Merge Actors tool now use more consistent names for a produced assets (demolet naming conventions).
- New: Ensured that new Axis and Action Mappings are created with unique names, so that they're not grouped together
- New: Changed SoundWave Compression Quality so that it does not re-compress during interactive property changes and the new compression settings can be heard next time the sound is played
- New: Heavy work on more support for treating worlds as assets. Worlds will be managed in the content browser in the future.
- New: Many content browser perf improvements and code cleanup.
- New: Recast is a regular UE4 module now instead of a third party module.
- New: Vehicle wheel bodies no longer need to be set as kinematic inside PhAT. Leaving as default will automatically work
- New: Destructible mesh with particle effects now works with sub-stepping
- New: DLL exporting UShapeComponent. UPrimitiveComponent and some subclasses of UShapeComponent are already exported, so there is no reason UShapeComponent shouldn't be as well.
- New: The game viewport will now be properly returned from GetGameViewportWidget, even when in PIE in the editor viewport.
- New: Added a checkbox to toggle the display of the flatten preview grid on/off.
- New: Added dynamic scaling to the sprites in the Landscape ramp tool to stop them getting in the way on small ramps
- New: Prevented crash caused by a negative landscape streaming distance multiplier.
- New: Added options dialog for a MergeActors tool.
- New: Improved Foliage painting performance.
- New: Selecting a camera that has a pinned camera preview now highlights its preview.
- New: Created Blueprint category for new assets and filters.
- New: Tag dictionaries now load during module start up, from DefaultEngine.INI file and allow for multiple dictionaries.
- New: GameplayTag Customization so that tags can be edited in details panel
- Gameplay Tag Variables in blueprints can now have their default value set in the details panel.
- New: Added a flag to allow landscapes to cast two-sided shadows.
- New: Basic In App-Purchase support added.
- This is only available through programming at this time. Better support, with blueprint nodes, is incoming.
- Modified Unreal Engine Launcher installer so that some dependencies can be skipped.
- Changed MSAA settings to now be reduced or turned off for lower engine scalability levels.
- Changed foliage not receive decals by default, added checkbox to re-enable if the user wants.
- Changed Level Editor export functionality to now default to FBX rather than OBJ.
- Changed edit box population code in blend space editor so that numbers are no longer formatted.
- Improved Opus format so that it has unique identifier for UE4 specific usage.
- Fixed crash when foliage instances were placed on Blueprint-generated components.
- Fixed Particle System arrow components to no longer scale relative to their actor scale.
- Fixed locking a viewport to a camera actor to now correctly uses the camera's properties.
- Fixed Landscape Gizmo actor becoming attached to other actors.
- Fixed Landscape collision problems where the player was falling through.
- Fixed crash on opening Persona twice during same editor run.
- Fixed crash when undo/redo/undo adding a mesh to the level
- Fixed issue with show floor/sky not working after mode switch in Persona.
- Fixed an accounting error in ToggleBetweenPIEandSIE that caused StartMatch to never be called since the game mode thought there were no players, only spectators.
- Fixed bone name case issues on export.
- Fixed issues with state machine transition creation.
- Fixed root motion example in animation content map.
- Fixed an issue with the Distance CrossFade where no sound would play during fade out.
- Fixed issues with SoundWave memory and duplicated variables in some platforms.
- Fixed inconsistent expansion of input settings properties.
Lighting
- New: Added code to ensure that a spotlight's inner cone angle cannot be set greater than its outer cone angle.
Oculus
- New: The engine now supports Oculus Rift DK2s out of the box without the need to grab a separate SDK from Oculus directly.
- New: The Oculus Rift integration now supports LibOVR 0.3.3-pre.1, including direct rendering and timewarping.
Animation
- New: Group support for slot node for montage (WIP)
- As an effort to support multiple montages at a time, this allows to play a montage per group. You can assign group per slot.
- New: Renamed Blueprint function SetAnimClass to SetAnimInstance for consistency with native class name.
- New: Override previews now correctly show parent anim graph.
- New: New animation override example added to Content Examples.
- New: Timed particle effect now correctly disables the right emitters.
- New: Notify states correctly end when deleted from the timeline when in progress.
- New: Graph state decorations no longer show in small preview tooltips.
- New: Animations can now safely be imported with a lower frame count without breaking curves.
- New: Animation graphs now correctly remove subgraphs inside states and state machines.
- New: Branching points fixed to be movable in a montage.
Debugging
- New: If an assertion fails in code that is routed by Blueprints, you will now see a Blueprint call stack in addition to the native callstack to help in tracking down the crash.
LiveEditor Plugin
- New: Added support for editing Numeric and Object properties nested within Arrays.
- New: Objects that are spawned after a Remote LiveEdit session has begun will now also be Edited.
Paper 2D
- New: Added a Paper2D Side Scroller Template (with BP and C++ variants)!
- New: Editor and documentation work to properly message the state of Paper2D in 4.3.
- Overall Paper2D in 4.3 is an considered an 'Beta Preview': While not considered production-ready, it is a step beyond 'experimental' and is being provided as a preview of things to come.
- Sprites and Flipbooks are considered beta.
- 2D collision/physics, terrain splines, atlasing groups, and tile maps are experimental (hidden behind enable flags where possible).
- New: General polish pass and reorganization on the Sprite Editor.
- Added 'Source Region' edit mode, allowing quick selection of a region of a larger sprite sheet.
- Added 'Extract sprites' command to the Content Browser context menu for Textures, which identifies all disjoint sprites in a sprite sheet and creates separate assets for them
- Added 'mesh edges' preview mode for use when geometry editing.
- Added display of sprite render bounds extents to viewport in sprite editor.
- New: First real version of a Flipbook Editor.
- General polish pass and reorganization.
- Context menu to add/insert/delete frames.
- Drag-dropping sprites and flipbooks onto the timeline will insert frames.
- New: Made it easier to create materials for use with Paper2D sprites.
- ○Added SpriteTextureSampler material expression node as shorthand for Texture2D Param named 'SpriteTexture.'
- New: Add experimental support for a spline-based 2D terrain tool.
- Terrain coverage rules apply different sprites based on slope angle, which are deformed to match the spline.
- Added temporary option to avoid collapsing unnecessary vertices when triangulating a sprite's geometry.
- New: Added PixelsPerUnrealUnit to move away from a 1:1 relationship between pixels and Unreal Units (uu).
- You can configure the default value for new sprites as a project-wide setting in Project..Paper2D .
- New: Added a number of playback controls to UPaperFlipbookComponent (cribbing from UTimelineComponent).
- New: Added sprite source rect edit mode.
- New: Added extract sprites to texture context menu.
- New: Added accurate component bounds for flipbooks.
- New: Allow newly created empty sprites automatically adjust their dimensions when the source texture is first set.
- New: Marked UPaperSprite UBodySetup to use simple as complex, allowing complex raycasts (such as touch/cursor clicks) to succeed on 3D sprite collision.
- New: Relaxed restrictions on JSON "app" tag to allow importing sprite sheets exported from tools other than Flash.
- New: Added additional default sprite material permutations.
- New: Added class/asset type icons and stub documentation for sprite and flipbook editors.
- New: Thumbnail previews of flipbooks with no frames now show the background and a warning, instead of blackness.
- Fixed bug in UPaperRenderComponent::GetSocketTransform that would cause components attached to a sprite to behave as if they weren't attached.
- Fixed typo in 3D convex hull collision generation for sprites that generates invalid shapes and can cause cooking to fail.
- Fixed possible load order assert in Paper2D.
- Fixed undo problems with Paper2D due to missing RF_Transactional flag.
- Fixed intermittent corruption issue when converting old sprites on load due to async texture data creation by blocking.
- Fixed a rendering issue when editing brand new flipbooks where the time accumulator would go to infinity due to a zero sum time.
- Fixed bug where the component displaying the 'Show Src Tex' view didn't refresh when Source Texture was modified.
- Fixed crash when creating a blueprint from a placed flipbook or sprite actor using button in the details panel.
- Fixed UPaperSprite::SpriteColor not taking effect.
- Fixed flipbook components not rendering.
- Fixed tile map actors not rendering.
- Fixed sprite render bounds bug that could result in a box with Min > Max
Physics
- New: Added initial experimental integration of Box2D 2.3.1, and various associated changes to enable 2D physics in the engine.
- This is a totally unsupported and undocumented prototype, exercise great caution and do not use in production.
- Collision detection and response (including Unreal collision channels/filtering), simulation, and ray casts are implemented.
- Non-zero extent queries, sweep tests, and overlap tests are not implemented yet.
- New: Cleaned up various collision routines, unifying common paths where possible and reducing/consolidating PhysX dependencies where possible.
- New: Generalized debug text for FBodyInstance to provide the associated asset for any kind of component instead of just UStaticMeshComponent.
- Various internal sweep/overlap/query helper methods (Geom*) now take Unreal types instead of being PhysX-specific.
World Browser
- New: When generating LOD levels - landscape actors use maximum LOD level for exporting into a raw mesh and no simplification is performed for them.
- New: LOD levels generator now creates landscape static meshes with normal maps.
- New: Generated assets for LOD levels now stored inside LOD map package.
- Discovering streaming levels now uses long package name instead of short name.
- Added LOD information to "stat levels" console command, also fixed several issues with it.
- LOD levels does not replicate visibility state to server.
- Added rotation to a simulation view position indicator. Changed world bounds color from red to yellow.
Live Streaming Support for Editor and Games (WIP)
- New: Game live streaming
- Allows general support for live internet streaming of game video and audio
- Web cam video feed can be overlaid onto game viewports automatically
- New 'Broadcast' Blueprint function library allows you to easily start broadcasting from your game
- New IGameLiveStreaming API that allows you to start broadcasting through C++
- New: Editor live streaming
- The editor UI now displays a "broadcast" button automatically when a live streaming service is available
- Broadcasting of all desktop editor windows is supported (configured in preferences).
- If you have a web cam, video will be displayed automatically while broadcasting in a new editor window.
- New "Live Streaming" editor preference tab with many new settings for configuring broadcasting.
- New IEditorLiveStreaming API that lets you control editor broadcasting directly, if needed.
- New: Added new 'Broadcast.Start' and 'Broadcast.Stop' console commands
- These allow you to easily test live streaming in games without writing UI code
- Built-in help is available for these new commands
- New: To implement a live streaming plugin:
- Inherit from the new ILiveStreamingService interface.
- Register your "LiveStreaming" feature with the IModularFeatures system.
FBX
- New: Importing bind pose issue : Now if it fails on importing bind pose, it will try recreate it. This is very useful if the bind pose relative matrices do not match.
- New: Added convert scene option : added convert scene option for blender.
- FBX files exported from blender do not have correct scene data. It does not work if we convert.
Audio
- New: NGS2 audio panning supported.
- New: Added some detailed warnings for NaN, INF, or unreasonably large or small values in XAudio.
Platforms
- New: Added -SearchDir=PathToSomething optional parameter to BuildThirdPartyLibs automation script, allowing it be used for TPS software in a plugin or other non-standard location.
- New: Track and reset the key window when using the OS X open/save dialog otherwise it will steal focus and not return it.
- New: Hid the cursor if the UE4 application is in the foreground, so it does not disappear when working with another application.
- New: Disabled use of glMapBuffer & glLabelObjectEXT when using a multi-threaded OpenGL context on OS X for marginal performance gains.
- New: Enabled PLATFORM_ENABLE_VECTORINTRINSICS on Mac so we use SSE instructions, as all Macs have this instruction set.
- New: Pool the dynamic mesh builder's vertex and index buffers to avoid performance problems under OS X in very dense projects.
- New: Use -rpath to link dylibs via @rpath/
.dylib and therefore make it easier to share and/or package .dylibs into Mac apps. - New: Improvements to LLDB data formatters so that references & pointers to container classes show children, make the FName & FString summary strings show for pointers too and use the object name for the summary of a UObject.
- New: Use WindowedFullscreen mode on OS X when enabling fullscreen via Alt+Enter as that scales the window to the monitor size which is all we currently support.
- ‘Proper' fullscreen mode requires an explicit CGL back-buffer size and mouse<->display coordinate conversions that we don't have code for yet.
- New: Prevented the high-precision mouse mode from revealing the main menu bar and dock when used in fullscreen mode on OS X.
- New: Stopped tooltips & other windows initially appearing stretched & distorted on OS X.
- New: On Mac the Edit->Editor preferences menu item was moved to the app menu in menu bar; Help->About Unreal Engine and File->Exit items were removed as they duplicated items in the app menu.
- New: Greatly improved Xcode project indexing times.
- Fixed opening functions in the code view using Xcode 5.1.1 on OS X.
- Fixed use of AssetTool’s diff command on OS X, making it possible to find and launch application bundles by name.
- Fixed use of OpenGL sync objects across different contexts - they must be flushed to the GPU before attempting to wait on them on a different context.
- Fixed some bugs with GL_TIMESTAMP emulation on the Mac and made it opt-in with the -EnableMacGPUTimestamp command-line flag since it still crashes some drivers.
Mac
- New: Added deprecation macro support for OS X.
- Update the RadioEffectUnit AU component to use the newer AUPlugIn API, not the deprecated ComponentManager API.
- Update AVIWriter use an FEvent to wait for [AVAssetWriter finishWritingWithCompletionHandler:] to complete rather than using the deprecated finishWriting version.
- New: Respect Xcode's compiler options so other compilers may be used & minimally support the analyze feature.
- Parse the compiler selected in Xcode & find the Xcode plugin which contains the executable to run when it is not the default.
- When the analyze option is enabled (either standalone or as a build setting) we need to pass through the analyze clang flag.
- Pass in the Xcode max. parallel build tasks default to UBT as an environment variable rather than just assuming we want to use half the CPUs.
Playstation 4
- New: PS4 now supports VS 2013.
- New: Positional Audio using libaudio3d.
- Fixed up the packaging path to always be in the project, not Engine, and Shipping will archive the .pkg properly.
Xbox One
- New: Updated to XDK June 2014 QFE 1
Android
- New: The FOnlineAchievementsGooglePlay::QueryAchievements function now works on Android
- New: Changed default Android depth buffer precision to 24 bit and added Android Platform Setting to choose preference.
- New: Allow portrait-only orientations on Android tablets, but force landscape on devices with naturally landscape output (NVidia Shield, Google TV, Kindle Fire TV, Ouya).
- New: Install batch file for Android APK generated by packaging now takes an optional device serial number to pass to ADB.
- New: The engine now choses a better EGL config at startup, which fixes performance issues on newer Android devices.
- New: Improved error handling in Android install batch file (with some output giving suggestions).
- New: Added Android stack walking displaying function signatures. The addr2line tool can be used offline with the address displayed to get the exact source file and line number.
- Fixed a crash on Android devices that don't support floating point render targets.
- Fixed missing text in sample games on Android devices without support for half float textures.
iOS
- New: Deploy from Windows to iOS. (Content only projects, No C++ projects)
- New: Distortion rendering for iOS.
- New: Metal API support (if you compile with Xcode 6 beta).
- Metal is not enabled by default yet, but you can enable this in your game’s Project Settings!
- New: Addition of default movie for playback on iOS.
- New: Tapjoy plug-in for iOS.
- New: Updated to new PVRTexTool, which would be slower by default. Added a quality setting to Project Settings in the new Cooker section (0 is fastest, 4 is slowest).
- New: Added a Blueprint node for calibrating motion. Implemented for iOS devices.
- New: Addition of splash screen on iOS staying up until first render.
- Improved the four-finger-console in iOS (properly saves/loads the history and now will reorder commands to always put the most recently used first).
HTML5
- New: Updates to HTML5 to allow it to be used from Launch On and File/Package from a GitHub build.
- New: Cooking on the fly for HTML5 - Mostly functional.
- Various fixes and editor workflow improvements for HTML5.
- Fixes for HTTP transport issues.
Networking
- New: Support for asynchronous loading of network objects.
- New: UBT modifications to allow third party frameworks that needs assets deployed.
- New: Increased precision of replicated FRotator's.
- New: Improvements to overall network guid management.
- New: Improvements to sub-object network guid management.
- New: Relax the check that will disconnect clients that are spamming the server.
- New: Network profiler improvements.
- Fixed memory leak that would occur with network guids every time a seamless travel occurred.
Known Issues
- Code Samples downloaded from the Marketplace will fail to deploy to iOS unless spaces are removed in the project name
- Projects will fail to package for Xbox One if there are spaces in the file path
- Separately downloaded ShooterGames are unable to connect unless the ProjectID in Config/DefaultGame.ini is the same. Players will connect correctly if using the same distributed build.
- Menu windows don’t open when “enable window animations” option is enabled via Editor Preferences. Workaround: set bEnableWindowAnimations to false under Engine\Config\BaseEditorUserSettings.
API Update Notes
Editor and Tools
- New: Added AddForce to the CharacterMovementComponent.
- New: Added new class metadata Experimental and EarlyAccessPreview, which will trigger a warning section in the actor details panel.
- New: Added CanCheckIn() to ISourceControlProvider.
- New: Editor mode tools refactor to allow multiple FEditorModeTools instances
- New: Deprecated API still exists and works to some degree, but please update your code as this will be removed in the next release.
- New: GEditorModeTools has been renamed to GLevelEditorModeTools to signify that it applies only to the level editor modes.
- New: Mode registration and creation is now handled by FEditorModeRegistry. Modes are no longer registered with an instance of the mode, instead with a mode factory that is able to create a new mode of that type. Please update any usage of deprecated APIs to use FEditorModeRegistry.
- New: Editor modes now operate on FEditorViewportClients rather than FLevelEditorViewportClients.
- New: All existing UMG assets should be abandoned, no upgrade path is provided for them.
- New: Materials with LandscapeLayerBlend material nodes using the LB_AlphaBlend blending mode will be automatically updated to LB_WeightBlend, which more accurately describes the weight-based blending that is occurring. There is a new LB_AlphaBlend which performs actual alpha blending when wanted, but LB_WeightBlend should be used for cases where the previous blending behavior is desired.
- New: Added PlatformInfo to DesktopPlatform and improved the editors Supported Platform UI.
- New: Added a comment explaining why CachedAutoWrapTextWidth was cached in OnPaint() rather than Tick().
- New: Added the concept of a primary asset editor to the asset toolkit manager.
- New: Re-added support for custom categories in the Project Browser.
- New: Removed all animation classes from EnginePrivate.h and edited their files to include only their dependencies.
- New: Changed "Graph is linked to object(s) in external map" dialog to have a single "OK" button.
- New: GC TokenIndex is now tracked in non-shipping builds to easily identify its origin.
- New: Added new BlueprintCategory property to UBlueprints, use this to categorize your behaviour tree nodes in the right-click palette menu.
- New: Added option to TriangulatePoly to avoid discarding colinear points (useful when subdividing something that will later be deformed and need to retain specified detail, etc...)
- New: Created a base class SCommonEditorViewportToolbarBase with common Options, View, Show, TransformBar, etc... sections for other in-viewport editor toolbars to extend from
- New: Added UFactory::GetDefaultNewAssetName to allow customization of asset name generation during creation
- New: Added source control checkout or add when creating a new rich tooltip excerpt via the 'create' link
- New: Added UFactory::CanCreateNew and make bCreateNew a protected member
- New: Added ENGINE_API to FFindFloorResult & extra bConstrainToPlane condition to UCharacterMovementComponent::DoJump().
- New: CharacterMovementComponent: Fixed bug with water raycasts using incorrect bounds dimensions.
- New: CharacterMovementComponent: Fixed glitches with based-movement on physics objects (no longer lags a frame behind).
- New: Exposed Controller::LineOfSightTo() to Blueprint.
- Changed AddMomentum to AddImpulse in the Character Movement Component.
- Fixed the Content Browser so it now refreshes when package dirty state is updated.
- Fixed the move/save pivot options for brushes to now only be available for ortho viewports.
- Fixed GCycleStatsShouldEmitNamedEvents so it now enables/disables correctly.
- Fixed Play In Editor in New Window to respect resolution request if r.FullScreen is 1.
- Fixed “undo then redo” on duplicated scaled geometry to no longer result in a brush at the default scale.
- Removed bogus MapCheck_Message_WorldTraceBlocked message.
- Removed bogus method PostScriptCompile that is never called.
Landscape
- New: Added RecreateLandscapeCollision command to recreate all landscape collision component.
Blueprint
- New: UCanvas now has Blueprint API.
Gameplay and Framework
- New: Significant Changes to Engine Headers
- Engine.h has had lots of headers removed to reduce game compile times. We have tried to only remove classes that are unlikely to be used by a game project, but if you see compile errors, you may need to include additional headers.
- Slate.h no longer included by Engine.h, so if you are using Slate, you will need to include yourself.
- EnginePrivate.h is now actually private to Engine module and should not be used externally
- New: "Gameplay Tags" have undergone a large refactor in API and data storage that alter how they behave.
- New: Added the ability to customize any low level UProperty type. The IPropertyTypeCustomization interface replaces the IStructCustomization interface. All customization functionality related specifically to structs has been deprecated but will still continue to function for this build.
- New: Within *.Build.CS files, UEThirdPartyDirectory is now obsolete and should be replaced with UEThirdPartySourceDirectory. An error message will appear when attempting to build if this is not heeded.
- New: Add ENGINE_API to UBodySetup::GetPhysMaterial().
- New: Optimized FBox::TransformBy()
- New: Added "IsWalking" helper to CharacterMovementComponent.
- Equivalent to IsMovingOnGround()
- New: Tags are no longer explicitly FNames, but instead FGameplayTags
- New: FGameplayTagContainer only stores "leaf-most" tags instead of every tag in a hierarchy. As an example, pre-refactor if a user specified a container to hold the tag "Root.Child.Leaf," the container would actually have "Root," "Root.Child," and "Root.Child.Leaf" within it as separate tags. This caused logical problems during certain types of comparisons. The container in this example will now explicitly only hold the tag "Root.Child.Leaf" and none of the parent tags. The API has changed accordingly to allow queries against tags with or without their parents included.
- New: Gameplay tags are now required to be located in existing data-driven dictionaries and cannot be individually created in code on the fly. Code can request a tag from the dictionary, but not explicitly create a tag by itself. This change allows for verification and ensures that tags used by code are also visible in editor.
- New: Split non-EdGraph.h types out of EdGraph.cpp into individual files.
- New: Change UKismetSystemLibrary::GetDisplayName to use UActorComponent::GetReadableName on components.
- New: Added a helper function GetSimulationTimeStep(float RemainingTime, int32 Iterations) that computes the timestep given the total remaining time and current iteration.
- During the final iteration, if there is not enough time within the time step limit, all remaining time is used and a warning is logged.
- New: Added streamed audio chunk storage for runtime streaming or from DDC in editor.
- New: Added blueprint exposed helper functions for interacting with tags/containers in BlueprintGameplayTagLibrary.
- New: In Default Engine.ini declare the section [GameplayTags] and then add tag tables to GameplayTagTableList .
- For Example: +GameplayTagTableList=/Game/DataTables/GameplayTagTable.GameplayTagTable.
- New: Changed Gameplay Tag Pin to now only allows single select.
- New: The list of enabled plugins is now stored in each game's .uproject file. The EnabledPlugins list in the engine config files is no longer used.
- Game plugins are now enabled by default.
- To enable an engine plugin, use the plugins window in the editor or manually edit the plugin list in your game's .uproject file:
- "Plugins": [ { "Name": "LiveEditor", "Enabled": "true" } ]
- To make an engine plugin enabled by default, set "EnabledByDefault": "true" in the plugin's .uplugin descriptor.
- New: The "Packaging" settings in the editor now store the "additional directories to cook" relative to your project Content directory.
- If you are using this feature, then you'll need to update your paths.
- New: All of non-navigation AI code has been moved to a separate module, AIModule
- May require including some headers in code using engine-level AI classes
- New: World Browser was removed from Experimental section and now enabled by default. It replaces old Levels Browser. Old Levels Browser can still be activated using -oldlevels startup parameter. World Browser views were separated into three independent windows, each window can be summoned from a Levels Browser toolbar. World Browser managed worlds can now be toggled on through WorldSettings -> bEnableWorldComposition. Once enabled persistent level will be treated as a world root. No more '?worldcompistion' parameter workarounds. 'Open World' command was removed, all levels saved with world composition option can be opened through 'Open Level' command. Added bEnableWorldOriginRebasing parameter to WorldSettings, which controls whether world origin shifting should be used.
- New: FString::IsNumeric() now accepts a leading '+' in numeric strings.
- New: Made TMap::RemoveAndCopyValue and TMap::FindAndRemoveChecked move the value out instead of copying as an optimisation.
- New: Made FText movable
- New: Swap() is now implemented in terms of moves rather than copies by default.
- New: Renamed variable UPrimitiveComponent::CanBeCharacterBase to CanCharacterStepUpOn, and UPrimitiveComponent::CanBeBaseForCharacter() to CanCharacterStepUp().
- Made UCharacterMovementComponent::StepUp() check the surface it lands on with CanStepUp(), and reject if false and trying to step higher.
- New: Level Browser can now summon details panel for a selected streaming levels. Details panel can be used for managing level transformations, streaming volumes and other streaming settings.
- New: Renamed FStatusMessageContext to FScopedSlowTask which describes its purpose much more clearly.
- New: CharacterMovementComponent: Exposed CalcVelocity(), and GetMaxJumpHeight() to blueprints.
- New: Removed inner worlds processing from level streaming.
- New: InstancedStaticMesh/Foliage now stores relative to component transformations in per instance data.
- New: Changed OVERRIDE and FINAL macros to keywords override and final. The usage of macros is now deprecated.
- New: Changed checkAtCompileTime into static_assert macro. The usage of checkAtCompileTime is now deprecated.
- New: Removed DependsOn from the code. Now the DependsOn usage is forbidden -- instead user have to use proper #include..
- New: Removed landscape/foliage headers from Engine.h, if you reference landscape or foliage classes in code you will need to add the appropriate includes.
- New: Added support for touch in Puzzle template.
- New: Added file to enable creation of puzzle projects from template.
- New: Re-factored folder structure for game templates. Now use Public and Private and folders.
- New: Added code to ensure OnlineBlueprintSupport is loaded during the LoadStartupCoreModules to ensure BP only projects that have online functionality work correctly.
- New: Deprecated MovementComponent functions and variables related to speed modifiers.
- Old implementations and uses of these functions should use GetMaxSpeed() and GetMaxAcceleration() instead, and apply the multiplier internally in their implementations or by changing the base values. The old functions are no longer used by engine code and only remain to maintain compilation and provide the deprecation message.
- Deprecated functions UMovementComponent::GetMaxSpeedModifier(), UMovementComponent::GetModifiedMaxSpeed(), UCharacterMovementComponent::GetModifiedMaxAcceleration()
- Deprecated variable UCharacterMovementComponent::CrouchedSpeedMultiplier.
- Added MaxWalkSpeedCrouched - max walk speed when crouched. For older content, the initial value will be MaxWalkSpeed * CrouchedSpeedMultiplier (now deprecated).
- Added MaxCustomSpeed - max speed used in custom movement mode (previously used MaxWalkSpeed, and will default to that value for existing content).
- Added UCharacterMovementComponent::GetMaxAcceleration().
- New: CharacterMovementComponent::bAlwaysCheckFloor now defaults to true.
- Performance is only affected for Characters when they are not moving (by adding a floor check every update when standing still).
- Some users may wish to set this back to false (especially for AI) for a small performance gain if they can verify that this is not needed for stationary characters in their games.
- New: Revised assets causing Automation error in content examples.
- New: Revised card cleanup in blackjack sample.
- New: General improvements to network PIE game launching. Added waiting to connect message for editor. Fixed number of spawned instances. Improved window positions to accommodate multiple monitors.
- New: Moved the project locations array into the game .ini for launcher created projects.
- New: Removed assumption from GetBrush that second actor is always a brush and renamed it to GetDefaultBrush. Replaced GetBrush with GetDefaultBrush and made GetBrush deprecated. Revised comments appropriately.
- New: Revised handling of incorrect commandlet. Now shows console and exits if commandlet is invalid.
- Moved landscape MICs and textures to have the UWorld as their outer instead of the UPackage.
- New: Revised exploding car blueprint in platformer game to prevent 'super jumps.'
- New: Removed the optional parameter in FInterpCurve::Eval, EvalDerivative, EvalSecondDerivative.
- Previously it was possible to supply an optional int32 pointer, into which the segment index used by the spline evaluation would be put. The method for obtaining the spline segment was recently changed and now yields different results, so it was decided not to expose this to users as it is an implementation detail.
- New: ICU has been upgraded to 53.1 and modified to use loose files rather than a single data archive/package.
- New: Reduced complexity setting when encoding Opus audio for voice chat. Better performance with negligible loss of quality.
- New: Changed cubemap clearing logic to stop race condition on initializing render targets.
- New: Stopped multiple transition nodes between 2 state nodes being placed on top of each other.
- New: CookOnTheFly caching reliability improved.
- New: Adding touch support for Slate List View, TreeView, and TileView.
- New: Components created via the construction script are no longer transactional. Use the component instance cache to store values to be reapplied after the component has been recreated.
- New: Child Actor Component has been significantly stabilized and will no longer result in duplicate actors under any scenario.
- New: Added support for handles in the timer manager.
- The timer manager can now identify timers by handle. Timers with a handle do not need, but my still have, a delegate that gets called when the timer expires.
- Fixed Crash, Non-unity and Linux Editor build fixes.
- Fixed memory leak in FFoliageEdModeToolkit.
- Fixed crash from existing foliage that's based on blueprint components when running an uncooked game.
- Fixed possible crash due to Foliage UI holding pointers to data inside a TMap which can be reallocated.
- Fixed various undo-related crashes in landscape spline tool
- Fixed crash caused by getting a duplicate landscape gizmo.
- Fixed a bug in Morph Target importing that caused far more verts to be created than necessary.
- Fixed landscape brush outline is still visible in orthographic viewports when switching from landscape tool.
- Fixed an issue where SwitchEnum nodes who have their enums set during reconstruction on load would not have the correct friendly name.
- Fixed an edge case where during async loading a Blueprint Generated Class could be created, but not yet preloaded at the time another object is loading it as an import.
- Fixed auto generated Materials that used the old layout.
- Fixed "Flatten to Target" for landscapes with a non-zero Z coordinate.
- Fixed the flatten preview grid getting stuck on.
- Fixed Misaligned Material Comments.
- Fixed crashes caused by shared pointer delegate bindings when reloading the level editor.
- Fixed undo issues with any class derived from UDataAsset due to missing RF_Transactional flag.
- Fixed BlendRot (used in SmoothTargetViewRotation) to return a float instead of int32 (still very magic).
- Fixed various issues with swimming in CharacterMovementComponent.
- Fixed various float errors in several content examples.
- Fixed lack of SlideAlongSurface() code when StepUpFails, or when it is not going to help (now very similar to Flying implementation).
- CanEverSwim() wasn't checked for various workflows (initially starting in a water volume, or when landing after falling).
- Characters more reliably jump out of water when colliding with BSP.
- Fixed issues with vertical moving platforms starting below the character and then moving up through the character and being ignored.
- Fixed GetAllocatedSize() for FNavLinkRenderingProxy and FLandscapeSplinesSceneProxy
- Fixed an issue that stopped Tappy chicken from rendering.
- Fixed potential crash from enabling collisions from standalone window.
- Fixed and issue with splitscreen coordinate adjustment that affected HUD clicks.
- Fixed miscellaneous errors in various samples games.
- Fixed bug with gameplay tag editor widget not being correctly rebuilt after reimporting the backing data table.
- Fixed the DefaultPhysicsVolume to no longer appear in the convert actor list in the details panel for Brushes/Volumes.
UI
- New: Escape will now still first close a HUD UI even if it has lost focus.
Rendering
- New: Release GBuffers early during the frame to allow reuse, PostProcessMaterial can hold on to it longer, granularity is all GBuffers, could be per texture but might not be worth the tracking.
- New: Byte address buffer support for vertex buffers.
- New: Made UMaterialExpression and several derived types extendable from outside of Engine.
- Added ENGINE_API on several classes that are desirable to derive from.
Automation
- New: Unreal Automation Tool now uses the game .ini files to add additional directories to cook and stage.
- New: Automation test history visualization added.
- Users can now choose to track history of tests and will see an overview in the test table.
- This option to "Track History" is on the automation toolbar.
- New: Improved tool tips for automation tests to show the machine instance they were completed on.
- New: Added the ability to repeat a test a number of times.
- New: Added Editor Screen Shot Capture console command.
- New: Added a new test to find all Static Meshes with overlapping and out of bounds UV’s.
- New: Added a test to cycle through the Static Mesh Editor toolbar to test its functionality.
- New: You can now setup presets in the Automation tab. This allows you to setup your own test groups for potential test runs.
- New: You can now enable full size screenshots instead of just thumbnails. The Screenshot Compare tool fully supports this.
- New: The Screenshot Compare tool can be set to Show only Nth Image.
- New: You can now cluster the testing and results for a groups of devices based on certain criteria (e.g. GPU, machine name, CPU, OS, etc.).
- New: Added a Test Results Report Card. The test results will now show a color graph for each device group or machine that had ran a test.
- Updated the Load all Maps in Editor/Game test to take screen shots.
Unreal Frontend
- New: Added in the automation test times for those which have failed. The durations were not reflective of this.
- New: Updated the tooltips, for tests, to show which machine their operations were on.
Physics
- New: Unused method UWorld::ComponentSweepSingle has been removed, use UWorld::ComponentSweepMulti instead if necessary
- New: Unused method UWorld::ComponentOverlapTest has been removed, use UWorld::ComponentOverlapMulti instead if necessary
- New: Added new optional ThirdParty library: Box2D 2.3.1, zlib license (https://code.google.com/p/box2d)
EQS (Environment Query System) changes
- NOTE: Using the EQS now is NOT recommended. It is still in heavy flux due to early development, and it's completely disabled by default. If you do use it, be warned that we don't guarantee backwards compatibility in changes yet. We will announce when it's moved into the "Experimental" section in a future release.
- Significant changes have been made to UEnvQueryTest and related files. If you are using EQS, you need to resave your Environment Query assets.
- EQS Tests now support filtering on a range as well as just Min/Max.
- EQS Test Details UI is significantly changed (hopefully improved), with more improvements to come. Filtering and Scoring are now handled in a more distinct fashion with less implicit reliance on each other.
Shootergame
- New: Added code to assign created light component as RootComponent in ExplosionEffect - this prevented explosion effects from showing were not shown explosion blueprint was opened.
- New: Added error handlers when joining a pending net game. Also added text wrap value on shooter message text.
- New: Renamed ShooterExplosionEffects to ShooterExplosionEffect to match the class name and header file.
- New: Revised bot behaviour. Bots now check LOS and look for another target if there is no LOS to the current one.
- New: Revised OnEquipFinished so weapons auto reload on switching if ammo was collected with another weapon active.
- Fixed a crash when running shootergame menu in PIE and trying to host a game.
Vehicle game
- New: Added VehicleGameState and VehicleGameViewportClient.
- New: Added code to controls remap menu to restrict certain bindings for certain controls.
- New: Added function in UInputSettings to force an update of the keymaps after a mapping has been added/removed.
- New: Added code to Remap button names and make them more user friendly.
- New: Revised settings ini so that throttle/brake and be remapped in controls menu.
- Fixed 'stuck' GO text and best lap display on vehicle game client.
- Fixed control menus in Vehicle game. Also increased width of same.
Foliage is Being Refactored
- New: UInstancedFoliageSettings is now broken into UFoliageType and UFoliageType_InstancedStaticMesh
- New: The FoliageMeshes map is now keyed on a UFoliageType*, not a UStaticMesh*
LiveEditor Plugin
- Fixed a crash when opening the LiveEditor Control Panel.
Paper 2D
- New: Several C++ classes were renamed to better match engine standards
- Existing content should upgrade with no changes, but C++ code will need to be updated to match the new names:
- Renamed UPaperRenderComponent to UPaperSpriteComponent
- Renamed UPaperAnimatedRenderComponent to UPaperFlipbookComponent
- Renamed FPaperAnimatedRenderSceneProxy to FPaperFlipbookSceneProxy
- Renamed APaperRenderActor to APaperSpriteActor
- New: The Paper2D plugin is now enabled by default so that content-only games can use it in cooked builds.
- New: Moved tile map data from the component to a new class UPaperTileMap, and added a per-cell tile set pointer.
- New: Switch mobility setup for sprite components to match static mesh components; UPaperSpriteComponent now defaults to Moveable and APaperSpriteActor defaults to Static.
- New: Refactored the public interface of UPaperFlipbook (FramesPerSecond and KeyFrames must now be accessed via getters or a FScopedFlipbookMutator instance)
Core
- New: FThreadSingleton can be used outside of Core now.
- New: Added LockFreeList using 128-bit CAS operation (disabled by default, may be enabled via setting USE_LOCKFREELIST_128 to 1) Stats.
- New: Stats files are now compressed, ratio for regular stats 30%, for raw stats 16%.
- New: Better support for task graph stats.
- New: Added options to access the stat description as an ansi and a wide string, for the external profilers.
- New: C++ coding standard: We now use "override" and "final" keyword on all platforms (not "OVERRIDE", etc.)
- New: Allowed optimized code to be debugged more easily on Windows.
- Sets undocumented compiler command-line switch that enables debugging of optimized code (/d2Zi+)
- New: Added HashCodeHelper to UBT for creating reasonable GetHashCode implementations.
- New: Improved error message enforcing SListView item types are a pointer type.
- New: TSets are now constructible from TArrays, and move semantics has been extended to TSet::Append and TSetElement.
- New: TArray::FilterByPredicate function has been added and returns a new array containing a copy of all elements which passed the predicate.
- New: TUniquePtr
is now constructible and assignable from TUniquePtr . - New: MakeUnique now has more overloads on Visual C++ to compensate for the lack of variadic templates.
- New: Cooked sandbox paths have changed from Game\Saved\Sandboxes\Cooked-Platform to Game\Saved\Cooked\Platform.
- New: Default subobjects can no longer be created using NewObject, all existing cases will need to be replaced with PCIP.CreateDefaultSubobject.
- New: Changes have been made to the #includes in generated code.
- Includes are always relative to the module they came from, whe
- New: Added a Test Results Report Card. The test results will now show a color graph for each device group or machine that had ran a test.
- Updated the Load all Maps in Editor/Game test to take screen shots.
Unreal Frontend
- New: Added in the automation test times for those which have failed. The durations were not reflective of this.
- New: Updated the tooltips, for tests, to show which machine their operations were on.
Physics
- New: Unused method UWorld::ComponentSweepSingle has been removed, use UWorld::ComponentSweepMulti instead if necessary
- New: Unused method UWorld::ComponentOverlapTest has been removed, use UWorld::ComponentOverlapMulti instead if necessary
- New: Added new optional ThirdParty library: Box2D 2.3.1, zlib license (https://code.google.com/p/box2d)
EQS (Environment Query System) changes
- NOTE: Using the EQS now is NOT recommended. It is still in heavy flux due to early development, and it's completely disabled by default. If you do use it, be warned that we don't guarantee backwards compatibility in changes yet. We will announce when it's moved into the "Experimental" section in a future release.
- Significant changes have been made to UEnvQueryTest and related files. If you are using EQS, you need to resave your Environment Query assets.
- EQS Tests now support filtering on a range as well as just Min/Max./ul>
We welcome comments and questions, so please head over to our forums and share your feedback!