We’d like to thank all of the amazing developers who contributed code in this release. We are humbled and amazed by what you are doing!
AKPWebDesign, Allar, AndrewScheidecker, cbuttner, crnobog, DiCoJamesTan, dotneB, finger, frogameleon, gatekeep, Hydrael, Ixiguis, jkantzer, kylawl, mekaknepley, Rama, sbc100, SRombauts, StephenWhittle, wshearn, Yelmond.
Major New Features
New: Sample Vehicle Game
Vehicles are now fully supported in Unreal Engine! This sample game features an off-road vehicle and a looping track within a desert setting. Race across sand dunes, rocky cliffs and ancient ruins, and try to beat your best time!
- Out of the box support for 4WD, FWD, and RWD drive trains.
- The default drive train simulation assumes 4 wheels; however it will work with any number of wheels.
- As many gears as you desire.
- Automatic and semi-manual transmissions.
- And it is all completely exposed to Blueprints!
New: Camera Animation system!
Support for CameraAnims has now been added into Unreal Engine 4! These are very similar to CameraAnims from Unreal Engine 3, but now expanded with Blueprint support.
- Conceptually, a CameraAnim is simply an animation that can be layered onto the in-game camera. You can animate the camera position and rotation, FOV, and post process settings.
- They can be created in the Content Browser, you can convert a track in Matinee to one, or you can import keyframes from external tools like Maya
- To edit a CameraAnim, simply double click the asset in the Content Browser like you would any other asset. The CameraAnim editor is slightly customized version of Matinee.
- Multiple CameraAnimInsts (up to 8 currently) can be active at once, all blending and contributing to the final camera settings.
New: User-Defined Structures for Blueprints
User Defined Structures are a brand new asset that is now available for use from within the editor!
A User Defined Structure can be created in the Content Browser.
They can be edited in the standalone editor by double clicking them in the Content Browser. Once you are done editing them, you can create a variable of a type of your new User Defined Structure in your Blueprints.
Like vectors, rotators, and other structures, your User Defined Structure will have Make and Break nodes. User Defined Structures should behave like native structures: USTRUCT(BlueprintType).
New: Blueprint Function Library
Users can now create a Blueprint function library asset! This allows you to create a nice library of Blueprint functions that can be used throughout your project!
Unlike the Blueprint Macro Library, Blueprint Function Libraries don’t require a Parent Class, and are able to be called by all Blueprints in the current project.
New: FABRIK Inverse Kinematics Solver
FABRIK stands for Forward And Backward Reaching Inverse Kinematic. It’s an IK solver that works on a chain of bones of any arbitrary length!
- End Effector settings are the same as our TwoBone_IK node. It can be an absolute Transform, or a relative one (based on another bone from the same Skeleton).
- In the Solver section, you define the chain of bones to use, from the ‘Root’ to the ‘Tip’. The ‘Tip’ will try to reach the end effector location.
- End Effector Rotation Source allows you to control the rotation (maintain component space, local space, match end effector target rotation).
- Precision is how close it needs to get. The lower, the more precise it gets to the End Effector Target, but the more expensive. (Although from tests it does a really nice job, and much quicker than the CCD_IK node).
- MaxIterations is there to control performance, and make sure edge cases will not take frame rate down.
Thanks to GitHub community member Stephen Whittle for this feature!
New: Canvas Render Targets
- You can now draw Canvas UI straight to a texture, and then map that texture to objects in your scene!
- This is fully supported by both C++ and Blueprint workflows.
- A special thanks to community member James Tan for submitting this.
New: Vehicle Template
We have a new project template that gives a simple automobile to start your new vehicle-based project with. Both Blueprint and C++ versions of this template are available now!
New: Animation Blueprint Asset Override Editor
Persona now has the ability to override the assets used in Play and Evaluate nodes in parent animation Blueprints from a child Blueprint.
The editor for this can be found in the Window menu in Persona:
The editor collects all of the nodes that can have their animation asset overridden. New assets can be picked from the pickers on the right of the panel. This works with longer inheritance chains too and shows the most appropriate defaults for that Blueprint based upon the Blueprints further up in the hierarchy. Finally, the “eye” button will link you to the AnimGraph node you are overriding:
New: Improved Anim Notify Editor
Multi-select support for Anim Notifies has been added into Persona! Shift + click adds to selection, and Ctrl + click toggles a notify selection.
You can drag the selection around and it will remain within the notify panel while obeying snaps:
Copy/Paste works with groups too with a number of options:
You can paste them at the absolute, relative, or original time, in relation from where they were copied.
New: Blueprint Cut and Paste for Components
Cut/Copy/Paste commands have now been added to Components mode!
- Select individual components and either right-click or use keyboard Cut/Paste commands to copy or move components around!
- You can cut/copy components from one Blueprint and paste them right into another Blueprint!
- If the selection includes a hierarchy, it will be preserved in the pasted copy!
New: Experimental Math Expression Node for Blueprints
There is a new experimental plugin available for the Math Expression Node for Blueprints. This node enables you to simply type in an expression and it will make the input pins, output pins, and a collapsed graph that contains your math expression.
- To use this node, simply activate the Math Expression plugin in the plugin manager. It will then appear in the right click context menu of the Blueprint Graph Editor
- Once created, type in your expression. If you make a mistake, you can edit the expression by renaming the node.
New: UV Parallax for SplineThicken Material Function
You can now add UV parallax to materials using the SplineThicken Material Function. This makes it look like your object is round!
- The normals part of the function has been re-touched and they are now transforming correctly for all object rotations. This gives accurate lighting and specular!
- UVs for Thickness (V2): This lets you specify a different UV channel for storing the thickness (tip to base) gradient. Useful to have this on UV1 or 2 for trees where there might be an overall tree length included not just a single pipe or branch etc.
- UVs for Texturing (V2): This is the UVs for any textures you want applied to the pipe. You need to include and scale math here so it knows how much to parallax by. This is only needed if you want the 3D parallax correction results.
- DeriveNormalZ (Bool): When checked, the shader will use DeriveNormalZ to compute the height of the normal. Gives much nicer ‘round’ shape. When false, 0.62 is assumed which is the average height of half a sphere centered at 0. If you want to use CustomUVs to solve the normal, you either need DeriveNormalZ to be false, or you need a row of vertices in the center of the spline mesh. If you do not have the added verts and use CustomUVs, it will say the normal has 0 height across the entire mesh.
- AngleCorrectedNormals (Bool): Whether to use angle corrected normals when applying the additional normal texture. More accurate but more expensive.
- AdditionalNormal (V3): Lets you specify an additional normalmap that will piggyback onto the vertexnormal transformation.
- UVs with Parallax: This gives the UVs to use for any textures you want to have the 3d parallax.
Currently the function only handles 1 texture coordinate, so if you want multiple textures to have the correction, they all need to use the same scale.
New: Animation Debug Features
There are a number of new Animation Debug commands at your disposal. First there is in game rendering of a skeletal mesh’s bones:
This is enabled using the ShowDebug Bones console command. As seen above the bones are represented by individual white lines.
- An alternative look, matching the bones displayed in Persona, can be enabled via the ShowDebugToggleSubCategory 3DBones console command.
- Next is the animation debug output, which can be enabled using the ShowDebug Animation console command.
- This is split up into 5 sections, each of which can be toggled on and off using the ShowDebugToggleSubCategory command followed by the category name listed below e.g. ShowDebugToggleSubCategory SyncsGroups
- SyncGroups: Displays the animation assets currently contributing to the final pose, organised by their sync group (or Ungrouped if they don’t belong to a group). By default Blendspaces listed in this section show all their contributing animations / weights. To reduce screen space used by the output this can be toggled off with ShowDebugToggleSubCategory FullBlendspaceDisplay.
- Montages: Lists the montages currently being used by the character. The active montage is highlighted in green.
- Curves: List the curve values (in Name: Value pairs) that have been activated by the playing animation(s).
- Notifies: Display any notify states that are currently in effect.
- Graph: Displays the active pose graph. The display starts with the last node (the root node) which represents the final pose and goes on to list all the nodes that go into making that final pose. Nodes are represented in such a way as to keep their hierarchy, allowing the user to see which nodes are connected to what without having to refer to the original Blueprint asset. Active nodes are coloured green and (if they have been toggled to display using ShowDebugToggleSubCategory FullGraph ) inactive nodes are coloured grey.
New: Level Viewport Stats
Many useful engine stats can be visualized over the viewport. You can now access these using the new “Stat” section under the viewport “Show” menu.
- You can also toggle most of these stats by typing “Stat <name>” into a debug console prompt.
- By default the stats aren’t remembered between sessions, but you can turn that on by enabling “Save Engine Stats” in the editor’s Viewport preferences section.
New: OBJ Mesh File Format Support
You can now import .obj files for static meshes!
The file format is very simple so keep in mind that it does not support the following features:
- Vertex color importing.
- Collision importing.
- Tangent and binormal importing.
- Transforms: The model will be rotated if not modeled with Z up because with OBJ importing we have no way of getting the source coordinate system.
New: Upgraded FBX to 2014
The FBX importer as now been upgraded to the 2014 version from Autodesk.
- This allows Tangent and binormals on mirrored meshes to be imported correctly
- You can still use the earlier FBX plugins found in any Maya/Max version before 2014, but you may get a warning on import when using a very old file.
New: Windows XP Support (preview)
Developers working out of GitHub now have the ability to deploy your project to Windows XP.
- To enable this, set WindowsPlatform.SupportWindowsXP to true in UnrealBuildTool, and edit your project’s settings to enable OpenGL shader support.
- When running on Windows XP, OpenGL is automatically used instead of DirectX 11 for rendering
- This feature is early in development and will be improved over time.
New: Improved Blueprint Support for Actor Destruction
In the 4.2 Preview Notes it was listed that the EndPlay event would replace the Destroyed event in Blueprints, this is no longer the case for 4.2.
- In Blueprints, the new Event EndPlay node will eventually replace the Event Destroyed. The Event EndPlay node should be used going forward.
- EndPlay will not just fire when an Actor is explicitly destroyed, but will also execute anytime an Actor ceases to be in the World. This includes a level transition, a streaming level being unloaded, a PIE session ending, or Destroy being called for an Actor
- Also, the EndPlay node now gives the reason for it executing (Actor Destroyed, Level Transition, the end of Play in Editor, and Removed from World)
- In C++, the AActor::Destroyed virtual function remains, however it is primarily intended for editor transaction purposes.
- The C++ AActor::EndPlay virtual function takes an enumeration parameter indicating the reason the Actor has been removed from the World.
- The AActor::OnRemoveFromWorld virtual function, previously called for each Actor when the streaming level they belong to was unloaded, has been removed and its functionality included in AActor::EndPlay.
Stylized Rendering – The Stylized Rendering showcase is available on the Marketplace for free! This sample demonstrates the rendering flexibly of Unreal Engine 4.
Sci-Fi Hallway – His amazing Sci-Fi scene inspired by a Deus Ex concept comes from Quixel’s CMO Wiktor Öhman.
New Pivot Painter Content Example Map – Still images don’t do this example justice. The Pivot Painter feature of Unreal Engine 4 can be used to add life quickly and efficiently to anything that needs some sort of ambient movement.
New Audio Content Example Map – Like the Pivot Painter map, the Audio Map is one you just need to load up and browse through. It shows off the basics of Sound Actors and various sound effects.
- Blueprint Essentials 1 – Variables Overview
- Blueprint Essentials 2 – Variable Types
- Blueprint Essentials 3 – Struct Variables
- Blueprint Essentials 4 – Object and Class Variables
- Blueprint Essentials 5 – Enum Variables
- Blueprint Essentials 6 – Variable Get vs. Set
- Blueprint Essentials 7 – Blueprint Execution Order
- Blueprint Essentials 8 – Arrays
- Blueprint Essentials 9 – For Loops
- Blueprint Essentials 10 – Using Loops: Procedural Level Design
- Blueprint Essentials 11 – For Loop with Break
- Blueprint Essentials 12 – For Each Loops
- Blueprint Essentials 13 – While Loops
- Blueprint Essentials 14 – Custom Loops
- Fun with Blueprints: Spawning Dynamic Objects
- There are an additional 7 videos to the 3rd Person Blueprint Game video series.
- New: Vehicle Setup Guide – How to setup a vehicle in Unreal Engine 4.
- New: Vehicle Content Guide – Setting up the art content for a vehicle.
- New: Particle User Guide – Cascade User guide updates.
- Texture Painting – Painting textures and vertices in the editor.
- Audio Documentation Updates – The reference for all things auditory in Unreal Engine 4.
- Refactored Content Examples Documentation Page – New directory pages allow you to see all available content examples for different features at a glance.
- New: Added a walk through for the Destructible Mesh Editor.
- Changed the Tutorial Landing window in the Editor to show all available In-Editor Tutorials.
- Fixed the Destructible Mesh Editor no longer shows the Skeletal Mesh Editor tutorial.
- New: Added brief descriptions of every module to the API documentation
Unreal Engine Launcher
- New: Unreal Engine Launcher Installer is now localized into Korean and Japanese.
- New: Unreal Engine desktop and start menu shortcuts now have a proper, localized, tooltip description.
- New: The Unreal Engine Launcher Installer will now inform users installing on Windows 7 if they do not have SP1 installed.
- New: You can find links to lots of content documentation and other info all located in the lower right of the launcher.
- New: Mouse over any of your content and you can choose to uninstall or verify.
- Improved Startup speeds.
- We’ve modified how and when the launcher calls for content data to improve start-up time.
- Fixed the launcher so it will no longer restart the UE4 download process from the beginning if it was closed during the “Installing” phase.
- Fixed a number of localization bugs for Korean and Japanese.
- Fixed the Launcher so it should now always restart after self-updating on Mac.
- Fixed a number of inconsistencies with downloads and content in Offline mode.
- Fixed a problem with the installer failing for Win8 and Win 8.1.
- Fixed the launcher to check for not of enough disk space.
- Fixed an issue where you could not choose a download location on Win 8.1 due to default UAC permissions.
- Fixed the right-click .uproject options not working on Windows.
- Fixed the launcher becoming unresponsive when updating from 1.1.0-2054669 to 1.2.0-2064046 with UE_4.1 and all 4.1 samples downloaded.
- Fixed opening a project from the Launcher so it will no longer skip the update process.
- Fixed the launcher so that sample content that has changed project names will now be able to be opened through the launcher.
- New: The feed is your one stop for all news and stories
- New: New pinned stories to highlight important updates. You can dismiss them by clicking the pin Icon on each story.
- New: Vertex painting now works with Blueprints.
- New: When attaching actors, you can now use an actor picker to choose which actor to attach to.
- New: Added check for "Game View" when drawing geometry features in the editor.
- New: You can now use Alt + [ or ] to adjust the size of the transform gizmo.
- New: Collections now store and display a custom colour based on the local user settings.
- New: Added option for Flat Bottomed collision to character components.
- New: You now have the option to remove content downloaded from marketplace.
- New: Creating multiple actors using drag and drop from the content browser now undo's as a single transaction.
- New: Added the ability to refresh the project browser list.
- New: You can now choose where to place a class added via the New Class Wizard.
- New: You can now provide a function to get the objects you want to show in the details view when creating an FSimpleAssetEditor.
- New: Simple and Group Stat Exec commands can now be triggered from the level viewport Show menu directly.
- New: Added a one pane (1×1) editor viewport layout.
- New: The Editor now informs the user on the success of importing and exporting.
- New: AllowPreserveRatio is now a metadata flag we scan for on FVector UProperties. It causes a ratio lock to be added (like the one for scale) to the editor.
- New: Unreal Engine 4 now supports applying the material to only to the sub-mesh that you drag the material onto. If you are holding down the [Shift] key we'll apply the material to every slot (the old behaviour).
- New: UMG work has begun, the UMG / UMGEditor modules exist but are highly volatile right now. UMG can be enabled with -umg when running the editor. It's extremely early and very buggy and not user friendly.
- New: Added the ability to copy and paste location, rotation, and scale from the details panel.
- New: Added an option to force loading movies to complete even if the game has finished loading.
- New: Added an option to toggle whether or not loading movies can be skipped by a user.
- New: Added an option in the preferences to ignore snapping to floors when dragging from the content browser.
- Changed the UI for toggling between absolute and relative transform components. You can now toggle this via the drop down arrow next to a transform property in the details panel
- Changed the way actors are renamed when converted. If a custom name is not present, the conversion process will be allowed to rename the actor.
- Upgraded the FBX SDK to 2014.2.1 which makes all FBX 2014 files compatible with the editor.
- New: In-game Slate UI is now visible in editor viewports when in immersive mode.
- New: Added user-editable array of object query types to Radial Force components.
- Changed the FBX import type selector to now have some extra text informing the user that a particular import type has been auto-detected, and a warning if the user attempts to override this.
- Changes to socket transforms now reflected immediately in asset instances in the world.
- Changed Duplicate to now function with hidden actors.
- Changed Dynamic Expression Parameter nodes to update when another is renamed.
- Changed the Based movement to now use the character base.
- Changed the Based-movement for characters to now use quaternions.
- Adjusted normal map auto detection to consider alpha=0 pixels as black for the averaging (to avoid misidentifying predominantly blue sprites as normal maps).
- Updated Project Settings to now always save as default.
- Moved Source Code Access functionality to a plugin.
- Source code access is now performed on the main thread.
- Changed Static Meshes to check Screen Size rather than Distance to calculate which LOD to use.
- Changed renaming an actor so it now ignores leading or trailing space when validating the name.
- Changed “Range” Properties in the details tab to now have their own structure customization.
- Updated the render material in canvas for ES2 mode.
- Fixed Engine Content from appearing in "Submit to Source Control…" dialog when it shouldn't.
- Fixed the Submit message icon to no longer be a 'stop' symbol.
- Fixed static lighting to now be disabled for Instanced Static Mesh Components.
- Fixed project template names and descriptions to now fall back to English if a valid translation cannot be found for the current language.
- Fixed the Submit Files Dialog to now follow the same style as the rest of the engine.
- Fixed the Cascade ToggleRealtime tooltip to match the other Editor Viewports.
- Fixed Particle System Components to now toggle visibility correctly.
- Removed viewport-position menu items from the scene outliner menu.
- Disabled Ctrl-select when using vertex paint.
- Fixed docking not working correctly when docking over the scene outliner.
- Fixed up issues found when creating a new source control provider.
- Fixed opening multiple instances of Visual Studio.
- Fixed crash on shutdown on Mac.
- Fixed Subversion not connecting to working copies with spaces in their paths.
- Fixed missing Font Editor toolbar icons.
- Fixed the size of some editor sprites for Actor types whose sprites were too large.
- Fixed a divide by 0 error when zooming out level viewport too far.
- Removed STAT url until the page is working again.
Particles and Cascade
- New: Implemented Anim Trails type data for creating trails vfx.
- New: Enter and Space Bar keys can now be remapped for the Content Browser.
- New: Release Stats and Built-In Stats toolbar buttons now have icons.
- Built-in Stats – These stats show the base cost of a shader without any nodes in the graph.
Release Stats – This toggles use of either the debug or release shaders when displaying stats.
- New: Added Find Results tab to Material Editor.
- New: Added shortcut for component mask on Shift+C.
- Changed the Use Specified Mip Level property (bUseSpecifiedMipLevel) to now default to false, and the number of cinematic mips is ignored by the UI when it's true.
- Changed the default and details inspectors so they are now disabled when editing a read only graph.
- Fixed the erroneously set flag CPF_DisableEditOnTemplate by adding code to clear it.
- New: Added ability to sync directories from source control in the Editor.
- New: Added P4 API 2014.2 with OpenSSL 1.0.1g.BSP
- New: A BSP actor is now deselected when none of its surfaces are selected.
- Fixed the Slate Property Editor Combo element (SPropertyEditorCombo) to update the selection before opening itself.
AI and Navmesh
- New: Behavior trees can now use root level decorators from sub-trees.
- Fixed restoring from full screen to now set the window position on the native window.
- New: In-game Slate UI is now visible in editor viewports when in immersive mode.
- New: Added filter that hides actors that aren’t in the current level.
- New: There is now a menu option for scene outliner folders to select all the actors within that folder.
- New: Duplicate now functions with hidden actors.
- Changed the 'eye' visibility icon to acts on the current selection, if the row is selected.
- Removed viewport-position menu items from the scene outliner menu.
- New: Implemented navigation geometry export for instanced static meshes.
- New: Added support for landscape splines to FBX export.
- New: Added support to consider LODBias/ForcedLOD affects to Lightmass geometry.
- New: Added new LOD falloff model to reduce triangles easily with good transitions.
- New: Exposed Auto Rotate on Join to the Spline tool UI.
- New: Added support for moving Landscape Splines to streaming levels.
- Reduced landscape layer importing time.
- Fixed selection rendering when re-registering.
- Fixed LODDistanceFactor applying problem.
- Fixed issue where some landscape components would fail to compile the material.
- Fixed crash when clearing the LandscapeMaterial property on an existing landscape.
- Fixed rendering of landscape components with holes after they'd been moved to a streaming level.
- Removed sculpting-only options from flatten tool when in paint mode.
- New: Added tiled landscape importing. Tiled heightmaps/weightmaps can be exported from an application like World Machine.
- New: Integrated Omni Radius from Unreal Engine 3.
- New: Native Anim Notifies and states are now supported.
- New: Added a new cloth collision type which enables to interact between the character and other clothing objects, like a curtain. It just works with turning on the check box "Collide with Environment".
- Added additional cloth visualization menus. You can see "Clothing" sub-menu when clicking "Show" menu in Persona. It only appears when the character has clothing.
- New: Added Search functionality to Translation Editor with a new Search tab.
- New: Added import/export to Portable Object (.po) format buttons to allow translation in 3rd party applications. On import, changes are shown in the "Changed on Import" tab.
- Increased the number of directories searched for Localization projects to include "LocalizationPath" directories specified in configuration files.
- New: Added support for copy-and-paste for component selections in Components mode within the Blueprint editor.
- Fixed duplicate move calls occurring on Blueprint Graph nodes.
- New: The build scale is now taken into account when calculating a Static Meshes streaming texture factors.
- New: Particle parameter distributions can now be used in conjunction with Color Over Life for GPU sprites.
- New: Mesh Modifies Material Position now uses the result of the material translator.
- New: Particle Lights now work with camera offset (per-view).
- New: Added commandlet which lists all Static Mesh assets that were imported from Speedtrees.
- New: Added Sun Disc Scale property to the Atmospheric Fog Actor to control sun disk size in the sky.
- New: You can now drag-n-drop other Blueprint assets into a Blueprint graph to get an Add Child Actor Component node.
- New: Added Deproject node to HUD Blueprints, and Deproject Screen Position to World to Player Controller Blueprints.
- New: Local variables in Blueprint functions now utilize Get/Set nodes.
- New: Sky Lights are now a Blueprintable class.
- New: Added an EnumLiteral node.
- New: You can now use the arrow keys to navigate Blueprint variable pin type selection and components' dropdown menu.
- New: When replacing actors with Blueprints via the right click "replace with actors" menu, if the Blueprint is a child of that actor, the editor will try to copy over properties.
- Hid deprecated nodes from the default GetMenuEntries behavior of UEdGraphSchema::GetGraphContextActions.
- Allowed derived classes to be selected in the debug filter widget.
- Disabled debug and trace site generation when compiling in a commandlet (such as during cooking).
- Changed Blueprint compiler errors to only display once when entering Play in Editor and will not reappear until the Blueprint is modified.
- Updated the Spring Arm Component with more options including rotation lag, and only inheriting rotation from certain components.
- Updated the Game Mode to allow no Pawn specified.
- Exposed the Set Phys Material Override node on Primitive Components to Blueprints.
- Fixed crashes in duplicating timelines and improved workflow in making external graphs.
- Fixed Blueprint compile error message when self pin type is missing or is otherwise unknown.
- Fixed "create Blueprint based on selected actor" to work with actor types without an asset associated with them.
- Fixed a serialization crash that occurs when there is a cyclic dependency between a Blueprint class and an implemented interface.
- Fixed Blueprint function node output pins incorrectly mapped to internal skeleton class types.
- Fixed a pin connection issue / potential crash when changing the spawn class type on a SpawnActor node with connected inputs.
- Fixed a logic error in busy-waiting for the game thread to finish executing when a Blueprint breakpoint is hit.
- Fixed a crash when attempting to place a migrated Blueprint asset that derives from a native C++ class.
- Fixed a crash when attempting to open a new Blueprint derived from a TriggerBox.
- Removed internal "SKEL_*" classes from the class picker.
- New: Added r.RenderTargetPool.Events to visualize Render Target Pool usage over a frame
- New: Sky lights with Static Mobility can now be baked and are now supported and work on mobile.
- New: Added r.AmbientOcclusionSampleSetQuality cvar now it can be used with larger radius and less levels.
- New: Added support for taking orbit offset in to account when generating particle spawn and death events.
- New: We now show instruction counts for mobile lightmapped shaders without distance field shadows in the material editor.
- New: Added show flags to disable directional/point/spot light contributions
- New: Added r.OptimizeForUAVPerformance for performance tests.
- Updated the Directional Light selection process for exponential fog inscattering to use the first light configured as "IsUsedAsAtmosphereSunlight".
- Updated Point Attractors so they can now filter motion along axes.
- Updated Mesh particle CPU rendering to optimize them for ES2.
- Changed tangent space calculations to better match xNormal.
- Improved game console auto completion to be more like editor.
- Optimized and improved Screen Space Ambient Occlusion using dither noise and fewer samples.
- Updated allocated and free GBufferTargets to now allow reuse on demand, however you still need to release them earlier than post processing if possible.
- Updated OpenGL 4 support:
- Re-enabling redix sort on OpenGL
- Depth bounds test
- Optimized Render Target usage and optimized out a pass for Tile Deferred Lighting, one less consumer for Light Accumulation.
- Renamed some Light Propagation Volume properties to be clearer.
- Changed SSAO Occlusion default settings to have less haloing.
- Changed Particle Lights to now work with Camera Offset module.
- Changed Particle parameter distributions to now work with the Color Over Life module for GPU emitters.
- Changed hand-written shaders using the static keyword on variables to now also be declared as const on their declaration.
- This is required to reduce complexity in the cross-compiler, and any non-constant issue can be done via alternate methods.
- Fixed reflections to now work on subsurface scattering materials.
- Fixed shadercomplexity view mode.
- Fixed shadow artifacts with very small objects.
- Fixed crash on startup with new shaders, RHIClear was used in resource init.
- Fixed Splitscreen ReflectionEnv rendering.
- Fixed rendering when reflectionenv is disabled.
- Fixed SSR being applied in SM4 path.
- Fixed blending bug with layered reflection captures.
- Fixed optimization that got disabled for LPV to be working as before if LPV is off (faster shadow map rendering).
- Fixed a bug where all light probes used for applying precomputed GI on characters were half bright
Gameplay and Framework
- New: UBT is now configured using XML files instead of Environmental Variables.
- New: UBT quits early with error message when particular build configuration is not supported.
- New: CameraAnims are now supported, including in Blueprints.
- New: Added debug display in game of active Anim Graph.
- New: Added localization import support for Portable Object (.po) files.
- New: Native animation notifies now supported.
- Inheriting from UAnimNotify or UAnimNotifyState will allow the classes to appear in the notify menu and be added to the animation.
- New: Multi-select now supported in the notify panel in Persona, drag/drop and copy/paste updated to work with multi-select.
- New: Animation asset references in parent animation Blueprints can now be overridden in child Blueprints.
- Accessible through the window menu in Persona, the new tab is named "Asset Override Editor."
- New: Added native animation notify state to control start/stop on a looping particle emitter.
- New: Motion axes can now be bound to input components in both C++ and Blueprints.
- New: Asynchronous loading time limits can now be set per game. You can modify AsyncLoadingTimeLimit or PriorityAsyncLoadingExtraTime on UEngine. When priority loads happen during cases like seamless travel, it will use all available time even if blocked on I/O, for much higher throughput but a CPU cost.
- New: Added CreateInstance function to ULevelStreaming and exposed it to Blueprints. This change allows to create a copy of existing level streaming object with a new unique name, so user will be able to stream-in/out multiple instances of a particular map package.
- New: Made Behavior Trees a Blueprint type to allow Blueprint authors to use it as a property.
- New: Added a Blueprint-implementable event "OnPosses" for AIController.
- New: Introduced concept of generic AIRequestID to be used with AI requests like movement and EQS queries.
- New: Added a function to AIController making it use the indicated Blackboard Asset, to be used independently of Behavior Trees.
- New: Character movement can now be affected by external forces.
- Including Radial Force Components.
- New: Touch input now supported on HUD hit boxes.
- New: Mouse smoothing based on FOV properties now available in Input Project Settings.
- New: You can now query for assets in the asset registry without including in-memory assets. This is almost never what you want to do, but it provides a good perf gain in some cases.
- New: Added SCOPE_LOG_TIME_IN_SECONDS to do the same SCOPE_LOG_TIME log, but in seconds instead of milliseconds.
- New: Added sub-stepping support for mobile devices and non APEX builds.
- New: Added Vehicle anim instance and wheel handler for vehicle.
- New: Added simple Look at control.
- Made foliage snap to *all* modified landscape components when sculpting, not just those in the current level.
- Moved SpringArmComponent tick into PostPhysics to resolve some camera jitter
- Upgraded NVTT (nVidia Texture Tools) to v2.0.8
- Updated PVCT exporter to now export images with dimensions greater than 4096. Source image will come from 1st image in the mip chain where the largest dimension is <= 4096.
- Reorganized a lot of vehicle tuning data for official release.
- Changed units from cm to m.
- Added and moved tuning variables for official release, any existing tuning will likely need some fixing up.
- Updated the HUD hit box click and Component OnClick events to now respond to both double and single clicks.
- Updated Radial Damage to now default to "unblocked" unless the visibility trace finds an explicit blockage. Use bCanBeDamaged to toggle damagability.
- Updated CreatePlayer to now be callable from Blueprints.
- Improved PlayerStart selection. All Player Starts will be considered and preference will be given to "unoccupied" start points.
- Refactored Streaming Manager so that it's not so specific to textures.
- Optimized shadow clearing / resolving so that you can clear and resolve whole shadow targets rather than using subrects.
- Updated Behavior Trees to clean up orphaned behavior tree nodes when the tree is regenerated.
- Updated String Asset References to now properly detect and repair references to Play in Editor objects when duplicating for Play in Editor.
- Changed owned Components (components that have an Actor in their Outer hierarchy) so they can now have Outers other than the Actor itself.
- Changed Audio Compression Info class so they can be selected by cooked platform.
- Changed Unreal Version Selector (and .uproject engine association in general) to now be compatible with Perforce distributions.
- Changed launching the editor with out of date binaries will now attempt to compile them for you.
- Changed opening a project with an editor in a different location than before will now prompt you to copy/upgrade-in-place, and regenerate project/recompile binaries as necessary.
- Fixed Crash reports are so they now are always evaluated client side, in case there were bits of the callstack that are viewable.
- Fixed Skeletal Mesh Components, in the level editor viewport, to now correctly update their LODs.
- Fixed an issue that caused worlds with editor offsets to re-offset themselves every time the visibility of the world is toggled off and on.
- 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 an issue running tappy chicken on PC Fixed an issue with control menus in vehicle game sample.
- Fixed an issue that was preventing some folders from being properly removed during uninstall of Unreal Engine.
- Fixed a crash at shutdown in DirectoryWatcher. Cancelled I/O requests must be completed before closing the handle and deleting the request.
- Fixed a bug that caused non-assert crashes to fail to produce a callstack in the log.
- Fixed if statement logic in Blueprint loading that would only access a variable if it was NULL, instead of only if it was !NULL
- Fixed Network connections to no longer time out in Play in Editor, after all, the servers are local.
- Fixed socket renaming display bug in Persona
- Fixed bug with derived Blueprints not showing inherited properties
- Fixed crash when loading a skeletal mesh if an attached asset could not be found
- Fixed bug in Layered Blend Per Bone where moving to 0.0 would fail to update the pose properly.
- Fixed invisible collision in landscape splines if the mesh is deleted.
- Fixed re-import of 8-bit heightmaps to an existing landscape.
- Fixed various landscape editor commands getting run on the pie world by accident (causing crashes).
- Fixed ramp and landscape splines tools not updating landscape collision/navmesh.
- Fixed "camera" and "visibility" trace flags on landscape splines.
- Fixed bug on mobile devices where ragdolls rendering was not being properly updated.
- Fixed sub-stepping support for dedicated servers.
- Fixed PhAT body selection not working when translucent picking is disabled.
- Fixed destructible mesh chunk islands not being properly updated.
- Fixed crash in Form extended destructible mesh.
- Fixed collision detection for instanced static mesh.
- Fixed texture visualization to work correctly when camera constraint black bars are being displayed, and when using resolution scaling (r.ScreenPercentage).
- Removed sculpting-only options from landscape editor flatten tool when in paint mode.
- Removed the Mouse Wheel Spin input mapping.
- Removed bUseSingleBodyPhysics from Skeletal Mesh.
- – New: Added first version of the thread view. To capture the data in the game use stat startfileraw console command.
Draw Debug Helpers
- New: Added support for displaying a Histogram of float values. Use FDebugFloatHistory to record samples, and DrawDebugFloatHistory to draw in game. Also available in Blueprints.
- Override Attenuation now toggles which attenuation options are available in properties.
- Renamed Sound Cue categories and re-ordered Sound Actor categories.
- Integrated Omni Radius feature for sounds that was previously added to UE3.
- Created Opus audio format for future use in streaming sounds.
- New: Support for scripting language integrations via plugins.
- To go along with this, there is an experimental Lua integration.
- New: Added DEPRECATED macro to support old C++ API deprecation.
- Fixed an error when copying visualizers when logged in as SYSTEM.
- New: Added a show flag for Paper2D sprites.
- New: Added prototype sprite atlas generation (several unresolved data/workflow issues).
- New: Added placeholder settings panel.
- New: Added custom archive version for UPaperSprite assets.
- New: Sprites can now render in wireframe mode.
- Set UPaperRenderComponent default mobility to static.
- Paper2D module marked as runtime, allowing use in cooked games (Note: the plugin must be enabled in BaseEngine.ini and the engine recompiled for use in content only games).
- Implemented AdditionalStatObject to return the associated asset in the Paper2D render components (used for stats and error messages).
- Updated built-in materials to reference a smaller texture and hooked up Opacity link in case they are changed to Translucent.
- Sanitized generated asset names when importing JSON sprite sheet frames.
- Forced VMI_Lit for both orthographic and perspective modes in the Paper2D viewport clients.
- Partially fixed tile map rendering rot (still not rendering correctly).
- Fixed negative volume 3D collision bug which caused NAN masses and missing collisions.
- Fixed support for RTS_Actor and RTS_Component spaces in UPaperRenderComponent::GetSocketTransform.
- Fixed crash when cooking with Paper2D plugin enabled.
- Fixed bogus selection rectangle in tile set viewport.
- Fixed sprites not showing up in sprite/flipbook editor viewports.
- Fixed missing toolbar icons in sprite and flipbook editors.
- Fixed typos in slow progress dialog (not from git).
- Removed unnecessary ticking from UPaperRenderComponent and add some property comments.
- New: Added a BeaconState class to store data in the beacon that needs to persist across levels.
- Fixed muting across seamless travel.
- Fixed PlayerController returning incorrect IsLocalPlayerController() results on dedicated servers.
- Invalid results during a brief time between Login() and PostLogin() when PlayerController was created but Role/RemoteRole wasn't set yet.
- Added a new warning if IsLocalPlayerController is called during construction / destruction of a PlayerController.
- New: Added DestroySubsystem call to module, allowing the destruction of a single instance of an OSS.
- Enable voip for null online subsystem.
- Fixed Autologin to only use OnLoginComplete delegate now.
- Removed OnLoginStatusChanged from autologin flow, it's not correct, as we are actively trying to login.
- New: A new socket subsystem supporting IPv6 has been added.
- New: Experimental support for Windows XP added.
- New: OpenGL is now available for cooked windows builds.
- New: Added a Target RHI option for Windows available through Edit -> Project Settings -> [Platforms | Windows]
- Improved support for GL3 hardware.
- New: Mobile advertising support framework.
- Basic framework support for both iOS and Android.
- Initial support for iOS that allows third party frameworks, with symlink and file staging support from plug-ins and modules
- Initial support for TapJoy advertising plug-in for iOS.
- Improved support for GL3 hardware.
- Increased timeout when connecting to servers to help with load times during development.
- Cleaned up code that deals with writing data to outbound bunch.
- Fixes for seamless travel bugs.
- Fixed a fairly large bug that could cause an assert during edge case conditions when writing to the outbound bunch.
- Fixed issue that could cause partial bunch sequence id's to wrap incorrectly.
- New: The Google Play Services library for Android is now included.
- New: Achievements and leaderboards for Google Play on Android are now exposed through the new OnlineSubsystemGooglePlay.
- New: Unreal Engine 4 now sorts ES2 landscape vertices in the order of first use, from lowest to highest LOD. This minimizes the MaxVertexIndex ranges for draw calls at each LOD and substantially improves performance on devices with Mali GPUs.
- New: Added AdMob support for Android. Add the AdMob Ad ID in the Android project settings, then use the Blueprint ad interface to show and hide ads.
- Enabled ES 3.0 GLSL shaders on all Android devices reporting ES 3.0 support, enabling reflection cubemap roughness lookup.
- Fixed crash on devices that don't support floating point render targets.
- Removed the -f from the rm commands generated in the installation batch file. Some devices (eg Galaxy S III) do not recognize the -f and fail to remove old versions of files.
- New: Motion Support added for iOS.
- New: Added command line option -waitfordebugger so you can manually launch a packaged, installed app and have it wait for you to attach the XCode debugger at startup.
- New: UE4 now includes its own static build of svn-1.8.1 on Mac OS X.
- New: You can now enable OculusRift support on Mac OS X.
- Improved handling of display arrangements for multiple monitors on OS X.
- Improved performance when mousing over the Editor on Mac OS X.
- Enable translucent self-shadowing on ShaderModel 4 renderers for the benefit of Mac OS X particularly.
- Improved support for Mac <= GL 3.3 drivers that don't support rendering to 3D or 2D array textures.
- Older GPUs such as the ATi 4xx0 series, Nvidia 9xx0/1xx/3xx and Intel HD 3000 should now render, though performance will be lower than newer GPUs.
- Fixed the sky light irradiance on Nvidia cards under OS X.
- Fixed (via work around) an OpenGL driver regression on AMD FirePro cards introduced in Mac OS X 10.9.3 that caused incorrect rendering of skinned models.
- This workaround has a small but noticeable performance penalty and will be removed after the fix for the driver bug has been released.
- Fixed various minor rendering errors on the new Mac Pro’s AMD FirePro cards on Mac OS X.
- Fixed Emulate sRGB rendering on Mac OS X to work around a driver bug.
- New: Exposed ESRam allocation to VisualizeTexture log printout and outside RHI.
- New: Some functions in FOnlineSessionLive have been implemented and can be used to play multiplayer over Xbox Live:
- CreateSession, FindSessions, JoinSession, DestroySession.
- Thanks to Lionhead for their contributions in this area.
- New: Integrated an HTTP implementation for Xbox One, courtesy of Lionhead.
- New: Packaging system updated to function with March and newer XDKs, support for localized resources added, appxmanifest templates separated for deployment and packaging.
- A sample service configuration is available for ShooterGame in its Build\XboxOne\ServiceConfigurations as an example of how to configure stats to work with Unreal.
- Changed VRam to allow allocation on Volume/3D Textures – it's actually supported, reenabled for LPV.
- Fixed some D3D warnings in the debug/validated driver.
- Fixed occasional giant particles when spawning GPU emitters.
- Fixed tonemapping being way too bright when min/max brightness are the same.
- New: Morpheus support! Morpheus support is available both running on PS4, and on PC.
- New: UAVs properly maintain append/consume counters.
- New: Experimental LPV on PS4.
- New: Added support for host side audio debugging using Sulpha.
- New: Added support for Depth Bounds Testing.
- Improved handling of copy to resolve targets when the command buffer hasn't been kicked.
- Fix for user marker push/pop mismatch when using Razor GPU capture.
- Fix profilegpu console command.
- Fix for GSVS sizes not getting updated correctly midframe (fixes corrupt reflection captures).
- Fixed Speedtree crash on Playstation 4.
- Updated Steam code to accept a -queryport=xxx parameter.
- Updated certain developer tools so they can now be compiled for Linux (SlateViewer, UnrealFrontend, etc), both via cross-compiling and natively.
Editor and Tools
- Improvements to the Blueprint compiler pipeline to allow new compilers to be registered with the Kismet module.
- Limited the game name length (20 characters), and predict the cooking path length and limit the naming length accordingly.
- Removed UEditorEngine::GetContentBrowserAssetTreePath.
- Removed the experimental SlateComponentWrappers module.
Gameplay and Framework
- New: Can Jump is now exposed in ACharacter to be overridden by Blueprints.
- New: Add Character::OnWalkingOffLedge() event.
- Makes it easier to detect transition from walking -> falling, exclusive of jumping or other things that may cause the same transition in movement modes.
- New: Added “hold-to-jump-higher” functionality to ACharacter.
- Changed the Match state machine in GameMode to be explicit and based on the MatchState namespace, as opposed to being based on a set of bools. Renamed several functions in GameState and GameSession as well, if you have a native subclass you may need to rename functions. Here are the states and how things changed:
- EnteringMap is the initial state. Actors are not yet ticking and the world hasn't been fully initialized. It will transition to the next state when things are fully loaded.
- WaitingToStart (was bWaitingToStartMatch) is the next state, and HandleMatchIsWaitingToStart is called when entering. Actors are ticking, but players have not yet spawned in. It transitions to the next state if ReadyToStartMatch returns true, or if someone calls StartMatch.
- InProgress (was bMatchIsInProgress) is the next state, and HandleMatchHasStarted (split off from StartMatch) is called when entering, which calls BeginPlay on all actors. Normal gameplay is in progress. It transitions to the next state if ReadyToEndMatch returns true, or if someone calls EndMatch.
- WaitingPostMatch is the next state, and HandleMatchHasEnded (was PerformEndGameHandling) is called when entering. Actors are still ticking but new players are not accepted. It transitions to the next state when a map transfer starts.
- LeavingMap (was bLevelChange) is the last state, and HandleLeavingMap (was GameEnding) is called when entering. The match stays in this state while transfering to a new map.
- Aborted is the failure state, started from AbortMatch. This is set when there is an unrecoverable error.
- Changed AGameMode::bDelayedStart into a new flag, bStartPlayersAsSpectators. If true, new players will initially spawn as spectators, if false they'll spawn directly as pawns. bDelayedStart now only affects rather the match should start immediately.
- Changed the maximum number of Physics Material Surface Types to 64.
- Changed FCoreDelegates::OnObjectPropertyChanged to take the property change event as an additional parameter.
- Changed AActor::BeginPlay to now happen earlier in some situations. It happens when the game state transitions to WaitingToStart or InProgress for the first time, previously it only happened when the match started. Renamed functions so UWorld::BeginPlay is what calls AActor::BeginPlay.
- Moved Blackboard Component's reference over from BehaviorTreeComponent to BrainComponent.
- Renamed Nav Movement Component's GetActorLocation to more appropriate GetActorFeetLocation.
- Changed the preview attached asset type from raw pointer to TAssetPtr.
- Changed the signature of FAssetTools::CreateDiffProcess() to take filepaths explicitly as separate params.
- Adds abstraction between the public API and the diff provider. API no longer exposes the diff command line format.
- Updated FAssetTools::CreateDiffProcess. Any uses of will need to have the filenames removed from the arguments and passed in though the new New and Old filename variables.
- Fixed Stationary mobility from showing up on anything except subclasses of ULightComponentBase.
- Fixed FCoreStyle initializing and failing per file when all of its assets are missing (Saves 1-2 seconds of load time on iPhone4 for games that don't use Slate).
- Removed the obsolete ‘Z’ parameter in UCanvas::DrawTile().
- New: Licensee Engine Version support (Changelist part).
- Modified UpdateLocalVersion UAT script to be able to set licensee versions and custom change lists.
- New: TWeakPtr<Base> is now comparable with TWeakPtr<Derived> and all TWeakPtrs are now comparable with nullptr.
- New: TArrays can now be copied with an ExtraSlack parameter to reserve space after the copied elements.
- New: Additional FString functionality:
- AppendChars can take a character count to allow the use of not-null-terminated strings or partial strings.
- const TCHAR* + FString operator.
- More rvalue awareness.
- New: UnrealHeaderTool now handles #ifdef/#ifndef/#elif/#else directives.
- Contents of these blocks are skipped in their entirety by UHT – it's not proper support, but will allow more native code to compile.
- Changed the build system to now take care of building generated code.
- *.generated.inl files no longer needed to be included by users.
- Including a .generated.inl file will now issue a compiler warning to remove the include.
- In a future engine release, the .generated.inl which warns will be removed entirely and the #include will fail.
- New: Delegates and multicast delegates now support UFunction bindings.
- Combined SetObject() and SetFunctionName(), on script delegates, into BindUFunction().
- Updated TWeakObjPtr to now have proper assignment operators, so that explicit boxing of UObject values is no longer necessary.
- Refactored GIsBenchamrking, GUseFixedTimeStep to FApp::IsBenchmarking and FApp::UseFixedTimeStep respectively.
- FCrc::StrCrc32 no longer warns when instantiated with a 1-byte character type.
- FString constructor with ExtraSlack no longer reads off the end of the source string.
- FString::Replace no longer mutates the const source string (thread safety issue).
- Files without BOMs are now treated as UTF-8 rather than just ANSI.
- TSharedPtr, TWeakPtr and TSharedRef are now move-aware.
- Build times improved in functions containing lots of TSharedPtr assignments.
- Renamed assets referenced by Blueprint CDOs no longer incorrectly warn about being referenced by code.
- You can now change a UProperty of a raw pointer type to a TAssetPtr and the property will be fixed up while serializing tagged properties.
- Added some documentation to the SpawnParameters fields Refactored relevant Blueprints to have frame independent turn/look Fixed and issue in APawn::EnableInput Fixed a bug in strategy game minimap Reinstated rocket launcher (and ammo) in shootergame sample.
- Updated infrastructure to support showing World assets in the Content Browser and generally tread worlds as normal assets.
- Added EWorldType::Inactive to represent worlds that are loaded but not currently being edited in the level editor.
- UBrush objects corresponding to the default brush are now saved with the same outer as the default brush, instead of top-level objects in world packages
- New: The Slate Remote server (for UDK Remote iOS app) is now a plug-in (enabled by default).
- New: The Slate module has been split into Slate and SlateCore in preparation for UMG. Detailed upgrade notes for this change:
- If your module previously had a module dependency to 'Slate', it now also needs a PrivateModuleDependency to 'SlateCore' in its Build.cs file.
- If your module exposes in any of its Public header files types that are now declared in SlateCore, it needs a PublicModuleDependency to 'SlateCore'.
- The ToolTip property type on SWidget has changed from SToolTip to IToolTip; change local variables to TSharedPtr<IToolTip> instead of TSharedPtr<SToolTip> where needed
- IToolTip is not a widget. If you need access to the actual widget that represents the tool tip, use IToolTip::AsWidget(); If you need access to the tool tip's content, use IToolTip::GetContentWidget().
- After syncing to this changelist you may have to clean your /Engine/Intermediate/Build/ directory and rebuild your entire project.
- If in your project you are getting linker errors for unresolved types that are now declared in SlateCore, you may be missing a dependency to 'SlateCore'.
- If in the Engine code you are getting linker errors for unresolved types that are now declared in SlateCore, you may need to rebuild the entire Engine.
- Updated the directory layouts for Slate and SlateCore modules for better discoverability.
- Fixed morphtarget not playing in matinee.
- Fixed the bug with losing collision settings when copying objects for custom settings.
- New: StreamingPauseRendering allows some rendering to continue while blocking loads complete so that the game does not appear to hang. Default is to display the previous frame with an animated widget in the corner. This can be overridden by providing a custom BeginStreamingPauseDelegate and EndStreamingPauseDelegate.
- New: Added UK2Node_LatentOnlineCall which automatically creates entries for all static factory methods in UOnlineBlueprintCallProxyBase subclasses.
- In UK2Node sub-classes, in ExpandNode(), users should now use the CompilerContext¹s MovePinLinksToIntermediate/CopyPinLinksToIntermediate instead of the schema¹s Move/CopyPinLinks.
- A runtime check() will be triggered if users fail to do so. This is to facilitate more accurate Blueprint debugging. It allows us to easily map generated pins to ones the Blueprint user sees in the graph.
- Updated UK2Node_BaseAsyncTask, making it much easier to extend.
- HeaderGroup keyword has been removed as well as all header group generated headers.
- Any UCLASS declarations using HeaderGroup keyword need to be fixed (keyword has to be removed).
- All #includes to HeaderGroupNameClasses.h generated headers in licensee code need to be removed otherwise code will not compile.
- iOS on PC will build content only projects entirely on PC, but now requires users to add their developer certificate to the PC. This can be done with IPP.
- Prevented delayed success adverts from being shown if they succeed after the app has requested hiding them.
- Fixed various threading / logic issues in the iOS achievements implementation.
- May 2014 XDK is now supported.
- Xbox One binaries are now located under the Game\Binaries\XboxOne folder when packaged or deployed.
- Exposed achievements to Blueprints: WriteAchievementProgress, CacheAchievements, GetCachedAchievementProgress, CacheAchievementDescriptions, and GetCachedAchievementDescription.
- Exposed ShowPlatformSpecificAchievementsScreen and ShowPlatformSpecificLeaderboardScreen for use on iOS and Android.
- Renamed Trunc, Round, Floor, Ceil to TruncToInt, RoundToInt, FloorToInt, CeilToInt. Added *ToFloat versions.
- Old version should still compile but will generate a warning during compilation and need to be removed otherwise code will not compile in future releases.
We welcome comments and questions, so please head over to our forums and share your feedback!