请选择 进入手机版 | 继续访问电脑版
阿里云服务器全部产品幸运券

未来CG龙

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 187|回复: 0

Unreal Engine 升级到4.18新功能介绍。。。

[复制链接]

6

主题

9

帖子

68

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
68
发表于 2017-10-26 09:34:49 | 显示全部楼层 |阅读模式
UnrealEngine 升级到4.18新功能介绍。。。
抱歉没翻译,两个原因,一是本人英文水平有限,二是没必要翻译,太多,就是了解一下就成。真想了解一下英文比较菜的同学可以百度或其它翻译大概看看就得。
还有就是YouTube视频都知道的,所以介绍中的YouTube视频都被我忽略了。能看并且想看的同学去官网看吧:
在这里:https://docs.unrealengine.com/latest/INT/Support/Builds/ReleaseNotes/4_18/index.html


UnrealEngine 4.18 Release NotesWhat’sNew
Fromdesktop to mobile in virtual reality or augmented reality, UnrealEngine 4.18 gives you the tools to deliverthe types of content users demand.With expanded and improved platform support, you can delivercontent wherever users consume it.In our relentless pursuit of a more efficient and streamlineddevelopment process, we continue to make updates and improvements toall of our tools so that you can delivercontent faster than ever before.
Withnew lighting features like Volumetric Lightmaps and multi-bounceindirect lighting from Skylights, your worlds can achieve a greatersense of realism and believability. You can even bring the real worldinto yours with the new Media Framework features that enablereal-time compositing. Or, build your world on top of the real worldfor the ultimate in immersion using Apple’s ARKit and Google’sARCore.
Yourpotential audience is constantly evolving and getting content fromnew and different platforms. Unreal Engine 4.18 puts your content onevery major platform with greater fidelity and higher performancethan ever before. We made the desktop forward renderer available onrecent iOS devices to enable high quality mobile and AR content thatruns blazing fast. WebAssembly is now the default for HTML 5 projectsso you can create complex games for the web that load quickly and runsmoothly.
UnrealEngine 4.18 enables you to focus your time on the things that mattermost. With the new global Findin Blueprints searchfunctionality, you’ll never waste time looking for something inmultiple Blueprints ever again. We have also added improved Clothingtools, a new Physics Asset Editor, and advanced Material Editorpreview support along with a host of other quality of lifeimprovements that significantly speed up the development process.
Inaddition to hundredsof updates fromEpic, this release includes 98improvements submittedby the incredible community of Unreal Engine developers on GitHub!Thanks to each of these contributors to Unreal Engine 4.18:
AkihiroKayama (kayama-shift), Alan Edwardes (alanedwardes), Alec Kosik(akosik), Andrey Yamashev (ayamashev), Artem (umerov1999), aziot,Cameron Angus (kamrann), Carsten Neumann (cneumann), Cengiz Terzibas(yaakuro), Chris Conway (Koderz), Christopher Reed (christopherreed),Cody C. (Mumbles4), Courtland Idstrom (Frugality), DaveC79,DavidNSilva, getnamo, Grant Peters (ggpeters), Guillaume Buisson(monsieurgustav), Harry Kim (shuaiharry), Ian Huff (IanMatthewHuff),IHappyDayI, Ilya (ill), Isabela Schulze (Ereski), Jason Calvert(jasoncalvert), Jesse Yeh (jesseyeh), John McBroom (jimbomcb), JørgenP. Tjernø (jorgenpt), Josef Gluyas (Josef-CL), Kalle Hämäläinen(kallehamalainen), karanseqwb, Konstantin Nosov (gildor2), KostasNakos (jubanka), lwdingNT, Masanori Shinkawa, Mathias Hübscher(user37337), Matt Hoffman (LordNed), Maurice Laveaux (mlaveaux),Michael Allar (Allar), Michael Kösel (TheCodez), Mikayla Hutchinson(mhutch), minichris, Nick Pearson (Nick-Pearson), Nick Verenik(nverenik), Patrice Vignola (PatriceVignola), projectgheist, Rama(EverNewJoy), Roman Chehowski (RChehowski), Roman Maksymyschyn(miracle7), Sam Hocevar (samhocevar), Scott Freeman (gsfreema),Sébastien Rombauts (SRombauts), Sertaç Ogan (SertacOgan), steelixb,stfx, Triplelexx, Vivid Games - Engine Team (enginevividgames),Vladimir Ivanov (ArCorvus), XueBing (DarkSlot), Yujiang Wang(Luoshuang), yhase7, YuchenMei, Zeblote
MajorFeaturesNew:Volumetric Lightmaps
Thenew Volumetric Lightmaps enable high quality lighting on movableobjects from low cost precomputed lighting! Characters, particlesystems, instanced foliage, and other dynamic objects appear moregrounded to the environment than ever before.
VolumetricLightmaps store precomputed lighting at all points in space bycovering the entire Lightmass Importance Volume with 4x4x4 bricks oflighting samples. Bricks are placed with higher density near staticgeometry, where indirect lighting is changing the most. This datastructure allows efficient interpolation of indirect lighting to anypoint in space on the GPU. The Volumetric Lightmap is interpolated toeach pixel instead of once for the whole component and has morereliable detail than our previous Indirect Lighting Cache method,resulting in fewer cases of light leaking.
Formore information and details on using Volumetric Lightmaps in yourproject, see the VolumetricLightmaps documentation .
Precomputedlighting on Volumetric Fog
VolumetricFog now interpolates precomputed lighting to its position in spaceusing Volumetric Lightmaps enabling Stationary lights - which havetheir indirect lighting stored in lightmaps - to affect fog. Staticand Emissive lights affect fog without costing anything, sincethey're all merged into the Volumetric Lightmap.
Skylightsare also now shadowed properly, preventing indoor areas from becomingover-fogged.
1- Uniform skylight on fog has leaking, 2 - Skylight on fog isshadowed properly
Performance

           
  •         Volumetric        Lightmaps on a third person character cost .02ms of GPU time on        PlayStation 4. All Indirect Lighting Cache Rendering thread cost is        removed.
  •         Memory        usage in Paragon's Monolith map went from 5Mb with the Indirect        Lighting Cache up to 30Mb with Volumetric Lightmaps at default        DetailCellSize settings. Memory usage can be seen under ‘stat        memory’.

DetailedComparison
                                                                       
Volumetric                                Lightmap
                                                                               
Precomputed                                Light Volumes / Indirect Lighting Cache
                                       
                                                                                        Efficient                                interpolation on GPU
                                                                                Costly                                interpolation on CPU
                                       
                                                                        Per-pixel                                interpolation
                                                                                Per-object                                interpolation, even on instanced components
                                       
                                                                        Applied                                to Volumetric Fog
                                                                                Cannot                                affect Volumetric Fog
                                       
                                                                        Placed                                with high density around all static surfaces
                                                                                Placed                                with high density only on top of static surfaces, frequent                                leaking from low density samples
                                       
                                                                        Border                                voxels are stretched to cover area outside Importance Volume
                                                                                Black                                indirect outside Importance Volume
                                       
                                                                        Does                                not currently support level streaming
                                                                                Supports                                level streaming
                                        New:Improved Static Skylight Directionality
Skylightsused to be represented to Lightmass with a third order SphericalHarmonic, which didn't capture the detail present in a sunrise orsunset. We are now using a filtered cubemap with much higherresolution by default. Lightmass chooses the appropriate mip of thecubemap based on the size of the Final Gather rays to avoid aliasing.You can see the most difference in heavily occluded scenes, with askylight cubemap that has a lot of brightness and color variation.
1- Original Static Skylight, 2 - New filtered cubemap Static Skylight
Thesmaller the opening, the more directional sky lighting will become.It is even possible to recreate a pinhole camera effect with a smallenough opening.
                                                                               
                                                                                       
                                                                               
                                       
                                                                        Skylight                                source cubemap
                                                                                Resulting                                sky lighting
                                        New:Multi-bounce Indirect Lighting from Skylights
Wenow have support for multiple indirect lighting bounces from staticand stationary Skylights through a new ‘Num Sky Lighting Bounces’setting in World Settings -> Lightmass. Thanks to forumuser Luoshuang forthe first implementation of this feature.
1- Single skylight bounce, 2 - Multiple skylight bounces
Yourmaterials need to have a high diffuse value for multiple skylightbounces to be noticeable in most cases. For example, with a diffusevalue of .18 (18% grey), the second skylight bounce will onlycontribute .18^3 = .006 of the light's emitted energy which is verysubtle. With a diffuse value of .5, the second skylight bounce willcontribute .125 of the light's emitted energy and be noticeable.
Asa bonus we also get multiple bounces from Emissive meshes:
Lightmassuses a Radiosity Solver to compute multiple bounces for Skylights andEmissive meshes. Each bounce increases non-distributable build times,so use with care.
New:Apple ARKit iOS 11 Support
UnrealEngine 4.18 includes production-ready support for Apple’s ARKit iniOS11 based on our collaborations with partners for Apple’s keynoteannouncing the iPhone 8 and iPhone X. We’ve streamlined workflowsmaking use of existing framework components, added robust handling ofthe passthrough camera, and increased fidelity by improvingperformance and prediction.

Note: Therehave been significant changes since the experimental support forARKit in Unreal Engine 4.17. ARKit projects created using 4.17 willrequire updating to work in 4.18.

Gettingstarted
Gettingstarted in now super easy. All you need to do is:

           
  •         Enable        the appropriate ARKit plugin for your project.
  •         Check        the bStartInAR property in Project Settings.
  •         Make        sure you have a Pawn with a CameraComponent.

KnownARKit Issues

           
  •         Device        rotation is not fully supported yet. At the moment you should select        Landscape Right as the only supported orientation for your project.
  •         The        only exposed function for hit-testing is        HitTestAtScreenPosition_TrackingSpace. This returns the results in        the CameraComponent's parent's space. In the default setup, that is        the Pawn's space. To translate to world space we currently need to        multiply the result by the parent's (e.g. Pawn's) world transform.
  •         The        function HitTestAtScreenPosition_TrackingSpace ignores the Types        parameter; it will always hit-test against all the available        surfaces and return results that can be manually filtered by        checking the Types field of the FAppleARKitHitTestResult struct.
  •         FAppleARKitHitTestResult        does not populate the Anchor property; it is always nullptr.
  •         World        Scale is currently assumed to be default, and cannot be changed.

New:Google ARCore Developer Preview Support
UnrealEngine 4.18 contains official support for Google’s ARCore developerpreview which takes advantage of common augmented realityfunctionality in the engine and features improved handling of thepassthrough camera.

New:Clothing Tools
Wehave added a completely revamped toolset for creating and configuringclothing in the Skeletal Mesh Editor!

Thereis now a Clothing pane for editing an expanded set ofclothing-specific properties that provide more control over clothingconstraints, self collision vertex culling, inertia scaling. Enhancedpaint tools enable painting per-vertex clothing parameters directlyon the mesh. The new paint tools include: Brush, Gradient, Smooth,Fill. Painted parameters can be switched out instead of overwritingto aid iteration.

Theclothing tools have been Integrated with Physics Assets for collisionauthoring. A new LOD pipeline for creating and replacing simulationmeshes in a Clothing Data object that includes a parameter mappingsystem for mapping your painted parameters onto new LODs orreplacement geometry which estimates lower detail LOD parameters fromhigher detail LOD parameters! It is also much easier to createclothing data in the Skeletal Mesh Editor by right clicking the meshsection to convert.

Thisis in addition to all of the smaller bugfixes and improvementshighlighted while the tool was experimental / early access.
Note: APEXfile import still available for those preferring a DCC pipeline
New:Improved Physics Asset Editor
ThePhysics Asset Editor (formerly known as PhAT) has been completelyoverhauled to significantly improve usability and expandfunctionality! The UI has a new look and feel with an upgradedSkeleton Tree view that provides better filtering and display of allscene elements and a new Graph view for setting up constraintsbetween bodies visually using nodes. You can even set up of loops ofconstraints - something that was not possible before.
UIelements have been sanitized. Many things have moved or changed tomore logical locations. For example, the Show menu now allows accessto animation-related settings like in the Animation Editors.Animations can now be chosen at any time, paused, scrubbed etc.(previously this was only available once simulation had started).Simulation can also be engaged and disengaged at any time whileanimating and works in a similar way to the Level Editor, with asingle prominent "Simulate" button and options underneath..

AdditionalUpdates and Improvements:

           
  •         Time        dilation works with animation and physics together and is quickly        set in the viewport menu, like in the Animation Editors.
  •         Recording        is now controlled from the transport controls like in other        Animation Editors.
  •         Physical        animation and constraint profiles have a revamped UI. This allows        easy selection, assignment and management of constraint and physics        profiles.
  •         Constraint        & body mode are no more. We now display constraints and bodies        together. Rendering of each can be enabled/disabled and filtered in        the tree view & viewport.
  •         New        body creation has been moved to a new 'Tools' tab instead of the        modal dialog we had before. This improves iteration times on new        assets, removing 3 clicks each time. The same widget is re-used when        we create new Physics Assets, as before.
  •         Physics        Assets can now be created directly from the Content Browser.        Previously they could only be created from a hidden context menu        option of Skeletal Mesh assets.
  •         Operations        that can be performed on bodies/constraints are now in all context        menus, in addition to the keyboard shortcuts required previously.

New:Global Find in Blueprints
Itis now possible to perform a "Find in All Blueprints"search without also requiring a Blueprint Editor window to be open.Up to 4 global “Find in Blueprints” tabs can now remain openand/or docked in a different window at any time. These are nowavailable in the main “Window” menu.

Inthe Blueprint Editor menu, choosing Edit->Find in Blueprints (orpressing CTRL-SHIFT-F with the Blueprint Editor window in focus) willalso now open a new global Find in Blueprints tab (or switch to thefirst global tab that’s open and unlocked). This tab will remainopen even after the Blueprint Editor’s window is closed if the tabis open or docked somewhere outside of the Blueprint Editor’swindow.
Theglobal Find in Blueprints tab also includes a Lock button so that thecurrent set of results can be locked to the current tab. InvokingEdit->Find in Blueprints from the Blueprint Editor will open up anew global Find in Blueprints tab if any of the currently-open tab(s)are locked.
ChoosingEdit->Find (or pressing CTRL-F) in the Blueprint Editor menu willstill open a local Find Results tab for performing a search withinthe current Blueprint only. Clicking the "Find in allBlueprints" button will allow you to perform the same searchover all Blueprint assets in a global Find in Blueprints tab.
Thenew behavior can be switched off if necessary by unchecking theoption titled "Host Find in Blueprints in Global Tab" inEditor Preferences->Blueprint Editor->Workflow.
New:Media Framework Improvements
MediaFramework in 4.18 has been significantly updated and extended tosupport upcoming advanced use cases, such as real-timevideo compositing,time synchronization, simplified workflows, capture hardware &video-over-IP support, online media streaming, integration withUnreal Editor, and improved stability and performance!

TheMedia Framework API has been streamlined to improve compile times andupdated to make use of modern features in C++11. In addition,high-level media player logic has been refactored from a push-basedparadigm to a pull-based methodology and moved into reusableEngine-agnostic classes that enables better separation of concerns inmedia player interfaces.
Latencyand Performance is improved due to a timecode-based sample processingpipeline with high-frequency ticking for time-sensitive samples -such as audio, camera tracking, and face tracking - and multi-stageticking that can be used by any object for better frame utilizationand predictable timing.
Audioplayback is now integrated with new Audio Mixer API and makes use ofnew Media Sound Components (replaces Media Sound Waves) that arebuilt on top of Synth Components which can be attached to levelactors and used in UMG widgets. Media sample rate converter(previously supported only 16-bit @ 44.1kHz) now supports int8,int16, int32, float, double input samples and any sample rate(including variable rates) with up to 8 audio input channels and 1and 2 output channels (surround sound is scheduled for 4.19). Spatialaudio is also supported via Media Sound Components on Actors
Onthe video side, Media Framework now uses an external texture samplerAPI which enables video frame rendering without memory copies. Thisis currently only implemented for Android, but we plan to expand itto other platforms. We replaced problematic triple-bufferingmechanism with sample queues and added better support for exoticvideo and pixel formats, and faulty encoders.
TheMedia Player Editor has been updated with a new Track format selectormenu, audio/video capture device selector, cache state visualization(for player plug-ins that support it), Playlist controls, and theability to save playlists. In addition, scrubbing is now moreresponsive and information overlays have been improved. There is alsoexperimental support for text overlay visualization and 360 videoviewport controls. Per-platform media player overrides for MediaSource assets are also now functional.
Blueprintfunctionality has been added for querying media player tracks andtrack formats, enumerating audio, video and webcam capture devices,and adding files and URLs to media playlists.
Allmedia player plugins have been updated to enable support for all ofthe dramatic new features available in the Media Framework in UnrealEngine 4.18.
Note: Someof this work, such as Sequencer integration, stereoscopic & 360video support, and hardware accelerated 4K playback is still underactive development.
New:RigidBody Anim Node Improvements
TheRigidBody node now supports a root bone simulation space option. Thisis useful for the case where an attached Skeletal Mesh is counterrotated from a player capsule. We’ve also exposed inertia scalingand constraint dominance in the Physics Asset Editor which greatlyimproves stability and jitter.

New:Multi-Convex Generation for Physics Asset Bodies
Youcan now auto-generate physics bodies using multiple convex hulls perbone. This allows non-convex geometry to be approximated usingmultiple convex hulls.
New:Blendspace Editor Usability Improvements
Youcan now drag the Previewing Pin (green) across the grid instead ofhaving the pin follow the cursor while holding down the Shift key.State-sensitive tips on the actual Blend Space Grid have been addedto provide in-context explanations of features and functionality.

New:Sequencer Improvements
Wemade several ‘quality of life’ improvements to Sequencerincluding:

           
  •         Improved        FBX import by adding the ability to import static/default        transforms, add cinematic cameras if a corresponding camera doesn’t        exist in the map, and the option to force front x axis
  •         More        efficient track, keyframe and path trajectory drawing. Overlapping        keys now draw with a red border.
  •         Editing        tools including slip editing for audio, skeletal animation, shot        tracks.


Moredrag and drop support - You can now drag onto shot tracks, subscenetracks camera cut tracks and sequence recorder.

Warmupon shot boundaries when movie recording from a master sequence.

           
  •         Added        the ability to rerun construction scripts in editor while scrubbing.
  •         Cine        camera look at with roll


Sequencerecorder improvements such as interpolation and tangent settings foranimation recording keys and drag and drop support.
UnrealAudio Engine (Early Access Preview)
Developmentcontinues on the Unreal Audio Engine. This release brings support tomore platforms, an updated plugin architecture, and some exciting newfeatures. These new Unreal Audio features should still be consideredearly access and not relied upon for shipping titles. We will beturning our attention towards performance and shippability in comingreleases.
Alongwith Windows, Mac, iOS, Android, XboxOne, and PS4; we have addedsupport for the new Unreal Audio Engine on Nintendo Switch and HTML5via SDL2.
AudioPlugin Architecture Improvements (New Unreal Audio Engine Only)
Audioplugins are useful for audio effects that needto override or extend corefeatures of the audio engine. Object-based binaural sourcespatialization, source occlusion, and master reverb are best achievedthrough a much deeper integration into the core mixing engine. Theseeffects require special audio plugin support.

           
  •         Enhanced        Audio Plugin architecture enabling a smoother integration for 3rd        party developers wishing to override core mixing features
  •         Empowering        projects to mix and match plugins overriding: Source Spatialization,        Source Occlusion, and Reverb
  •         Can        now swap out different plugins without restarting the Editor!

New:Source Bus (New Unreal Audio Engine Only)
SourceBuses are a powerful new feature which demonstrates the flexiblerouting capabilities of the New Unreal Audio Engine and allowsmultiple Sound Sources to send and sum into a single real-timeSource. Source Buses are derived from Sound Base which allows them tobe played and utilized in the same way Sound Waves or Sound Cues areemployed—whether spatialized as a 3D mix bus or as a means tomaintain Source Effect persistence, Source Buses will become ainvaluable tool for Audio Designers and will set the stage forexciting features in the future.

           
  •         Source        Buses allow any audio source to route their audio to a 3D audio        source, including other source buses (including themselves, creating        a runtime Audio feedback system).
  •         Source        Buses are a new USoundBase type, so they can be played as if they        are another sound in our normal sound BP and C++ APIs, audio        components, and ambient actors and can have their duration specified        to become either a one-shot bus or, if specified as 0.0, will be        treated as a looping source with indefinite duration.
  •         Source        Effects and Submix Sends can be used with Source Buses like normal        sound sources
  •         Other        Sources send their audio to buses in an analogous way to Submix        Sends and can opt to only send their audio to Source Buses vs. also        sending their audio to Submixes.

NewSubmix Effects (New Unreal Audio Engine Only)
Wehave updated our Synthesis Plugin with brand new time-based SubmixEffects ranging from a simple Delay to a flexible computationallyefficient reverb allowing you to create complex and interestinginteractive spatial effects:

           
  •         Delay:        Simple multichannel delay line that can be modulated at runtime.
  •         Tap        Delay:        Complex delay effect that allows for an arbitrary amount of taps        ("echoes") that can be independently added, modified, and        removed through a powerful Blueprint API during runtime. This is        useful for simulating the doppler effect, emulating early        reflections, or any other delay-based mix effect.
  •         Flexiverb: Computationally        inexpensive single-channel reverb algorithm optimized for maximizing        echo density with as few multiplies as possible. This effect is best        suited for emulating small room reverberation on platforms where CPU        resources are limited.

ImprovedAttenuation Settings
Wehave improved Attenuation Settings with much needed attention givento clarity and organization. Improvements include displayingAttenuation Settings according to Categories with special EditConditions to clarify which Attenuation Settings features arecurrently utilized.
NewLM Low Level Memory Tracker
Thenew LLM Low Level Memory Tracker enables you to trackall memory once and only once,*with nothing missed and nothing counted twice!
Everyallocation made by the engine or game is assigned a tag valueidentifying the category to which it belongs. The total of all of thecategories will add up to the total amount of memory used for thegame. The tags are applied using tag scope macros. Any allocationmade within that scope will be given the specified tag.
LLMstats can be viewed in game using ‘stat LLM’ or ‘stat LLMFULL’.The current total for each tag will be shown in MB. LLM also writesout the stat values to a csv allowing the values to be graphed overtime.
Dueto its nature, LLM requires support to be added for each platform.Currently LLM supports PS4 and XboxOne. Windows is supported as anexperimental release.
New:Visual Studio Code Supported on Windows, Mac and Linux
Youcan now use Visual Studio Code to write code on all UE4 hostplatforms. To use it, select "Visual Studio Code" as yourpreferred IDE from the editor preferences dialog, or add the -vscodeargument when generating project files on the command line. Allplatforms are also required to have the .NET Core 2.0 runtimesinstalled, which can be obtained from theMicrosoft.NET Core website .
Touse Visual Studio Code to build and debug all project types, someadditional extensions are required. On all platforms, make sure theMicrosoft C/C++ extension, and the C# extension are installed. OnLinux and Mac, the "Mono Debug" extension is required todebug C# projects, and the “LLDB Debugger” extension is requiredto debug C++ projects. Also, in order to debug C# projects, the monoruntime must be installed:

           
  •         On        OS X: brew        install mono
  •         On        Linux: sudo        apt-get install mono-complete

Newlatform SDK Upgrades
Inevery release, we update the engine to support the latest SDKreleases from platform partners.

           
  •         Mac:        Supports Xcode 9
  •         iOS:        Supports iOS 11. NOTE: 32-bit executables and OpenGL ES are no        longer supported.
  •         Android:        Supports Oreo devices. Upgraded Google Play Services to 11.0.4
  •         Nintendo        Switch:        Supports SDK 3.5.1
  •         PlayStation        4:        Supports PS4 SDK 4.508.111
  •         Xbox        One:        Supports June QFE3 XDK for all Xbox consoles (XB1, XB1-S, and XB1-X)
  •         HTML5:        Upgraded emscripten toolchain to 1.37.19 (from 1.37.9)

New:Improved Cross-level Actor References
Cross-levelActor references are now better supported using Soft ObjectReferences, which were previously called Asset IDs/AssetPtrs. If youcreate a Soft Object Reference property pointing to an Actor, theynow have an improved UI that will show rather they are unloaded orbroken, as well as the full Actor ID they point to:
Crosslevel references like this will now correctly be fixed up if thereferenced Actor is renamed or moved using the "Move to currentlevel" option. It will attempt to check out and resave any otherlevels/sequences that point to that specific Actor. It will also warnyou before deleting Actors that are referenced in this way. They alsonow work correctly in Play In Editor with level streaming. Newlycreated Sequencer Actor references are now Soft Object References,but older Sequences will have to be fixed up with "RebindPossessable References" and resaved first.
Note: Aspart of this update, the native types FStringAssetReference andTAssetPtr were renamed to FSoftObjectPath and TSoftObjectPtr.
New:Gradle Enabled by Default for Android
Gradleis now the default for packaging Android APKs. Ant is still availableif necessary by disabling the "Enable Gradle" Androidproject setting, but it is recommended to transition to Gradle sinceAnt is considered depreciated.
Note: Ifyou previously did not accept the Android SDK license agreement bychecking "Enable Gradle", you will need to do so byclicking on the “Accept SDK License” button in the AndroidProject Settings. An error will be shown if you try to package orlaunch on without accepting the license.
New:Android Camera Plugin
UnrealEngine now has an optional plugin to expose access to the front andback cameras on Android devices. Enabling the plugin adds a newAndroid Camera plugin Project Settings panel to select AndroidManifest requirements.
New:HTML5 Upgraded to Emscripten 1.37.19
Theemscripten toolchain in the HTML5 pipeline has been upgraded to1.37.19 (from 1.37.9) to make use of the latest WebAssembly featurefixes and compiler bug fixes
Fordetailed information on the changes,see: https://github.com/kripken/emscripten/compare/1.37.9...1.37.19
New:HTML5 Optimized Browser WebAssembly is now set to default
WebAssemblyis now enabled by default for HTML5 projects. With support for theWebAssembly standard from many of the major browser makers, you canrealize massive improvements on asset sizes, browser load time, andruntime performance when publishing to the web. The previousoptimized HTML5 output ASM.js has been decommissioned and removedfrom the code base.
Note: Multi-threadingis not yet available on WebAssembly. While ASM.js did support this,WebAssembly (for now) can only run in single threaded mode. However,multi-threading is a major feature push for all browser makers in thenext coming months.
New:Simplified iOS certificates and signing
Whenusing the remote toolchain to build iOS on a remote Mac from your PC,the certificate and provisioning setup in from the Project Settingson your PC. This means it’s no longer necessary to install yourprivate key or certificates using Keychain Access on the remote Mac.
Newesktop Forward Renderer on iOS
UnrealEngine 4.18 contains the Desktop Forward Renderer used in the WingnutAR demo at WWDC 2017! It is supported on iOS devices with an A9 orlater processor running iOS 10.3 or newer.
*linkto docs page with list of any iOS caveats. eg currently only TAAsupported on iOS, not MSAA.
New:macOS 10.13 High Sierra Support, Mac OS X 10.11 El Capitan supportremoved
Supportfor macOS 10.13 High Sierra has been added as a fully supportedplatform! The support code for running the Unreal Engine 4 Editor &Games on Mac OS X 10.11 El Capitan has been removed. The minimummacOS version required for Unreal Engine 4 is now macOS 10.12.6Sierra. This was necessary due to the number of Metal features absentfrom Mac OS X 10.11 that are now required for Unreal Engine 4.
New:Improved XGE (Incredibuild) Shader Compiler Support
We'vemade improvements to the XGE (Incredibuild) shader compiler, whichhave greatly reduced the stalling and latency seen in the old systemand allow us to stream new shader jobs asynchronously into XGE.
Thenew system performs much more efficiently, and can greatly accelerateshader compilation in all situations, including cook on the fly, cookby the book, and iterating on shaders within the editor.
Theseimprovements are enabled by default, but require at leastIncredibuild version 8.01 or higher. The engine does a version checkon startup and falls back to the legacy XGE shader compiler if asupported installation is not found. As with the old system, the XGEshader compiler itself must be enabled on the command line via"-xgeshadercompile", or by setting “r.XGEShaderCompile”to 1 in ConsoleVariables.ini.
New:In-Editor Localization Preview
Wehave added the ability to preview your game’s localization whenPlay in Editor (PIE) is running and in the UMG editor to previewwidgets in different languages!

Thisis configured by the "review Game Culture" setting("Editor Preferences" -> “Region & Language”),and will automatically be active when Play in Editor (PIE) isrunning. The preview language is also passed to any standalone gamesthat are launched via the editor.

           
  •         While        a preview is running, all editable text fields are locked-down        (read-only) to prevent accidentally overwriting source data with        translation data. You can also use this new lock-down feature to        prevent any localization changes in your project by setting        "LockLocalization" to "True" under the        "Internationalization" section of either your        DefaultGame.ini or DefaultEngine.ini configuration files.

New:Array Reordering
Youcan now drag and drop elements to reorder them within an array! Allarrays set up through Blueprints and C++ are reorderable by default.To opt out of the default behavior and create a fixed order array inC++, use the EditFixedOrder metadata.

New:Advanced Material Preview Viewport
TheMaterial Editor and Material Instance Editor now have AdvancedPreview Scenes for previewing your material in the viewport. Thisenables you to change view settings such as the scene lighting andenvironment cube map, as well as to rotate the environment aroundyour preview mesh in the scene.
Youcan change the settings for the preview under Window > PreviewScene Settings.
New:Refactored VR / AR Camera System
UnrealEngine 4.18 now contains a default camera implementation for bothCamera Components and raw view that includes late-updateautomatically handled by the engine. This default cameraimplementation displaces itself (relative transform) equal to thereal-world displacement of the device from its calibrated origin whenthere is a CameraComponent in the view target. As a result, the APIthat hardware developers have to implement has a much smallerfootprint, resulting in a huge efficiency boost.
Note: Allexisting platforms have their camera implementations stripped out andreplaced by the default camera implementation.
RELEASENOTESAI

           
  •         Added        a Blueprint callable function AIPerceptionComponent.SetSenseEnabled        that can be used to toggle specific AI senses.
  •         Bug        Fix: Prevent crashes if UMockTask_Log is created manually rather        than via the CreateTask factory method
  •         Bug        Fix: Fixed a bug in AISense_Sight processing that resulted in        inconsistent frequency of "line of sight lost" reporting.        Now this even should be reported only once, when sight of target is        lost.

BehaviorTree

           
  •         Bug        Fix: Prevent an ensure in UBlackboardComponent::ClearValue when        called on a component with a null BlackboardAsset

General

           
  •         Bug        Fix: Fixed UAIPerceptionSystem::GetCurrent causing a BP error when        its WorldContextObject parameter is null

Navigation

           
  •         Bug        Fix: Fixed UCrowdFollowingComponent::UpdateCachedDirections crashing        when CharacterMovement is null
  •         Bug        Fix: Fixed: bNavigationAutoUpdateEnabled was not always working when        reopeinig the map Fixed: Navigation Build was not clearing some mesh        tiles when bNavigationAutoUpdateEnabled is enabled Fixed: Streaming        out a level in editor was not always updating NavMesh debug draw

Animation

           
  •         New:        TimeStretchCurve system for AnimMontages. Allows adjusting playback        time of montages in a non constant way. This optional curve allows        the user to determine how animation frames are influenced by play        back time scaling, instead of using a constant play rate scaling.        For example, with an attack animation, the strike could have zero        influence (no play rate), and the recovery time could have 100%        influence (most play rated). This system is entirely optional and        compatible with current Montage API. You still determine desired        play back time via the Play Rate parameter. Based on desired        playback time, if there is a curve named 'MontageTimeStretchCurve'        then, it will use the curve to determine animation frames to play        based on playback time and TimeStretchCurve. Otherwise, if no curve        exists, it is done using the constant supplied PlayRate.
  •         Added        FAnimationRuntime:erpPosesPerBone
  •         Added        FAnimationRuntime:erpPoses. Blends two poses together, but first        pose is also storing results. To save on copying poses when not        necessary. Removed individual use of ZERO_ANIMWEIGHT_THRESH, instead        use FAnimWeight functions. FAnimationRuntime weight functions use        FAnimWeight for consistency. (IsFullWeight was different).
  •         Added        outline to skeletal mesh section selection.
  •         Changed        behaviour when reimporting an Alembic Cache to ensure at least one        track is ticked
  •         Animation        Optimization: Added        EMeshComponentUpdateFlag::OnlyTickMontagesWhenNotRendered to only        update montages when not rendered, instead of doing a whole pose        update. This means on dedicated servers we'll only update montages        when needed, and not the AnimGraph, which we have no need for. This        is also affects non rendered meshes on clients.
  •         Added        short dummy bones to end effectors to prevent their rotations from        being too aggressively compressed.
  •         Fixed        broken 'ComputeCompressionError' with additive animations. Optimized        'ComputeCompressionError' by caching bone indices, so they don't        have to be looked up every frame. Added CompressCommandletVersion        INDEX_NONE to bypass DDC and test locally recompression.
  •         RemoveLinearKey        optimizations from licensee submission:        https://udn.unrealengine.com/que ... snt-scale-well.html
  •         More        Anim Compression Fixes: - Fixed frame->error bug in        FAnimationUtils::ComputeCompressionError resulting in incorrect        compression error measurement, and in some rare animations not being        able to find a suitable compressor. - Make sure automatic        compression actually go through all the compressors. - Removed        unused reduction based on retargeting settings.
  •         Automatic        Compression fixes. - Error reporting: normalize rotations and added        ensures to make sure NaNs do not sneak in there. - switched size        reporting from 32 to 64 bits, so we have enough space for large        recompression jobs. - fixed compression ratio to be accurate.        Measures actual compressed animation data instead of whole asset        size. - prevented infinite loop when trying to recompressed a failed        automatic compression. - Fixed reporting when no suitable        compressors were found. - Compression ratio is now against        uncompressed raw size, and not (trivially) compressed raw size. -        Force recompression if data we got back from DDC is invalid.
  •         Bug        Fix: SkelMeshComponent LOD update only refreshes transforms when        rendered. If AnimGraph eval is done, make sure Graph has been        updated at least once.
  •         Bug        Fix: SkeletalMeshComponent::InitAnim - Do not call        RefreshBoneTransforms without calling TickAnim first. AnimGraph        could get in a bad state. - Do not call RefreshBoneTransforms if        AnimInstance has not been initialized. - Do not call        RefreshBoneTransforms if bUseRefPoseOnInitAnim is set. Which it        could if bForceReinit was false.
  •         Bug        Fix: Fixed animation curves not correctly being updated to post        process instances.
  •         Bug        Fix: Removed deprecated FTAlphaBlend class and AlphaBlendType.h        header
  •         Bug        Fix: Marked UAnimInstance as Within=SkeletalMeshComponent since it        assumes the outer in various places
  •         Bug        Fix: Fix FPoseDataContainer::Shrink bug while LocalSpacePoseMask        already contains Tracks.Num() data before SetNumZeroed.
  •         Bug        Fix: Fixed issue with Animation Sequence bounds imported from an        Alembic Cache including the origin

AnimationAssets

           
  •         This        allows you to link curve to MaxLOD, where the lowest LOD (as 0 is        highest) is [0, MaxLOD]. If your MaxLOD is 1, it will be only        evaluate from [0, 1]. You can't disable LOD 0 this way, but if you        want to disable curve, use        USkeletalMeshComponent.bAllowAnimCurveEvaluation
  •         Cleaned        up animation compression logging (change to compression category and        downgraded from warning)
  •         -Added        option to state machine to allow it to skip reinitialization when it        becomes relevant -Added option to slot nodes to keep source pose        relevant while montage slot is playing.
  •         Bug        Fix: Fix for the bug: when montage is interrupted after it starts to        BlendOut neither Completed pin no Interrupted pin is executed.
  •         Bug        Fix: Fix playrate not being calculated correctly when 2 samples use        the same animation
  •         Bug        Fix: Add curve evaluation to aim offset blendspaces
  •         Bug        Fix: Correct root motion extraction on anim composites and montages        with more than one segment
  •         Bug        Fix: Fixed crash in compression code when cropping animations in        editor.

AnimationBlueprint

           
  •         New:


                     
    •                 Two                Bone IK and FABRIK uses FBoneSocketTarget that supports bone and                socket
    •                 Created                new detail customizaton for FBoneSocketTarget that can display bone                and socket together.

           
  •         Multiple        APIs are exposed in SkeletalMeshComponent to control Animation        Curves handling either to enable/disable/reset.


                     
    •                 void                SetAllowAnimCurveEvaluation(bool bInAllow);
    •                 bool                GetAllowedAnimCurveEvaluate() const { return                bAllowAnimCurveEvaluation; }
    •                 void                AllowAnimCurveEvaluation(FName NameOfCurve, bool bAllow);
    •                 void                ResetAllowedAnimCurveEvaluation();
    •                 void                SetAllowedAnimCurvesEvaluation(const TArray& List, bool                bAllow);

           
  •         Re-organized        AnimBlueprint menu, so that it prioritize showing up anim node Two        Bone IK.
  •         Added        more descriptive pin name and node text for constraint node
  •         Improved        root motion extraction performance by storing it on the anim        instance during post update to avoid waiting on the parallel eval        task later on.
  •         Bug        Fix: Fixed inconsistent animation entries in Blueprint context menu        (displaying differently depending on whether the asset is loaded)        and cached correct tooltip when asset isn't loaded
  •         Bug        Fix: Fixed compilation errors when nativizing animation Blueprints        that use subinstances

AnimationBlueprints

           
  •         Bug        Fix: Fixed debug link for animation Blueprints not persisting when        changing preview mesh
  •         Bug        Fix: Fixed incorrect reporting of animation Blueprint fast path        caused by compilation manager

AnimationTools

           
  •         Bug        Fix: Prevented actors & components of anim preview scenes (and        the preview scenes themselves) from persisting after editors are        shut down
  •         Bug        Fix: Assets with no preview mesh now no longer allow access to other        skeleton's physics assets in their shortcut bars
  •         Bug        Fix: Undo/redo now correctly affects animation preview scene        settings
  •         Bug        Fix: Fix crash with Retargeting Manager: Auto Mapping.
  •         Bug        Fix: Fixed crash when deleting notifies while the mouse was moving        on top of the notify.orion

General

           
  •         Bug        Fix: Changed SmartNames FindUID API to return UID rather than        pointer to UID, fixed code in Orion that was caching a pointer to        internal TMap allocated memory.
  •         Bug        Fix: Fixed multiple calls to FinalizeBoneTransforms when calling        RefreshBoneTransforms outside of tick
  •         Bug        Fix: Fixed root motion when using ForceAnimRate's of more than 1

SkeletalMesh

           
  •         Bug        Fix: Fixed insert/delete/duplicate button not appearing for bones        within the "Bones to Remove" setting of the Skeletal Mesh        editor.
  •         Bug        Fix: Fixed crash when reloading mesh asset that are used by        animation editor.
  •         Bug        Fix: Fix for USkinnedMeshComponent::GetCPUSkinnedVertices() failing        in shipping config on platforms that supported GPU skinning        (Contributed by Koderz)

Tools

           
  •         New:        Improved discover-ability for Blend Space Editor features
  •         Break        up Live Link plugin so that the client can run in cooked builds too
  •         Smart        name refactor - Remove guids entirely - Remove automatic fix up -        Simplify smart name mapping container - Make animations        deterministic for cooking
  •         Add        bulk rename support (matching bulk remove support)
  •         Bug        Fix: Fixed crash when Undo-ing transactions after placing Blendspace        Samples on the Grid
  •         Bug        Fix: AnimNotify Macro is not visible anymore in the notify selection        list.
  •         Bug        Fix: Fix crash when interacting with multiple notify management        windows for the same skeleton
  •         Bug        Fix: Fix newline being added to single selection bone name copies
  •         Bug        Fix: Fix crash when pasting invalid bone name into 'Bones to Remove'        array.
  •         Bug        Fix: Fixed BlendSpace editor preview (holding Control) when it        doesn't have focus.
  •         Bug        Fix: Fixed issue with BlendSpace editor where new samples list would        not regenerate BlendSpace sampling.
  •         Bug        Fix: Fixed crash when performing drag operations in the notify track        window
  •         Bug        Fix: Notify windows now stay up to data across multiple editors when        adding notifies to an animation.
  •         Bug        Fix: Fixed Bake Pose functionality not working correctly if the Root        Bone of the Skeleton contained any transformations

Audio

           
  •         New:        Spatialization, Reverb, and Occlusion plugin support has been        rebuilt. It now supports per platform mix and match of plugins.        Audio plugins can now also be swapped out without closing the        editor.
  •         New:


                     
    •                 Cleaning                up Attenuation Settings UI.
    •                 Breaking                up attenuation settings into categories.
    •                 Added                edit condition so only editable if attenuation settings are                overridden in audio components or sound cues.
    •                 Adding                ability for audio plugins to indicate if they have custom settings.                Allows hiding settings in attenuation settings.
    •                 Cleaning                up reverb send code and updated attenuation settings.
    •                 Added                custom reverb send curve support.
    •                 Added                default stereo spread of 200 for attenuation settings.
    •                 Added                ability to do a normalization for stereo spatialized sound sources                (to avoid clipping when spread is
    •                 Added                ability to apply a HPF to a sound source based on distance for                audio mixer and added that option to attenuation settings if audio                mixer is enabled.

           
  •         New:


                     
    •                 Source                buses allow any audio source to route their audio to a 3d audio                sources.
    •                 Source                buses can be routed to other source buses (including themselves).
    •                 Source                buses are a new USoundBase type, so can be played as if it was                another sound in our normal sound BP and C++ APIs, audio                components, and ambient actors.
    •                 Buses                can have their duration specified to become a 1-shot bus or, if                specified as 0.0, will be treated as a looping source (i.e.                indefinite duration).
    •                 Source                effects and submix sends can be used with buses like normal sound                sources.
    •                 Other                sources send their audio to buses in an analogous way to submix                sends and can opt to only send their audio to buses vs also sending                their audio to submixes.
    •                 Fundamental                architectural feature allows sources to be mixed into 3d buses                which allow persistence of source effect state between instances of                other sources and opens up the possibility for a number of other                exciting features.

           
  •         New:        The new Unreal Audio Engine now supports HTML5.
  •         New        Submix Effect added: Tap Delay. The Tap Delay submix effect allows        you to add any general number of taps ("echoes") and        control them independently, both ahead of time and at runtime using        Blueprint functions. This can be used to emulate the doppler effect,        simulate early reflections, and more.
  •         Added        ability to pass in an owner to PlaySound2D and PlaySoundAtLocation        BP functions so they can be used with concurrency limits that are        limited to owners.
  •         Allowing        launching audio to HMD audio device with -VR in non-editor builds.
  •         Moved        setting a default reverb send level for audio mixer master reverb to        audio settings.
  •         Moving        the synth component intialize to before audio component attachment        is setup.
  •         Adding        code to not update filter parameters unless the parameters have        changed.
  •         Adding        utility function to get a log-frequency value from a linear value.
  •         Update        to IAudioPlugin to allow audio plugins to query if they have custom        settings.
  •         Removing        default master reverb send amount on audio components. Breaking out        an initialize function so that synth components can be initialized        outside of OnRegister().
  •         SDL        backend implementation for windows, linux, and HTML
  •         Don't        send or mix built-in reverb submix if there's a plugin reverb        enabled.
  •         Added        Blueprint functions to the Sound Utilities plugin: GetBeatTempo.        GetFrequencyFromMIDIPitch, GetMIDIPitchFromFrequency, and        GetPitchScaleFromMIDINote.
  •         Added        a new submix effect to the Synthesis library: Flexiverb. Flexiverb        is a computationally inexpensive single-channel reverb algorithm        optimized for maximizing echo density with as few multiplies as        possible. This effect is best suited for emulating small room        reverberation on platforms where CPU resources are limited.
  •         Fix        for allowing audio plugins to work in non-editor builds who don't        support multiple audio devices for PIE.
  •         The        new Unreal Audio engine has been refactored so that audio buffers        are allocated with platform specific memory alignments.
  •         Adding        attack and decay interpolation times for focus feature to avoid fast        sweeps of focus.
  •         Optimization        in converting procedural audio buffers to 16 bit PCM.
  •         New        submix effect in the Synthesis library: Delay. This effect is a        simple multichannel delay line that can be adjust at runtime.
  •         Bug        Fix: Fix for Editor crash when baking indirect sound for a Phonon        Source that has no audio component attached.
  •         Bug        Fix: Fixing assets showing up under miscellaneous when audio mixer        isn't enabled.
  •         Bug        Fix: Fixed issue in the new Audio Engine's FDelay class wherein        Delay lines would not work when set to the maximum time they were        initialized for.
  •         Bug        Fix: Fixed issue where the new Unreal Audio engine would sometimes        crash on shutdown while playing a streaming sound wave.
  •         Bug        Fix: Adding thread safe mode for plugin interface shared pointers.
  •         Bug        Fix: Resetting available byte count when resetting the procedural        sound wave
  •         Bug        Fix: Moving opus lib to subfolder Windows instead of win32 to fix        UGS game sync issues.
  •         Bug        Fix: Allowing audio devices to have a fade in when creating a new        PIE window.
  •         Bug        Fix: Crash fix for loading multiple sound waves with multiple        granulators.
  •         Bug        Fix: Using audio thread platform affinity mask for audio render        thread in audio mixer.
  •         Bug        Fix: Fixing a crash in Ngs2 when initializing a source from the Ngs2        rack that is still being stopped from its previous lifetime.
  •         Bug        Fix: Fix for incorrect spatialization of audio sources on iOS using        legacy audio engine.
  •         Bug        Fix: Implemented basic handling for audio device hotswap. This will        solve the issue of the UE4 editor hanging when an audio device is        unplugged from the system. However, please note that any audio        sources played via source or Blueprint will be stopped when this        happens.
  •         Bug        Fix: Audio: Fix case where audio is already set to be a preview        sound. Sequencer sets the sound to be a preview sound when scrubbing        in editor.
  •         Bug        Fix: Streaming audio on MacOS and iOS in the audio mixer is now        fixed.
  •         Bug        Fix: Fixed Platform Headroom levels for Android.
  •         Bug        Fix: Fixing parameter interpolation in the audio mixer.
  •         Bug        Fix: Fix for ajm decoder running out of memory for large source        instances.
  •         Bug        Fix: Fixing audio mixer shutdown to ensure final commands are        pumped.
  •         Bug        Fix: Fixing seaking in ADPCM sound files.
  •         Bug        Fix: Fixed issue where OnReleaseSource would not be called on every        active source for audio plugins.
  •         Bug        Fix: Fixing thumbnail generation on sound file reimport.
  •         Bug        Fix: Fix for sound submix graph recursion.

Automation

           
  •         Add        individual FTest enumeration to Orion perf tests Moved methods to        run FTests to helper for reuse. Effects perf tests now show        individual test cases for more granular runs. All perf tests now do        map check and draft logic as setup.
  •         Bug        Fix: Fix Perforce automation routine to return files whose last        action was a rename.

Blueprints

           
  •         New:        Find-in-Blueprints is now hosted in a global tab by default. This        tab can remain open even if the Blueprint Editor window is closed.
  •         New:        Added MakeMap Blueprint node.
  •         New:        Added MakeSet Blueprint node
  •         Added        Blueprint functions for getting vectors from cones using random        streams, to complement the existing non-stream variants. For        consistency, this entire family of functions have been modified and        renamed to provide versions that take arguments in both degrees and        in radians. See the Programmer notes for specific details.
  •         Blueprint        input nodes for key, action, and axis can now be subclassed from        other modules.
  •         Made        the compact node title for cross and dot product the words cross and        dot rather than hard to see . and x symbols
  •         Improved        the visual styling of user disabled nodes and development-only nodes        (still an experimental feature, but this is a step towards removing        that label)
  •         Made        it easier to pick a specific actor in the level as the Blueprint        instance to debug by adding "(selected)" after the label        in the 'debug filter' dropdown in the Blueprint editor
  •         Allow        adjusting the font size for each individual comment box node in        Blueprint graphs (also works in Material graphs)
  •         Allow        specifying a description for user defined enum assets (shown in the        content browser)
  •         Allow        drag-dropping component Blueprint assets into the graph to create        Add Component nodes and improved the error message when dragging        something that cannot be dropped into an actor Blueprint
  •         Added        a tooltip field for each value in a user defined enum
  •         Added        a key binding for Find References (Shift+Alt+F)
  •         Improved        the implementation of Goto Definition, allowing any node to        implement it by overriding CanJumpToDefinition or JumpToDefinition -        Collapsed 'Goto Code Definition' for variables and functions into        the same path, so there aren't separate menu items and commands -        The default behavior for UK2Node subclasses is to call        GetJumpTargetForDoubleClick and call into        FKismetEditorUtilities::BringKismetToFocusAttentionOnObject - Going        to a native function now goes thru a better code path that will        actually put the source code editor on the function definition,        rather than just opening the file containing the definition
  •         Added        a key binding for Goto Definition (Alt+G)
  •         Allow        'Goto Definition' and 'Find References' to be used while stopped at        a breakpoint
  •         Added        an option to disable the comment bubble on comment boxes that        appears when zoomed out
  •         Added        the full name of the type, container type, and value type (for maps)        to the tooltips for the type picker on Blueprint variables, so long        names can be read in full
  •         No        longer need to explicitly register nodes implementing        UK2Node_AddPinInterface to use SGraphNodeK2Sequence
  •         Remove        deprecated CustomMapParamValue code
  •         Add        InRange (int) to Blueprint math library
  •         Added        Blueprint node for swapping entries in arrays.
  •         KismetRenderingLibrary:        Added EditorOnly Blueprint function for creating static textures        from Render Targets. Has options for Mip and Compression Settings
  •         The        VirtualReality Blueprint template is now available on Mac.
  •         Blueprint        compilation manager now skips compilation of dependent Blueprints        when no function signatures are changed. This can greatly speed up        compilation of Blueprints with large numbers of dependent Blueprints
  •         Fixed        various issues with both UAT-driven and manually-configured        code/data build workflows with respect to enabling Blueprint        nativization.
  •         Added        new Editor Only Plugin called Blueprint Material Texture Nodes. This        plugin adds Blueprint nodes for reading texture and render target        data as well as the ability to create and modify MIC assets.
  •         Bug        Fix: Marked a number of container functions as BlueprintThreadSafe        From UDN:        https://udn.unrealengine.com/que ... rintthreadsafe.html
  •         Bug        Fix: Fixed an issue diffing text properties/pins in Blueprints
  •         Bug        Fix: Blueprint nodes can no longer be renamed on read-only graphs.
  •         Bug        Fix: Fixed undo not removing pins added to make container nodes via        Add Pin from the context context menu.
  •         Bug        Fix: Compiling a Blueprint containing a child actor component will        no longer mark the Blueprint of child actor's class dirty.
  •         Bug        Fix: Fixed a runtime crash in nativized child Blueprints that        include a parent function call node in a replicated function        implementation.
  •         Bug        Fix: Array shuffle node no longer uses biased shuffle algorithm.
  •         Bug        Fix: Fixed various issues with split pins not being correctly        connected when expanding macros and functions.
  •         Bug        Fix: Fixed ensure when connecting the output pin of a create        delegate node to a wildcard input.
  •         Bug        Fix: Correctly reconnect split pins when changing class on create        widget, construct object, and spawn actor nodes
  •         Bug        Fix: Fix two compilation manager issues: Make sure CDOs are not        renamed under a UClass, because they will be considered as possible        subobjects, which has bad side effects and make sure that we update        references even on empty functions, so that empty UFunctions are not        left with references to REINST data
  •         Bug        Fix: Prevent crashes when a loading blueprint that implement an        interface that was deleted
  •         Bug        Fix: Fixed Construct Object not working correctly with split expose        on spawn pins.
  •         Bug        Fix: Fixed an EDL assert on load in a nativized build caused by a        native reference to a nativized BP class that also references a        nativized UDS asset.
  •         Bug        Fix: Prevent wildcard pins from being connected to exec pins
  •         Bug        Fix: Made drag-dropping assets into a graph to create a component        undoable
  •         Bug        Fix: Made wires into/out of a user-disabled node draw very dimly        (other than the passthrough execution wire if it exists)
  •         Bug        Fix: Fixed the tooltip when dragging a variable onto an inherited        category so it shows the 'move to category' hint
  •         Bug        Fix: Changed UK2Node::GetPassThroughPin so that only the execution        wire on nodes with exactly one input and one output exec wire will        have a corresponding pass-through pin (when there is ambiguity in        which exec would be used, e.g., with a branch or sequence or        timeline node, the subsequent nodes are now effectively disabled as        well)
  •         Bug        Fix: Changed the behavior of various things that were hard-coded to        operate on the first event graph to instead operate on the most        recently used event graph page
  •         Bug        Fix: Fixed the tooltip of a user defined structure not updating        immediately in the content browser after being edited
  •         Bug        Fix: Fixed discrepancy between the Structure tab name and the menu        option for the tab in the user defined structure editor (now both        say Structure Editor)
  •         Bug        Fix: Improved editor performance when working with Blueprints that        contain many components or variables
  •         Bug        Fix: Prevent converting a variable get node to impure/back while        debugging
  •         Bug        Fix: Add support for 'goto definition' on Create Event nodes when        the Object pin is not hooked up
  •         Bug        Fix: Fixed swapped undo/redo messages when converting a cast node        between pure and impure
  •         Bug        Fix: Actor bound event related warnings now show up in Blueprint        status when opening level Blueprint for first time, improved warning        message
  •         Bug        Fix: Adjust search query when doing 'Find References' on variables        from My Blueprints so that bound event nodes show up for components        and widgets
  •         Bug        Fix: Allow the autowiring logic to better break and replace existing        connections when made (e.g., when dragging a variable onto a        compatible pin with an existing connection, break the old connection        to allow the new connection to be made)
  •         Bug        Fix: UField::Serialize no longer serializes its next ptr,        UStruct::Serialize serializes all Children properties instead. This        resolves a hard circular dependency between function libraries that        EDL detected. It was resolved in an ad hoc way by the old linker
  •         Bug        Fix: User-Defined Struct assets now support their own external        dependencies when nativized.
  •         Bug        Fix: Blueprints will no longer remain dirty when compiling when a        Get Class Defaults node with a split struct pin is in the graph.
  •         Bug        Fix: Changing the pin type of a function input from struct to        something else now correctly works when the struct input pin had        been split.
  •         Bug        Fix: Undoing 'Collapse to Macro' now works as expected
  •         Bug        Fix: Prevent CDOs from getting weird names if they are loaded while        we are reinstancing
  •         Bug        Fix: Clear out null entries in the LastEditedDocuments list during        PostLoad() and remove entries when a graph is being deleted to        prevent new nulls from being added
  •         Bug        Fix: Fixed crash on launch of a nativized build that includes an        instanced default subobject that's referenced by another instanced        default subobject.
  •         Bug        Fix: Fixed a bug where a bogus value could be read from a Map Find        node if a find failed after a previous success
  •         Bug        Fix: Can no longer select remove pin on split pins on a MakeSet        node.
  •         Bug        Fix: Cast nodes can no longer be switched from pure to impure while        debugging.
  •         Bug        Fix: Fixed a packaging code build failure that would occur with a        nativized Blueprint class that contained a UInterfaceProperty.
  •         Bug        Fix: Fixed a crash on load when an external variable member        reference's owning type could not be loaded.
  •         Bug        Fix: It is no longer possible to create a set or map with duplicate        entries from the Blueprint virtual machine.
  •         Bug        Fix: Remove Tooltip, Category, and HideCategories tooltip from the        Blueprint generated class if source data is cleared, this allows        these fields to be cleared after they have been set
  •         Bug        Fix: Subobjects in Sets and Maps are now properly patched into the        linker table. Required add of missing implementation for sets/maps        to FInstancedPropertyPath, correct uproperty logic in        FFindInstancedReferenceSubobjectHelper::GetInstancedSubObjects_Inner
  •         Bug        Fix: Added support for creating appropriate outers for objects that        must be nested within another class during fuzzing (ones that        specify Within=, other relationships aren't knowable yet)
  •         Bug        Fix: We now prevent ConstructGenericObject nodes from compiling in a        Blueprint if the selected class type does not include        'BlueprintType' in its inheritance hierarchy.
  •         Bug        Fix: Fix for crash when attempting to access a value in an array by        ref, when the array being accessed was trying to be found on a null        object ref
  •         Bug        Fix: Placing a get to an input parameter with same name as a member        variable no longer creates an incorrect property reference.
  •         Bug        Fix: Fix rare crash when running ConformImplementedEvents when        loading .uassets asynchronously
  •         Bug        Fix: Fixed a potential crash when changing the ChildActorComponent        class default value on a Blueprint that also sets the class in the        Construction Script.
  •         Bug        Fix: Fix ActorBoundEvent and ComponentBoundEvent to always refresh        their event signature from the delegate property they are bound to,        which will fix broken Blueprints when those signatures are moved or        renamed
  •         Bug        Fix: CollectGarbage Blueprint node now correctly works in shipping        builds.
  •         Bug        Fix: Fixed non-native script interface property value initialization        for nativized Blueprint class default objects.
  •         Bug        Fix: Fix issue where GUID variables on Blueprints would not        correctly update after being cleared or initialized
  •         Bug        Fix: Fixed a compile error in UHT-generated boilerplate code after        choosing to package with Blueprint nativization enabled if the        project includes a converted User-Defined Structure asset.
  •         Bug        Fix: Fix issue where pasting or moving actors between levels would        break delegates bound within that actor/component hierarchy
  •         Bug        Fix: Fixed bug in Blueprint Compilation Manager that could result in        a crash when compiling Blueprints that both inherited from another        Blueprint and called functions in that Blueprint
  •         Bug        Fix: Fixed issues where a class reference to a Blueprint class in a        set or map could fail to load correctly.
  •         Bug        Fix: Fixed NegateInt/Float in StandardMacros returning an unchanged        value even though the passed in reference had been changed.
  •         Bug        Fix: Fixed generated code failing to compile when nativizing a        Blueprint which has a property of a less derived type referencing a        sub object with modified default properties declared in a more        derived class.
  •         Bug        Fix: Fixed crash when adding component to child actor class after a        component of the same name was removed from the parent.
  •         Bug        Fix: Fix grammar and improve clarity of comment for DestroyComponent        node
  •         Bug        Fix: Fix crash renaming a composite graph with no bound graph.
  •         Bug        Fix: Fix native code generation for MakeMap node.
  •         Bug        Fix: Fixed crash that could occur when compiling Blueprints that had        function calls to Blueprints that used Construct Object nodes (e.g.        SpawnActorFromClass or ConstructObjectFromClass)
  •         Bug        Fix: Fixed bug copy pasting collapsed graphs resulting in a crash or        invalid graph.
  •         Bug        Fix: Functions that have parameter type changes (rather than name        changes) now properly orphan their pins
  •         Bug        Fix: Fix crash when diffing a Blueprint whose older version's parent        Blueprint has been deleted.
  •         Bug        Fix: Fixed rare assertion failure when undoing Blueprint graph node        deletion operations
  •         Bug        Fix: We no longer emit a BOM to generated nativized Blueprint asset        source files encoded as UTF-8. Fixes an issue with C++ compilation        on some platforms.
  •         Bug        Fix: Fixed a crash on load in a nativized build caused by a        reference to a BP class containing a nativized enum
  •         Bug        Fix: Fix construct object from class nodes not clearing orphan pins        when connection broken. Improved warning messages about orphaned        pins to include the name of the node it is occurring on. Fixed some        bad content causing an orphan pin.

Core

           
  •         New:        Support for Visual Studio Code


                     
    •                 Pass                "-vscode" to GenerateProjectFiles in order to create a                set of task/launch/cppconfig files that can be used by Visual                Studio Code to build and debug Unreal Engine projects
    •                 A                new source code access plugin that will allow the opening of                projects and source files in Visual Studio Code

           
  •         New:        Chromium Embedded Framework (CEF) upgraded to branch 3071        Win32/Win64/Mac. Added web browser support for foreign language        character input via IME.
  •         Core:        Various improvements to FTimespan
  •         Core:        Added scalar division to FTimespan
  •         Core:        Added TLruCache template for least-recently used caches
  •         Core:        Added FTimespan::Ratio
  •         Changed        the default sorting algorithm to intro sort. - Algo::Sort and ::Sort        will call Algo::IntroSort - The sort version that was in Algo::Sort        is now in Algo:egacySort
  •         Added        the ability to verify the DDC content is not stale. Systems have to        opt in (-VerifyDDC).
  •         Fixed        documentation comments for FName inequality operator.
  •         Fixed        incorrect definition of DECLARE_DELEGATE_NineParams,        DECLARE_MULTICAST_DELEGATE_NineParams macros.
  •         Added        FString::ToUpper() and FString::ToLower() rvalue overloads for        improved efficiency.
  •         Improved        UnrealHeaderTool to support multiple interface definitions in a        single header.
  •         Improved        UnrealHeaderTool's error message when unsupported template        parameters are provided in a TSet property.
  •         Improved        Intellisense when generated headers are missing or out of date (eg.        line numbers changed, etc...). These errors seem to be masked by        VAX, but are present when using the default Visual Studio        Intellisense. UCLASS        macro is defined to empty when INTELLISENSE is        defined. Previous macro was preventing any following class        declaration being parsed correctly if generated code was out of        date, causing squiggles over all class methods/variables. Insert        a semicolon after each expanded GENERATED_BODY macro, so that if it        parses incorrectly, the compiler can still continue parsing the next        declaration.
  •         Added        container modification checks to ranged-for loops which are        iterating over TMap, TSet and TSparseArray.
  •         Added        code to verify compression flags in package file summary to avoid        cases where corrupt packages are crashing the editor
  •         Added        a batch file to Engine/Build/BatchFiles for detecting and running        MSBuild
  •         Added        VisitTupleElements, which calls the given functor with each element        in the tuple.
  •         Improved        UnrealHeaderTool's error message when multiple types with the same        name are found.
  •         Changed        the logic so that engine UObjects boot before anything else. The        engine classes are known to be cycle-free, so we will get them done        before moving onto game modules.
  •         UENUM        enumerator initializers can now be arbitrary C++ constants,        including values which are not parsed by UnrealHeaderTool (e.g.        values from third party headers). However, script generator plugins        will not have access to these values at script-generation time.        Added support for editor-only data UENUMs. Fixed multiple MAX values        being generated for UENUMs which already define a MAX.
  •         Logging        improvements for pak signature check failures
  •         Split        RunExternalExecutable into RunExternaNativelExecutable and        RunExternalDotNETExecutable
  •         Added        editor support for packages cooked with the Event Driven Loader        enabled.
  •         Added        validation that arguments passed to the checkf macro are valid        sprintf types, and fix up a few places which are currently        incorrect.
  •         When        creating GC clusters and asserting due to objects still being        pending load, the object name and cluster name will now be logged        with the assert.
  •         Added        FBase64::GetDecodedDataSize() to determine the size of bytes of a        decoded base64 string
  •         PR        #3847: Add GC callbacks for script integrations (Contributed by        mhutch)
  •         Added        support for displaying log timestamps in local time. Set        LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command        line.
  •         Various        changes to Unreal Build Tool and DotNETUtilities assemblies to help        support building and executing on the .NET Core 2.0 platform
  •         Added        ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject        pointer checks in shipping builds when the garbage collector is        running.
  •         Fixed        a race condition with the async loading thread enabled caused by        missing linker object.
  •         PR        #3839: Make non-encoding specific Base64 functions accessible        (Contributed by stfx)
  •         Moved        some common C# classes into the DotNETCommon assembly
  •         FString::Trim()        and FString::TrimTrailing() have been replaced with separate        versions to mutate (TrimStartInline(), TrimEndInline()) or return by        copy (TrimStart(), TrimEnd()).
  •         Allow        the network version to be set via Build.version if it's not        overriden from Version.h.
  •         UBT        - Add a ToString to ProjectFile.Source file to help with debugger        watch presentation
  •         Plugins        may now specify a list of supported target platforms, which are        propagated to any .uproject file that enables it. This has several        advantages over the per-module platform        whitelist/blacklist: Platform-specific        .uplugin files can now be excluded when staging other platforms.        Previously, it was only possible to determine which platforms a        plugin supports by reading the plugin descriptor itself. Now that        information is copied into the .uproject file, so the runtime knows        which plugins to ignore. References        to dependent plugins from platform-specific plugins can now be        eliminated. Plugins        containing content can now be unambiguously disabled on a        per-platform basis (having no modules for a platform does not confer        that a plugin doesn't support that platform; now it is possible to        specify supported platforms explicitly). The        editor can load any plugins without having to whitelist supported        editor host platforms. UE4 targets which support loading plugins for        target platforms can set        TargetRules.bIncludePluginsForTargetPlatforms (true for the editor        by default, false for any other target types). This defines the        LOAD_PLUGINS_FOR_TARGET_PLATFORMS macro at runtime, which allows the        plugin system to filter which plugins to look for at runtime. Any        .uproject file will be updated at startup to contain the list of        supported platforms for each referenced plugin if necessary.
  •         Fixed        lazy object pointers not being updated for streaming sub-levels in        PIE. Fixed lazy pointers returning object that is still being loaded        which could lead to undefined behavior when client code started        modifying the returned object.
  •         PR        #3760: Fix typo (Contributed by jesseyeh)
  •         Made        MoveTemp static assert when called on a const reference or rvalue,        to allow inefficiencies to be tracked more easily. Added        MoveTempIfPossible which follows the earlier behavior, which is        still useful for templates and macros where it's unclear if the        argument is valid.
  •         Removed        the extraneous subfolder when writing out .mprof files.
  •         Fix        non-thread safe construction of FPluginManager singleton. Length of        time spent in the constructor resulted in multiple instances being        constructed at startup, making the time to enumerate plugins on slow        media significantly worse.
  •         Optimizations        to SignedArchiveReader
  •         Improved        assert message when the initial package read request was too small.
  •         Made        max package summary size to be configurable with ini setting
  •         Add        support for a "Mods" folder distinct from the project's        "lugins" folder, instead of using the bIsMod flag on the        plugin descriptor. Mods        are enumerated similarly to regular plugins, but IPlugin::GetType()        will return EPluginType::Mod. The        DLCName parameter to BuildCookRun and the cooker now correctly finds        any plugin in the Plugins or Mods directory (or any subfolders).
  •         Added        a new TArray constructor that takes a raw pointer and a count.        Improved checks inside TArray::Append() to allow nullptr in empty        ranges.
  •         UDataTable::AddReferencedObjects        will no longer try to iterate over the RowMap if there's no UObject        references in it.
  •         Custom        Version Container will no longer be always constructed in FArchive        constructor. This reduces the number of the Custom Version Container        allocations considerably.
  •         Removed        obsolete code for UHT makefiles.
  •         Moved        FSimpleObjectReferenceCollectorArchive and        FSimpleObjectReferenceCollectorArchive to be internal archives used        only by FReferenceCollector so that they are constructed only once        per GC task instead of potentially multiple times per GC (as was the        case with UDataTables and BlueprintGeneratedClasses).
  •         Added        new AllOf, AnyOf and NoneOf algorithms.
  •         Shrunk        size of code generated by UnrealHeaderTool, around 10% of Win64        executable size.
  •         Deprecate        /-prefixed commandline switches as they cannot be distinguished from        absolute file paths on Linux/Mac.
  •         Bitfield        properties can now be exposed on spawn.
  •         FName        now works correctly with Lex::To/FromString.
  •         Added        FQuat::InitFromString.
  •         Add        ability to pass option flags to ActorIterator to enable searching        non-active levels
  •         Moved        the Hamming-weight function from StaticMeshDrawList.inl to        FGenericPlatformMath Added SSE versions using _mm_popcnt_u64 for        platforms that support it Added a SSE check to gracefully exit when        missing the instruction and it was expected to be there
  •         Fixed        stale modules being enumerated when running UE4Editor-Cmd.exe.
  •         Fix        DECLARE_LOG_CATEGORY_EXTERN requiring a trailing semicolon if        NO_LOGGING is defined.
  •         Added        a packaging setting that allows the user to choose whether or not to        build the game executable. Includes a setting to build the        executable only if not using a promoted build ("Only if locally        built editor"). The same option has to the "lay"        settings in the editor. This allows developers that want to submit        game binaries to Perforce to configure the engine to use it without        building anything.
  •         Bug        Fix: Core: Fixed FTimespan import/export/copypaste (UE-43990)
  •         Bug        Fix: Fixed custom mesh component bounds being computed incorrectly.
  •         Bug        Fix: Fixed the deserialization of integer properties, which would        cause a guaranteed property mismatch each time and an inefficient        tag lookup. Added support for converting double and float properties        to int properties. Fixed conversion of enum class properties to int        properties when their value is greater than 255.
  •         Bug        Fix: UBT - Minor refactor of BackgroundProcess shutdown in        SourceFileWorkingSet. Check whether the process has already exited        before trying to kill it during Dispose.
  •         Bug        Fix: Move pre/post garbage collection delegates into accessor        functions so they can be used by globally constructed objects
  •         Bug        Fix: Build fixes for when malloc profiler is enabled
  •         Bug        Fix: Fixed parsing error in UnrealHeaderTool when a class name is        fully capitalized.
  •         Bug        Fix: Fixed bad code generation in UnrealHeaderTool when passing a        TMap to a BlueprintCallable function.
  •         Bug        Fix: Fixed FPaths::GetProjectFilePath() to return a value instead of        a reference, for thread safety reasons.
  •         Bug        Fix: Fixed TTuple visualization in the Visual Studio debugger.
  •         Bug        Fix: Fixed a race condition with async read completion in the        prescence of cancels.
  •         Bug        Fix: Fixed some incorrect EObjectFlags use due to implicit        conversions.
  •         Bug        Fix: Follow up to fixing several edge cases in the low level async        loading code.
  •         Bug        Fix: Fixed several edge cases in the low level async loading code,        especially around cancellation. Also PakFileTest is a console        command which can be used to stress test pak file loading.
  •         Bug        Fix: Marking UObject as intrinsic clas to fix a potential crash on        Unreal Frontend startup.
  •         Bug        Fix: UBT - Correct direction of slash in global named mutex creation
  •         Bug        Fix: Fixed Visual Studio debugger visualizers for containers whose        elements are pointers which aren't syntactically like Type*.
  •         Bug        Fix: Fixed UFunctions disappearing from Blueprints after a hot        reload.
  •         Bug        Fix: Fixed a buffer overrun in TChunkedArray ranged-for iteration.
  •         Bug        Fix: After loading packages the engine will flush linker cache on        uncooked platforms to free precache memory
  •         Bug        Fix: Include 'ExeBinariesSubFolder' in nmake target path for vcproj        files if it exists
  •         Bug        Fix: Material resources will now be discarded in PostLoad (Game        Thread) instead of in Serialize (potentially Async Loading Thread)        so that shader deregistration doesn't assert when done from a        different thread than the game thread.
  •         Bug        Fix: Fixed nested preprocessor block parsing in UnrealHeaderTool.
  •         Bug        Fix: MaterialInstanceCollections will no longer be added to GC        clusters to prevent materials staying around in memory for too long
  •         Bug        Fix: Fixed a race condition in async package reference counting when        the async loading thread is enabled.
  •         Bug        Fix: Fixed Japanese errors not displaying correctly in the cook        output log.
  •         Bug        Fix: Fixed a critical race in the pak precacher.
  •         Bug        Fix: Fixed critical race which potentially could cause a crash in        the pak precacher.
  •         Bug        Fix: Fixed a critical race condition in the new async loader. This        was only reproducible on IOS, but may affect other platforms.
  •         Bug        Fix: Fixed a critical crash bug relating to a race condition in        async package summary reading.
  •         Bug        Fix: Fixed a crash on UnrealFrontend startup caused by re-assembling        GC token stream for one of the classes.
  •         Bug        Fix: Fixed a critical crash bug with non-EDL loading from pak files.
  •         Bug        Fix: Fixed the error message in FAsyncPackage::AddObjectReference to        refer to the correct scope guard class.
  •         Bug        Fix: Added missing PF_ATC_RGBA_I into FOREACH_ENUM_EPIXELFORMAT.
  •         Bug        Fix: Fixed a crash in the taskgraph when running single threaded
  •         Bug        Fix: Fixed FScopedMallocProfilerLock to be properly non-copyable.
  •         Bug        Fix: Forced a garbage collection after a hot reload to clean up        reinstanced objects which may still be registered to tick.
  •         Bug        Fix: Fixed bad codegen when TAssetPtrs are passed into        BlueprintImplementableEvent functions.
  •         Bug        Fix: Disabled MallocBinned2 stat collection in shipping builds.
  •         Bug        Fix: System error dialogs when loading DLLs are now suppressed if        -unnattended is on the command line.
  •         Bug        Fix: Added MemoryProfiler2 to the generated project files.
  •         Bug        Fix: Fix rare assert involving cancelled precache requests and        non-pak-file loading.
  •         Bug        Fix: Fixed compile errors caused by incorrect line numbers when        parsing multiline macros in UnrealHeaderTool.
  •         Bug        Fix: Fixed a compile error when attempting to serialize a TUnion.
  •         Bug        Fix: Fixed mismatched stat categories warnings in AudioMixer.
  •         Bug        Fix: Fixed EObjectFlags' operators so that they can now be used in        constexpr contexts.
  •         Bug        Fix: Made sure the Super Class token stream is also locked when        assembling Class token stream with async loading thread enabled.        This to to prevent race conditions when loading BP classes.
  •         Bug        Fix: Fixed a crash caused by recursion guard being enabled with the        old async loading path but it should only be active with the Event        Driven Loader.
  •         Bug        Fix: Fixed generated indices of static arrays when saving config        files.
  •         Bug        Fix: Made servers not to link to CEF3 (even if otherwise enabled).
  •         Bug        Fix: Fix several crashes while incremental cooking if the source        content is heavily changed
  •         Bug        Fix: Change it so Editor builds work like cooked builds when loading        packages that are already in memory, it will now reuse them instead        of trying to recreate them in place. This fixes several PIE crashes.
  •         Bug        Fix: Fix issue where IsEditorOnlyObject would return false for        objects with editor only classes or outers. There is now a recursive        check option that defaults to true.
  •         Bug        Fix: Reduced the chance of .RC file compilation errors by reducing        the number of defines passed in on the command line (excluding        definitions that contain "_API")
  •         Bug        Fix: Removed any deprecated code older than 4.10 that didn't affect        content compatibility
  •         Bug        Fix: Prevent FScopedExternalProfilerBase::StopScopedTimer() from        asserting if called an unmatched number of times with        StartScopedTimer, as both are exposed to Blueprints
  •         Bug        Fix: Class Properties are only identical if they are literally the        same object. Do not consider the deep compare port flags as object        property base does.
  •         Bug        Fix: Changed ensureAsRuntimeWarning to just evaluate to the        expression when USING_CODE_ANALYSIS is true (matching the behavior        of ensure() and preventing false positive errors in static        analyzers)
  •         Bug        Fix: Fix issues where using Launch multiple times during one editor        session would not pick up all modified files
  •         Bug        Fix: Fixed error writing files to disk with long package names, due        to attempting to create an intermediate file with a GUID appended.
  •         Bug        Fix: Fixed +Array=... and .Array=... config syntax        (unique/non-unique addition) having opposite meaning.
  •         Bug        Fix: Fix memory corruption crash when using the StreamableManager        when the async loading thread is enabled via ini
  •         Bug        Fix: Fixed console output not working when using -log in a shipping        build
  •         Bug        Fix: Fixed hot reload not considering dependent modules when        rebinding a package (e.g. after adding a new class to one). Fixed        FMacPlatformProcess::GetDllApiVersion() returning a valid version        number for a missing module.
  •         Bug        Fix: Fix bug where requesting an async load with StreamableManager        from a PostLoad could return a partially loaded object, it now        queues up to wait for it to properly load
  •         Bug        Fix: Fixed crashes when accessing console variables with the async        loading thread enabled
  •         Bug        Fix: Fixed a crash when recompiling the Graph Editor module in the        editor.
  •         Bug        Fix: Fixed crash when adding a new native feature pack to a        Blueprint project for the first time.

Editor

           
  •         New:        Array elements can now be re-ordered using a drag and drop handle on        the left side.
  •         It        is now possible to save and reload the result of the 'profileGPU'        command. The ProfileVizualizer can be found under Windows\Developer        Tools\Debug menu.
  •         Added        the ability to remove vertex colors from static meshes from the        content browser
  •         Added        flag to PrimitiveComponent to disable certain BP components to be        excluded from HLOD generation
  •         Added        support for incremental cooking in File->Cook Content via the new        flag in Project Settings, Editor->Cooker->Iterative cooking.
  •         Added        FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the        name of the selected source code accessor. Replaced all usages of        FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with        GetSelectedSourceCodeIDE(), where the message is referring to the        opening or editing of code.
  •         Added        an option to allow overriding the local DDC path from the editor        (under Editor Preferences > Global > Local Derived Data        Cache).
  •         Add        fbx exporter option dialog.
  •         Create        a LOD Custom Mode in the meshes editor UI. This allow user to        compare details values between LODs
  •         Added        dual key bindings support. There is another column In Editor        Preferences - General - Keyboard Shortcuts and users can now set two        keyboard shortcuts for each operation.
  •         Enabled        high DPI awareness for the editor. The editor now respects OS level        DPI scaling. On high dpi monitors fonts should look crisp and the        editor properly scaled.


                     
    •                 Editor                viewport screen percentage is now adjusted automatically to account                for DPI scaling. By default the scene will be rendered at a lower                resolution based on screen percentage calculated based on                100/DPIScale. Users can override this automatic calcuation in the                editor performance options if desired.

           
  •         Focus        the details view when actor selection changes if it is not focused
  •         Issue        warning when we found zero normal, tangent or binormal
  •         PR        #3852: Add FEditorDelegates::BeginLocalPlay event (Contributed by        mhutch)
  •         PR        #3851: Add argument to pass params to standalone play session        (Contributed by mhutch)
  •         Merged        the "Categories" menu into the Output Log "Filter"        menu
  •         Added        a new type of property editor called a property row generator. This        is essentially a details panel that can generate each unique row but        adds no visual styling around the property editors and does not        generate a master tree widget for the properties. This is useful for        creating proper widgets for properties and displaying them in a UI        that is not the details panel
  •         The        output log now applies a search to its editable text when filtering        to highlight the term matches on each line
  •         Make        sure we export normals, tangents and bi-normals information when        exporting to FBX.
  •         Fbx        SDK 2018.1.1 Integration
  •         Added        automated import support for USD. Automated import now also supports        loading a level per import group so that factories may spawn actors        and manipulate the level
  •         Added        ability for users to specifiy usd plugins for the USD importer
  •         Added        ability to set properties from USD attributes when using scene        import to import USD files. See UsdPropTestScene.usda for an example        file of how this works
  •         New        setting for specifying a custom port when launching a multiplayer        PIE instance.
  •         Moving        favorited levels to a standard flyout submenu under File.
  •         PR        #3933: Git plugin: add "branch source" in history window        (Contributed by SRombauts)
  •         Added        support for ArrayRemove, ArrayClear in property change event type        Added the possibility to know if an archetype instance was updated
  •         Bug        Fix: Matinee: Fix Matinee redirect missing as UClass has been GC'ed        (GitHub PR 3382)
  •         Bug        Fix: Editor: Fixed texture samplers in materials not getting        notified when sRGB mode changed
  •         Bug        Fix: Fixed a crash occurring when Generating Proxy Meshes for an        HLOD cluster which was not overlapping with the culling (landscape)        mesh
  •         Bug        Fix: Optimize checks for whether the game project contains source        code. Now stops as soon as the first file is found and ignores        directories beginning with a '.' character (eg. .git)
  •         Bug        Fix: Make sure a warning is log when we cannot export an animation        sequence.
  •         Bug        Fix: Fix merge actor do not keep the material slot name
  •         Bug        Fix: Fix crash accessing potentially invalid parent layout from a        detail category
  •         Bug        Fix: The class viewer now functions properly on mac.
  •         Bug        Fix: Fix ctrl+w not duplicating on mac
  •         Bug        Fix: Fix LOD identification in USD files
  •         Bug        Fix: PR #3897: Git plugin: fix action icon in history window        (Contributed by SRombauts)
  •         Bug        Fix: Fix widget component spawning widgets when cooking
  •         Bug        Fix: Fix mac menus updating during unsafe times such as modal        windows and slow tasks
  •         Bug        Fix: Fix color picker not properly converting FColor properties back        to gamma space
  •         Bug        Fix: Fix bogus warning message when a property has an editcondition        that is not marked edit aynwhere. This has always been supported and        is the correct way to make an editcondition
  •         Bug        Fix: Fix USD importing not respecting DestinationPath set by the        automated import commandlet
  •         Bug        Fix: Editor: Fix toolbar shared ref which was keeping the viewport        toolbar around when switching between default and cinematic        viewports.
  •         Bug        Fix: Prevent slow task feedback from performing slow operations        (flushing rendering commands, checking if shaders are initialized)        when there are no modal dialogs open
  •         Bug        Fix: Guard against high res screenshot crashing if the requested        image size doesnt match the image data size
  •         Bug        Fix: Guard against crash in the details panel when there is a        message in the queue and something scrolls into view when the list        has been invalidated
  •         Bug        Fix: Reduce memory footprint when importing large FBX scene PR #3834
  •         Bug        Fix: Fix the fbx re-import factory handler to say failed in case        there was no geometry to import.
  •         Bug        Fix: PR #3850: Source code navigation is now extensible
  •         Bug        Fix: Fix staticmesh merge applying scale twice PR #3807
  •         Bug        Fix: Fix how the FBX importer find the sample rate to import an        animation.
  •         Bug        Fix: Fix locked actors still being moved by piloting them
  •         Bug        Fix: Fix import of large FBX scene (over 2 Gb) base on pr #3784
  •         Bug        Fix: fix FBX reset options code.
  •         Bug        Fix: Make sure all staticmesh general settings(build, reduce...) are        persist when we re-import from a FBX file.
  •         Bug        Fix: Exporting render targets now chooses PNG if the render target        format is an LDR format
  •         Bug        Fix: Fixed a bug where the transform widget on selected actors        occasionally disappeared after exiting PIE mode.
  •         Bug        Fix: PR #3733: UE-46683: Don't increment MovieIndex when playing        next movie (Contributed by projectgheist)
  •         Bug        Fix: Dont save non-dirty built data when playing PIE in a standalone        process
  •         Bug        Fix: PR #3715: Turn off the automatic expiration of the restore        assets notification (Contributed by IHappyDayI)
  •         Bug        Fix: Fixed a bug where the Editor Undo History didn't refresh when        after a single undo followed by a single action.
  •         Bug        Fix: Fixed a bug where World Outliner selection did not update        transform widget location during play.
  •         Bug        Fix: Hide property matrix button from settings editor. For the        combined settings objects view this produces nonsensical results and        the property matrix is for bulk editing which settings are not        designed for.
  •         Bug        Fix: PR #3682: Details view - matrix button visibility toggle and        crash fix (Contributed by kamrann)
  •         Bug        Fix: Fixed cases where the redo buffer could be removed despite no        new transaction being added to the undo buffer.
  •         Bug        Fix: Fixed a Pixel Inspector crash when using the high-precision        normals format.
  •         Bug        Fix: Fixed foliage not updating to match the new landscape height
  •         Bug        Fix: PR #3942: Sort Data Table Structures Alphabetically        (Contributed by Nick-Pearson)
  •         Bug        Fix: PR #3932: UE-48693: if instead of while statement (Contributed        by projectgheist)
  •         Bug        Fix: Fixed a profiler crash when selecting the "Maximum"        button while aggressively filtering.
  •         Bug        Fix: Fixed a bug where editor would crash when showing the property        matrix and deleting one of the targeted actors.
  •         Bug        Fix: Fix several issues with the Component Transform UI that is used        for actor and component placement. Dragging to spin rotation now        works better and in most cases it will correctly maintain the exact        rotation entered. It now correctly displays "dirty" status        and will propagate values better to inherited or instanced        components.
  •         Bug        Fix: Fix issue where pressing escape while dragging on a numeric        field with a spinner could lock input from ever working again
  •         Bug        Fix: Fixed HLOD selection sphere persisting on undo/redo
  •         Bug        Fix: Fixed ortho viewports being bright white in sub-editors
  •         Bug        Fix: Make editor scene viewport backbuffer format consistent with        game back buffer format to avoid quantization.
  •         Bug        Fix: Fixed issue with vertex colors being distorted after using the        Merge Actor tool
  •         Bug        Fix: Fixed texture disappearing in the Texture Editor when zoomed to        a zoom level other than "Zoom to Fit".
  •         Bug        Fix: fix reduce algorithm to make sure the order of used material is        consistent
  •         Bug        Fix: Fixed an issue where sometimes a client wouldn't be able to        connect to the server if "Use Single Process" was        unchecked in the editor Play settings and starting a play session        with more than one player.
  •         Bug        Fix: Fix crash setting edit conditions on inner array props due to        potentially stale array indices
  •         Bug        Fix: Fixed rare import failure in AbcImporter
  •         Bug        Fix: Fixed a hang at exit after asset reimport.
  •         Bug        Fix: Fixed FastXML to properly parse attributes with legally        unescaped single and double quote characters

ContentBrowser

           
  •         Add        Export To CSV to Content Browser/Asset Audit windows, accessible        from the view options while in column mode
  •         Bug        Fix: Fixed: Entering search expression into Content Browser crashes        Editor in some rare cases
  •         Bug        Fix: Fixed various issues with filename validation for collections        (e.g. trying to use system reserved keywords as filenames).
  •         Bug        Fix: Custom columns with the same name as fixed columns no longer        cause infinite duplication in the Content Browser
  •         Bug        Fix: Fixed a crash when reloading the lighting data for a world        while the world was open in the editor
  •         Bug        Fix: Content browser settings are now global instead of per-project
  •         Bug        Fix: Solved an issue where Content Browser returned to the previous        directory after duplicating a searched asset.
  •         Bug        Fix: Cleaned up source control log spam when finding out-of-date        dependencies when reloading assets
  •         Bug        Fix: Improved drag-and-drop validation between Content Browsers
  •         Bug        Fix: Fixed a crash when Force Deleting the MapBuildData package.
  •         Bug        Fix: Fixed crash when doing editor 'Force Delete' on a static mesh        whose distance field is still being built.
  •         Bug        Fix: Fix for asset context menu warning on Mac.
  •         Bug        Fix: Fixed a crash that could happen if renaming an asset failed

Foliage

           
  •         Add        the possibility to specify if we need CPU access to the instance        buffer depending on the usage.
  •         Bug        Fix: Bug fixing of Static Mesh Instancing
  •         Bug        Fix: Added a guard to prevent a possible crash when using        CVarFoliageDiscardDataOnLoad.
  •         Bug        Fix: User can no longer hide the actor holding the foliage instances
  •         Bug        Fix: No longer mark the package dirty while generating the GrassMap
  •         Bug        Fix: When occlusion query is disabled no longer process sub queries
  •         Bug        Fix: Fixed a possible graphic corruption if you had unbuilt        instances being draw on Vulkan/DX12 device
  •         Bug        Fix: Handle static mesh instancing removal properly
  •         Bug        Fix: Properly handle the creation of Instance Static Mesh Component        from c++ Add handling of all operations on the PerInstanceSMData        array when done in PostEditChange

Landscape

           
  •         Improve        performance when having many landscape layer in Paint mode
  •         Bug        Fix: Prevent moving a Landscape Actor when running in Simulate Mode
  •         Bug        Fix: Prevent possible crash when building lighting with a non        squared heightmap
  •         Bug        Fix: Fixed: Occasional Landscape related crash while streaming in        sub-levels
  •         Bug        Fix: Prevent copy of landscape in simulate mode/or any other PIE        related mode
  •         Bug        Fix: Properly register to material changes event so we always have        an up to date used layer list
  •         Bug        Fix: Fixed a ensure related to bad handling of copy/paste of spline        component

MediaFramework

           
  •         General


                     
    •                 NEW:                Moved high-level media player logic into reusable Engine-agnostic                classes


                               
      •                         Low-level                        interfaces exposed via facade (see FMediaPlayerFacade)
      •                         Reusable                        helper objects for creating, caching and consuming samples

                     
    •                 NEW:                Support for multiple output formats per media track                (see IMediaTracks)
    •                 NEW:                API for querying player’s caching state (IMediaCache)
    •                 NEW:                API for enumerating A/V capture devices (IMediaCaptureSupport)
    •                 NEW:                Time source API (for internal and external clocks / timecode                generators)
    •                 NEW:                Exposed buffering and connecting states
    •                 NEW:                Separation of media overlays into caption, subtitle and custom text                tracks
    •                 NEW:                Added extensive verbose logging in most player plug-ins


                               
      •                         To                        enable, add the following to your project’s Engine.ini:

                     
    •                 Better                separation of concerns in media player interfaces
    •                 Delegates                were replaced with thread-safe interfaces
    •                 Refactored                push-based into pull-based API (see IMediaSamples)
    •                 Most                operations are now asynchronous to eliminate hitches
    •                 Multiple                media assets can now use the same MediaPlayer
    •                 Modernized                all Media related modules (IWYU, C++11, documentation)
    •                 NEW:                multi-stage ticking API


                               
      •                         Can                        be used by any object, not just media players                        (see IMediaClockSink)
      •                         Better                        frame utilization and predictable timing

                     
    •                 NEW:                timecode based sample processing pipeline
    •                 NEW:                high-frequency (200 Hz) ticker for time sensitive samples, such as                audio, camera tracking, and face tracking                (see IMediaTicker and IMediaTickable)
    •                 NEW:                Sample queues and pooling for better memory usage
    •                 NEW:                Generic C++ template for media object pooling                (see TMediaObjectPool)
    •                 NEW:                String conversion functions for media enums (see MediaHelpers.h)
    •                 Media                Framework is now mostly lock-free to eliminate thread stalls
    •                 Removed                all render thread flushes & render thread dependencies
    •                 Fixed                media texture crash when recreating render device, i.e. when                changing resolutions
    •                 Fixed                all known multi-threading and concurrency issues

           
  •         Audio


                     
    •                 NEW:                Integrated with new Audio Mixer API
    •                 NEW:                Media Sound Components (replaces Media Sound Waves)


                               
      •                         Built                        on top of synth components
      •                         Can                        be attached to level actors
      •                         Can                        be used in UMG widgets

                     
    •                 NEW:                Media sample rate converter (previously supported only 16-bit @                44.1kHz)


                               
      •                         Supports                        int8, int16, int32, float, double input samples
      •                         Supports                        any sample rate, including variable rates
      •                         Supports                        up to 8 audio input channels
      •                         Supports                        1 and 2 output channels (surround sound is scheduled for 4.19)

                     
    •                 NEW:                Spatial audio supported via media sound components on Actors

           
  •         Video


                     
    •                 NEW:                External texture sampler API


                               
      •                         Enables                        video frame rendering without memory copies
      •                         Currently                        only implemented for Android

                     
    •                 NEW:                API for 360 and stereoscopic video players (see IMediaView)


                               
      •                         Currently                        not implemented in any player plug-ins

                     
    •                 Replaced                problematic triple-buffering mechanism with sample queues
    •                 Better                support for exotic video and pixel formats, and faulty encoders

           
  •         Media        Player Editor


                     
    •                 NEW:                Track format selector menu
    •                 NEW:                Audio/video capture device selector
    •                 NEW:                Cache state visualization (for player plug-ins that support it)
    •                 NEW:                Playlist controls & ability to save playlists (playlist editing                is still WIP)
    •                 EXPERIMENTAL:                Text overlay visualization (currently not used)
    •                 EXPERIMENTAL:                360 video viewport controls (currently not used)
    •                 Scrubbing                is now more responsive
    •                 Improved                information overlays

           
  •         Media        source assets


                     
    •                 NEW:                Per-platform media player overrides are now functional

           
  •         Blueprints


                     
    •                 NEW:                BP functions for querying media player tracks and track formats
    •                 NEW:                BP function library for enumerating audio, video and webcam capture                devices
    •                 NEW:                BP events for SeekCompleted and TracksChanged
    •                 NEW:                BP functions for adding files and URLs to media play lists

           
  •         Media        Player Plug-ins
  •         AndroidMedia


                     
    •                 NEW:                External texture sampler support for highest performance (no data                copies)
    •                 NEW:                Asynchronous file loading
    •                 Improved                support for streaming video

           
  •         AndroidCamera


                     
    •                 NEW:                Media Framework plug-in for Android webcam support
    •                 Access                front or rear camera using available resolutions / frame rates (see                Mobile Major Features for additional details on this feature)

           
  •         AvfMedia        (macOS / iOS)


                     
    •                 NEW:                Support for caption tracks
    •                 NEW:                Audio playback via Audio Mixer (will be enabled in 4.18 Preview 2)
    •                 Fixed                track switching issues / lock-ups
    •                 Fixed                rendering artifacts/flicker on some devices
    •                 Fixed                aliasing/pixelation with high-res media
    •                 Removed                render thread flushes to prevent hitches
    •                 Improved                video sample texture handling

           
  •         ImgMedia        (macOS, Windows)


                     
    •                 Replaces                the old ExrMedia plug-in
    •                 NEW:                Generic file loader for extensible file format support
    •                 NEW:                BMP, JPG, PNG support (albeit much slower than EXR due to slow                legacy loaders)
    •                 NEW:                Proxy directories for alternative (i.e. low-res) image streams
    •                 NEW:                Per-image sequence frame rate & proxy override (i.e. for using                a low-res sequence during development)
    •                 NEW:                Supports playback synchronization with Sequencer
    •                 NEW:                Loading and caching system similar to Shotgun RV
    •                 NEW:                Multi-threaded EXR loader
    •                 NEW:                Asynchronous file loading

           
  •         WmfMedia        (Windows)


                     
    •                 State                machine has been completely rewritten
    •                 NEW:                Track switching
    •                 NEW:                SAMI subtitle file support
    •                 NEW:                Low-latency pipeline support in Windows 8 and newer
    •                 EXPERIMENTAL:                Support for audio and video capture devices
    •                 Fixed                color space conversion problems with certain encoders
    •                 Fixed                audio track lock-up when no audio device available
    •                 Fixed                playlist related problems
    •                 NEW:                Asynchronous file loading
    •                 Fixed                skipping to next I-frame when pausing
    •                 NOTE:                Hardware acceleration is not finished yet

MaterialEditor

           
  •         New:        Added Advanced Preview Scenes to the Material Editor and the        Material Instance Editor. Adjust the settings from the Windows menu.
  •         The        realtime state of the preview viewport in the Material Editor and        Material Instance editor now also changes when the turntable        rotation is toggled for the advanced preview scene.
  •         Bug        Fix: Fix for parameter tooltips not being found in the Material        Editor.
  •         Bug        Fix: PR #3913: Fixed 3D preview issue in the material editor        (Contributed by YuchenMei)
  •         Bug        Fix: Adjust floor height in material editor preview scene based on        preview mesh

Sequencer

           
  •         New:        External textures are now fully supported and enforced when        attempting to sample external texture types in materials.


                     
    •                 Textures                can now dynamically provide an external texture GUID at runtime,                which is queried by the uniform expression. Statically defined                GUIDs remain supported.
    •                 Added                necessary ExternalTexture(Parameter) methods to the material                compiler and HLSL translator

           
  •         New:        New ImgMedia media player plug-in for EXR/BMP/PNG/JPG image        sequences
  •         New:        Media: Media Framework 3.0 API updates
  •         Media:        Added Buffering media event
  •         Media:        Split media capabilities into features and controls
  •         MediaAssets:        Filtering out unused UTexture properties in UMediaTexture in the        Editor
  •         MediaAssets:        Notifying materials when media texture properties changed.
  •         MediaAssets:        Added unit tests for UMediaPlaylist
  •         MediaAssets:        Added looping for play lists
  •         Cine        Camera: Add toggle to disable constraining the roll when look at        tracking is enabled. This allows the user to animate the roll while        tracking an object.
  •         Sequencer:        Add OnPlayReverse() event for when playback is in reverse
  •         Sequencer:        Import FBX settings. Added settings to toggle force front x axis and        whether to create cameras that don't already exist in the level.
  •         Sequencer:        Added option to rerun construction scripts on bound actors in the        sequence every frame.
  •         Movie        Scene Capture: Delay on shot boundaries by setting the sequencer        play rate to 0. This allows particles, TAA, and other effects to        settle on the shot cuts.
  •         Movie        Scene Capture: Expose "Open Folder" hyperlink while        capturing.
  •         Sequence        Recorder: Add interpolation and tangent settings for animation        recording keys
  •         Sequencer:        Track drag drop. Implement drag and drop onto a camera track,        subscene track, and cinematic shot track.
  •         Sequencer:        Import static/default transforms and camera focal lengths from fbx.
  •         Fbx:        Add static transform values to curve data import.
  •         Optimization        pass on key and trajectory rendering when dealing with large numbers        of tracks and/or keys


                     
    •                 Memory                is reserved where possible on hot code paths
    •                 Reduced                amount of sorting and shuffling of arrays where possible
    •                 Key                collections (and thus key groups) are now cacheable so we don't                have to regenerate them every frame
    •                 Reduced                amount of overdraw on keys in sequencer UI
    •                 Added                editor preference to limit the number of keys shown around the                current time when rendering trajectories in the editor                (default=250)
    •                 Optimized                various algorithms used for key introspection and manipulation
    •                 Overlapping                keys are now highlighted with a red border

           
  •         Sequence        Recorder: Add drag and drop functionality to sequence recorder
  •         Cine        Camera: Added GetFilmbackPresetName(), SetFilmbackPresetByName(),        GetLensPresetName(), SetLensPresetByName().
  •         Sequencer:        Added slip functionality for sections. Hold down shift and drag the        section left and right (as if you were moving it).
  •         Bug        Fix: Sequencer: Fixed skylight and reflection components off by one        frame in PIE
  •         Bug        Fix: GitHub #3183: Conversion to base class is inaccessible.
  •         Bug        Fix: Sequencer: Fixed sections not being filtered on select in range
  •         Bug        Fix: Camera Rig: Fix crane and rail not being packaged properly.
  •         Bug        Fix: Sequencer: Update spawnable name when the spawnable actor name        is changed.
  •         Bug        Fix: Sequencer: Fix a few player state issues. When paused, calling        stop now tears down properly (spawnables are removed, etc). When a        level sequence is deleted, tears down properly as well.
  •         Bug        Fix: Sequencer: Fix cinematic mode getting activated on BeginPlay()        instead of OnStartedPlaying().
  •         Bug        Fix: PR #3872: Fix small typo in ImagePlate Plugin (Contributed by        TheCodez)
  •         Bug        Fix: Sequencer: Put level visibility tracks in the SpawnObjects        evaluation group to ensure levels are streamed before any        possessable bindings are resolved
  •         Bug        Fix: Sequencer: Fix crash in removing delegate
  •         Bug        Fix: Sequencer: Array bounds check.
  •         Bug        Fix: Movie Scene Capture: Override cinematic mode in the movie scene        capture.
  •         Bug        Fix: Sequencer: Capture thumbnail before pre save so that the        thumbnail isn't captured with the evaluation in a reset state.
  •         Bug        Fix: Movie Scene Capture: Move window to within the desktop bounds        when resizing.
  •         Bug        Fix: Fbx: Fix aperture width, height, focal length and field of view        calculations.
  •         Bug        Fix: Sequencer: If already at the correct play position, don't jump        to it. This fixes a bug where if you play to a position and pause,        resuming play will playforward and not keep pausing.
  •         Bug        Fix: Sequencer: Serialize the custom guid version for sections.
  •         Bug        Fix: Sequencer: Call SkyLightComponent's SetLightColor() directly,        similar to LightComponent
  •         Bug        Fix: Actor Sequence: Add runtime as a plugin, remove from        dynamically loaded module list.
  •         Bug        Fix: Sequencer: Add transactions to easing type and setting changes.
  •         Bug        Fix: Sequencer: Fix ensure when deleting sections. Sections were        getting removed from the array during iteration.
  •         Bug        Fix: Sequencer: Fixed crash caused by erroneous persistent        references to FSequencer.
  •         Bug        Fix: Fix crash when recording to animation in-use
  •         Bug        Fix: Sequence Recorder: Record to the specified target animation for        the target actor only. Newly tracked components will have newly        created animations so that they don't record to the same target        animation assets. Sequence Recorder: Close the target animation        asset editor if it exists before recording into it.
  •         Bug        Fix: WmfMedia: Fixed NV12 webcam output not working for non-multiple        of 16 horizontal resolutions
  •         Bug        Fix: WmfMedia: Fixed NV12 webcam output not working for non-multiple        of 16 vertical resolution

VR-Editor

           
  •         Bug        Fix: Allowing (smart) translation snapping if smart snap is on but        translation snap is disabled

WorldBrowser

           
  •         Added        more zoom levels for World Composition window
  •         Better        selection behavior in World Composition window
  •         Added        a new context menu command to lock all tiles location in World        Composition window. Once tiles are locked they can't be accidentally        moved/dragged.
  •         Bug        Fix: Fixed: Toolbar widget clipping issues in World Composition        window

Editorand Tools

           
  •         Added        feature to allow for calculating final Light Map Resolution for the        output Static Mesh from Merging Actors according to the input Static        Mesh Light Map resolutions.
  •         Adding        ability to add custom row and properties to categories for detail        customizations.
  •         Renamed        "Find in CB" toolbar button to "Browse" and        renamed "Search" (in Blueprints) to "Find", so        terminology is consistent and keyboard shortcuts make sense (Ctrl+B        for Browse, Ctrl+F for Find)
  •         Bug        Fix: Fixed clothing meshes sometimes not drawing from certain angles        when the clothing tools were in paint mode, as the mesh bounds were        being computed incorrectly.
  •         Bug        Fix: Fixed merging negative-scaled actors breaking the mesh normals
  •         Bug        Fix: Fixed crash when specifying too large texture size for Bake        Material tool.
  •         Bug        Fix: Fixed issue with Bake Out Material not updating data used for        texture streaming, causing ensure.
  •         Bug        Fix: Fixed bug with Merge Actor when using recompute normal and        Overlapping UVs causing incorrect normals.
  •         Bug        Fix: Asset reloading now defers re-opening asset editors until        post-GC phase
  •         Bug        Fix: Fix issues renaming maps that contain legacy map build lighting        data
  •         Bug        Fix: Removed any deprecated code older than 4.10 that didn't affect        content compatibility
  •         Bug        Fix: Fixed crash that could occur when opening a physics asset and        deleting unused bones.
  •         Bug        Fix: Fixed issue when trying to Vertex Paint on a Skeletal Mesh        without a Physics Asset or non overlapping Physics Bodies with the        Skeletal Mesh
  •         Bug        Fix: When visualising constraint axes in the physics asset editor,        the axis arrows are now scaled in world space according to the        user-specified constraint drawing scale, instead of being a fixed        size on-screen.
  •         Bug        Fix: Fixed issues with HLOD content left unchanged after a Level is        renamed
  •         Bug        Fix: Fixed issue with Texture Sizing Type not having any effect on        Merge Actor functionality

Landscape

           
  •         Bug        Fix: Marked ULandscapeComponent and        ULandscapeHeightfieldCollisionComponent as Within=LandscapeProxy,        since they do CastChecked on their Outer all the time

Sequencer

           
  •         Bug        Fix: Fixed issue with Animation re-initializes when using        AnimBlueprint for the animation track.
  •         Bug        Fix: Fixed a potential crash in UMediaPlaylist::Insert and        UMediaPlaylist::RemoveAt when passed an invalid index
  •         Bug        Fix: Prevented crashes in some methods of UMovieSceneSequencePlayer        when there is no Sequence set Prevented a crash in        FMovieSceneRootEvaluationTemplateInstance::Evaluate when the        instance has no template set
  •         Bug        Fix: You can only select AnimSequence or AnimComposite on the        property window of track.

GameplayFramework

           
  •         New:        Cross-level Actor references are now better supported, using        SoftObjectPath and SoftObjectPtr (called Soft Object Reference in        Blueprints). As part of this, FStringAssetReference and TAssetPtr        were renamed to FSoftObjectPath and TSoftObjectPtr.

Ifyou create a SoftObjectPtr property pointing to an Actor or subclass,they will have an improved UI that will show rather they are unloadedor broken, as well as the full Actor ID they point to. Cross levelreferences like this will now correctly be fixed up if the pointed toactor is renamed or moved using the "Move to current level"option. It will attempt to check out and resave any otherlevels/sequences that point to that specific actor. They will alsowork correctly in PIE when level streaming is used.

           
  •         Draw        box around Actor being debugged by 'ShowDebug' command, to help        identify what we're viewing.
  •         Allow        Scale to be set on an AnimNotify as well as the spawn emitter        gameplay statics
  •         Add        ToString Blueprint functions for        SoftObjectReference/SoftClassReference/PrimaryAssetId/PrimaryAssetType        to assist in debugging
  •         USceneComponent::ComponentToWorld        has now been made private per the previous deprecation message.
  •         Change        the way that PIE networking works so the sent paths strip the PIE        prefix and restore on load. This allows connecting a PIE        client/server to an external non-PIE client/server.
  •         Change        it so Standalone PIE and multiprocess networked PIE do not save        temporary levels starting with UEDPC and instead prompt the user to        save. This is how Launch On works by default already, and this fixes        several cross level reference and sequencer bugs.
  •         Added        GetKeysForAxis() to complement GetKeysForAction() in UPlayerInput
  •         Add        support for downloading Chunks on demand to the Asset Manager, if        they are set up for your project. AcquireResourcesForAssetList can        be used to predownload chunks, and chunks will be downloaded on        demand if bShouldAcquireMissingChunksOnLoad is true in the Asset        Manager Settings
  •         Add        FCollectionReference type and customization that allows selecting a        Collection in the editor. Add one to PrimaryAssetLabel so it will        label all assets in a Collection
  •         Small        optimization to CleanupActors
  •         Reduced        memory footprint of UActorComponent, USceneComponent,        UPrimitiveComponent, UMeshComponent, UStaticMeshComponent, and        UParticleSystemComponent.
  •         UStaticMeshComponent::StaticMesh        has completed being made private. Use Get/SetStaticMesh() instead.
  •         AHUD::GetOwningPlayerController        and GetOwningPawn are now public accessors.
  •         Added        FTransform::TransformRotation(FQuat) and        FTransform::InverseTransformRotation(FQuat). Added matching        Blueprint library functions taking FRotator. (Contributed by        EverNewJoy).
  •         Active        force feedback effects and components can now ignore time dilation.
  •         Added        console command to disable URO interpolation.
  •         Exposed        GetAzimuthAndElevation to Blueprints.
  •         Bug        Fix: Removed call to DebugCanvas->Flush_GameThread(); to fix        'showdebug' commands not rendering anymore.
  •         Bug        Fix: Fix several crashes that could happen while attempting to use        Play in Editor in less common configurations
  •         Bug        Fix: Child Actors created by transient child actor components are        now correctly created as transient. Note that this will not remove        existing Actors that had been saved in to maps inadvertently.
  •         Bug        Fix: Fix issue where running a game with bUseFixedFrameRate=true        could crash because it generated negative delta times.
  •         Bug        Fix: Copying an actor in the level editor will no longer reset array        values if a new element has been added.
  •         Bug        Fix: Fix issue where Combined streamable handles could be freed        before they finished loading
  •         Bug        Fix: Removed any deprecated code older than 4.10 that didn't affect        content compatibility
  •         Bug        Fix: Overriden Child Actor Class property will no longer reset to        default when a new instance is created through copy/paste.
  •         Bug        Fix: Garbage Collection timing is no longer managed on a per World        basis, but instead at the UEngine level.
  •         Bug        Fix: Marked ULevelStreaming as Within=World, since various places        already assume it
  •         Bug        Fix: Fix several issues with loading the same asset twice in a row        with Asset Manager.
  •         Bug        Fix: All components will now clear the component need end of frame        update mark when unregistered, not just primitive components.
  •         Bug        Fix: Added GetTargetRotation() to SpringArmComponent, which returns        the rotation target based on the combination of various rotation        setting flags (bUsePawnControlRotation, bInheritPitch, bInheritYaw,        bInheritRoll, absolute rotation flags). Use this instead of querying        the SpringArmComponent's own rotation, which isn't changed at        runtime.
  •         Bug        Fix: Reduced memory churn/allocations when duplicating an Actor's        components for PIE.
  •         Bug        Fix: Fixed comment in GetComponents (UActorComponent version), which        was referencing wrong component type.
  •         Bug        Fix: Fixed issues where lighting could be unbuilt when reloading        packages.
  •         Bug        Fix: Renamed USceneComponent::bWorldToComponentUpdated to        bComponentToWorldUpdated (since the transform is called        ComponentToWorld).
  •         Bug        Fix: Fixed crash when SpawnObject has a null class passed to it.

Localization

           
  •         New:        In-Editor Localization Preview
  •         Bug        Fix: Fixed some crashes where IMEs would try and access a deleted        widget
  •         Bug        Fix: Fixed high memory usage when using certain IMEs
  •         Bug        Fix: Games now use the native culture of any of the game targets as        the fallback (rather than always using English)
  •         Bug        Fix: Fixed abnormally long PO export times under certain        circumstances
  •         Bug        Fix: Fixed iOS not detecting the locale correctly

Networking

           
  •         New:        Added experimental network encryption functionality.


                     
    •                 This                is handled by a new packet handler component in the                AESHandlerComponent plugin.
    •                 This                component depends on another new plugin, PlatformCrypto, which                wraps basic encryption algorithms implemented either by APIs                provided by the platform, or by OpenSSL.
    •                 Net                connections and their packet handler objects are now aware of                encryption components, and have new functions to allow setting the                encryption key.
    •                 When                connecting to a game server, a custom token can be exchanged. This                token may be used to obtain the actual encryption key for the                connection.

           
  •         UdpMessaging:        Not showing warning message if tunnel settings left empty to use        defaults
  •         Messaging:        Waking up message router thread on shutdown
  •         Messaging:        Moved common helper classes into MessagingCommon module
  •         Merged        over the change to expose more of dormancy to Blueprints (UE-46240)
  •         Enable        the TCPMessaging plugin on platforms other than Windows/Mac so it        can be used for profiling/automation, and fix several        platform-specific bugs. If this is not desired, you should disable        the plugin for your project.
  •         Add        support for -TcpMessagingListen=IP:port and        -TcpMessagingConnect=IPort command line options to the TCP        messaging layer used for automation and profiling, this allows        manually connecting to specific devices
  •         Added        some additional stat instrumentation to the low-level network        replication code. This may help track down replication performance        issues when viewing ue4stats files in the Profiler.
  •         It        is now possible to configure the UDP socket buffer sizes that the        IpNetDriver requests of the operating system when creating a new        connection.
  •         Bug        Fix: Networking: Fixed nullpointer crash in TcpListener if socket        initialization fails
  •         Bug        Fix: NBOSerializer security fixes to protect against possible        overflow in the values
  •         Bug        Fix: Fixed client assert when trying to send RPCs while connection        is pending closure due to queued bunches. ChIndex is -1 during this        time, though the channel is not actually closed. Added ensure when        calling SendBunch() under this condition to catch future cases like        this.
  •         Bug        Fix: Fix issue where nonblocking BSD sockets on some platforms may        return EINPROGRESS on initial connect, which should not be treated        as an error
  •         Bug        Fix: AActor:reReplication is now called prior to RPCs when they        would have triggered initial replication.
  •         Bug        Fix: Fixed an issue where connecting to a Server that had deleted        startup actors and then unloaded their sub level would cause a        crash.
  •         Bug        Fix: Fix to update actor replication stats even when the connection        is currently saturated.
  •         Bug        Fix: APawn::IsNetRelevantFor properly checks        AGameNetworkManager::bUseDistanceBasedRelevancy.
  •         Bug        Fix: Fixed a rare issue where the data stored in network replays        could be corrupted, potentially causing a crash when the replay is        played back.
  •         Bug        Fix: Fixed an issue when the server is paused, the clients were not        getting the update that it had happened.
  •         Bug        Fix: Changes were made to FTcpListener and        FTcpMessageTransportConnection to prevent them from polling sockets        in a thread while waiting for connections or data. This improves        performance on Android clients when launched from the editor and        should also benefit other systems using FTcpListener.

Online

           
  •         New:        Google Sign In SDK for iOS/Android/PC has been integrated into the        engine with OnlineSubsystemGoogle
  •         IOnlineIdentity::GetPlatformUserIdFromUniqueNetId        is now const
  •         Voip        streaming improvements - use the underflow feature of sound        streaming to feed the audio buffer rather than enqueue the data        directly - wait a small period of time to buffer period actually        playing new voip streams
  •         Added        intrinsic FNames for NAME_GameSession and NAME_PartySession left        #define for GameSessionName and PartySessionName to map to new        FNames
  •         Voice        module improvements / refactors for Windows/Opus codec - added        ability to change more parameters at runtime (samplerate, channels,        device) - ability to change bitrate at runtime - ability to change        complexity at runtime - ability to set VBR on/off - fixed some bugs        related to stereo playback / diagnostics - exposed more settings /        information in the various classes - added num channels as an input        parameter to CreateVoiceAudioComponent helper function - improved        test voice class and its capabilities - various exec commands to        change audio capture values at runtime - queue audio data        differently for the procedural sound wave class - more buffer sanity        checks - fixed bug when nothing to encode (super low bitrate)        causing the decoder to fail -- encode 0 size frame data and make        decoder aware of it - added more stats under "stat voice"        - added LogVoiceEngine to separate out OSS related voice calls from        rest of audio capture code
  •         Update        cacert.pem from curl's website        https://curl.haxx.se/docs/caextract.html
  •         Google        Sign In SDK implemented for iOS, Android, and desktop platforms
  •         Hotfix        manager will only reload config during "restore ini" for        classes that were actually affected by the previous hotfix which        prevents calling ReloadConfig on every class in an ini file
  •         Handle        instances in UParty where World is null
  •         Add        optional StatePrefix to OnlineSubsystemTwitch
  •         Add        RevokeAuthToken to IOnlineIdentity. Implemented in        OnlineSubsystemTwitch. Remove auto revoke auth token on logout from        OnlineSubsystemTwitch.
  •         OnlineSubsystemTwitch:        Use a specific error when auth token validation fails
  •         Add        join party failure reason of GameSpecificReason for game defined        join party failures
  •         Extended        IOnlineTitleFile OnEnumerateFilesComplete to include an error        string.
  •         OnlineSubsystemTwitch:        Use the web browser to go through the Twitch login flow on consoles.
  •         Bug        Fix: Fix potential null pointer access in Oculus session cleanup
  •         Bug        Fix: VoiceDecoder Opus security fixes that sanity check packet        header calculations to prevent buffer overrun
  •         Bug        Fix: Facebook implementations using the embedded browser will delete        cookies on logout
  •         Bug        Fix: Google implementations using the embedded browser will delete        cookies on logout
  •         Bug        Fix: Update manager will skip initial hotfix check if user isn't        signed into the console at the time.
  •         Bug        Fix: Remove caching of config values in OnlineSubsystemTwitch. Fixes        hotfixes not taking effect
  •         Bug        Fix: Party Beacon: Prevent player from being leader of multiple        party reservations. Prevent party from creating a reservation that        contains members that are in other reservations.
  •         Bug        Fix: Changed message sanitizer SanitizeMessage to        SanitizeDisplayNames to better convey its function Added        QueryBlockedUser to check user to user permissions Added ResetCache        function for clearing permission cache Added Live version of message        sanitizer
  •         Bug        Fix: Fixed hardcoded controller id in RejoinCheck in TravelToSession        call
  •         Bug        Fix: Remove ensure in UPartyBeaconState::UpdatePartyLeader, this        function is called while the player is being kicked, revoking their        reservation
  •         Bug        Fix: LoginFlow module now properly included in OnlineFramework        uplugin with proper IWYU semantics
  •         Bug        Fix: Fix crash when logging out in the middle of joining a party
  •         Bug        Fix: Fix simultaneous party join requests dropping some requests
  •         Bug        Fix: Added GetFirstSignedInUser function as an        improvement/workaround for a bunch of GetPlayerUniqueId(0) calls in        the OnlineSubsystem APIs.

Other

           
  •         Added        EditorFunctionalTest class that should be used as the base class for        editor-only functional tests. The Automation Test Framework now        understands the difference between runtime and editor only tests

Physics

           
  •         New:        Clothing tools moved out of experimental
  •         Added        per-axis inertia scaling and parent dominance settings to physics        bodies/constraints
  •         Added        "Smooth Mesh" button to the smooth clothing paint tool        that applies the smoothing effect to the entire mesh in one action.
  •         Added        support for physical materials in immediate mode (Rigid Body node)
  •         Improved        internal automated tests for physical animation.
  •         Expose        FHitResult:istance to Blueprint's Break/Make Nodes (Pull Request        Contributed by LordNed)
  •         Improved        physics asset generation using the multi-convex hull primitive type.        Multi-convex hull primitives can now be created from meshes        containing vertices that are influenced by more than one bone.
  •         Remove        Box2D support
  •         Exposed        an inertia scale for body instances
  •         Added        ExternalForce to rigid body node for faking inertia while simulating        in component space
  •         Added        RootBone simulation space to RigidBody node. This is useful for        cases where we rotate the skeletal mesh component and counter rotate        the root bone and do not want to affect simulated bodies'        velocities.
  •         The        UPrimitiveComponent angular physics functions have been standardised        to use consistent units. Functions suffixed with "InDegrees"        use degrees, and functions suffixed with "InRadians" use        radians. The existing functions have been deprecated in favour of        their new versions.

Underthe hood, the FBodyInstance angular physics functions now workentirely in radians. Any functions that previously used degrees havebeen deprecated.

           
  •         Clothing        optimization pass, mainly removing allocations and precaching some        skin information. 10% Overall non-gamethread time reduction,        gamethread sync completion task time halved.
  •         Added        ability to rename clothing assets after creation
  •         Clothing        LOD improvements - Added full pipeline for adding LODs to clothing        assets in editor - Added methods for mapping parameters between        masks on meshes with differing topology - Fixed a few UI bugs
  •         Added        single threaded PhysX tasks stats using "stat PhysXTasks"
  •         Bug        Fix: Removed the need for calling constructors for PhysX        PxRaycastHit in the dynamic hit result buffer for sweeps/raycasts.        Saves 30% of the cost of doing small raycasts.
  •         Bug        Fix: Fixed crashes in physics asset editor and skeletal mesh editor        when the preview scene clears out the preview mesh while clothing is        running
  •         Bug        Fix: Restricted painter processing to no longer attempt painting        while in simulation previews in cloth paint mode.
  •         Bug        Fix: Fixed clothing gradient tool renderer not showing selected        points when camera was moving
  •         Bug        Fix: Fixed cloth paint falloff to actually calculate falloff, and        take brush strength into account.
  •         Bug        Fix: Fixed cloth paint gradient allowing invalid values
  •         Bug        Fix: Fixed crash shutting down editor with active cloth paint tab,.
  •         Bug        Fix: Fixed mismatch between paint values and view values for        clothing tools
  •         Bug        Fix: Fixed skel surf particles being misplaced when clothing was        active. And fixed particles spawning on disabled cloth proxy        sections.
  •         Bug        Fix: Fixed physics substepping causing erratic simulation of        simulated bodies that were attached to kinematic ones (eg. simulated        ponytails). This was due to incorrect interpolation paths on the        kinematic bodies, which caused the attached physical bodies to        accumulate too much velocity each frame.
  •         Bug        Fix: Fixed clothing not resimulating after resetting physics asset        to default in a details panel
  •         Bug        Fix: Fix crash in show collision
  •         Bug        Fix: Fixed clothing visualizations not drawing at correct        orientation (Normals, Max Distances and Backstops)
  •         Bug        Fix: Internal application stability improvements to physics        simulations.
  •         Bug        Fix: Fixed crash attempting to render clothing collisions extracted        from a physics asset incompaticble with the acive mesh skeleton
  •         Bug        Fix: Fixed crash when deleting a selected clothing section and        relaunching the skeletal mesh editor
  •         Bug        Fix: Fixed changing or reloading the current level causing certain        physics debugging bounds not to be shown if collision visualisation        is turned on.
  •         Bug        Fix: Fixed UPhysicsAsset::CalcAABB to properly handle scaled bones.
  •         Bug        Fix: Fixed "Apply Clothing" menu showing an invalid widget        when there were no clothing assets.
  •         Bug        Fix: Fixed crash attempting to paint on a clothing object created by        importing an incompatible APEX asset.
  •         Bug        Fix: Fixed clothing bounds calculation always including the        component root.
  •         Bug        Fix: Fix bad bounds computation for immediate mode.
  •         Bug        Fix: Updated FRaycastHit:istance Documentation (Contributed by        LordNed)
  •         Bug        Fix: Change GetMaterialFromCollisionFaceIndex implementations to        return null if face index is negative
  •         Bug        Fix: Fix incorrect bone mapping for rigid body node. (Only matters        when first call to init has a different number of bodies, for        example a different skin)
  •         Bug        Fix: Turn joint pre-processing on for immediate mode. This helps        with some stability issues.
  •         Bug        Fix: Remove unused HACD library. We only use V-HACD now.
  •         Bug        Fix: Made it so that linear and angular velocity are properly        computed for kinematic targets in immediate physics and rigid body        node.
  •         Bug        Fix: Fixed bug with PhysX cooked data not taking into account        complexity type of body setup.
  •         Bug        Fix: Fixed merge error in PhysX immediate mode as reported by NVIDIA
  •         Bug        Fix: Removed deprecated methods that were replaced by _AssumesLocked        variations
  •         Bug        Fix: Imported new simple collision for        Engine/Content/BasicShapes/Cylinder.uasset which is a single convex        shape (rather than being 4 shapes as before).
  •         Bug        Fix: Fixed a few crashes in UVehicleWheel when spawned directly
  •         Bug        Fix: Improved the comment on UPhysicalMaterial::Friction
  •         Bug        Fix: Changed FBodyInstance::InstanceBodyIndex to int32, fixes        incorrect body index being returned from traces if there are a large        number within one component.
  •         Bug        Fix: Removing unnecessary conditional in        WheeledVehicleMovementComponent.
  •         Bug        Fix: Removed duplicated forward declaration in VehicleAnimInstance.h
  •         Bug        Fix: Fixed Capsules where axis length (half-height - radius) < 1        were clamped to a new capsule with axis length of 1. Changed the        clamp threshold to 1e-4 and changed FPhysXShapeAdaptor to use a        Sphere instead when Radius >= HalfHeight.


                     
    •                 This                would cause sweeps using the capsule params to use a capsule of a                different size, up to 1 UU different along the axis.
    •                 Moved                hardcoded limits on FCollisionShape extents to a static value and                refactored external code to reference that instead.

CollisionDetection

           
  •         Bug        Fix: Fixed occasional crash while cooking collision in        cook-on-the-fly server.

PhysicsAsset Editor

           
  •         New:        New Physics Asset Editor
  •         Bug        Fix: Fixed crash when regenerating large amounts of bodies
  •         Bug        Fix: Fixed crash when regenerating multi convex hulls from zero-vert        bones
  •         Bug        Fix: Fixed physics assets not simulating when BlockAll was globally        overridden
  •         Bug        Fix: Make sure the physics asset editor floor has collision,        regardless of what BlockAll does
  •         Bug        Fix: Fixed physics asset shortcut not working correctly in certain        circumstances
  •         Bug        Fix: Exposed LOD menu in PhAT
  •         Bug        Fix: Fixed tooltip for PhysicsType
  •         Bug        Fix: Improved UI feedback around bounds/in-game bounds in animation        editor viewports
  •         Bug        Fix: Fixing undo/redo of bone modifications in Physics Asset Editor        (and others)
  •         Bug        Fix: Fix for crash in physics asset editor after garbage collection
  •         Bug        Fix: Fix crash undo-ing primitive regeneration while simulation is        in progress & stopping simulation in PhAT
  •         Bug        Fix: Prevented undo/redo breaking when moving both a constraint and        a body at the same time in PhAT
  •         Bug        Fix: Re-added "Apply Physical Material To All" to PhAT.        Also re-instated quick constraint setting options in the toolbar.

RigidBodies

           
  •         Added        per-axis inertia and parent dominance settings to physics assets
  •         Bug        Fix: Fixed crash deleting a destructible mesh while it was open in        an editor with a sub-chunk selected
  •         Bug        Fix: Fixed crash when physics update causes other bodies to be        destroyed (e.g falling out of world).

Platforms

           
  •         Bug        Fix: Fixed a bug where the Local Notification Delegate was not        released when UPlatformGameInstance is being destroyed

AllMobile

           
  •         Improvements        to localization initialization time on application startup, which        reduces overall boot time
  •         Added        GetDiskTotalAndFreeSpace implementation for IOS and Android
  •         Added to        UPL


                     
    •                 sets                bool to true if any entry in array of strings in ini matches                the contains attribute

           
  •         Allow        addElement and addElements to only insert once with once="true"        attribute in UPL
  •         Bug        Fix: Prevent UMobileInstalledContent methods from crashing when        called on a created instance in an uncooked build (no installed        manifest)

Android

           
  •         New:        Android camera plugin
  •         New:        Enabled Gradle by default and added button to accept Android SDK        license to project settings
  •         New:        Updated Android improved virtual keyboard support; now works on more        devices / keyboard types
  •         New:        Updated to Google Play Services 11.0.4 and GPG C++ v2.3
  •         Android        media player updates for Vulkan support
  •         Added        detection of Houdini (running on Intel Android CPU) for device        profiles (SRC_UsingHoudini=true)
  •         More        informative Android SDK license requirements description in Android        project settings and errors if attempting to launch or package        without accepted agreement
  •         Added to        UPL to allow additions to the root-level build.gradle
  •         Add        'sustained performance mode' support for API 24+ devices.
  •         Add        Android cpu stats (stat AndroidCPU) Displays core frequency and core        utilization.

Androidcpu stats update rate is governed by the CVar'Android.CPUStatsUpdateRate'.

           
  •         Allow        variable expansion in addPermission, addFeature, and addLibrary UPL        commands
  •         Changes        to use the VS2017 sandbox Android SDK if enabled (contributed by        IanMatthewHuff)
  •         Added        new "Include AdMob support for ads" checkbox to Android        project settings to disable inclusion of the AdMob SDK in the APK if        you do not need ad support.
  •         Only        use external texture shader version override on shaders needing it
  •         Bug        Fix: Check for runtime permission to use Android camera in plugin
  •         Bug        Fix: Android camera plugin improvements


                     
    •                 return                correct capture device type (webcamfront/rear)
    •                 remove                seek (not supported)
    •                 support                track formats
    •                 better                framerate selection

           
  •         Bug        Fix: Fixed playlist looping (send PlaybackEndReached event) in        Android media player
  •         Bug        Fix: AndroidMedia: Fixed flicker issue
  •         Bug        Fix: Protect against null window during shutdown
  •         Bug        Fix: Don't add the APK as a build product for Android (.so is marked        as Executable)
  •         Bug        Fix: Various improvements have been maid to the experimental Virtual        Keyboard including:


                     
    •                 Multiline                is now disabled when not needed
    •                 Suggestions                and autocorrect are now hidden
    •                 The                Done and Back button behavior has been adjusted with Enter and Back                key events returned to the UMG controls so they can implement                appropriate behavior
    •                 If                the keyboard is up and you click on the same control that has                focus, it will hide the keyboard

           
  •         Bug        Fix: Fixed issue with trying to link ARMv7-only        libovrplatformloader.so for non ARMv7 targets
  •         Bug        Fix: Filter out unneeded architectures from APK for Gradle builds
  •         Bug        Fix: Don't use V2 signing for Gear VR APKs
  •         Bug        Fix: Set online provider back to GooglePlay and remove forcing IAP        permission (contributed by umerov1999)
  •         Bug        Fix: Fixed GoogleVR Gradle packaging
  •         Bug        Fix: Removed unneeded settings.gradle file since it is generated
  •         Bug        Fix: Include JAR files from libs in classes.dex with Gradle enabled
  •         Bug        Fix: Use absolute path for repositories for Gradle
  •         Bug        Fix: The Android experimental virtual keyboard now has a native edit        box above the keyboard to receive the text and pass it to Slate/UMG.        This improves support for non-English characters.
  •         Bug        Fix: Fixed tilt axis to be consistent between Android and iOS        devices
  •         Bug        Fix: Use FMath::log2 instead of log2 to fix Android runtime dlopen        failure on some devices
  •         Bug        Fix: Only recompile android_native_app_glue.c and UELinkerExceptions        if necessary
  •         Bug        Fix: Clean up Gradle intermediates after packaging if on build        machine (IsBuildMachine environment variable set to 1)
  •         Bug        Fix: Android external texture extension updates for compatibility        (forcing ES2 or using ESSL3 if available)
  •         Bug        Fix: Fixed media player to allow disabling audio by setting track to        INDEX_NONE (-1) before playing
  •         Bug        Fix: Fixes for Android media player and camera player


                     
    •                 buffer                samples copy proper bytecount
    •                 realloc                sets new buffer ptr
    •                 refcount                of Java buffers fixed

           
  •         Bug        Fix: Moved more of the Android link command arguments to response        file to deal with command line limit on Windows. This fixes issues        with having a large number of modules enabled.
  •         Bug        Fix: The Kindle Fire HD7 5th generation (GPU Mali 450) seems to have        problems with threaded rendering, crashing when returning to the        main thread. We have added a device profile        [Android_Mali_4xx_KindleFire] to disable startup movies during        initial loading which prevents the crash. This is the best        workaround we have for this device at the moment.
  •         Bug        Fix: Fixed issue with Android password keyboard input
  •         Bug        Fix: Protect mediaplayer from entering wrong state if async prepare        has not completed
  •         Bug        Fix: Corrected ordering of Android media player suspend and        playbackendreached events
  •         Bug        Fix: Fixed issue with immersive mode enabled if volume buttons used        even if disabled
  •         Bug        Fix: Fixed error returns from rungradle.bat and ant.bat
  •         Bug        Fix: Fixed issue where enabling the Shared Material Native Libraries        caused packaging for Android to fail
  •         Bug        Fix: Fixed Android startup movies not always playing
  •         Bug        Fix: Fixed compile error in Android project generator on Linux
  •         Bug        Fix: Stops packaging if resulting OBB too large to use on device
  •         Bug        Fix: Added workaround to install scripts for copying distribution        builds to Android/obb
  •         Bug        Fix: Only add Android NDK glue files to Launch module on first call        to prevent unnecessary recompiles
  •         Bug        Fix: Properly pause and resume Android event listeners when app is        paused / resumed. Prevents possible excess CPU use when a UE4 app is        paused.
  •         Bug        Fix: Skip unneeded events on changing Android camera resolution or        framerate
  •         Bug        Fix: Added OBB exceeds 2 GiB failure error code
  •         Bug        Fix: Fixed movie playback on Android devices when packaged for ES        3.1
  •         Bug        Fix: Fixed orientation change issue on Android Oreo
  •         Bug        Fix: Fixed text flicker during update of new virtual keyboard        contents and fix crash on deleting selections
  •         Bug        Fix: Fixed shader compile errors that occurred at runtime on Galaxy        S6 devices
  •         Bug        Fix: Fixed virtual keyboard setFilters crash
  •         Bug        Fix: Added missing TangoSDK to Android binaries needed for ARCore
  •         Bug        Fix: Don't show incorrect cursor location with improved Android        virtual keyboard
  •         Bug        Fix: Deal with rapid changing of improved Android virtual keyboard        state
  •         Bug        Fix: Fixed Android camera orientation for front camera on some        devices
  •         Bug        Fix: Don't set GL_TEXTURE_MAX_LEVEL on external textures Added        r.Android.OverrideExternalTextureSupport CVar to override external        texture detection
  •         Bug        Fix: Reduced frequency of adb calls waiting for Android Launch On        process to complete
  •         Bug        Fix: Updatef manifest configChanges for adActivity and only include        if AdMob support enabled
  •         Bug        Fix: Fix Android camera orientation for rear camera on some devices
  •         Bug        Fix: Only use density configChanges in AndroidManifest if SDK API        24+ and minSDK 17+
  •         Bug        Fix: Fixed Android UPL plugin detection

HTML5

           
  •         HTML5        3rd Party Libs - compiled with emscripten 1.37.19
  •         HTML5        emscripten 1.37.19 Win64
  •         Updated        HTML5 to use the Emscripten 1.37.19 toolchain on Windows, OSX and        Linux
  •         HTML5        emscripten 1.37.19 Linux
  •         HTML5        emscripten 1.37.19 OSX
  •         WebAssembly        is now enabled by default and ASM.js support has been sunsetted
  •         Bug        Fix: Fix a crash on HTML5 when rendering landscapes
  •         Bug        Fix: Pak file compression is now disabled by default; instead it's        best to compress the content packages with gzip and use the        browser's internal decompression after configuring your web server        to include the header "Content-Encoding: gzip".
  •         Bug        Fix: Zen Garden now has its textures limited to 256x256 when        packaging for HTML5 to make the content size more practical on HTML5        and fixing memory issues on Chrome.
  •         Bug        Fix: Fixed refraction on HTML5 that was caused by several issues        with the shaders on WebGL2
  •         Bug        Fix: Removed the HTML5 PreLoadMap "feature"
  •         Bug        Fix: Fixed issue with HTML5 failing to show the game scene on Chrome        on OSX. Even though canvas had been set with alpha:false, the scene        was rendering as transparent.
  •         Bug        Fix: Fixed various issue with vehicle-based projects that failed        launch on HTML5

iOS

           
  •         Added        IsRegisteredForRemoteNotifications to allow detection during program        execution.
  •         Added        an option to enable/disable exceptions when compiling Objective C        for iOS. This removes upto 6mb of unwind tables from the iOS        executable of UE4.
  •         Added        an option to disable force inline when compiling for iOS. Use this        in combination with build for size to reduce the size of the        executable.
  •         Improved        Xcode project generation to be compatible with Xcode 9.
  •         IOS        9 is now the minimum OS level supported from the editor. Older iOS        version support can be enabled via a GitHub build by modifying the        build and deploy tools.
  •         The        iOS signing process has been simplified when using the remote        toolchain from PC. It is no longer necessary to to have any signing        certificates or private keys installed on the remote Mac. It is now        sufficient to have the certificates and keys installed on the PC and        configured in the IOS section of the Project Settings.
  •         Addition        of asset catalogs for application icons on IOS 11. When utilizing        Xcode 9, the build tools will now create and compile an asset        catalog composed of the application icons. This catalog is required        when uploading the application to the store. Users can still specify        their icons in the IOS Project Settings as normal and the location        of the those files has not changed. They are automatically copied in        to the asset catalog at build time.
  •         The        editor now defaults to building 64-bit only executables for iOS.        This change has been made to be compatible with iOS 11 and it's        64-bit only policy. Source users can still build 32-bit executables        by updating the 32-bit build variables in their configuration files.
  •         Added        Info.plist entrees for required capabilities and camera usage        messaging when ARKit usage is detected.
  •         Added        detection of new iOS devices: iPad Pro 10.5, iPad Pro 1.29 (2nd        Gen), iPad 5th Gen, AppleTV 4K, iPhone 8, iPhone 8Plus, and iPhone X
  •         Bug        Fix: Fixed occasional hangs on startup when launching from a        received remote notification.
  •         Bug        Fix: Fixed an issue where the start touch was not being stored for        use when determining scroll delta.
  •         Bug        Fix: Fixed an issue where refraction was not rendering on tvOS
  •         Bug        Fix: Password protected iOS certificates are now properly installed        after prompting the user to enter the password.
  •         Bug        Fix: Fix an issue where the orientations supported by the game were        not being limited by the information in the Info.plist.
  •         Bug        Fix: Fix for ScreenSpaceReflections not working properly on iOS 11
  •         Bug        Fix: Fixed an issue where after restoring purchases user could no        longer purchase anything (courtesy of nverenik). Fix for InApp        purchase raw price not being initialized (courtesy of nverenik).
  •         Bug        Fix: The bForcePVRTC4 cooker option was previously ignored on iOS.        It now correctly uses PVRTC4 for all textures when enabled.
  •         Bug        Fix: Fixed LAN multiplayer discovery on iOS devices over WiFi
  •         Bug        Fix: Fixed Xcode location detection in the editor. Non-Standard        Xcode installations can now be properly detected and used by the        editor and corresponding tools.
  •         Bug        Fix: Fixed an issue where code signing was failing when the user has        specifically selected only a wildcard provision

Linux

           
  •         Updated        UE4 fork of SDL2 library to the latest trunk.
  •         Added        logic to SDL2 to select a specific EGL device for offscreen        rendering.
  •         Reduced        size of editor binaries by making FPlatformMisc:ebugBreak() not        inlined on Linux.
  •         Eliminated        SCW logspam on Linux.
  •         Updated        Linux's MCPP to include fix for long defines.
  •         Switched        UBT to the new clang 5.0.0-based toolchain.
  •         Added        initial high DPI support on Linux.
  •         Added        files to cross-build glslang on Windows.
  •         New        SDL-based audio mixer backend is now used on Linux by default.
  •         Bug        Fix: Rewrote Linux splash screen to avoid threading hazards that        caused crashes.
  •         Bug        Fix: Fixed Linux editor crashing when capturing a movie.
  •         Bug        Fix: Fixed UnrealLightmass not being included in the installed build        on Linux.
  •         Bug        Fix: Made FAnsiMalloc compatible with malloc()/free() on Linux so it        can be used with ASan.
  •         Bug        Fix: Fixed name collision of GL func pointers between splash screen        and RHI.
  •         Bug        Fix: Fixed save window prompt failing to be modal.
  •         Bug        Fix: Removed unnecessary symbols for MSVC visualizers on Linux/Mac.
  •         Bug        Fix: Fixed copy-paste issues due to buffer being associated with an        intermittent window.
  •         Bug        Fix: Made SDL_SetWindowInputFocus() wait until window is viewable        (pull request #2608 by Ereski).
  •         Bug        Fix: Fixed Engine and Project shortcuts not working in Linux        dialogs.
  •         Bug        Fix: Fixed "Anim to Play" being inaccessible after import.
  •         Bug        Fix: Fixed UBT not doing full rebuild when system (e.g. kernel)        headers have been updated.
  •         Bug        Fix: Fixed performance drop in Blueprint editor on Linux.
  •         Bug        Fix: Rebuilt CEF with fewer dependencies, fixing inability to start        without libgobject installed.
  •         Bug        Fix: Fixed not using bundled GL headers during a native build on        Linux.
  •         Bug        Fix: Removed FCustomStd* workaround from hlslcc (STL compat problems        are gone due to bundled libc++).
  •         Bug        Fix: Fixed confusing messagebox message during headless run.
  •         Bug        Fix: Fixed tesselation in packaged Linux projects.
  •         Bug        Fix: Fixed crashes on AMD Mesa drivers due to name collision in        libelf.
  •         Bug        Fix: Fixed regression in Linux PhysX (sweeps taking too long time).
  •         Bug        Fix: Fix spurious CMake configuration errors by specifying the        compiler in CMakeLists.
  •         Bug        Fix: Fixed crash on some ARM platforms due to memory pools being too        large.
  •         Bug        Fix: Made handling inability to load libGL user-friendlier (message        box instead of hard assertion).
  •         Bug        Fix: Fixed another case where initialization failure was resulted in        assertion failure instead of a clean exit with error message.
  •         Bug        Fix: Fixed memory corruption causing crash on Linux when editing        geometry.
  •         Bug        Fix: Fixed crash handler crashing if editor's console output window        is open.
  •         Bug        Fix: Removed IOS module on Linux, to prevent a crash and make        compilation faster.

Mac

           
  •         Add        -enableasan / -enabletsan command line options to UnrealBuildTool,        and bEnableAddressSanitizer / bEnableThreadSanitizer settings in        BuildConfiguration.xml. Support for enabling these features via        environment variables has been removed.
  •         Made        few small changes to UnrealBuildTool to make it faster when running        on Mono
  •         Added        support for changing monitor's display mode on Mac in fullscreen        mode. This greatly improves performance on Retina screens when        playing in resolutions lower than native.
  •         Updated        minimum macOS requirement to 10.12.6
  •         Bug        Fix: Fixed a crash in MediaCompositing plugin
  •         Bug        Fix: Fixed thread safety issues in AVFMediaPlayer
  •         Bug        Fix: Fixed crash at exit caused by FDDCCleanup trying to use        IFileManager.Get() after the file manager was destroyed
  •         Bug        Fix: Fixed a hang when building lighting using commandlet
  •         Bug        Fix: Fixed header search paths in Xcode project for paths containing        space character
  •         Bug        Fix: Solved a number of issues related to window activation, for        example being unable to rename items using Rename from the        right-click menu and the editor not allowing to override already        bound shortcuts.
  •         Bug        Fix: Fixed missing Window menu contents in Mac UnrealFrontend
  •         Bug        Fix: Fixed a rare crash at exit caused by an attempt to process        Cocoa events after required parts of the engine were already shut        down.
  •         Bug        Fix: Fixed issues with windows not activating on mouse up on Mac in        some cases when clicking on draggable Slate widgets
  •         Bug        Fix: Fixed problems with Mac menu bar not updating in some        situations, for example when opening an asset in new window or        changing active window with Cmd+~
  •         Bug        Fix: Fixed a crash on startup that would occur if Steam was running        in the background.
  •         Bug        Fix: Slate modal windows now behave correctly (menu disabling, etc.)        on Mac
  •         Bug        Fix: Fixed crashes caused by an attempt to process window show and        hide events after window was destroyed.
  •         Bug        Fix: Added code for detecting case-sensitive file system on Mac. We        now inform users that we currently don't support running from        case-sensitive volumes, then quit instead of the app crashing.

Windows

           
  •         Fix        race for intiialization of ThreadID variable on FRunnableThreadWin,        and restore a previous check that was working around it.
  •         Bug        Fix: Fixed case sensitivity issue in        FWindowsPlatformProcess::IsApplicationRunning.

Programming

           
  •         New        IPlatformFile::FindFiles and IPlatformFile::FindFilesRecursively are        much more efficient than other methods for finding files in packaged        games.
  •         Windows        CHM file is no longer included within the installed engine release,        due to size limits of the format. A cross-platform compressed HTML        archive is still available in the Engine/Documentation/Builds        subfolder for offline viewing.
  •         Added:        a new RHI function to invalidate/clear cached state -        RHIInvalidateCachedState(). Currently has implementation only for        OpenGL. This could be used by plugin developers to inform RHI that        current state has been changed outside of RHI.
  •         Added        t.DumpHitches.AllThreads so all threads are dumped when doing 'stat        dumphitches'
  •         Bug        Fix: SavePackageHelper now always honors KeepObjectFlags
  •         Bug        Fix: Make UScriptStruct::ExportText const-correct
  •         Bug        Fix: Fixed compiling errors with clang 5.0-rc1 (only Linux editor        has been tested).
  •         Bug        Fix: Fixed some places that were iterating over sets/maps using        their element indices as if they were the sparse indices
  •         Bug        Fix: ULevelStreamingKismet:oadLevelInstance function is now        exposed to game code

Rendering

           
  •         New:        Remove rendering support code in MetalRHI for Mac OS X El Capitan        (10.11) - MetalRHI now requires macOS Sierra (10.12) to function on        Mac.
  •         Extended        ExternalTexture to support 2x3 transform (scale/rotation + offset)
  •         Make        all Metal shader platforms compiled with Metal version 1.2 or later        compile such that half may be used, unless the material specifies        full precision.
  •         A        sampler can now be shared amongst different textures in Vulkan
  •         Added        support for ddx_fine, ddy_fine, ddx_coarse, ddy_coarse to hlslcc
  •         PR        #3714: Fix typo in EOcclusionCombineMode (Contributed by Mumbles4)
  •         Where        available use Metal's new CaptureManager to provide additional        capture options in Xcode's GPU frame capture tool to capture more        than one frame at a time.
  •         Added        Render Target Pool Stats. Use "stat rendertargetpool" on        the in-game console to view.
  •         Updated        Vulkan headers to SDK 1.0.57.0
  •         Integrating        the MIT-licensed mtlpp C++ Metal wrapper from Nikolay Aleksiev which        will eventually replace previous Metal API wrappers in MetalRHI once        it has been extended to support all the features required.
  •         Support        disabling V-Sync in MetalRHI on macOS 10.13+.
  •         Added        a command-line option "-MetalRuntimeDebugLevel=X" (where X        is a number 0-8, defined in MetalContext.cpp) to specify the amount        of runtime validation of Metal operations that MetalRHI will perform        over and above Xcode's validation layer. For macOS level 5 and above        will attempt to emit GPU instructions such that if a command-buffer        fails the error report will indicate the last successfully completed        debug-group.
  •         HDR        logic refactor - simplify enable/disable logic, particularly on        console. This add a high level r.AllowHDR cvar to enable/disable HDR        on a per-platform or per-title basis. (This is a breaking change,        since it defaults to off.). By default, the user setting now default        to true on Console. Instead, we rely on the OS to determine HDR        capability
  •         D3D12:        Enable GPU validation if -d3d12gpuvalidation is passed on the        commandline
  •         Allow        disabling of display V-Sync in Metal on macOS 10.13+ when running in        true fullscreen mode (not windowed or windowed-fullscreen). This        stops synchronizing frame presentation with the display, so can be        slightly faster but will tear visibly as it does on all other        platforms.
  •         Bug        Fix: Fix RHITransitionResources crash with more than 16 UAVs.
  •         Bug        Fix: Fix deterministic cooking issue in particle systems; always use        a pseudo-random number stream when compiling a module.
  •         Bug        Fix: Fixed incorrect usage of OpenGL queries after deletion.
  •         Bug        Fix: Fixed hlslcc not working properly with newer compilers.
  •         Bug        Fix: Fixed: Texture streaming issues after world origin was rebased
  •         Bug        Fix: Avoid an intermittent crash in AVPlayer on macOS & iOS.
  •         Bug        Fix: Correctly implement ClipDistance for Metal as an array of        floats as required by the Metal shading language and move the        vertex-shader-layer clip-distance to index 2 to avoid any conflicts.
  •         Bug        Fix: Fix render when the GPU Skin Cache is enabled on Mac by        switching the type of the input buffer from float to uint. This        avoids bits being lost due to different handling of denorm floating        point values between Metal drivers.
  •         Bug        Fix: When compiling Metal shaders without access to the native Metal        compiler correctly set the debug-flag in the shader header and        disallow archiving the shader into a Metal library which requires        native bytecode compilation.
  •         Bug        Fix: Fixed a memory leak when using distance fields
  •         Bug        Fix: Fix distance field techniques on Vulkan.
  •         Bug        Fix: D3D12 fix for command list crash: Committed resources can not        have aliasing barriers.
  •         Bug        Fix: Fix for a crash in RenderDoc when running a shipping        application.
  •         Bug        Fix: Fix cascade preview viewport background color not changing
  •         Bug        Fix: Use less peak memory on Vulkan with staging buffers at boot        time.
  •         Bug        Fix: Enable recompute tangents using skin cache on Vulkan.
  •         Bug        Fix: Memory optimization and leak fixes for recompute tangents using        skin cache.
  •         Bug        Fix: Added a manually created Xcode project for glslang so that we        include all the necessary code and can link properly.
  •         Bug        Fix: Fix Vulkan scissor causing text to not clip on editor while        resizing.
  •         Bug        Fix: Fix Vulkan texture streaming
  •         Bug        Fix: Fix decals on Vulkan
  •         Bug        Fix: Temporarily disable GPU morph targets on Mac because they        require implicit Buffer<> format conversion which isn't        available in MetalRHI.
  •         Bug        Fix: Fix editor outline in Vulkan
  •         Bug        Fix: Make TonemapperConfBitmaskPC the proper size so we don't        attempt to access uninitialized memory.
  •         Bug        Fix: PR #3875: Removed Duplicated "RHI" Module Dependency        (Contributed by DavidNSilva)
  •         Bug        Fix: Fix generation of .metallib on local Macs and exclude .metallib        files from the pak - they must always be loaded from disk.
  •         Bug        Fix: Do not store DDC data if a static mesh failed to build.
  •         Bug        Fix: Fixed divide by 0 crash when GPU timing frequency not        available.
  •         Bug        Fix: Fix a LPV race condtion due to parallel RSM draw-call        submission
  •         Bug        Fix: PR #2992: Fixing aspect ratio issue of SceneCapture2D rendering        in "Ortho" camera mode (Contributed by monsieurgustav)
  •         Bug        Fix: Fixed an intermittent assert on startup where the AVFoundation        movie player could initialize a video prior to the rendering thread        being back online after resizing the window to go into full-screen.
  •         Bug        Fix: Fixed cloth rendering on Metal by changing the way FClothVertex        is loaded. Some of the data in FClothVertex needs to be treated as        uint data and loading it as floats was exposing a difference in        behavior between some Metal drivers and Direct3D.
  •         Bug        Fix: Moved RHISupportsMSAA and add the necessary conditions for when        it is available on Metal (AMD & Nvidia for macOS 10.13+, Mobile        Renderer for iOS).
  •         Bug        Fix: Rework handling of various Metal intrinsics and implement a        full fused-multiply-add optimization pass within hlslcc to ensure        greater consistency of results between different Metal shaders        motivated by changes to the behavior of Apple's Metal compiler.
  •         Bug        Fix: Fixed iOS builds picking up the Mac's Metal shader standard        setting which caused the wrong shaders to be compiled.
  •         Bug        Fix: Fixed lighting in VR Forward rendering on Nvidia GPUs under        macOS by changing how we load the ForwardLocalLightBuffer data to        avoid a difference in behavior between some Metal drivers and        Direct3D.
  •         Bug        Fix: Fixed an intermittent crash launching games into fullscreen on        macOS caused by deleting the render targets before they should be        and correcting specification of some render-target load-actions.
  •         Bug        Fix: Fixed Pixel Inspector not working on Mac by implementing the        missing CopySubTextureRegion function in MetalRHI.
  •         Bug        Fix: Improve the handling of features that are restricted to certain        Mac/iOS & Metal versions in Editor UI and the way the Editor        handles the absence of the native Metal shader-compiler.


                     
    •                 Disable                half floats for Metal v1.0 & Metal v1.1 - too many shaders just                don't compile anymore for no apparent reason - this will only get                worse as the compiler stack advances.
    •                 Change                the Editor code to ensure that cooking without access to the native                Metal shader compiler does not pollute the DerivedDataCache for                other users.
    •                 The                global clip plane implies clip_distance support which on A8 devices                requires iOS 10.
    •                 The                Desktop Forward renderer for iOS requires Metal v1.2 and iOS 10.

           
  •         Bug        Fix: Rework the error reporting for remote shader compilation so        that the correct error message is actually reported when the native        Metal compiler is not available.
  •         Bug        Fix: Fix rendering of shaders that use World-Position-Offset on        Metal platforms by extensive use of newer intrinsics.
  •         Bug        Fix: Change an assert in the Metal shader translator that fires        whenever a float literal is NaN or an otherwise unhandled non-finite        value to a compiler warning that can be debugged as NaN/INF literals        will be incorrect on all platforms.
  •         Bug        Fix: Fix a crash when switching between normal and Mobile Preview        rendering modes in the Editor on Mac.
  •         Bug        Fix: Fix the incorrect velocity & motion-blur rendering in the        Desktop Forward renderer on A8 iOS devices (e.g. iPhone 6/6+), the        Desktop Forward renderer is now minimally functional on these older        iOS devices but will be slow as it is much more demanding than the        Mobile Renderer.
  •         Bug        Fix: Fixed project thumbnails on Vulkan
  •         Bug        Fix: Fixed RHILockVertexBuffer on DX12 to work properly with and        without RHI commandlist.
  •         Bug        Fix: Emit only one declaration for system provided shader variables        for Metal as sometimes we end up with multiple specifications for        some volumetric fog shaders.
  •         Bug        Fix: Protect against invalid copysubresource bounds. Protects        against GPU crashes on some drivers.
  •         Bug        Fix: Fix black flickering on some materials that use World Position        Offset - the Metal sincos intrinsic comes into two flavours for        single precision floats and we want the precise version not the fast        version but only for Vertex shaders.
  •         Bug        Fix: Fix a crash on shutdown due to MetalRHI caching        vertex-declarations beyond the lifetime of the RHI by moving the        cache into the FMetalDynamicRHI itself.
  •         Bug        Fix: Fix D3D12 validation error when GBV is enabled, courtesy of        Sebastian Merry at Microsoft
  •         Bug        Fix: Avoid a Metal GPU driver bug by only emitting one clip-distance        on Metal, when the global clip-plane is enabled this takes priority        over all others as it is essential to function correctly, other uses        are merely optimizations.
  •         Bug        Fix: Fixed outline in editor missing on Vulkan
  •         Bug        Fix: Rebuilt IntelISPCTexComp with Visual Studio 2015 to remove        dependency on VS2013 redist.
  •         Bug        Fix: Precomputed visibility on components added through a Blueprint        will now correctly be retained when reloading a level.

FX

           
  •         Bug        Fix: Prevent crashes when UNiagaraComponent::GetEffectDataInterface        is called on a component with no effect asset set
  •         Bug        Fix: Fixed life-time fading on deferred decals.

Lighting

           
  •         Disable        r.GenerateLandscapeGIData by default, opt-in for kite demo. Projects        that want to use heightfield GI need to opt-in to        r.GenerateLandscapeGIData.
  •         Added        'Render Unbuilt Preview Shadows in game' rendering project setting        and r.Shadow.UnbuiltPreviewInGame console variable
  •         Swarm        hands out the most expensive tasks in roughly a round robin ordering        among distribution agents. Lightmass processing of a single task is        multithreaded, so ideally the most expensive tasks are evenly        distributed among active agents. This has the biggest impact in        small scenes with 10's of high resolution lightmaps, and with a        distribution farm. Build time in one scene went from to 113s ->        47s.
  •         Allow        masked dynamic shadows to be cast by translucent materials, based on        a threshold opacity value.
  •         Volume        materials on every component type except particle sprites now        voxelize the mesh's Object space bounding box, allowing more control        over the shape of fog added and better performance when adding        ground density.
  •         Bug        Fix: Enable PCSS on Vulkan & Metal and enable capsule shadows on        Vulkan
  •         Bug        Fix: Only use skylight OcclusionMaxDistance for the global distance        field if it casts shadows
  •         Bug        Fix: Fixed shadow occlusion culling broken by shadowmap caching        change.
  •         Bug        Fix: Fixed spotlight whole scene shadow occlusion queries using a        radius 2x too long
  •         Bug        Fix: Fix for movable skylight shader missing on simple forward (low        lighting quality mode)
  •         Bug        Fix: Fixed ObjectRadius in Volume domain materials
  •         Bug        Fix: Dynamic Indirect Occlusion from mesh distance fields is        disabled when operating on a movable skylight, since Distance Field        Ambient Occlusion fills that role
  •         Bug        Fix: Exposed EmissiveBoost, since Lightmass supports Emissive areas        on meshes
  •         Bug        Fix: VolumetricScatteringIntensity is greyed out based on Mobility

Materials

           
  •         Moved        UTexture material notification code into separate function, so it        can be used by derived classes.
  •         Improved        streaming support for AO textures and lighting scenarios. Improved        resolution metrics in the texture editor. Added a new editor command        "BuildMaterialTextureStreamingData" to refresh material        texture streaming data.
  •         Removed        the 1945MB VRAM cap in DX11 and DX12 when running 64 bit builds. Non        console platforms will now allocate non streaming texture outside        the texture pool if there is enough free VRAM available. This        improves the behavior and maintainability of low texture settings.
  •         Bug        Fix: Fixed some cases where material instances would be treated as        masked instead of opaque as intended.
  •         Bug        Fix: Fixed behavior of custom material attribute display names and        function names.
  •         Bug        Fix: Fixed an issue where some materials would overstream some        textures.
  •         Bug        Fix: Fixed an issue where textures would stay at low resolution        following a memory usage spike.
  •         Bug        Fix: Fixed an issue when building the DDC for composite textures        where the texture sources would be missing.
  •         Bug        Fix: Fixed a case where parameters behind a static switch would be        invisible in a material instance.

MobileRendering

           
  •         Exposed        "Use Full Precision" for UI materials, which can be used        to improve precision at performance cost in UI pixel shaders on        mobile devices.
  •         Added        support for Vulkan validation layers on Android. Only in Debug and        Development configuration (requires r.Vulkan.EnableValidation=1)
  •         Vertex        Fog is disabled on Mobile by default. This saves a number of        instruction in base pass shaders.
  •         Bug        Fix: Correct tracking of static mesh index memory.
  •         Bug        Fix: Fixed: Decals on mobile devices should not disappear when there        is planar reflection in the view
  •         Bug        Fix: Fixed: Protostar in Vulkan mode crashes without error on Tegra        K1 Nvidia Shield due to OOM - fixed r.MobileReduceLoadedMips has no        effect - added r.MobileMaxLoadedMips to set a limit to a number of        mips - reduced size of vulkan allocation pages on android
  •         Bug        Fix: Fixed a problem which could cause the Scene Depth material node        to return 0 on some mobile devices.
  •         Bug        Fix: Fixed: Crash after Splash Screen on Android (ETC2) when Adding        r.UseShaderCaching and r.UseShaderPredraw - Added r.SaveShaderCache        command to save current cache on demand - Removed support for        caching multiple platfroms at the same time, each platform now uses        separate cache/file - Significantly reduced size of draw log on disk        - Mobile platfroms support only basic caching, logging shaders and        bound shader states without full gfx state
  •         Bug        Fix: Fixed: Usage of dynamic shadows leads to application crash on        Galaxy S7 device (SM-G930V) when project packaged with Vulkan        support.
  •         Bug        Fix: Fixed an issue where streaming in or out levels each with their        own stationary directional lights could cause the lighting system to        lose track of which lights are loaded and surfaces be lit        incorrectly
  •         Bug        Fix: Fixed upside down triangle rendering with        UCanvas::K2_DrawMaterialTriangle on OpenGL ES devices.

Optimizations

           
  •         New:        Removed render thread stalls and improved reactivity when streaming        mips for 2D textures.
  •         New        project settings to globally disable/enable creation of depth-only        and reversed index buffers.
  •         Added:        Async loading bytecode from shader library. Along with bytecode        de-duplication shader library will now pre-load requested bytecode        to ensure there are no disk access related hitches in game when        creating shaders.
  •         Cloth        vertex buffers no longer generate dummy vertices, which reduces        runtime memory usage of skeletal meshes with multiple sections of        which only one has cloth.
  •         Fixed        lights calling InvalidateLightingCache on Destroy in game, causing a        hitch
  •         Fixed        UWorld:estroyActor in PIE calling InvalidateLightingCacheDetailed        which can do a FlushRenderingCommands and cause a large hitch
  •         Snap        volumetric fog light function target resolution to a factor of 32 to        avoid constant texture reallocation
  •         Added        SendAllEndOfFrameUpdates draw event to wrap skin cache events
  •         When        compiling shaders for Metal explicitly emit the early-fragment-test        qualifier unless the fragment shader invokes discard() or explicitly        writes a depth-output semantic, this should better match driver        behavior on Direct3D.
  •         Optimise        the constant-propagation pass in hlslcc by using a hash-table to        reduce the cost of looking up the existing constant assignment        instructions.
  •         Vulkan        will not use staging memory for dynamic vertex/index buffers on        devices with unified memory access
  •         Implement        support for the SV_DepthLessEqual semantic in Metal.
  •         Optimizations        to reduce MetalRHI CPU overheads:


                     
    •                 Avoid                reallocating memory by making the TArray of uniform buffers a                static C-array instead.
    •                 Use                count-trailing-zero's intrinsics to eliminate redundant iterations                over the set of bound resources.

           
  •         Small        optimizations to MetalRHI primarily for iOS: - Only buffers less        than a platform-specific threshold are uploaded via Metal's        set*Bytes API to balance CPU overheads (on iOS this is 512 bytes, on        Mac it is 4096 bytes). - Increase the minimum pool sizes for        MTLBuffer's to reflect this. - Avoid redundantly rebinding uniform        buffers in MetalRHI.
  •         Rewrite        of the Vulkan pipeline cache: Multiple files can now be read off        projectdir/Build/ShaderCaches/Platform folders; cache files are now        compressed with rates of up to 70-90% off the original size.
  •         Bug        Fix: Fixes for profilegpu on Vulkan
  •         Bug        Fix: Discard now gets called on BulkData on D3D11, D3D12 and Vulkan.

Postprocessing

           
  •         Improve        performance of bokeh depth of field.

Tools

           
  •         New:        Improved XGE shader compiler. - Added support for XGE interception        interface, which allows asynchronous streaming of shader tasks into        XGE, and eliminates the stalling/flushing found in the old system.        The old system has been renamed "Xml interface". - Both        systems are available and selectable based on        r.XGEShaderCompile.Mode CVar. Overview of the new system: - New        system uses an additional XGEControlWorker process to manage        communication between the engine and XGE. This is simply a copy of        ShaderCompileWorker.exe (the implementation is part of SCW, but XGE        requires the two files to be separate, hence the duplicate). - When        shader jobs arrive from the engine, the shader compiler thread        spawns an instance of XGEControlWorker within an XGE context, and        connects to it via named pipes. - Job command lines are fed to the        control worker via the pipe, which the worker enqueues within XGE by        issuing a CreateProcess call, which is intercepted. Job completion        is reported back to the engine via the named pipes. - New system is        preferred over the old one, and is enabled with "-xgeshadercompile"        command line switch or "r.XGEShaderCompile" cvar. - The        new system depends on the "XGEController" engine module.        Support for which is based on the WITH_XGE_CONTROLLER #define, or        -xgecontroller/-noxgecontroller command line options.
  •         Added        an option in the Texture browser to allow a texture to override the        default compression quality. This has an effect for textures        compressed as PVRTC or ASTC.
  •         Bug        Fix: Fixed a condition where cooking DLC would cook all maps even if        specific maps were specified.

AutomationTool

           
  •         Added        support for pre-build and post-build steps when using MegaXGE.
  •         Added        validation against shipping files in restricted folders. Added        a new SystemNonUFS type for staged files, which excludes files from        being remapped or renamed by the platform layer. Replaced        the DeplyomentContext.StageFiles() function with simpler overloads        for particular use cases (options for remapping are replaced with        the SystemNonUFS file type)Config        entries in the [Staging] category in DefaultGame.ini file allow        remapping one directory to another, so restricted content can be        made public in packaged builds (Example syntax:        +RemapDirectory=(From="Foo/NoRedist", To="Foo")) An        error is output if any restricted folder names other than the output        platform are in the staged output.
  •         The        -submit or -nosubmit arguments are only passed to child instances of        UAT if they were specified on the original command line.        BuildCookRun uses this flag to determine whether to submit, rather        than just whether to allow submitting, so we shouldn't pass an        inferred value.
  •         Added        a -SkipHeader parameter to the UpdateLocalVersion command, to allow        updating version files without updating Version.h and improve link        times on incremental builds.
  •         During        staging, we now create a manifest for each PAK file containing all        the plugin descriptors in one place. Eliminates need to recurse        through directories and read separate multiple files in serial at        startup, and allows reading all plugin descriptors with one read.        The "Mods" directory is excluded from the manifest, since        these are intended to be installed separately by the user.
  •         Removed        the -ForceLocal command line option. Settings are now always        determined automatically if not set via environment variables,        independently of the -BuildMachine argument.
  •         Simplified        logic for detecting Perforce settings, using environment variables        if they are set, otherwise falling back to detecting them. Removes        special cases for build machines, and makes it simpler to set up UAT        commands on builders outside Epic.
  •         Packaging        a plugin will now force include what you use to be enabled. Since        plugins distributed on the marketplace will be moved into the engine        folder, they need to be IWYU compatible.
  •         Bug        Fix: Fixed incorrect username in BuildGraph task. Should use        the username from the Perforce environment, not assume the logged in        user name is the same.
  •         Bug        Fix: Formatting in JSON output from C# tools now matches formatting        used by the engine.
  •         Bug        Fix: When patching temporary files are now put in the correct        directories. Thanks David Yerkess @ Milestone
  •         Bug        Fix: Fixed executable not being recompiled for a content-only        project if a plugin which is enabled by default is disabled.

BuildGraph

           
  •         Added        an example script to package ShooterGame for any platforms.
  •         Improved        tracing for error messages. All errors are now propagated as        exceptions, and are tagged with additional context information about        the task currently being run. For example, throwing new        AutomationException("Unable to write foo.txt") from        SetVersionTask.Execute is now displayed in the log as: ERROR: Unable        to write to foo.txt while executingat        Engine\Build\InstalledEngineBuild.xml(91) (see D:\P4        UE4\Engine\Programs\AutomationTool\Saved\Logs\UAT_Log.txt for full        exception trace)
  •         Added        support for nullable parameter types.

UnrealBuildTool

           
  •         Added        support for adaptive non-unity builds when working from a Git        repository. The ISourceFileWorkingSet interface is now used to query        files belonging to the working set, and has separate implementations        for Perforce (PerforceSourceFileWorkingSet) and Git        (GitSourceFileWorkingSet). The Git implementation is used if a .git        directory is found in the directory containing the Engine folder,        the directory containing the project file, or the parent directory        of the project file, and spawns a "git status" process in        the background to determine which files are untracked or staged.        Several new settings are supported in BuildConfiguration.xml to        allow modifying default behavior: Default git
  •         Simplified        how targets are cleaned. Delete all intermediate folders for a        platform/configuration, and delete any build products matching the        UE4 naming convention for that target, rather than relying on the        current build configuration or list of previous build products. This        will ensure that build products which are no longer being generated        will also be cleaned.
  •         A .version        file is now created for every target built by UBT in the same JSON        format as Engine/Build/Build.version. This allows monolithic targets        to read a version number at runtime, unlike when it's embedded in a        .modules file, and allows creating versioned client executables that        will work with versioned servers when syncing through        UnrealGameSync.
  •         Use        P/Invoke to determine number of physical processors on Windows        rather than using WMI. Starting up WMIC adds 2.5 seconds to build        times, and is not compatible with .NET core.
  •         Added        support for declaring custom pre-build steps and post-build steps        from .target.cs files. Similarly to the custom build steps        configurable from .uproject and .uplugin files, these specify        commands which will be executed by the host platform's shell before        or after a build. The following variables are expanded within the        list of commands before execution: $(EngineDir), $(ProjectDir),        $(TargetName), $(TargetPlatform), $(TargetConfiguration),        $(TargetType), $(ProjectFile). Example usage: public class        UnrealPakTarget : TargetRules { public UnrealPakTarget(TargetInfo        Target) : base(Target) { Type = TargetType.Program; LinkType =        TargetLinkType.Monolithic; LaunchModuleName = "UnrealPak";        if(HostPlatform == UnrealTargetPlatform.Win64) {        PreBuildSteps.Add("echo Before building:");        PreBuildSteps.Add("echo This is $(TargetName)        $(TargetConfiguration) $(TargetPlatform)");        PostBuildSteps.Add("echo After building!");        PostBuildSteps.Add("echo This is $(TargetName)        $(TargetConfiguration) $(TargetPlatform)"); } } }
  •         The        user's preferred source code IDE selected in the editor is now used        to generate project files.
  •         Bug        Fix: UnrealHeaderTool will now be re-run if the .build.cs file for a        module has changed.
  •         Bug        Fix: Fixed incorrect MSBuild version occasionally being used when        invoking UnrealBuildTool.
  •         Bug        Fix: Removed the dependency on the ShaderCompileWorker project when        running with generating project files with the -useprecompiled        argument.
  •         Bug        Fix: Fixed hot reload generating import libraries without DLLs. Now        that they are produced by separate actions by default, it was        removing DLLs from the action graph due to the        bSkipLinkingWhenNothingToCompile setting.
  •         Bug        Fix: Fixed UBT stack size not being propagated through to the        toolchain from the target settings.
  •         Bug        Fix: Files in output directories which match build products in other        output directories are now deleted. Prevents slate binaries from        being loaded when a module is moved.
  •         Bug        Fix: Fixed unchanged modules always being relinked with VS2017 15.3

UnrealGameSync

           
  •         Added        variables for stream and client name, and the ability to escape any        variables for URIs using the syntax $(VariableName:URI).
  •         Allow        adding custom actions to the context menu for right clicking on a        changelist. Actions are specified in the project's UnrealEngine.ini        file, with the following syntax: +ContextMenu=(Label="This is        the menu item", Execute="foo.exe", Arguments="bar")        The standard set of variables for custom tools is expanded in each        parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the        $(Change) variable.
  •         Always        sync the Enterprise folder if the selected .uproject file has the        "Enterprise" flag set.
  •         If        working in a virtual stream, use the name of the first non-virtual        ancestor for writing version files.
  •         Added        additional search paths for UGS config files, and fix a few cosmetic        issues (inability to display ampersands in tools menu, showing        changelist -1 when running a tool without syncing). Config files are        now read from: Engine/Programs/UnrealGameSync/UnrealGameSync.ini        Engine/Programs/UnrealGameSync/NotForLicensees/UnrealGameSync.ini If        a project is        selected: /Build/UnrealGameSync.ini /Build/NotForLicensees/UnrealGameSync.ini        If the .uprojectdirs file is selected:        Engine/Programs/UnrealGameSync/DefaultProject.ini        Engine/Programs/UnrealGameSync/NotForLicensees/DefaultProject.ini
  •         Project        files are no longer generated when syncing precompiled binaries.
  •         The        user's server settings are now read by spawning P4.EXE from the        directory containing the project being opened, so people can        override the P4PORT setting on a per-workspace basis using a        P4CONFIG file.
  •         Added        support for custom post-sync actions. These cannot be configured        per-user, but are set by the project configuration file. Since they        are always executed, they should be fast and reliable. Example        additions to an UnrealGameSync.ini file: [Sync]        +Step=(FileName="cmd.exe", Arguments="/C echo        Change=$(Change), CodeChange=$(CodeChange), BranchDir=$(BranchDir)")
  •         Added        support for predefined categories of files to exclude from being        synced. The "Sync Filter" dialog now shows a list of these        categories as well as the custom view that was previously supported.        Several built-in categories are defined, for various target        platforms, documentation, and so on. Each category is identified by        a GUID, and projects may add or modify existing categories through        the /Build/UnrealGameSync.ini config file. Config file entries        are formatted as follows:        +SyncCategory=(UniqueId="{00000000-0000-0000-0000-000000000000}",        Name="Name of this Category", Enable=true/false,        Clear=true/false, Paths="/Path1/...;/Path2/...") All        fields other than the UniqueId are optional. Specify Enable=false to        prevent the filter from being applied or shown to the user. Specify        Clear=true when modifying an existing category to clear the existing        paths rather than append new paths. Specify the list of patterns to        be filtered out separated by semicolons.
  •         Bug        Fix: Changed to use the default Perforce server port when opening        P4V if there is not one set in the environment.
  •         Bug        Fix: Fix tab names setting not being correctly read back in from        config file.
  •         Bug        Fix: Fixed build configuration not correctly being updated to        reflect changes on other tabs.
  •         Bug        Fix: Fix directory separators not being normalized before filtering        files for sync. If the workspace root directory has non-native        separators (eg. D:/P4), they will be propagated to the file list.
  •         Bug        Fix: Fixed crash when switching streams to a stream that does not        contain the current project file.
  •         Bug        Fix: Reparse points (symlinks) are no longer enumerated when        recursively deleting directories. This could cause the contents of        the linked directory to be deleted rather than the symlink itself,        and can cause crashes if the symlink is to an outer directory.

UnrealVS

           
  •         Bug        Fix: Fixed setting the command line to empty not affecting the        underlying property sheet.
  •         Bug        Fix: Fix single-file compilation for foreign projects, where the        command line contains $(SolutionDir) and $(ProjectName) variables.

UI

           
  •         Disabled        the skeletal mesh's "Use async scene" property if the        current project is not set to use an async scene, as this property        will have no effect otherwise. A warning is shown on the property if        the project does not currently use an async scene. A similar warning        will be shown in the physics asset editor in the near future.
  •         Disabled        viewport post processing when in cloth painting mode on clothing        assets, to make the paint colours more easily distinguishable.
  •         Bug        Fix: Stopped property context menus closing the whole window stack        when an item is clicked
  •         Bug        Fix: Improve PhAT UI to stop showing convex bodies as editable, as        they currently contain no editable properties.
  •         Bug        Fix: Fixed "Use Internal" button for Soundwave curves        being too large.
  •         Bug        Fix: Fixed various dropdown menus in the cloth asset creation popup        not hiding themselves when the input focus is lost.
  •         Bug        Fix: Fix for custom rows having their "is enabled"        attribute stomped.
  •         Bug        Fix: Force low quality mode for background blurs by default on        android
  •         Bug        Fix: Force low quality fallback mode on ES2 devices for slate blur        widgets. This feature does not work on es2
  •         Bug        Fix: Prevent resizing when a context menu is open. This prevents a        number of rare crashes when a window is resized when a child menu is        open.
  •         Bug        Fix: Converted remaining uses of EKeyboardFocusCause to EFocusCause        and properly deprecated it
  •         Bug        Fix: Fix issues with marking a widget Blueprint class as abstract
  •         Bug        Fix: Added a console variable to prevent touch events from sending        multiple bogus mouse events. Disabled by default. Enabling this will        prevent pen tablets from working but may be necessary for touch        events to work in windows 7.

Slate

           
  •         Added        search to editable texts


                     
    •                 This                can be invoked by selecting some text and using Ctrl+(Shift+)F3 to                begin a search, and then using (Shift+)F3 to move through the                matches.
    •                 It                can also be done in code by calling BeginSearch and AdvanceSearch                on an editable text.

           
  •         Added        bApplyWidgetStyleToMenu to SMenuAnchor - if false, the popup is        given a default FWidgetStyle when painted. This allows the menu to        ignore the inherited tint and opacity, so a faded button can still        summon a fully opaque menu.
  •         Bug        Fix: Added a lock around access to slate active timers to protect it        against race conditions when accessed on the slate movie thread and        the game thread
  •         Bug        Fix: Fixed issue where undocked tabs had no way to be made visible        again after being hidden

UMG

           
  •         OrionEditableTextBox        added a max count so it has a upper limit of how many characters        allowed to be entered.
  •         Bug        Fix: UMG: Apply latent actions like in movie scene sequence player.
  •         Bug        Fix: Scroll Widget Into View will now work for widgets not directly        parented to a scroll box.

UMG

           
  •         Reduce        memory footprint of somd UMG/Slate classes including UWidget,        UBorder, UUserWidget, SWidget, and SButton

XR

           
  •         Debug        stereo layer support. This adds an option to render the debug canvas        to a stereo layer which greatly improves console and stat        readability in an hmd.
  •         Updated        OpenVR SDK to 1.0.10.
  •         Bug        Fix: Editor primitives we not being handled correctly with ISR.
  •         Bug        Fix: Adding ISR and multiview support for custom depth. This fixes        z-fighting that can occur between the custom depth pass and pre/base        pass when the custom depth pass doesn't use ISR/multiview.
  •         Bug        Fix: PR #3997: Fix quad buffer stereo crash in Windows (Contributed        by ayamashev)

VR

           
  •         Added        support for non-parallel projections for HMDs that have canted        display panels
  •         Split        interface for handling custom render targets from IStereoRendering        into its own interface and unified common code between different VR        platforms into a single base implementation class.
  •         Adding        core VR controller re-centering delegate notification. Users can now        use this delegate via the VRNotificationsComponent
  •         Adding        in support for the SteamVR Knuckles controllers
  •         Code        applying late updates has been unified across different VR        platforms, reducing code duplication and unifying behavior.
  •         Added        in SteamVR visible area mesh support. Can be toggled with        vr.SteamVR.UseVisibleAreaMesh
  •         Updating        SteamVR libraries to 1.10
  •         Oculus        changes for SI1.16 and SI1.17 Adds Vulkan and D3D12        improvements/fixes for VR, depth target allocation for VR plugins,        Android thread naming and a number of new Oculus features.
  •         Added        Vulcan Extensions for OculusVR
  •         UE-47210        VR Mode in-Editor Viewport Camera is misaligned with HMD camera        -Added calculation of the point on the render target directly in        front of your eyes based on the HMD's projection matrix. -This is        used by cropping spectator screen modes to adjust the cropping used        to favor putting the eye center point in the center of the spectator        screen. Oculus is most noticable as its center point is about .45        out of 1 from the top, rather than 0.5. -I also found that we were        not successfuly detecting the aspect ratio of the spectator screen        in windowed mode. We were using the render target aspect ratio,        which is constant. Now we pass down the window size to get the        correct aspect ratio.
  •         Updated        library revision for GoogleVR
  •         Bug        Fix: Fixed SpectatorScreen Flickering Fixed Spectator screen: need        frame delay before assigning dynamically created rendertarget to        spectator texture Fixed Spectator Screen: crash if you release a        render target which is assigned as the spectator texture -Now I pull        the Texture2DRHI out of the UTexture every frame and pass it to the        render thread via a rendercommand. This has us getting it after it        is created, and using it until the end of the current renderframe.        -Note: scene capture components crash if you release their render        target, so point them away from it first. -Note: this still leaves        the possibility of setting a texture who's resources do not yet        exist, or which have not been rendered to yet as the spectator        screen texture. The spectator screen will, by default display all        black if it doesn't find a resource at all. For debugging one can        switch that to all white or breakpoint it in        GetFallbackRHITexture().
  •         Bug        Fix: Don't snap motion controllers to the origin when tracking is        lost.
  •         Bug        Fix: Vive spectator flat rect expanded to match other platforms.
  •         Bug        Fix: PSVR Social Screen needs to go to 'mirroring' for hmd setup        dialog because system dialogs are not visible in separate mode.
  •         Bug        Fix: Fixed a regression causing splash screens on Oculus to be        forced to a 16:9 aspect ratio regardless of the texture size used.
  •         Bug        Fix: Fixed an issue with backwards compatibility, where the old XR        module names (OculusRift, GearVR, etc.) still work with the command        line and XR prioritization.
  •         Bug        Fix: Fixed a bug that would modify the camera view unwantedly        outside of VR, when the camera's LockToHMD option was enabled.
  •         Bug        Fix: Fixed a crash that could occur when using a        SteamVRChaperoneComponent on a XR platform other than SteamVR.
  •         Bug        Fix: Fixed a bug where the in-game camera view could become        vertically locked after playing in VR preview.
  •         Bug        Fix: Fixed a bug with the Daydream controller model where the laser        was rendering undersized.
  •         Bug        Fix: Fixed a bug with SteamVR on Mac where controller haptics would        not fire.
  •         Bug        Fix: Fix for Daydream 2D transition on Android Fix for Cardboard on        Samsung S8 devices when not set to native resolution
  •         Bug        Fix: Fixed a bug on Oculus, where the tracking space's origin was        being ignored/reset on initialization.

UPGRADENOTESAINavigation

           
  •         Bug        Fix: Fixed: bNavigationAutoUpdateEnabled was not always working when        re-opening map in the Editor Fixed: Navigation Build was not always        clearing nav-mesh tiles when bNavigationAutoUpdateEnabled is enabled        Fixed: Streaming out a sub-level in the Editor was not always        updating nav-mesh debug drawing

AnimationAnimationBlueprint

           
  •         USkeletalMeshComponet.bDisableAnimCurves        is deprecated and converted to        USkeletalMeshComponet.bAllowAnimCurveEvaluation. Note the meaning is        reversed.

Automation

           
  •         Moved        functional testing automation commands to an exported helper.

Blueprints

           
  •         Blueprint        references to "Random Unit Vector in Cone" or "Random        Unit Vector in Cone With Yaw and Pitch" will automatically be        redirected, but function calls in code will not. See the Programmer        Notes for technical instructions.
  •         If        your project's .uproject file contains an        "AdditionalPluginDirectories" section with an entry listed        as "Intermediate/Plugins", please remove that entry. If it        is the only entry, it is safe to remove the entire section.


                     
    •                 In                4.17 we automatically added this entry to the .uproject file (only                if it was writable) when you changed the                "BlueprintNativizationMethod" option to something besides                "Disabled" in Project settings->ackaging in the                Editor UI. In 4.18 we've since removed this feature, as we found                that it was causing issues with switching between nativized and                non-nativized build workflows. Note that if it's not removed, those                issues may persist.

Mostpaths in the UE4 editor UI that cook and/or build the game now lookto the "BlueprintNativizationMethod" option in Projectsettings->ackaging in the Editor UI in order to determine ifBlueprint nativization should be enabled.
* This means that if you've set that option to something other than "Disabled" for your project, any time you (or someone else working on the same project who you share the config files with) does something that cooks and/or builds the game, it will now do so with Blueprint nativization enabled.* This only applies to workflows that use "Cook by the book" mode. Blueprint nativization is not enabled with "Cook on the fly" mode, regardless of the "BlueprintNativizationMethod" setting.* One exception is the "Launch on <Device>" command. This command performs a "Cook by the Book" within the Editor process itself, and Blueprint nativization also cannot be enabled for cooking in that mode either.* Other situations that will currently always disable Blueprint nativization include when Cook on the Fly mode is used for launching a profile in the Project Launcher, and when a Blueprint-only project is launched through the Project Launcher using a binary (i.e. not built locally) version of the editor.* In the Project Launcher, you can create a custom Launch profile to override the current setting by adding the following into the "Additional Cook Options" field for the "Cook by the Book" settings: "-ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=<Disabled|Inclusive|Exclusive>", replacing the "<Disabled|Inclusive|Exclusive>" substring with one of those 3 available options.

           
  •         Bug        Fix: Fix create object nodes failing to remove orphaned pins when        connections to the orphaned pin are removed.

Core

           
  •         FTimespan:        The %D string formatter (previously total number of days) is now the        zero-padded days component of the time span. Time spans are now        always exported and stringified with a leading plus or minus sign.
  •         Modifying        a TMap, TSet or TSparseArray while you are iterating over it with a        ranged-for loop will now cause an assertion, matching the same        behavior as TArray. If you need this functionality, you should        change your loop to a traditional iterator loop:


           
  •         Multiple        MAX values will no longer be generated for UENUMs. Assets (including        Blueprints) which refer to redundant MAX values will throw a warning        about the missing value. These assets should be reexported to be        saved with the new MAX value.
  •         Any        custom C# projects (UAT plugins for example) should add a reference        to the DotNETCommon assembly
  •         MoveTemp        will no longer compile if passed an rvalue or a const lvalue. The        code should either be fixed to not use const if possible, or the        MoveTemp should be removed as it is redundant. Templates and macros        can use MoveTempIfPossible when it's hard to tell if the argument is        const - this follows the old behavior of MoveTemp.
  •         Bug        Fix: Any references to        FCoreUObjectDelegates:reGarbageCollect/PostGarbageCollect        delegates should be replaced with calls to        FCoreUObjectDelegates::GetPreGarbageCollectDelegate() and        FCoreUObjectDelegates::GetPostGarbageCollectDelegate() respectively
  •         Bug        Fix: Fixed console output not working when using -log in a shipping        build

GameplayFramework

           
  •         New:        As part of the changes for cross-level actor references newly        created Sequencer actor references are now SoftObjectPtrs, but older        Sequences will have to be fixed up with "Rebind Possessable        References" and resaved first.
  •         Scale        can now be specified on play particle effect anim notify and spawn        emitter Blueprint nodes.
  •         Remove        advanced option CreateTemporaryCopiesOfLevels from the sequencer        capture object, it has not worked properly in several versions.
  •         Bug        Fix: UWorld functions PerformGarbageCollectionAndCleanupActors,        DelayGarbageCollection, SetTimeUntilNextGarbageCollection,        GetTimeBetweenGarbageCollectionPasses, and ForceGarbageCollection        have been deprecated. The equivalent functions on GEngine should be        used instead.

MediaFramework

           
  •         BREAKING: MediaSoundWave assets        were replaced with MediaSoundComponents


                     
    •                 There                is no automatic conversion (components require different workflow &                user decisions)
    •                 Attach                new MediaSoundComponents to                Actors or UMG widgets
    •                 Existing MediaSoundWave assets                must be deleted from Content directory on disk

           
  •         BREAKING: MediaPlayer output        settings were removed. Media assets now reference        a MediaPlayer instead
  •         NEW: MediaTexture and MediaSoundComponent have        a setting for the Media Player to pull data from
  •         NEW: MediaAssets module        is now always loaded to prevent server-side BP problems
  •         NEW:        Material texture samplers now require the new Sampler Type        "External"
  •         NOTE: MediaOverlay assets        were removed as a concept


                     
    •                 We                are currently reworking caption and subtitle support in UE4

Online

           
  •         Any        classes inheriting or making use of IOnlineTitleFile should be        adjusted to take account of the new error string.

Physics

           
  •         All        UPrimitiveComponent and FBodyInstance deprecated functions will        still work as they did before, but it's recommended that code using        these functions is upgraded to call the newer ones. This should be        as simple as following the instructions in the respective        deprecation compiler warnings. Particular care should be taken when        upgrading calls to FBodyInstance to ensure that the inputs are        converted to the correct units expected by the new functions.

PlatformsiOS

           
  •         Older        project will need to open the editor and resave their IOS project        settings .

Rendering

           
  •         Projects        requiring HDR support now need to set r.AllowHDR to 1 in their        DefaultEngine.ini (or per-platform equivalents). Projects using HDR        on consoles who want the feature to be off by default should modify        DefaultGameUserSettings.ini to disable it.

Materials

           
  •         Bug        Fix: Fixed behavior of custom material attribute display names and        function names - The intention was to allow a display name and a        separate name for use in the HLSL but one was being lost. Projects        relying on the old behavior may need to update local shader        modifications.

MobileRendering

           
  •         If        your maps use Vertex Fog, Mobile preview and device will show on        screen message: PROJECT HAS VERTEX FOG ON MOBILE DISABLED. Please        open project settings and enable support for Vertex Fog in Mobile        section.
  •         Bug        Fix: Vulkan will pre-allocate less memory on mobile devices
  •         Bug        Fix: Fixed: Shader cashing on Android. To enable shader caching use        r.UseShaderCaching=1. Use r.SaveShaderCache command on device to        save current cache to file, which then you can include into your        game package.

Optimizations

           
  •         Vulkan        pipeline caches will need to be regenerated via the        r.Vulkan.SavePipelineCache console command. Previous cache files are        no longer compatible.

PROGRAMMINGUPGRADE NOTESAI

           
  •         Bug        Fix: Fixed a bug in GameplayTasks processing that could result in        bloating of the UGameplayTasksComponent::KnownTasks array.

AnimationGeneral

           
  •         Bug        Fix: FindUID no longer returns a pointer, any code calling it will        need to be changed

Audio

           
  •         New:        To implement the source bus feature, we needed to split out volume        attenuation vs distance attenuation. The bus audio needs to be mixed        pre-distance-attenuation to avoid getting double-attenuated as the        audio is output from the buses. This added some complexity with        volume setting/getting in higher level code so if you were        retrieving volume of playing sounds for a custom C++ feature, you        may want to look at new volume getters and setters. To help with        this, we made all volume setting and getting private to wave        instances (FWaveInstance).

Blueprints

           
  •         Functions        that returned random unit vectors from within cones (whether this        required a stream or not) have now been refactored into degree- and        radian-based counterparts. The suffix "With yaw and pitch"        has also been replaced with "Elliptical" for brevity.

Wherea single half-angleused to be required to specify the cone, thenew radian-based functionshould be substituted; however, where both yawand pitch were provided, the newdegree-based functionshould be used instead. For example:
* Calls to *RandomUnitVectorInConeFromStream()* should be replaced with **RandomUnitVectorInConeInRadiansFromStream()**.* Calls to *RandomUnitVectorInConeWithYawAndPitch()* should be replaced with **RandomUnitVectorInEllipticalConeInDegrees()**.
Fromthis point onward, the inconsistency in units between the ellipticaland non-elliptical functions should be mitigated, as the degree orradian variants can now be used as appropriate.

           
  •         If        you have a custom build pipeline that relies on UAT BuildCookRun        automation for cooking and/or building, note that in 4.18 it is no        longer necessary to specify the -nativizeAssets flag to enable        Blueprint nativization.


                     
    •                 Instead,                UAT now looks at the value of the "BlueprintNativizationMethod"                setting in DefaultGame.ini. This can be set by the user in the                Editor UI in the Project Settings->ackaging section. If that                value does not exist in DefaultGame.ini, then the value is assumed                to be "Disabled" (off).
    •                 You                can override the setting by including the following on the UAT                command line:                "-ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=",                replacing the "" substring with one of those 3 available                options.
    •                 Similarly,                if your build pipeline calls UE4Editor.exe directly (for cooking)                and/or UnrealBuildTool.exe directly (for building), the same holds                true for those tools as well. You can also override the setting by                including the same argument as noted above on each of their command                lines, respectively. In that case, you'll need to ensure that both                tools are specifying the same nativization method in their command                lines.

Editor

           
  •         New:        To disable array reordering, use the metadata flag EditFixedOrder on        the TArray.
  •         Developers        can now register a delegate with SlateApplication to tell when a        window's DPI changes
  •         The        new port is set by default to 17777, which may conflict with        projects that have hardcoded their ports when playing in editor.

Sequencer

           
  •         New:        UTexture::GetMaterialType is now const

GameplayFramework

           
  •         New:        As part of the cross-level actor references change, several types        and headers were renamed:


                     
    •                 FStringAssetReference                is now FSoftObjectPath
    •                 FStringClassReference                is now FSoftClassPath
    •                 TAssetPtr                is now TSoftObjectPtr
    •                 TAssetSubclassOf                is now TSoftClassPtr
    •                 StringAssetReference.h/StringClassReference.h                is now SoftObjectPath.h
    •                 AssetPtr.h                is now SoftObjectPtr.h

Includingthe old headers will give compiler warnings. The old type names arenot officially deprecated because many games will have a large numberof them, but they should be fixed up as well.

           
  •         ComponentToWorld        can no longer be directly accessed; use GetComponentTransform()        instead.

Networking

           
  •         Messaging:        If you use the common helper classes, replace "Messaging"        with "MessagingCommon" in your Build.cs files and remove        the "Helpers/" subdirectory from your include statements        (unless you actually include header files from "Messaging",        in which case you need to keep "Messaging" and add        "MessagingCommon").

Online

           
  •         IOnlineIdentity::GetPlatformUserIdFromUniqueNetId        is now const

Android

           
  •         This        can be enabled via 'Android.EnableSustainedPerformanceMode' Cvar.

iOS

           
  •         ObjC        exceptions default to off, if they are required then set        bForceEnableObjCExceptions = true in your ModuleRules.
  •         To        enable add the following line to your IOSRuntimeSettings config:        bDisableForceInline=true

RenderingOptimizations

           
  •         New:


                     
    •                 UTexture2D::RequestedMips was                removed and should be replaced by GetNumRequestedMips()
    •                 UTexture2D::ResidentMips was                removed and should be replaced by GetNumResidentMips()
    •                 UTexture2D:endingMipChangeRequestStatus was                removed and streaming status should be handled                through HasPendingUpdate()                and IsReadyForStreaming()

XRVR

           
  •         If        you maintain a custom VR plugin that needs to allocate its own        render targets, you now need to move the methods out of your        IStereoRendering implementation into a IStereoRenderTargetManager        implementation. You can reduce the amount of duplicate code by        extending FXRRenderTargetManager instead of implementing the        interface directly.
  •         Bug        Fix: A receipt based system was added to request an override of the        social screen mode to mirroring so that system dialogs are visible        on the social screen, or potentially for other reasons.        HMDSetupDialog is the only current use of this system.

DEPRECATIONSCore

           
  •         Removed        unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)
  •         Removed        FPackageFileSummary's CompressedChunks array as it was no longer        being used by anything.

Physics

           
  •         APEX        Destuction has been moved to a plugin and is now disabled by        default. To enable the plugin, use the Plugin Manager (Edit >        Plugins > Physics).

Rendering

           
  •         Deprecating        support for the Editor running in Shader Model 4


                     
    •                 This                release we will be deprecating support for running the Editor while                using Shader Model 4. This mainly affects users with only DirectX                10 capable graphics cards. Starting on the next release we will                require a Shader Model 5 (DirectX 11/OpenGL4/Vulkan) capable card.

           
  •         Deprecating        support for the games running in Shader Model 4 for Open GL


                     
    •                 This                release we will be deprecating support for running the game while                using Shader Model 4 on OpenGL for both Windows and Linux. Starting                on the next release we will require a Shader Model 5 (OpenGL4)                capable card.

MobileRendering

           
  •         The        Android OpenGL ES deferred renderer has been removed.

Tools

           
  •         CrashReporter        has been removed from the public UnrealEngine distribution until it        can be adapted to a more scalable solution that is usable by        subscribers and licensees.

UnrealBuildTool

           
  •         Deprecated        the BuildConfiguration and UEBuildConfiguration aliases from the        ModuleRules class. These have been implemented as an alias ot the        ReadOnlyTargetRules instance passed to the constructor for several        engine versions.



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|未来CG龙

GMT+8, 2017-12-15 04:43 , Processed in 0.260922 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表