Unreal Engine 4.17 Preview


A Preview of the upcoming 4.17 release is available now on the Launcher and Github. We have made this Preview available so that our developer-community can help us catch issues before the final release. As fixes are implemented, we will release updated previews throughout the development cycle. Please be aware that the preview releases are not fully quality tested, that they are still under heavy active development, and that they should be considered as unstable until the final release. Developers should not convert their projects for active development on preview releases. Please test on copies of your project instead.

We encourage users to check out the preview to try new features and inform us of any issues which we may not have caught. Links to known and fixed issues for this release are provided below. If you discover any additional issues with this preview release, please report them using the guidelines in the link: How to Report a Bug.

Known & Fixed Issues

4.17 Preview Summary

This list provides a brief summary of updates in this Preview which may benefit from additional testing. Not all updates may be listed. Full release notes will be made available with the final 4.17 release. We may not be able to provide additional information about updates at this time.

  • Animation/Physics Updates:

    • Baking out materials on StaticMesh instances is now supported.

      • Support for baking out materials on a Static or Skeletal Mesh asset is also added as an experimental feature (requires enabling the Asset Material Baking under Experimental settings).

    • New physics optimizations by having PhysX tasks batched together to reduce overhead. This can be tuned with p.BatchPhysXTasksSize. Bigger batch sizes reduce per-task overhead at the cost of less parallelism.

    • The ‘Additional Meshes’ feature for previewing modular meshes now uses the ‘Copy Pose’ node instead of ‘MasterPose’. This means it can support meshes that do not share a Skeleton, and bones are copied by name.

    • ProceduralMeshComponent now supports Async PhysX Cooking, avoiding hitches at runtime.

    • Runtime PhysX Cooking can be turned on and off as a plugin instead of an engine recompile.

    • The animation Asset Browser now uses folder filters.

    • Added a MakeDynamicAdditive node to animBlueprints.

    • Two Bone IK improvements including a ‘NoTwist’ option and an ‘Enable Debug Draw’ option.

    • (Experimental) Animation Blueprints can now be live edited and recompiled while running on a PIE/SIE instance. When choosing an instance to debug in the level, the viewport is now ‘connected’ to that instance and displays a mirror of the instance’s animation state.

    • (Experimental) Clothing Tools improvements.

      • Refactor of clothing paint tool framework to create a more extensible editor.

      • Clothing Masks are supported. This allows multiple masks to be defined and swapped between during development while testing different configurations.

      • Reworked tools framework for cloth painter and added new tools.

  • Audio Updates:

    • Audio Streaming is no longer experimental, and contains a number of fixes.

    • (Early Access) The new Unreal Audio engine now supports Android, PS4, Xbox One, iOS, and Mac OS.

  • Console Updates:

    • New features and improvements are coming for development on XBox One, Nintendo Switch, and PS4. Since console code is not available for the Previews, details will be provided with the final 4.17 release.

  • Core Updates:

    • Plugins may now declare dependencies on other plugins, allowing the engine to automatically enable and load anything they require. Dependencies can be listed in a .uplugin using with the same syntax as .uproject files.

    • UE4 now includes support for the PVS-Studio static analyzer (available separately). To enable static analysis with PVS-Studio, append -StaticAnalyzer=PVSStudio to the UnrealBuildTool command line.

  • Gameplay/Scripting Updates:

    • The Asset Manager now has Blueprint access and is ready for production. The Asset Manager is a global object that can be used to discover, load, and audit Maps and game-specific asset types in the editor or at runtime. It provides a framework to make it easier to create things like Quests, Weapons, or Heroes and load them on demand, and can also be used to set up cook and chunk rules when packaging and releasing your game. The Asset Manager tab in Project Settings can be used to set up the rules for your game. Primary Asset Types that are scanned by the Asset Manager can be queried at runtime before they are loaded, and can then be asynchronously loaded on demand. To use the asset manager, call functions on the native UAssetManager class (which can be subclassed for your game), or call Blueprint functions in the Asset Manager category such as Async Load Primary Asset.

    • A new Orphan Pin feature has been added to help avoid mysterious content breakage as the result of pin removals. Any time a pin that is in use has been removed from a node, instead of that pin quietly vanishing, breaking all connections, the pin will now be retained as an Orphan, and an error (if it is connected) or a warning (if it is an input pin with a non-default value) will be emitted.

    • Native member variables can now make use of uproperty markup to be exposed to Blueprints via ufunction accessors even if the property had been previously exposed directly using BlueprintReadOnly or BlueprintReadWrite markup.

  • Mobile Updates:

    • Translucent objects marked as “Mobile Separate Translucency” will be rendered separately after Bloom and Depth Of Field. This option can be found in Translucency section of Material Editor.

    • Executable sizes have been reduced on iOS and Android. Further mobile executable size reductions are coming in 4.18.

      • For iOS we now disable exceptions for ObjectiveC by default, saving around 6.5 MB from the executable size.

      • For Android we have enabled -ICF flag for android shipping builds. This saves around 5 MB from the Engine’s .so size (uncompressed) and 1.2 MB inside the apk file (compressed).

    • Android applications built with OpenGL ES3.1 or Vulkan will now use native sRGB sampling instead of emulating it. You can expect better texture brightness.

    • The Android toolchain now supports NDK 14b with NDK 15 as experimental.

      • Google Play Services upgraded to 9.8.0

      • Gradle is supported as an experimental build option. This is enabled per project in the Android Project Settings with the “Enable Gradle instead of Ant [Experimental]” checkbox.

    • Android support for ultra-wide aspect ratios. By default maximum supported screen aspect ratio is 2.1 (width / height). Android will automatically letterbox application on devices with bigger aspect ratio. Default aspect ratio can be changed in Android section of Project Settings.

  • Rendering Updates:

    • A new Composure Compositing Plugin is available to help with real-time compositing pipelines. (note, this currently causes the project to crash in Preview 1) It includes many features, such as:

      • Binding mechanism between a Player Controller and a Texture Render Target 2D to replace the engine default’s video game rendering pipeline by the project specific C++ or Blueprint implemented compositing pipeline output

      • Parametric lens distortion

      • UVMap pass to distort textures according UV displacement map and UV matrices

      • Engine tonemapper independent pass

      • Experimental alpha channel support in Engine’s post processing chain

      • Post process material domain and their alpha channel output support in the Blueprint canvas drawing API

      • And more…

    • (Experimental) Shaders are now supported in Plugins and Projects due to changes made to the shader file directory structure and a new file extension.

      • USH files are used for shader header files that do not contain a shader entry point and that should only be included by other shader files

      • USF files would be the only non includable files that have the shader entry points.

      • Shader files have been split under public and private folders. The public API should be placed in files under a public folder, while the implementations are placed in the private folder.

      • Plugins & projects modules that have global shaders requires PostConfigInit loading phase.

      • Project and plugins can include other plugin’s USH file in Public directory freely.

      • USF files should be only in Private directory.

      • All calls to IMPLEMENT_SHADER_TYPE, should now include the full path of the USF shader file (e.g. “/Engine/Private/Foo.usf” or “/Plugin/FooBar/Private/MyComputeShader.usf”).

      • C++ Generated files should be mapped within the /Engine/Generated/ virtual directory.

      • Shaders/ directory requires at least a Private/ or Public/ directory, and Generated/ directory shall not exist.

    • Bent Normal Maps are an additional piece of information that can come when calculating ambient occlusion. With this information we can do multiple things to improve indirect lighting. Most traditionally bent normals are used with AO to improve diffuse indirect and make it look closer to GI. We also use this information in a powerful but less traditional way, for Reflection Occlusion (occlusion for specular indirect light). This can reduce specular light leaking significantly, especially when SSR data is not available.

    • We have added several Blueprint and Material nodes to generate point locations using the Sobol quasi-random sequence. The Sobol sequence can generate points with a large number of independent dimensions.

    • We have added Texture-based Importance Sampling Blueprint nodes to place points according to a given density function. Blueprint nodes allow flexible 2D placement based using a texture to drive the placement. The Make Importance Texture Blueprint node processes the texture for use, and the Importance Sample Blueprint node gives point locations driven by the provided density.

  • Sequencer Updates:

    • Sequencer is now more tightly integrated with the World Outliner. The World Outliner shows which level sequences an actor is bound in. It also displays actors spawned by sequencer so that you can access all actors bound by sequencer in one location. There’s also a new filter in the “View Options” to “Show Only Sequencer Actors”.

    • There’s a new toggle which helps you divide up your work so that you can be confident in whether a change to a property will affect a single shot or propagate to other shots. When “Allow Sequencer Edits Only” is enabled, any edits to properties will automatically create a track if it doesn’t exist and/or a keyframe. These changes will be isolated to the particular shot you’re working on and won’t leak into others. When “Allow Level Edits Only” is enabled, you’ll be editing default properties on objects. Properties that already have tracks in sequencer will be disabled in the details panel when you want to make global changes that affect all shots.

    • Improvements to blending, including automatic easing between blendable sections, per-channel animation of transforms, and more.

    • Auto-key has been simplified to be a single toggleable state.

  • Tools Updates:

    • Slate has a new clipping system that properly supports complex layered clipping quads with arbitrary transforms. Additionally widgets can now individually opt into clipping their children. More details here.

    • UI improvements to the Materials and Sections panels of the Static and Skeletal Mesh Editors.

    • In VR Mode, selecting a camera or actor with a camera now gives an in-world preview of what that camera sees.

  • VR Updates:

    • Spectator screens are now supported on the Oculus and HTC Vive.

    • Stereo layers have been unified across all platforms, allowing developers to use them agnostically across any platform without worrying about functional differences between platforms.

    • (Experimental) Google Tango AR platform support is now available as a plugin.

REMEMBER: Please report any new bugs you find by following the How To Report a Bug Guide

Great stuff! I look forward to the audio changes! The threads by are of great healp, and being able to work with them without them being experimental gives me a peace of mind.

A question I have is: What does “Baking out materials on StaticMesh instances” mean? Like, you make a material for an asset on the level editor, and then can just flatten out the final color, roughness, metal, textures etc?

Does this mean that we could make a game easily moddable like Robo Recall?

The best are:

  • Plugins may now declare dependencies on other plugins
  • Gradle support

:cool: :smiley: :wink:

Any word on Layered materials, ARKit Support, PCS Shadows and the new polygon modeling set?

Woooo Excellent!

I was hoping that this commit which adds Temporal AA and Motion Blur support to Scene Captures would be included in this version, but it doesn’t seem to be working :frowning:

Test Project

Also, I’m getting a weird glow on static meshes in the Blueprint Viewport:


So much goodness :smiley: . Thank you for all the awesome.


What does this mean? It’s not making sense to me.

Sounds like you can write your own Get/Set UFunction methods to expose a native member variable

Does it mean we can have split screen for two players? Player one uses PC with Keyboard and mouse and other player uses VR on the same computer?

Hold the phone, THIS should be plastered at the front of the notes.

And what it is exactly ?

Default values for blueprint function input/output.


Any news on apple ARKit or taking google tango development inhouse? Plugin was abandoned by opaque media developers over a year ago… Maybe Epic could step in and bring the native support / own plugin?

Ah, very nice, downloading!

The last one in particular, Yes Please

Please for the love of all things holy, tell me this is going to be fixed in this version…

What happened to ARKit? It doesn’t seem to be there.