What's New

Unreal Engine 4.21 continues our relentless pursuit of greater efficiency, performance, and stability for every project on any platform. We made it easier to work smarter and create faster because we want your imagination to be the only limit when using our tools. And we battle-tested the engine on every platform until it met our developers' high standards so your project will shine once it is ready for the masses.

We are always looking for ways to streamline everyday tasks so developers can focus on creating meaningful, exciting, and engaging experiences. Our industry-leading Niagara effects toolset is now even more powerful and easier to use, enabling you to dream up the next generation of real-time visual effects. You can build multiplayer experiences on a scale not previously possible using the now production-ready Replication Graph functionality. Iterate faster thanks to optimizations with up to a 60% speed increase when cooking content, run automated tests to find issues using the new Gauntlet automation framework, and speed up your day-to-day workflows with usability improvements to the Animation system, Blueprint Visual Scripting, Sequencer, and more.

We strive to make it possible for your creations to be enjoyed as you intended by everyone, everywhere regardless of the form factor they choose. Building on the previous release, we have added even more optimizations developed for Fortnite on Android and iOS to further improve the process for developing for mobile devices. Available in Beta, Pixel Streaming opens a whole new avenue to deploy apps in a web browser with no barrier to entry and no compromise on rendering quality. We have also improved support for Linux as well as augmented, virtual, and mixed reality devices.

In addition to all of the updates from Epic, this release includes 121 improvements submitted by the incredible community of Unreal Engine developers on GitHub! Thanks to each of these contributors to Unreal Engine 4.21:

Aaron Franke (aaronfranke), Adam Rehn (adamrehn), Adrian Courrèges (acourreges), aladenberger, Alan Liu (PicaroonX), Cengiz Terzibas (yaakuro), Cerwi, Chris Conway (Koderz), cmp-, Damianno19, Deep Silver Dambuster Studios (DSDambuster), Dorgon Chang (dorgonman), DSCriErr, Dzuelu, Eliot (BillEliot), Erik Dubbelboer (erikdubbelboer), fieldsJacksonG, Franco Pulido (francoap), Frank Stähr (phisigma), George Erfesoglou (nonlin), Hao Wang (haowang1013), Henri Hyyryläinen (hhyyrylainen), Homer D Xing (homerhsing), IlinAleksey, Jacob Nelson (JacobNelsonGames), Jerry Richards (r2d2Proton), Jesse Fish (erebuswolf), Josef Gluyas (Josef-CL), Joshua Harrington (thejhnz), Kalle Hämäläinen (kallehamalainen), KelbyG, Layla (aylaylay), LizardThief, Lucas Wall (lucaswall), Mai Lavelle (maiself), malavon, Marat Radchenko (slonopotamus), Marat Yakupov (moadib), Marco Antonio Alvarez (surakin), Markus Breyer (pluranium), marshal-it, Martin Gerhardy (mgerhardy), Mathias Hübscher (user37337), Michael Kösel (TheCodez), Morva Kristóf (KristofMorva), Muhammad A. Moniem (mamoniem), Nick Edwards (nedwardsnae), nrd2001, Oliver (oliverzx), phoenxin, projectgheist, Rene Rivera (grafikrobot), Rick Yorgason (Skrapion), Riley Labrecque (rlabrecque), Sahil Dhanju (Vatyx), Sam Bonifacio (Acren), scahp, Sébastien Rombauts (SRombauts), Tom Kneiphof (tomix1024), Troy Tavis (ttavis), Truthkey, UristMcRainmaker, Wiktor Lawski (wlawski), yhase7, Zeno Ahn (zenoengine)

Major Features

Niagara Platform Support and Usability Improvements

In our continuing effort to provide industry-leading effects tools, Niagara has received an expanded feature set, substantial quality of life improvements, and Niagara effects are now supported on Nintendo Switch!

GPU-Only Texture Sampling in Niagara

You can now sample a 2D texture or a pseudo-volume 2D texture in your particle scripts! Create amazing effects such as rendering the scene's depth, color and normal information using a Scene Capture Actor and use that to reconstruct the environment within a Niagara particle system with the particles' potential and kinetic energy visualized as emissive light.

Check out the Niagara level in the Content Examples project to see how this feature works!

Niagara Skeletal Mesh Data Interface Improvements

There are new functions you can use in the Skeletal Mesh Data Interface enabling direct sampling of a Skeletal Mesh's vertex data as well as access to specific Bones or Sockets on the Skeletal Mesh.

Ribbon Particle Performance Improvements

Ribbons now generate the ribbon geometry on the GPU instead of the CPU, improving overall performance.

GPU Simulation Support in Niagara

GPU simulation of Niagara effects is now supported on all non-mobile platforms.

Simplified System and Emitter Creation

Niagara now includes friendly dialogs that make creating systems and emitters easier than ever! You can create new emitters and systems from a curated set of templates to speed up development and ensure best practices.

Pendulum Constraint

This constraint solves with physics forces, optional spring drivers, and includes potential energy calculation. You can now create exciting, dynamic effects such as spawning particles with inherited velocity if the energy exceeds a specified threshold:

Module Additions and Improvements

Generate and receive death events

Now factoring mass into multiple modules

New SampleSkeletalMeshSkeleton, SampleSkeletalMeshSurface, SkeletalMeshSkeletonLocation and SkeletalMeshSurfaceLocation modules to complement enhancements to the Skeletal Mesh Data Interface

New AddVelocityInCone module

New Force modules: FindKineticAndPotentialEnergy, GravityForce, SpringForce and multiple usability tweaks to other forces

New KillParticlesInVolume module

New SpriteRotatationRate module

New RecreateCameraProjection module for using render targets and camera transforms to turn scene captures into deformable particle systems

New modules for sampling textures: SamplePseudoVolumeTexture, SampleTexture, SubUV_TextureSample, and WorldAlignedTextureSample

New utility modules for temporal interpolation and frame counters

Many new dynamic inputs and functions

New: Replication Graph

The Replication Graph Plugin makes it possible to customize network replication in order to build large-scale multiplayer games that would not be viable with traditional replication strategies. For example, Epic's own Fortnite Battle Royale starts each match with 100 players and roughly 50,000 replicated actors. If each replicated actor were to determine whether or not it should update across each client connection, the impact on the server's CPU performance would be prohibitive.

The Replication Graph Plugin solves this problem by offering an alternate strategy geared specifically for high-volume multiplayer games. This works by assigning actors to Replication Nodes, which store precalculated information that clients can use to retrieve lists of actors that need to be updated, saving the CPU of recalculating the same data for many clients on every frame. In addition to the standard nodes that ship with the Engine, developers can write their own nodes to fit the specific needs of actors within their games.

New: Optimizations for Shipping on Mobile Platforms

The mobile development process gets even better thanks to all of the mobile optimizations that were developed for Fortnite's initial release on Android, in addition to all of the iOS improvements from our ongoing updates!

Improved Vulkan Support on Android

With the help of Samsung, Unreal Engine 4.21 includes all of the Vulkan engineering and optimization work that was done to help ship Fortnite on the Samsung Galaxy Note 9 and is 100% feature compatible with OpenGL ES 3.1. Projects that utilize Vulkan can run up to 20% faster than the same project that uses OpenGL ES.

Config Rules System for Android

The Android Config Rules system can now be used to help catch issues very early in a project start up process. This tool allows for quickly checking for device support and providing either a warning or error dialog to the user if there are issues discovered, such as an out of date driver or unsupported GPU. Any variables set may be queried later in C++ with FAndroidMisc::GetConfigRulesVariable(TEXT("variablename")).

To use this system, a configrules.txt rules file is optionally placed in your project's Build/Android directory and UPL is used to add a Gradle task to use the ConfigRulesTool to compress and optionally encrypt it during packaging the APK. More details can be found in the engine documentation.

Program Binary Cache for Android

The Program Binary cache can be used to help improve Shader loading performance and also reduce hitching due to Shader loading on Android devices. The Program Binary cache works by generating optimized binary representations of Shader programs on the device which are used when loading shaders during subsequent runs. Loading Shader programs from optimized binaries can also dramatically decrease Shader loading times. The Program Binary cache must be used in conjunction with the Shader Pipeline cache tool as it will populate the Program Binary cache during the initial run of your application. To enable the Program Binary cache in your project, you will need to add the following command to your AndroidEngine.ini or Device Profile.

r.ProgramBinaryCache.Enable=1

Note: Some devices do not support the required program binary extension, such devices will fallback to the previous behavior.

Emulated Uniform Buffers on Android

You can now use Emulated Uniform Buffers for projects that target the OpenGL ES3.1 feature level, significantly reducing memory usage and improving rendering performance depending on your application complexity. Emulated Uniform Buffers have also been optimized to help reduce the size of the data that needs to be transferred to the GPU when your project is being packaged. To enable Emulated Uniform Buffers when using the OpenGL ES3.1 feature level, add the following line to your project's DefaultEngine.ini under [/Script/Engine.RendererSettings] :

[/Script/Engine.RendererSettings] OpenGL.UseEmulatedUBs=1

CPU Thread Affinity Control on Android

The ConfigRules system can register whether or not to use a supplied little core affinity mask. If enabled, the following threads will use little cores which improves battery life and evens out performance since they won't switch between big and little cores causing possible hitches: render, pool, taskgraph, stats, taskgraph background, async loading. For details on how to set this up, see the Config Rules documentation.

Improved GPU Particle Simulation Performance on Mobile

Mobile particle effects that utilize the GPU for particle simulation have been significantly improved. You now have the option of reducing the memory usage for GPU particle simulation by limiting the maximum number of simulated particles that can be used. By default the maximum number of GPU particles that can be simultaneously simulated is set to around one million particles which will use around 32 MB of memory. You can adjust the maximum number of particles to use by adding the following code to your project's DefaultEngine.ini under [/Script/Engine.RendererSettings] :

[/Script/Engine.RendererSettings] fx.GPUSimulationTextureSizeX=512 fx.GPUSimulationTextureSizeY=512

Setting the value from 512 to 256 will reduce the memory footprint to around 8 MB.

The SimulationTextureSize size has to be a power of 2.

These improvements are especially apparent on devices that use the ARM Mali GPU.

Dithered LOD Transitions

Dithered LOD transitions are now supported on mobile platforms. When enabled, objects with Materials that have Dithered LOD transitions option enabled will now fade from one Level Of Detail (LOD) to another in an almost seamless manner. By default support for Dithered LOD transitions is disabled for mobile platforms. To enable it, go to Project Settings > Rendering > Mobile and then check the Allow Dithered LOD Transitions option.

Note: Materials that have Dithered LOD transitions enabled will be rendered as Masked Materials. This could have a negative performance impact on mobile platforms. We recommend enabling this effect only on Masked Materials.

New: Cooker Performance

The cooking process has been optimized resulting in up to 60% reductions in cook times! Low-level code now avoids performing unnecessary file system operations, and cooker timers have been streamlined. Handling of unsolicited Assets (with regard to Asset dependencies) has also been refactored to scale better. These changes are most pronounced on larger projects (projects with more than 100,000 Assets).

New: Pixel Streaming (Beta)

Run a packaged Unreal Engine application on a desktop PC in the cloud, and stream the viewport directly to any modern web browser on any platform! Get the highest-quality rendering in lightweight apps, even on mobile devices, with zero download, zero install.

A viewport rendered by Unreal Engine, embedded within a web UI. Images and models courtesy of McLaren.

You can broadcast a single game session to multiple viewers by simply sharing a link, or send each connecting user to their own separate game session.

The web page that hosts the Engine viewport automatically sends keyboard, mouse and touch events back to the Engine. You can also customize the page with your own HTML5 UIs, using custom JavaScript events to trigger and respond to gameplay events over the wire.

For details, see Pixel Streaming .

New: Animation System Optimizations and Improvements

The Animation System continues to build on its best-in-class features thanks to new workflow improvements, better surfacing of information, new tools, and more!

Animation Compression times are significantly reduced by using a whitelist of optimal codecs to avoid trying permutations that are unlikely to be selected which greatly reduces the number of codecs we attempt to compress with. On multicore systems, most of the codecs now evaluate in parallel during automatic compression, further reducing the time it takes to compress an animation sequence.

The following updates were made to the Animation Compression Stat Dialog window:

Fixed bugs that would cause dialog to show incorrect results

Added compression time stat

Added number of compressed animations

Added tracking for animation with largest average error

Added tracking of worst 10 items instead of just worse

Better labeling on dialog

Pass through FBoneData array more instead of recalculating

Please see Compression for more information.

Animation Notify Improvements

New Animation Notifies have been added that enable you to manage the state of dynamics and cloth simulations. We have also updated Notify add/replace menus to use class pickers for better searching of BP and native notifies. To add a Notify, right-click on a Notifies track, then under Add Notify, select the type of Notify you wish to add.

Please see Animation Notifications (Notifies) for more information.

Maintain Original Scale of Root Motion

Added Use Normalized Root Motion Scale option to maintain the original scale of Root Motion. This option is on by default and is the functionality that existed prior to this Engine release. Choosing to disable this option will now use the final blended animation instead.

Please see Enabling Root Motion for more information.

Added Caching and Autocomplete for "Sync Marker" Names

When creating Sync Markers, you can now access any Sync Markers assigned to the Skeleton from the Existing Sync Markers menu option. Entering text into the search box will also filter out Sync Markers based on your text entry.

Animation Sequence Framerate

The framerate of Animation Sequences is now displayed in the Animation Tools viewport and Content Browser tooltip.

Enable Auto Blend Out on Anim Montages

Anim Montages now have the option to enable or disable Auto Blend Out. This option is enabled by default, however you can disable it which won't auto blend out the Montage and will keep the last pose.

Please see Montage Properties for more information.

CCDIK Skeletal Control Node

Use the new CCDIK (Cyclic Coordinate Descent Inverse Kinematics) Skeletal Control Node for a lightweight, IK algorithm suited for real-time calculation of relatively short IK chains, such as shoulder to fingertip.

Please see CCDIK Skeletal Control Node for more information.

The Set Master Pose Component function has a second input pin called Force Update that can be used to skip updating all runtime info if that info is the same as the Master Component or force the updating of the runtime info. This only applies to the registration process as that can be serialized, at which point it will need to refresh all runtime data.

Please see Master Pose Component for more information.

Live Animation Blueprint Recompilation is now non-experimental

Local Space is now the default Coordinate Space for Animation Editors

A notification is now displayed in the Animation Tools viewport when a min LOD is being applied.

New: Gauntlet Automation Framework (Beta)

The new Beta Gauntlet automation framework enables you to automate the process of deploying builds to devices, running one or more clients and or/servers, and processing the results.

You can create Gauntlet scripts that automatically profile points of interest, validate gameplay logic, check return values from backend APIs, and more! Gauntlet has been battle tested for months in the process of optimizing Fortnite and is a key part of ensuring it runs smoothly on all platforms.

Gauntlet provides new profiling helpers that can record critical performance values between two points in time in order to track missed-Vsyncs, hitches, CPU Time, GPU Time, RHI Time, Draw Calls and more. Gauntlet also provides helper functions to gather these from logs so you can generate warnings, store them in databases, or create trend lines. All of the info captured during the test is available to be output into reports any way you want.

An example of a simple report is shown below:

Each Gauntlet test is a C# script that expresses a simple configuration for your test - how many clients, how many servers, and what parameters to pass. Gauntlet takes care of allocating machines from a pool, deploying and running builds, checking for common errors such as crashes, asserts, or timeouts, and collecting log files and other artifacts.

New: Submix Envelope Follower

Users of the new Unreal Audio Engine can now set an Envelope Follower Delegate on their Submixes allowing amplitude analysis of individual channels for that submix. This will help users power visualizations and Blueprint Events based on the amplitude characteristics of their Submixed audio.

New: Filter Sound Submix Effect

Users of the new Unreal Audio Engine now have the option of adding a multimode filter to their Submixes allowing dynamic filter effects on a single Submix.

New: Sound Submix Effect Reverb Dry Level

The Submix Effect Reverb in the new Unreal Audio Engine now supports Parallel Wet and Dry Levels allowing users to dial in specific Wet/Dry ratios making the Effect usable as an Insert-Style Effect as well as a Send-Style Effect.

New: Linux Defaults to Vulkan Renderer

Linux now uses Vulkan as the default renderer when available. In the event the API cannot be initialized, the Engine will fall back OpenGL without notification.

From the Project Settings, you can use the Target RHIs to add or disable a particular RHI or use command line switches -vulkan and -opengl4 to disable the fallback.

New: Linux Media Player

You can now use the bundled WebMMedia plugin to play back .webm VPX8/9 videos on Linux platforms.

New: Linux Crash Report Client GUI

We've added support for the Crash Reporter GUI on Linux so you can help us continue to improve support for Linux platforms. Please submit reports when they occur, even repeated ones! It helps our engineers assess the frequency and learn what circumstances cause the crash to happen.

New: Professional Video I/O Improvements (Beta)

We continue to make it easier to get video feeds into and out of the Unreal Editor over professional quality SDI video cards. You can now work with the same Unreal Engine Project across multiple computers with different hardware setups, without changing any configuration settings in the Project.

Create a MediaProfile on each machine, and set it up to handle the video card and formats that you need to use on that computer. You can also override the Project's timecode and genlock sources from the same panel:

When you combine the Media Profile with the new Proxy Media Source and Proxy Media Output Asset types, you can automatically redirect input and output channels between the Project's media content and the settings in your Media Profile. When you switch to a different Media Profile — for example, on a different computer with a different media card or different wiring setup — the input and output channels from that machine's hardware are automatically routed through the proxies so that you don't have to change any content in your Project.

For details, see Using Media Profiles and Proxies .

In addition, this release adds:

A dockable Timecode Provider panel ( Window > Developer Tools > Timecode Provider ) that shows the Unreal Engine's current timecode and the source that timecode is coming from:

) that shows the Unreal Engine's current timecode and the source that timecode is coming from: Support for 10-bit input, audio I/O and interlaced/PsF inputs.

A new Blackmagic Media Player Plugin that supports SDI cards from Blackmagic Design. See the Blackmagic Video I/O Quick Start .

Note: The AJA Media Player and Blackmagic Media Player Plugins are now available through the Marketplace tab in the Epic Games Launcher, instead of being installed automatically with the Unreal Engine. Their source is freely available on GitHub , to give other developers a model of how to develop video I/O plugins on top of the Engine's Media Core APIs.

New: Geographically Accurate Sun Positioning (Beta)

In the real world, the sun's position in the sky depends on the latitude and longitude of the viewer, the date, and the time of day. You can now use the same mathematical equations to govern the sun's position in your Unreal Engine Level.

This is particularly effective any time you need to simulate the real-world lighting conditions for a specific place on the Earth, such as for a major architectural or construction project. However, this can also be useful for any Level that you want to exhibit realistic sun movements and positioning based on global position and time of day.

For details, see Geographically Accurate Sun Positioning .

New: Static Mesh Processing

We have added several new Static Mesh processing options inside the Unreal Editor. You can now save memory by removing unnecessary UV mappings from your Static Meshes.

In addition, using Python and Blueprint scripts that you run inside the Unreal Editor, you can now:

Create UV mappings with planar, box, and cylindrical projections. See Working with UV Channels .

Run the Proxy Geometry tool to merge and simplify groups of Static Meshes in a Level. See Using the Proxy Geometry Tool in Blueprints and Python .

Reuse an LOD from one Static Mesh as an LOD for another Static Mesh. See Creating Levels of Detail in Blueprints and Python .

New: Blueprint Usability Improvements

The Blueprint Graph editor now features "Quick Jump" navigation enhancing the existing bookmark feature by enabling users to save their current location and zoom level in the Blueprint Editor with CTRL + [0-9]. They can then quickly return to that graph at that location and zoom level by pressing SHIFT + [0-9] whenever the Blueprint editor window is open, even when working in a different Blueprint Asset. "Quick Jump" bookmarks persist across Editor sessions, and are local to the user/machine.

Users now have the ability to insert pins before or after a target pin for Sequence nodes via the context menu, rather than only being able to add them onto the end.

Monolithic engine header file exclusion from nativized Blueprint class C++ code is now available as a Project Setting. This can help to reduce the overall code size of the monolithic game EXE file, if code size is an issue. The option can be found at Project Settings->Packaging in the "Advanced" section under the "Blueprint Nativization Method" option. This option is disabled by default to maintain compatibility with existing objects.

New: Improvements to HTML5 Templates

HTML5 projects now use separate HTML, JavaScript, and CSS templates replacing the previous monolithic template file! Custom template files are also supported on a per-project basis:

Copy:

.../Engine/Build/HTML5/GameX.*.template

To:

[project]/Build/HTML5/.

The build process will automatically pick the project's path or otherwise fallback to the Engine's version.

This is based on GitHub PR#4780.

The HTML5 README file has been split up into multiple README files based on category:

Building UE4 HTML5 Get Source Files Compiling Support Programs Compiling UE4 Editor Run UE4 Editor Package The Project For HTML5 Test The HTML5 Packaged Project

Debugging UE4 HTML5 How To Dump The Stack And Print From Cpp BugHunting GLSL

Emscripten and UE4 EMSDK Emscripten toolchain and Thirdparty libraries UE4 C# scripts Test Build, Checking In, and CIS



New: Improved IPv6 Support

Support for IPv4 and IPv6 has been merged into a single socket subsystem, where previously support for each protocol was isolated to a specific subsystem. This allows platforms that used one of the BSD subsystems to support both IPv4 and IPv6 at the same time, and do it transparently to the calling code.

New: DDoS Detection and Mitigation

DDoS (distributed denial of service) attacks typically hinder game servers by flooding them with so many packets, that they are unable to process all of the packets without locking up and/or drowning out other players' packets, causing players to time out or to suffer severe packet loss which hinders gameplay.

Typically these attacks use spoofed UDP packets, where the source IP is unverifiable. This optional DDoS detection focuses specifically on this situation, detecting/mitigating DDoS attacks based on configurable thresholds of spoofed UDP packets, which do not originate from an existing, known client connection. This is not a guarantee that servers will be safe from all attacks, since it's still possible that a heavy attack can overwhelm the hardware or OS running the server.

The Physics Interface has been refactored to support an increased ownership of physics objects at the high level. As a consequence of these changes, we have deprecated the Async Scene which was only recommended for use with APEX Destruction. You can still achieve the same visual results using the Sync Scene.

As a result of these changes, much of the physics related C++ code API has changed. Functionally the API is the same and you should be able to use it very similarly to how you currently use it. We've made changes to the Physics Interface with the goal of a) reorganizing dependencies into one controlled place, and b) creating a common model for physics interactions when interacting with Unreal.

Please see 4.21 Physics Technical Notes for more information.

New: Pipeline State Object (PSO) Caching

We now support Pipeline State Object (PSO) Caching on Metal (iOS/Mac), DX12 and Vulkan platforms. PSO caching helps reduce any hitches your project might encounter when a Material requires a new Shader to be compiled. PSO Caching creates a list of all the needed Shaders that are required by the Materials which is then used to help speed up the compiling process of these Shaders when they are first encountered by your project. PSO Caching can be enabled in the Project Settings > Packaging section.

To find out more information about how to setup and use PSO caching in your UE4 project, make sure to check out the PSO Caching documents.

We have improved the workflow and usability for Physical Lighting Units based on feedback provided by the community. As part of these updates, the following changes have been made:

All light types now display their units type next to the Intensity value.

Directional Lights are now displayed in LUX with increased intensity range.

Sky Light intensity is now displayed in cd/m2 with increased intensity range.

Post Process Auto-Exposure settings can be expressed in EV-100 for an extended range of scene luminance. This can be enabled via Project Settings.

The Pixel Inspector can now display pre-exposure for Scene Color. This can be enabled via Project Settings.

HDR (Eye Adaptation) Visualization has been refactored in the following ways: HDR Analysis picture-in-picture display over the current scene view allowing adjustments with instant feedback. Visualization is now expressed in EV100. Pixel Inspector-like feedback has been removed.



For additional information, see Physical Lighting Units .

New: Sequencer Event Track

The Sequencer Event Track has been completely refactored so that Events are now more tightly coupled to Blueprint graphs which makes it a much more familiar user-experience and more robust. By utilizing Blueprints and Interfaces, this offers better control and stability compared to the previous implementation which used struct payloads and anonymous named events.

Please see Event Track Overview and Calling Events through Sequencer for more information.

New: Geometry Cache Track (Experimental)

The new (and experimental) Geometry Cache Track allows you to scrub through a Geometry Cache and render it out with frame accuracy.

Please see Using the Geometry Cache Track for more information.

New: Sequencer Audio Bakedown (Beta)

You can now bake down the audio into a Master Audio Submix from the Render Movie Settings window. The process of baking audio occurs in a separate render pass and exports the audio in the sequence to a single file when you render a movie.

Please see Render Movie Settings for more information.

New: Sequencer Guide Marks

You can now lay down vertical guide marks on the timeline to use for snapping or identifying key points in your timeline.

Please see Using Frame Markers in Sequencer for more information.

New: Windows Mixed Reality Support

Unreal Engine 4 now natively supports the Windows Mixed Reality (WMR) platform and headsets, such as the HP Mixed Reality headset and the Samsung HMD Odyssey headset. To use our native WMR support, you must be on the April 2018 Windows 10 update or later, and have a supported headset. For more information on how to get up and running, see Windows Mixed Reality Development .

Image courtesy of HP

New: Magic Leap Qualified Developer Release Support

Unreal Engine 4 now supports all the features needed to develop complete applications on Magic Leap's Lumin-based devices. We support rendering, controller support, gesture recognition, audio input/output, media, and more. For more information on how to be become a developer, please check out https://www.magicleap.com/ .

New: Oculus Avatars

The Oculus Avatar SDK includes an Unreal package to assist developers in implementing first-person hand presence for the Rift and Touch controllers. The package includes avatar hand and body assets that are viewable by other users in social applications. The first-person hand models and third-person hand and body models supported by the Avatar SDK automatically pull the avatar configuration choices the user has made in Oculus Home to provide a consistent sense of identity across applications. For more information, see the Avatar SDK Developer Guide .

New: Round Robin Occlusions

Unreal Engine 4 now supports Round Robin Occlusions. With the newly added vr.RoundRobinOcclusion flag enabled, stereoscopic frames will kick off occlusion queries for one eye per frame using an alternating scheme (i.e. odd frames only kick off queries for the left eye, and even frames only kick off queries for the right). This approach cuts the number of occlusion draw calls per frame by half. In some situations, this improves performance significantly.

New: Platform SDK Upgrades

In every release, we update the Engine to support the latest SDK releases from platform partners.

IDE Version the Build farm compiles against Visual Studio: Visual Studio 2017 v15.6.3 toolchain (14.13.26128) and Windows 10 SDK (10.0.12699.0) Minimum supported versions Visual Studio 2017 v15.6 Visual Studio 2015 Update 3 Xcode: Xcode 9.4

Android: Android NDK r14b (New CodeWorks for Android 1r7u1 installer will replace previous CodeWorks on Windows and Mac; Linux will use 1r6u1 plus modifications)

HTML5: Emscripten 1.37.19

Emscripten 1.37.19 Linux "SDK" (cross-toolchain): v12_clang-6.0.1-centos7

Lumin: 0.16.0

0.16.0 Steam: 1.39

1.39 SteamVR: 1.39

1.39 Oculus Runtime: 1.28

1.28 Switch: SDK 5.3.0 + optional NEX 4.4.2 (Firmware 5.0.0-4.0) SDK 6.4.0 + optional NEX 4.6.2 (Firmware 6.0.0-5.0) Supported IDE: Visual Studio 2017, Visual Studio 2015

PS4: 6.008.001 Firmware Version 6.008.021 Supported IDE: Visual Studio 2017, Visual Studio 2015

Xbox One: XDK: June 2018 QFE-4 Firmware Version: June 2018 (version 10.0.17134.4056) Supported IDE: Visual Studio 2017

macOS: SDK 10.14

SDK 10.14 iOS: SDK 12

SDK 12 tvOS: SDK 12