Language:
The translation of this page is out of date. Please see the English version for the latest version of the page.

アンリアル エンジン 4.20 リリース ノート

アンリアル エンジン 4.20 リリース ノート

image alt text

新機能

アンリアル エンジン 4.20 はデベロッパーの成功に必要なスケーラブルなツールを提供します。未来を見据えたモバイルゲームを制作し、ナイアガラで可能となるエフェクトの世界を探索し、魅力的で本物と思ってしまうようなデジタルヒューマンに息を吹き込み、すべてのプラットフォームでのワークフロー最適化を活用しましょう。

これまでにないリアルさを実現した 命を持ったように見えるデジタルキャラクタや、説得力のある世界 を実現できます。アンリアル エンジンの新しいナイアガラ パーティクル エディタで次世代のビジュアルエフェクトを作成し、プロジェクトのすべての部分に目を見張るようなディテールを追加できます。『Meet Mike』や『Siren』といったデモで使用されたデジタルヒューマン技術を使って、リアリズムの標準を引き上げましょう。新しいシネマティック被写界深度では、映画レベルのカメラエフェクトをリアルタイムで実現できます。

アンリアル エンジンは、制作プロセスを好きなスタイルやワークフローに合わせてカスタマイズできるツールを提供するため、 あなた自身の方法 での制作に力を与えます。新しいエディタスクリプト機能と自動化ライブラリを使うことで、完全にカスタム化したツールとワークフローを作り上げることができます。アクタやアセットに適用できる新しいアクションを追加して、デザイナーやアーティストの仕事を楽にしてあげましょう。アクタやコンテントブラウザのコンテキストメニューにスクリプト機能が拡張されました。

モバイルとコンソールのサポートは実戦でテストされています。つまり、 一度作成したものはどのデバイスでもプレイ可能 で、ユーザが望むどの場所でもプレイ体験を実現できます。エピック ゲームズはフォートナイトのモバイル版リリースのために力を集結し、モバイルゲーム開発に向けたアンリアル エンジンの最適化を行いました。ハードウェアのタスクを制限するために、オクルージョン クエリをハードウェアとソフトウェア両方で実装することなど、無数のパフォーマンス改善策を実装しました。プロキシ LOD はプロダクションで使用可能な状態になりました。レンダリングされる必要があるジオメトリの複雑性をさらに下げることを可能にする方法です。

これらのエピック ゲームズによるアップデートに加えて、このリリースには GitHub のアンリアル エンジンのデベロッパーのコミュニティから寄せられた165の改善点 も含まれています!アンリアル エンジン 4.20 に貢献をいただいた以下の皆様に謝意を表します (以下、敬称略)。

Adam Moss (adamnv), Akihiro Kayama (kayama-shift), Alan Edwardes (alanedwardes), Alan Liu (PicaroonX), Andrew (XenonicDev), Andrew Haselgrove (Dimpl), Anton Rassadin (Antonrr), arkiruthis, Begounet, Brandon Wilson (Brandon-Wilson), c4tnt, Changmin (cmheo), Christian Loock (Brainshack), Clinton Freeman (freemancw), Daniel Assuncao (dani9bma), David Payne (dwrpayne), Deep Silver Dambuster Studios (DSDambuster), Derek van Vliet (derekvanvliet), Eduard Gelbling (NachtMahr87), frankie-dipietro-epic, Gautier Boëda (Goutye), George Erfesoglou (nonlin), Giovanny Gutiérrez (bakjos), Gregor Gullwi (ggsharkmob), Hannah Gamiel (hgamiel), Hyuk Kim (Hybrid0), Ibraheem Alhashim (ialhashim), Ilya (ill), Jacob Nelson (JacobNelsonGames), Jaden Evanger (cyberblaststudios), Jared Taylor (Vaei), Jesse Yeh (jesseyeh), Jia Li (shrimpy56), Jørgen P. Tjernø (jorgenpt), June Rhodes (hach-que), Junichi Kimura (junkimu), Kalle Hämäläinen (kallehamalainen), kinolaev, Kory Postma (korypostma), krill-o-tron, Kryofenix, Lallapallooza, Layla (aylaylay), Lee Berger (IntegralLee), Leon Rosengarten (lion03), Lirrec, malavon, Marat Radchenko (slonopotamus), Marat Yakupov (moadib), Mathias L. Baumann (Marenz), Matt Hoffman (LordNed), Matthew Davey (reapazor), Maxime Turmel (maxtunel), Michael Allar (Allar), Michael Kösel (TheCodez), Michael Puskas (Mmpuskas), Mikayla Hutchinson (mhutch), mimattr, Mitsuhiro Koga (shiena), Muhammad A.Moniem (mamoniem), nakapon, Nicolas Lebedenco (nlebedenco), Paul Eremeeff (PaulEremeeff), Phillip Baxter (PhilBax), projectgheist, Rama (EverNewJoy), redfeatherplusplus, Rei-halycon, Robert Khalikov (nbjk667), Roman Chehowski (RChehowski), S-Marais, Sam Bonifacio (Acren), Satheesh (ryanjon2040), Scott Freeman (gsfreema), SculptrVR, Sebastian Aaltonen, Sébastien Rombauts (SRombauts), Seokmin Hong (SeokminHong), Sertaç Ogan (SertacOgan), stephenwhittle, Temaran, Thomas Miller (tmiv), Trond Abusdal (trond), TWIDan, Tyler (tstaples), Usagi Ito (usagi), yama2akira, Yang Xiangyun (pdlogingithub), yehaike, Zachary Burke (error454)

主要機能

新規:モバイルプラットフォームでのリリースに向けた最適化と改善

アンリアル エンジン 4.20 には iOS 版と Android 版のフォートナイトのために開発された100上以上のモバイル向け最適化 が含まれています。ゲームリリースをより簡単に、そして複数プラットフォームでのゲームプレイをシームレスに調整する上で、デベロッパーにとって大きな改善が行われています。主要な改善点には、 Android デバッグの改善、モバイルランドスケープの改善、モバイルでのオクルージョンクエリがあります。

image alt text

モバイルでのハードウェア、ソフトウェアのオクルージョンクエリ

ハイエンドのモバイルデバイスでハードウェア オクルージョンクエリがサポートされました。 iOS、もしくはES 3.1かGPUを使用したVulkanを使用する Android でサポートされます。サポートするデバイスではデフォルトで有効になります。

ソフトウェア オクルージョンクエリはCPUを使用してシーンのプリミティブ コンポーネントのカリングを行う実験的機能です。慎重なアプローチをしているので、どのモバイルデバイスでも使用可能です。

image alt text image alt text

左 - r.Mobile.AllowSoftwareOcclusion 1, r.SO.VisualizeBuffer 1; 右 - オクルージョンされた部分を示したフローズンレンダー

ソフトウェア オクルージョンクエリを有効にするためには以下のステップに従います。

1.r.Mobile.AllowSoftwareOcclusion 1 有効化。

2.r.AllowOcclusionQueries 0 無効化。

3.プリミティブをオクルーダとして有効にするには、スタティック メッシュ エディタで [LOD for Occluder Mesh] の設定値を有効にします。

Mobile Previewer でHigh-End Mobile を使用し r.SO.VisualizeBuffer 1 を有効にすることで結果のビジュアライズを行えます。

プラットフォームマテリアル統計

マテリアル エディタ内の新しい [Platform Stats(プラットフォーム統計)] ウィンドウを使用して、マテリアルを簡単にプロファイルして最適化しましょう!複数のシェーダープラットフォームと品質レベルに対する統計を確認できるようになりました。モバイルプラットフォームでは、オフラインシェーダーコンパイラを使って、より正確なインストラクションとテクスチャ使用状況の情報を取得しています。

image alt text

Android デバッグの改善

UE4 プロジェクトの再パッケージ化なしにAndroidでのイテレーションとデバッグを実行できます! Android 向けにコンパイルする際に、Android Studio で開くことが可能な Gradle プロジェクトファイルを生成できるようになりました。C++ と Java コードにブレークポイントを追加して、Android Studioからデバッグセッションを開始できます。C++ ソースコードへの変更を加えて再コンパイルすることも可能です。新しいデバッグセッションを開始すると、Android Studioは変更を検知して、新しい共有ライブラリをデバイスに素早くアップロードします。

モバイルランドスケープの改善

モバイルでのテレインをもっとおもしろいものにしましょう。 モバイルデバイスでもランドスケープのマテリアルレイヤーの数が無制限になりました! 3 レイヤーが最適であることには変わりはありませんが、十分なテクスチャ サンプラーが利用可能であれば任意数のランドスケープ レイヤーを使用できます。

ランドスケープマテリアルでマテリアルノードの Feature Level Switch を使って すべてのプラットフォーム向けの単一のランドスケープマテリアルを作成 できるようになりました。

image alt text

1- モバイルランドスケープ; 2 - PC ランドスケープ

その他のモバイルの改善

モバイル版のフォートナイトをリリースするために行った以下の改善点が、すべてのデベロッパーが使用できるようにアンリアル エンジン 4.20 に追加されました。

  • プラットフォーム別の最小スタティックメッシュ LOD 設定

  • プラットフォーム別の最小スケルタルメッシュ LOD 設定

  • ハードウェアオクルージョンの改善

  • HLOD ツールとワークフローの改善

  • オーディオ品質ノード

  • オーディオバリエーションカリング

  • プラットフォーム別のオーディオ ダウンサンプリング

  • プラットフォーム別のオーディオ圧縮品質

  • PCにより一致させるシェーディングモデルの調整

  • リフレクションキャプチャの輝度の修正

  • 4レイヤーのランドスケープサポート

  • ランドスケープテッセレーションの改善

  • 未使用の LOD によるメモリコストをゼロになるように改善。以下を含みます。

    • スタティックメッシュ

    • スケルタルメッシュ

    • マテリアル品質レベル

    • グラスとフォリッジ

    • 高詳細コンポーネントとメッシュ

    • カスケードでの高詳細エミッター

  • デバイスメモリに基づいた設定

  • マテリアルメモリの削減

  • アセット一括変更のためのエディタスクリプト機能

  • パーティクルコンポーネントのプーリング

  • マテリアル パラメータ コレクションの更新コスト

新規:Nintendo Switchでのリリースに向けた最適化と改善

Nintendo Switch向けフォートナイトの開発で行った 無数のパフォーマンスとメモリに関する改善 をすべてのアンリアル エンジン デベロッパーにリリースしました。Nintendo Switch向けの開発を大幅に改善しました!

image alt text

以下の改善点が含まれます。

  • 動的解像度と Temporal アップサンプリングのサポート

  • コントローラ入力のフレーム同期でのレイテンシー低減

  • 大幅なCPUレンダリング最適化

  • マルチスレッドの改善

  • テクスチャ圧縮の改善

  • メモリプロファイリングのサポート

  • TVモードでの 1080P バックバッファサポート

  • その他多数の修正が含まれます!

新規:プロキシ LOD の改善

新しい プロキシ LOD ツール実験的段階 から卒業して 実制作で使用可能 な段階になりました!このツールはポリゴン数、ドローコール数、マテリアル複雑度によるレンダリングコストを削減することを可能にします。 モバイルとコンソール開発で大きな利点 があります。このツールはサードパーティーパッケージのSimplygonに対する代替ソリューションを提供し、アンリアル エンジンの Level of Detail (LOD) と連携して使用することが可能です。

プロキシ LOD ツールは、ソースとなる複雑なジオメトリモデル群に対して、パラメータで制御された単一のローポリゴンメッシュと大体の見た目を再現したテクスチャから構成されるプロキシを生成することで、単純化したモデルを生成します。 モデルの品質を下げることが許される場合に、このプロキシがランタイムで表示されることになります。例えば、ジオメトリが画面においては小さいピクセルサイズのみを占める場合などです。

注意: プロキシLODツールは、現在 Windows 版のアンリアル エディタでのみ使用可能です。

image alt text

上の画像は Gap-FillingHard-Edge Splitting の両方の設定を使用し、 プロキシ LOD tool が構築した Fortnite Battle Royale での建物と駐車場のプロキシモデルです

4.19 に含まれていた実験段階の プロキシ LODツールに比べて、今回実制作に対応したバージョンには複数の機能強化が追加されています。特に、プロキシジオメトリの法線をコントロールする機能の強化と、自動的にドアや窓といった隙間を埋めてさらに単純なプロキシモデルを生成する機能が含まれています。

法線コントロールの改善ハードエッジ法線の分割

フォートナイトでの極端なメモリ使用の制限によって、LODを非常に効率よくする必要が出てきました。大部分のプロキシでは、生成されるベースカラーのテクスチャは非常に小さく、法線マップは使用されません。このアプローチでは、プロキシメッシュ自身ができる限り品質の高い法線を持つ必要があります。

image alt text

1 - ハードエッジ角度 = 80; 2 - ハードエッジ角度 =0

上のgif画像は、頂点法線に対するハードエッジ分割の効果を示しています。画像 2 はスムーズ頂点法線です。4.19 の実験的段階のプラグインで計算されたもので、家の下側近くの暗い領域で、欠点があることがわかります。これを画像 1 と比べてみましょう。ハードエッジ頂点法線の分割を、ユーザーが指定したハードエッジ カットオフ角度で行ったものです。

ハードエッジ カットオフ角度の追加に加え、ユーザーは頂点法線の計算で使われる方法を指定できるようになりました。 Angle WeightedArea WeightedEqual Weighted から選択できます。

Gapフィル

隙間のない完全に閉じたジオメトリの場合、プロキシシステムは自動的に内側のアクセスできない構造(例えば、閉じた家の中の壁や家具など)を破棄します。理想的には、ソースとなるジオメトリはこのことを考慮して制作するか調整されるべきですが、ゲーム制作での制限の中では常に実現可能なことではありません。*ほぼ隙間がない*ソースジオメトリから効率のいいプロキシ LODを生成するために、プロキシ LODツールでは強度を設定して拡張(dilation)や浸食(erosion)といった手法で隙間を閉じるオプションが利用できます。主に想定されている使用ケースは、離れた場所にある建物でのドアや窓です。

image alt text

1 - 元のメッシュ; 2 - 隙間のフィル無し; 3 - 隙間のフィル

上の gif 画像は隙間のフィルの効果を示したものです。すべての画像は固定した小さなテクスチャ空間のみを使用するよう制限しています。画像 2 は隙間のフィルを使用しないプロキシ LODの結果です。この場合、 LOD 建物の内部を含んでいます。(見えていない部分でポリゴンとテクスチャのコストがかかっています)画像 3 は同じ建物で隙間のフィルを使用して自動的に建物のドアと窓を閉じたものになります。全体の三角ポリゴン数が減り、限られたテクスチャリソースをより有効に活用しています。

新規:シネマティック被写界深度

新しい シネマティック被写界深度 (Cinematic DoF) を使用することで、 映画クオリティのシーンをリアルタイム環境でレンダリングしたい というビジョンを実現することができます。この新しい手法は、すでに存在する Circle DoF より品質が高い手法としてデザインされました。一方で、Bokeh といった他のほとんどの DoF 手法より高速です。シネマティック被写界深度を使うと、被写界深度のエフェクトはよりクリーンになり、プロシージャルな Bokeh シミュレーションで映画的な見た目を実現できます。この新しい DoF 実装はさらにアルファチャンネルをサポートし、動的解像度でも安定し、コンソール向けプロジェクト用にスケールダウンするための設定も含んでいます。

image alt text

image alt text image alt text

1 - シネマティック被写界深度を有効; 2 - 被写界深度を無効

シネマティック被写界深度はデフォルトで有効になります。これまでの カメラポストエフェクト設定Circle DoF を選択していた場合の選択もシネマティック被写界深度に置き換えられます。

  • シネマティック被写界深度は現在、以下のプラットフォームをサポートしています。

    • D3D11 SM5、D3D12 SM5、Vulkan SM5、PlayStation 4、Xbox One と Mac です。

  • プロシージャル Bokeh シミュレーションでは現在、以下の機能をサポートしています。

    • 絞りの羽根枚数の設定。

    • レンズの最大開口部(最小 F-stop)に合わせて直接羽根の曲率を設定。

    • 設定可能なコントロールはポストプロセスボリューム、カメラアクタ、Cine Camera アクタの Camera(カメラ) 設定に用意されています。

  • 一連の r.DOF.* コンソール変数で、ハードウェアリソースが限られたプロジェクトでのスケーラブル設定のカスタマイズが可能です。

詳細についてはDOF (Depth of field:被写界深度) ドキュメントを参照してください

新規:ナイアガラ ビジュアルエフェクト エディタ(アーリーアクセス)

ナイアガラ ビジュアルエフェクト(VFX)エディタアーリーアクセス プラグインとして利用可能になりました!将来的にアンリアル カスケードを置き換えることになるまったく新しいビジュアルエフェクトツールのアーリーアクセス版をお試しください。ナイアガラのビジョンに関する詳細についてはGDC での講演 を参照してください。

注意: アーリーアクセス機能は、カスタマーの皆様とシェアしたいと考える程度には開発が進んでいるものの、UE4の標準機能とする前にできる限りのフィードバックを受けたりたい、という位置づけです。一方で、アーリーアクセスなのでナイアガラは実際の制作で使用できる段階では ありません 。これから実制作で使用できるように、パフォーマンス最適化やバグ修正をさらに行っていく必要があります。こうした制限はありますが、エフェクト開発者がナイアガラについての学習をはじめて、ナイアガラを最高のVFXエディタにするために協力してくださることを願っています。

ナイアガラの概要についてはGDC 2018のプレゼンテーション Programmable VFX with Unreal Engine’s Niagara をご覧ください。また、 ナイアガラ のドキュメンテーションも参照してください。

エフェクトデザインと作成の改善

image alt text

  • 左 - Dynamic input モジュールを使用したパーティクル システム 右- Dynamic input モジュール*

  • スケルタルメッシュ はエフェクトを発生させる自身の表面を指定できるようになりました。マテリアル名、もしくは、指定したボーンの影響範囲で指定できます。

  • モジュールでの初期値指定方法が改善され、関数を呼ぶことから、動的入力のデフォルトを使用することまで、さまざまな挙動を使用できるようになりました。

  • メッシュパーティクルが角速度をサポートするようになりました。

  • リボンレンダラーにビームサポートが追加されました。対応するモジュールを使用します。

  • モジュール間の依存関係を定義できるようになりました。スタックの構成がおかしくなった場合にユーザにその情報を知らせることができます。また、 自動修正(auto-fix) を使用することもできるようになりました。

  • システムエミッターとベースエミッターのマージへの改善が複数行われました。安定性が全般的に向上しました。

  • スタック内でモジュールをドラッグアンドドロップで上下に移動することができるようになりました。継承したモジュールは移動することができません。移動できるようにするとマージが複雑になるからです。

  • スタック内のモジュールの有効、無効を切り替えることができるようになりました。これは継承でも使用できます。

  • シーケンサーブループリント でのナイアガラユーザーネームスペース変数の設定サポートが追加されました。

  • パラメータをカスタムの HLSL エクスプレッションダイナミックインプット(グラフスニペット) 、他の 変数 へのリンク、 値指定 で駆動することができます。

  • オプションとして、パーティクルは Persistent ID を持つことができます。このIDはエミッター内でユニークであることが保証されます。

  • 各タイプの複数のレンダラーをエミッターに適用することが可能です。各インスタンスで、特定のパラメータがどこから値を取得するかを調整することが可能です。例えば、エミッターに2個のスプライト レンダラーを持たせて、1つのスプライトレンダラーはパーティクルの位置から自身の位置を決定し、もう一つはパーティクルのオフセット位置から自身の位置を決定する、ということも実現できます。

  • Niagara Extras プラグイン は各パーティクルの様々なパラメータをダイアログ状の画面に表示できるデバッグマテリアルも含んでいます。

  • Houdini はナイアガラへのシンプルな CSV インポーターを提供しました。GDC 2018 のデモコンテンツを実現したものです。

  • 自動化テストシステム にナイアガラの多様な機能テストが追加されました。

ユーザーインターフェースの更新

複雑なエフェクトも直感的に作成できるようにナイアガラのインターフェースはデザインされています。全体的にはスタックという形でスクリプトのロジックをまとめています。スタックの内部には、エフェクトの時間経過による変化をコントロールする Timeline 、エフェクトで使用している変数に簡単にアクセスできる Parameters Panel 、そしてエフェクト実行中に情報を確認して反応することを可能にする Attribute Spreadsheet があります。

image alt text

新しいモジュール

すべてのナイアガラのモジュールは、ゲームでのエフェクト制作で一般的に使用される挙動をサポートするために一貫性のあるコーディング標準に従って更新されたもの、もしくは書き直されたものです。 C++ での UProperty でのオプションを模倣するように、新しい UI 機能がナイアガラスタックにも追加されています。他の変数の状態によって、変数表示の有効/無効の切り替えが可能です。

GPUシミュレーション

ナイアガラは現在のところ、 DX11PS4Xbox OneOpenGL (ES3.1)Metal プラットフォームで GPU シミュレーションをサポートしています。VulkanSwitch プラットフォームでも将来のリリースにおいてGPUシミュレーションをサポートする計画があります。GPU シミュレーションの現在の制限事項と既知の問題は以下になります。

  • ナイアガラを完全にサポートするには GPU からのデータ読み戻し機能が必要です。現時点では DX11PS4 のレンダリングインターフェースのみがこの機能をサポートしています。 OpenGLMetal では開発中です。

  • コリジョンカーブCurl ノイズフィールド が GPU でサポートされています。 メッシュスキン メッシュスプラインコンポーネント 、さらに特化したデータインターフェースはまだサポートされていません。 UNiagaraDataInterfaces とインタラクトする GPU シェーダー向け API も再デザインされました。

  • パーティクルからの スプライトインスタンス化スタティックメッシュ レンダリングが GPU シミュレーションでサポートされています。現在のところ、パーティクルからの ライト生成 とリボン生成は GPU では機能しません。

  • イベントは CPU のみで機能し、アンリアル エンジン 4.20 以降に大幅な変更が行われる見込みです。

CPU シミュレーション&コンパイル

ナイアガラは現在のところ、 PC、PS4、Xbox One、OpenGL (ES3.1)、Metal プラットフォームで CPU シミュレーションをサポートしています。現時点では VulkanSwitch はサポートされていません。

  • CPU バーチャルマシン(VM) は コンテンツ の コンパイル を バックグラウンドスレッド で DDC に対して行います。これによって コンパイルスピード と チーム の効率性が大幅に向上しました。最終で大幅な VM 最適化にはまだ スレッドセーフ ではない ライブラリ に依存している ShaderCompileWorker での開発が必要です。コンパイル依存関係については モジュール間で正しくトラッキングされています。スタックで再コンパイルが必要な部分がどこかを明確に判定します。

  • CPU での物理シミュレーションは正しく摩擦と反発(弾力性)に対して物理マテリアルの値をモデルとして使用するようになったはずです。

  • エミッターは ワーカースレッドで並行してシミュレートされるようになりました。

新規:デジタルヒューマンの改善

エピック ゲームズでのデジタルヒューマンを開発しようというキャラクタ技術の研究は、 Photorealistic Character の胸像からはじまりました。それ以来、リアルで実在するような説得力を持つキャラクタを実現するために数多くのレンダリングの改善が行われてきました。

image alt text

キャラクタを開発する間に、以下の肌、目、ライティング、サブサーフェス スキャタリングのレンダリング改善が行われました。

  • Double Beckman Dual Lobe メソッドを使用した新しいスペキュラモデルの追加。

  • サブサーフェスプロファイルでの Backscatter を使用した Light Transmission。

  • Boundary Bleed 色を使用して改善したサブサーフェススキャタリングのコンタクトシャドウ。

  • ポストプロセス マテリアルによる、短距離の動的グローバルイルミネーション。

  • 虹彩に分離したノーマル マップを適用することによるディティールの増加。

詳細については、Digital Humans のページをご覧ください。

新規:長方形型エリアライト

長方形型エリアライトによって、頭上の蛍光灯、テレビ画面、照明つきサインなどの大きさのある光源を含んだリアルなライティング設定を実現することができます。長方形型エリアライトは[モード]パネルに他のライト種類と共に存在しています。

image alt text

  • 現時点ではディファード レンダラのみでサポートされています。

  • 光源のエリアをコントロールするソースの幅と高さ設定がある以外は、ほぼポイントライトと同様に振舞います.

  • 静的、固定の可動性のシャドウイングは、可動動的シャドウイングに設定したエリアライトソースと同様に機能します。現在のところ、大きさを持たないポイントライトと同様の挙動です。

パフォーマンスの考慮事項。

  • 全般的にポイントライト、スポットライトより負荷が高いです。特に可動でシャドウをキャストする時のコストが主要なものになります。シャドウイングのコストは一般的に同程度です。

  • Stationary light (固定ライト)可動性、またはシャドウキャストをしないライトは、使用プラットフォームによっては、コストスケーリングでコストが2倍になります。静的ライトの場合は、この負荷はありません。

新規:Mixed Reality キャプチャ (アーリーアクセス)

現実世界のプレイヤーをバーチャルゲーム空間にコンポジット することを簡単にするMixed Reality キャプチャ機能を使って、 Mixed Reality アプリケーションで魅力的な観戦体験を作り上げましょう!

image alt text

アーリーアクセスのMixed Reality Captureサポートには主要コンポーネントが3個あります。ビデオ入力、キャリブレーション、そしてゲーム内コンポジットです。現実世界のグリーンスクリーンで撮影したビデオをアンリアル エンジンに取り込むことを可能にする、サポートされているウェブカメラとHDMIキャプチャデバイスのリストを用意しています。Viveトラッカーなどのトラッキングデバイスがあれば、現実のカメラの位置とゲーム内のカメラの位置を一致させて、よりダイナミックで面白いショットを作成できます。セットアップとキャリブレーションはスタンドアロンで存在するツールで行うため、様々なアンリアル エンジン 4 タイトル間で設定を再利用できます。一度撮影場所のセットアップができれば、すべてのアプリケーションで使うことができます。

アーリーアクセスの間に、システムを改善していく上でフィードバックをいただきたいと考えています。Mixed Reality Captureのセットアップに関する詳細は Mixed Reality Development ドキュメント をご覧ください。

新規: nDisplay 柔軟なマルチディスプレイレンダリング

新しい nDisplay システムを使って、 巨大なビジュアライゼーションインスタレーションのビデオウォール を苦労せずに制作しましょう!好きな数のアンリアル エンジンインスタンスを自動で起動することができます。それぞれのインスタンスは、結果が同じに決定されるコンテンツ及びフレームも正確な時間同期で堅固に結びついています。インスタンスは任意数のホストコンピュータにに分散させることが可能で、各インスタンスがプロジェクタ、もしくはモニタを駆動します。アクティブ、パッシブステレオスコピックレンダリングを使って3Dシーンへのビューワーの没入感を増強し、ビルトインの VRPN サポートでモバイル VR コントローラーからシステムを動かしましょう。

image alt text

詳細についてはドキュメント をご覧ください。

新規:Submixオーディオ録音

新しいオーディオエンジンに、エンジンアウトプット、もしくは個々のSubmixアウトプットを *.wavファイル、もしくはサウンドウェーブアセットとして録音する機能を追加しました。

image alt text

Submix アウトプットをサウンドウェーブアセットに出力

image alt text

  • Submix アウトプットを .wav に出力

新規:スケルタル メッシュ LOD 設定の共有

新しい LOD Settings アセットを使用して、 一度設定したLOD設定を複数のスケルタルメッシュアセットで共有しましょう!スケルタルメッシュの [アセットの詳細] パネルの [LOD Settings] で、使用する LOD Settings アセットを選択することができるようになりました。現在の設定から新しいアセットを生成することも可能です。

詳細は、スケルタルメッシュ アセットの詳細 の Sharing LOD Settings セクションをご覧ください。

Blutility を 使ってブループリントからも LOD Setting の割り当て、生成が可能です。

新規:GeomCache のストリーミングと Alembic インポーターの改善(実験的機能)

ジオメトリキャッシュシステムに、安定性とパフォーマンスの改善を続けています。

  • 個々の頂点アニメーションフレームが、Huffman エンコードに基づく intra-frame コーデックで圧縮されるようになりました。圧縮データはディスクからストリーミングされます。低いメモリオーバーヘッドでより長いシーケンスの再生が可能になります。新しい実装はまだ実験的機能で実制作での使用には適していません

  • Alembic インポーターはすべてのフレームを一括で読み込むのではなく、各フレームを反復して読み込むように変更されました。 これによってPCAパイプライン及び全般的な安定性とスピードが向上したはずです。

新規:アクタとコンテンツ ブラウザコンテキスト メニューのスクリプト拡張

コードを一行も書かずに簡単にコンテキストツールやワークフローを助けるツールを作りましょう。 ブループリントユーティリティ(Blutilities) を使ってアクタやブラウザのコンテントアセットのコンテキスト メニューを拡張できるようになりました。

  • AssetActionUtility (コンテンツブラウザの拡張の場合)もしくは ActorActionUtility (アクタの拡張の場合) を親クラスにした新しい Blutility を作成します。

  • GetSupportedClass 関数で、このアクションが適用できるアクタ種類やアセット種類を指定できます。

  • 返り値のないイベント(もしくは関数)に実行したいロジックを追加して、[Call In Editor] に設定すると、コンテキストメニューに表示されます。またイベントがトリガーされた際にパラメータを入力するためのポップアップダイアログが表示されるように定義が可能です。

新規:アニメーション リターゲット マネージャーの改善

アニメーション リターゲット マネージャーでマッピングデータの保存と読み込みがサポートされ、 複数メッシュでマッピングデータの保存と再利用が可能になりました。 さらにこの機能によって、異なるアニメーション向けに複数のリグデータを簡単に保存して、使いまわすことも可能になりました。

image alt text

詳細は Retarget Manager のページをご覧ください。

新規:RigidBody Anim Node の改善

シミュレーションをより安定させる [Local Space] シミュレーションを使用している場合にも、スケルタルメッシュコンポーネントをワールド内で移動した際にシミュレーションされたボディが動くようになりました。コンポーネントのワールド空間でのリニア速度と加速度を見てその内容を(スケーリングとクランプを適用して)ローカル空間のシミュレーションに適用するいくつかのオプションを追加しました。

また指定した好きなジョイントをシミュレーションのベースにするオプションと、物理を簡単にリセットする方法の追加を行いました。

新規:クロスの改善

クロスシミュレーションで物理アセットの先細りしたカプセル(Tapered Capsule)のサポートが追加されました。

注意: これは剛体シミュレーションのコリジョンではサポートされていません。

また、スケルタルメッシュの頂点カラーを選択したクロスパラメータマスクにコピーできるようになりました。

新規:ガーベジ コレクションの改善

ガーベジ コレクションのパフォーマンスに最適化を行いました。 13倍高速化した処理もあります! 特に、以下の改善を行いました。

  • Mark フェーズを最適化し、マルチスレッド化しました.複数コアを持つマシンにおいて、到達できないオブジェクトをマーキングする処理は約 500,000 オブジェクトのケースで 8 ms から 0.6 ms に処理時間が削減されました。

  • BeginDestroy フェーズ (オブジェクトの unhash 化) は複数フレームに渡って実行されるようになり、 1フレームで 2 ms 使用するということはなくなりました。 オブジェクトの unhash 化のコストは Mark フェーズと到達性分析と同じフレームに含まれなくなりました。

  • 開発ビルドで実行するガーベジ コレクション 予測検証は、リファレンス収集と同じマルチスレッドコードを使用するようになりました。結果として、開発ビルドのガーベジ コレクションの実行時間が改善しているはずです。エピック内のテストでは約 500,000 オブジェクトのサンプルでのタイミング計測で、 320 ms から 80 ms 以下に削減されました。

新規:Visual Studio 2017

UE4 は Visual Stduio 2017 コンパイラを使用するようになりました。エンジンはデフォルトで Visual Studio 2017 向けのプロジェクトファイルを生成します。Visual Studio 2015 も引き続きサポートしていますが、いくつかの設定が必要になります。追加して、Windows 10 SDKのサポートを追加しました。

注意: Visual Studio 2017 は複数コンパイラバージョンのサイドバイサイドのインストールをサポートしています。

ハードウェアとソフトウェアの仕様 をご覧ください.

新規:GitHubでの開発ストリームの公開

アンリアル エンジンの開発ストリームの内容がGitHub でライブ更新されるようになりました。最新の開発用のコードが必要な場合は、これらのストリームを直接Pullすることも可能です。これまでのように開発チームがMainブランチへ変更のマージを行うまで待つ必要がなくなりました。注意してください。これらのストリームは更新され続けています。ランチャーでのリリースやMainブランチとは違い、QAチームによる確認は行われていません。

詳しくはブログ記事 を参照してください。

新規:UMGセーフゾーンの改善

UMGやプレイインエディタ(PIE)で設定した画面サイズは、デバイスプロファイルとリンクするようになりました。モバイル コンテンツ スケール係数(Mobile Content Scale Factor)も考慮されるため、選択したデバイス画面サイズに基づいて最終的な解像度とDPIスケールが決定されます。

image alt text

image alt text image alt text

UMGのセーフゾーンワークフローで以下の改善が行われました。

  • 1 以下の値を設定してテレビやモニタの画面サイズをテストする際にタイトルセーフゾーンのデバッグのためにセーフゾーンのプレビューが自動的に有効になるようになりました。

  • r.MobileContentScaleFactor コマンドを使用することで、UMG プレビューと PIE モードで携帯電話やタブレットの解像度にスケールが行えます。

  • 画面スクリーンの一部分にアクセスができないiPhoneXのようなデバイスで、不均等なセーフゾーンがサポートされるようになりました。

  • セーフゾーン、スケールボックス、コモンボーダーウィジェットは、不均等なセーフゾーンとUMGデザイナーサイズに正しく反応します。

  • UMGは、選択されたデバイス、画面サイズ、均一スケール係数を表示するようになり、 デザイナーグラフから簡単に参考にできます。

  • r.MobileContentScaleFactor を使用して、UMGとPIEモードの携帯電話とタブレット解像度のスケーリングが可能。

詳細については、UMG Safe Zones のページをご覧ください。

新規:マテリアルのカーブアトラス

マテリアルはカーブアトラスアセットにリニアカラーカーブを保存しアクセスできるようになりました。追加のサポートがブループリントで提供されています。カーブアトラスは以前と同じリニアカーブカラーを使用していますが、アトラスで指定した数だけリニアカラーカーブを持つことができるということが違います。

新しいカーブアトラスを追加するには、コンテンツブラウザから [新規追加] > [その他]Curve Atlas を選択します。

カーブアセットエディタを開くと、色相、彩度、輝度、Vibrance、アルファクランプの個々のカーブを調整できます。さらに、コンテンツブラウザのプレビューサムネイルにはカーブによって作られたグラデーションが表示されます。

詳細については Curve Atlases in Materials のページをご覧ください。

新規:メッシュデスクリプションメッシュフォーマット

UE4の高レベル中間フォーマットをエンジン内のすべてのメッシュアセットタイプを表現可能な新しいものに更新しようとしています。これは段階的なプロセスで、ワークフローを改善し、素晴らしい新機能の提供を可能にしていくものです。

新しいメッシュフォーマットへの移行で目指している内容は以下になります:

  • すべてのメッシュ(スタティック、スケルタル、そしてテレインやBSPといったメッシュ類似オブジェクトも含む可能性あり)が同一の内部表現と、相互交換性をある程度保持すること

  • ほとんどの UE4 ジオメトリツールが、このジオメトリフォーマットをもとにしているすべての種類のメッシュで機能すること。

  • この新しいフォーマットを使用しているメッシュの情報の確認や変更をスタンダートな APIで行えること。ランタイム、ネイティブ、スクリプトでの変更を可能にし、プロシージャル生成コンテントの豊富な可能性への扉を開きます。

  • 四角ポリゴンやエッジのハードネス情報といった高レベルのメッシュ表現情報を保持しながら直接メッシュをこのフォーマットにインポートできること。現在のところ、こうした情報はスタティック、スケルタルメッシュのインポート時に失われています。

  • 新しいメッシュフォーマットは内部的に構造を持ち、非常に複雑なメッシュであっても変更操作をリアルタイムで行えるようにしています。これが開発中のメッシュ編集機能の土台になっています。スクリプト機能も将来のリリースで開発される見込みです。

このリリースでは、スタティックメッシュだけが新しいメッシュフォーマットを使用するように変換されます。ユーザーにとっては通常のワークフローへの違いを感じることはないでしょう。アセット自体も変わりません。現在のところ、新しいデータが古いフォーマットから自動的に作成されてDDCにキャッシュされます。

新規:カラー ピッカーで保存した色へのラベル追加

テーマバーやテーマメニューで保存した色に、区別しやすいようにラベルを追加できるようになりました!保存した色のスウォッチを右クリックするだけで簡単にラベルを追加し、保存した色に名前を入力できます。

詳細については、Color Picker のページをご覧ください。

新規:コンテンツ ブラウザへの最近使用した項目フィルタ追加

コンテンツ ブラウザで最近使用したアセットを簡単に見つけましょう。新しく 最近使用した項目 フィルタが追加されました。このフィルタは最近オープンした20のアセットの一覧を表示します。

image alt text

[フィルタ] リストの [その他のフィルタ] にRecently Opened(最近使用した項目)フィルタが追加されています。表示される最近使用した項目の数は、 [エディタの環境設定] > [コンテンツブラウザ] Number of Assets to Keep in the Recently Opened Filter で変更できます。

詳細については コンテンツ ブラウザフィルター のページをご覧ください。

新規:Shotgunインテグレーション(アーリーアクセス)

アンリアル エンジン 4向けの新しいShotgunインテグレーションを使用して、制作パイプラインを効率化しましょう!

image alt text

以下の機能があります。

  • Shotgunランチャーにアンリアル エディタを追加し、Shotgunプロジェクトに合わせた正しいバージョンのアンリアル エディタをアーティストが確実に実行できるようにします。

  • アンリアル エディタのインターフェースから Shotgun パネルを開いて、作業をしながら Shotgun プロジェクトの最新状況を確認することができます。

  • Shotgun loaderへのフックで、アセットのアンリアル プロジェクトへの追加、追加されるアセットのコンテンツブラウザでの位置のコントロールを簡単に行うことができます。

  • さらにレベルのアクタやコンテンツブラウザのアセットの右クリックメニューに Shotgun の操作コマンドも追加されます。

注意: GitHubでインテグレーションをシェアできるように詳細を調整中です。最新情報とドキュメントについては今しばらくお待ち下さい!

新規:エディタスクリプト機能と自動化ライブラリ

エディタスクリプト機能プラグイン をすべてのアンリアル エンジンユーザーが利用可能になりました。このプラグインはアンリアル エディタのスクリプト機能と自動化に対するシンプルなインタフェースを提供します。コンテンツブラウザでのアセット作業、レベル内のアクタに対する作業、スタティックメッシュアセットのプロパティの編集などが可能です。

詳細は Scripting and Automating the Editor をご覧ください。

新規:FBX からのアセットメタデータのインポート

FBXファイルをアンリアルにインポートする際に、ファイルに保存された任意の FbxProperty データもインポートされるようになります。このメタデータには、ブループリントやアンリアルエディタで実行する Python スクリプトからアクセスできます。使用しているコンテンツ作成ツールからインポートしたアセットの情報を使って、独自のアセット管理パイプラインを構築する助けになります。

詳細は FBXアセットメタデータパイプライン をご覧ください。

新規:スタティックメッシュの LOD (Level of Detail) とコリジョンについてのスクリプトアクセスの改善

ブループリントやアンリアルエディタで実行する Python スクリプトからスタティックメッシュアセットのより多くのプロパティが変更できるようになりました。これによってスタティックメッシュエディタが提供しているツールの一部を自動化することが可能になります。以下のようなことが可能です。

  • カメラからジオメトリの距離が増えるにつれてより詳細が少ないジオメトリバージョンに切り替えることでレンダリングパフォーマンスをあげる、モデルの LOD モデルを自動で生成して設定することができるようになります。詳細は Creating Levels of Detail in Blueprints and Python をご覧ください。

  • 物理シミュレーションでスタティックメッシュアセットを表現するものとして使用されるコリジョンメッシュを自動生成することができるようになります。詳細は Setting up Collisions with Static Meshes in Blueprints and Python をご覧ください。

新規:ブループリントブックマーク

ブループリントブックマーク機能はブループリントエディタ中の好きな関数グラフでの名前をつけたブックマークの作成を可能にします。作成されたブックマークは新しい UI ウィンドウに一覧表示され、クリックするとビューポート(及び表示しているアクティブタブ)に位置とズームレベルを復元することができます。作成したブックマークに加えて、別のリストからコメントを選択することで、ブループリント中の選択したコメントノードにジャンプすることも可能です。ブックマークはマシンにローカルで保存されるので、ブループリント自体には影響しません。コンテンツを同期しても、他のユーザーのブックマークによって自分のブックマークが上書きされることはありません。

新規:ブループリントウォッチウィンドウ

ブループリントウォッチウィンドウ はウォッチしたい変数やノードへのアクセスを可能にしてデバックを高速化します。複数のブループリントに渡ってウォッチすることも可能です。エディタで開いたすべてのブループリントからのデータ、現在のコールスタックの一部のデータが1つのリストにまとめられて監視することができ、変数や関数アウトプットを調査することができます。ブループリント間のジャンプも簡単です。「Node Name」カラムのノード名をクリックするとすべてのブループリントからそのノードにジャンプし、「Object Name」から選択すると、関連したオブジェクトのインスタンスが選択されます。 配列、セット、マップ、その他のデータ構造は展開が可能で、どのデータでも掘り下げて確認ができます。

image alt text

新規:ナビゲーションシステムコードがモジュールに移動されました

ナビゲーション システムに関連するコードの大部分ががエンジン モジュールから新しいナビゲーション システム モジュールに移動されました。ナビゲーション システムの機能を使用しているゲーム固有のコードで更新が必要な場合があるかもしれません。

プロジェクトのソースコードを解析して更新が必要かもしれない行番号を指摘する Python (3.5) スクリプト が用意されています。このスクリプトで変更自体を実行することも可能ですが、この機能は注意しバージョンコントロールと併用して使用してください。スクリプトで指定できるオプションについてはファイルの最初に記述されています。

プロジェクトの更新で必要な変更点についての詳細についてはProgramming Upgrade Notesセクションをご覧ください。

新規:モバイルスペキュラライティングモデルの改善

モバイルスペキュラ(鏡面反射色)レスポンス はデフォルトで GGX ライティングモデル を使用するように変更されました。これによるモバイルのスペキュラの品質が改善し、より SM5 に近い見た目になりますが、シェーダー処理時間へのコストが多少追加されます。

image alt text

1 - 4.20 のデフォルト GGX スペキュラ; 2 - 4.19 のSpherical Gaussian スペキュラ

過去の Spherical Gaussian スペキュラ モデルもプロジェクト設定の [Rendering] > [Mobile][Use legacy shading mode] 設定から引き続き使用が可能です。

新規:モバイルスカイライト反射

モバイルレンダラは関連した リフレクションキャプチャ がない場合、 スカイライトキューブマップスペキュラ反射 に使用するようになりました。

image alt text

1 - モバイル、リフレクションキャプチャなし ; 2 - PC、リフレクションキャプチャなし

新規:レプリケーション ドライバー / レプリケーション グラフ

レプリケーション グラフ プラグインは 多数のアクタと多数のプレイヤーを持つゲーム向けに最適化されたレプリケーションシステムを提供します。データと計算を集中管理する一連のカスタムノードを構築することでこのシステムは機能します。T複数フレームにわたってこれらのノードは持続して存在し、クライアント接続間で共有が可能です。冗長なCPU計算を削減し、ノードベースのゲーム固有のアップデートルールに従ってアクタをグループ化することができます。APIに変更を行う可能性があるため、このプラグインは 4.20では実験的段階と考えてください。ただ、このシステムはフォートナイト バトルロイヤルで使用されているもので、完全にサポートされた機能になる見込みです。

新規:Steam Authentication

Steam Authentication が追加されました!ゲームでSteamのAuthentication APIと繋がるパケットハンドラーを追加できるようになりました。サーバーのアドバタイズ、 VAC とパブリッシャーによるBANの処理、クライアントの妥当性の検証が可能です。有効にすると、サーバーに参加するクライアントは、ゲームプレイを許可される前にSteamの認証を必要とします。デフォルトでは、認証に失敗したクライアントはサーバーからキックされます。

新規:シーケンサーのフレーム正確性の改善

シーケンサーはすべての内部時間データを整数で保持するようになりました。フレーム正確性が必要とされる場面に対して柔軟なサポートを可能にします。キー、セクション範囲、その他のデータは常にユーザが指定できるシーケンスレゾリューションにロックされます。使用するケースの必要性にあわせて、精密にも、粗いものにも設定できます。レゾリューションを非常に高くすると、キー配置とサブフレームの忠実性を高めますが、全体のシーケンス範囲が減少することになります。

image alt text

主な更新内容

  • シーケンサーでの時間カーソルは、現在評価されているTickの範囲を示すブロックして表現されるようになりました。これにより、そのフレームで評価されているキー、評価されないキーの区別が明確になりました。

  • [Force Fixed Frame Interval] 再生は [Frame Locked] として変更されました。エンジンの最大 FPS をシーケンスの表示レートに設定し、時間を整数フレームにロックします。(サブフレームの補間はありません)

  • フレーム正確性を考慮しない場面ではサブフレーム評価は引き続き完全にサポートされます。(UMGアニメーションなど)

  • エンジンクロック(ワールドポーズをサポート)、オーディオクロック、プラットフォームクロック、といった様々な時間ソースがランタイム評価でサポートされました。

  • UI を Non Drop Frame (NDF) タイムコードと Drop Frame (DF) タイムコードで表示できるようになりました。NDF タイムコードはすべてのフレームレートで使用できます。直接フレーム数を、時間、分、秒と残りフレームに変換します。DF タイムコードは NTSC レート (23.976, 29.97, 59.94) でのみサポートされます。表示フォーマットの切り替えは Ctrl + T ショートカット、もしくはUI メニューの [framerate] から行えます。

詳細は新しい Sequencer Time Refactor Notes のページをご覧ください。

新規:シーケンサーのメディアトラック

シーケンサーにメディアからのソースを再生する新しいトラック種類が追加されました。オーディオトラックに似ていますが、これはムービーを再生するものです。 メディアソース アセットをトラックビューにドラッグ & ドロップすることでも、 [Add Track] から [Media Track] を選択することでも作成が可能です。この機能が一番よく機能するのは、現在のところ画像シーケンス、特にEXRを使用した場合です。メディアトラックの画像シーケンスはレンダリング出力のフレームに正確に同期します。

image alt text

詳細は Using Media Tracks のページをご覧ください。

新規:シーケンサーカーブ エディタ と カーブ評価の追加機能

シーケンサーの カーブ エディタカーブ評価 にも機能が追加されています。

floatカーブでも Weighted tangent がサポートされるようになりました。

image alt text

シーケンサーカーブ エディタでのウェイトカーブの使用

回転を変化させる際に、オイラー角を連続させるサポートを追加しました。オイラー角の-180度から180度の制限がなくなりました。アニメーションのフリップを防ぐために必要な変化です。

トラックのプロパティの3Dトランスフォームセクションでクォータニオン回転をオンにすることができました。2つの回転角度の間をクォータニオン補間でスムーズに補間することが可能になります。これは以前マチネに存在した機能と類似しています。

新規:シーケンサーでのAnimインスタンスの変数アニメーション

Animインスタンス の変数をpossessable経由でアニメーションすることが可能になります。アニメーションブループリント変数、関数、その他コンテンツの直接コントロールができるようになりました。Animインスタンスのバインディングをシーケンサーに追加するには、スケルタルアニメーションコンポーネントの [+トラック] ボタンから名前を探します。シネマティクスに公開されている変数はトラックでの選択に表示されます。

詳細は Controlling Anim Instances with Sequencer のページをご覧ください。

新規:シーケンサーでの Final Cut Pro 7 XML インポート/エクスポートサポート

シーケンサームービーシーンのデータの Final Cut Pro 7 XML フォーマットでのエクスポート、インポートが可能になりました。FCP 7 XML 形式をサポートする Adobe Premiere Pro などの編集ソフトウェア間のデータの行き来にも使用できます。編集ソフトウェアでショットのトリムやオフセットを行って、インポート時にシーケンサーに自動的にマッピングすることができます。

注意: 現時点ではオーディオはサポートされていません。

新規:シーケンス レコーダーの改善

シーケンス レコーダー はパーシスタント レベルに保存されるプロファイルシステムをサポートするようになりました。レコーディングプロファイルによって、どのアクタを記録するかとその設定、そして記録したデータを保存する出力パスを保存できます。シーケンス レコーダーは選択された各アクタについて複数テイクの記録もサポートするようになりました。

詳細は Sequence Recorder のページをご覧ください。

新規:シーケンサートラックのユーザビリティの改善

シーケンサーの トラック のユーザビリティについていくつかの改善が行われました。トラック、アクタ、フォルダの順番を並べ替えることができるようになりました。イベントトラックの名前がイベントキーフレームの横に表示されます。セクションのサイズをソースの長さに合わせて変更できるようになりました。個々のトランスフォームチャンネルをマスクできるようになりました。ブレンドポースからポーズアセットを作成できるようになりました。他にも改善があります。

詳細は新しい Working with Tracks in Sequencer のページをご覧ください。

新規:インスタンス化ステレオレンダリングでの半透明パスサポート

Robo Recallで行ったインスタンス化ステレオレンダリング(ISR)パスでの改善を、エンジンの他の機能とも動くように改良しました。 アンリアル エンジン 4.20 ではインスタンス化ステレオレンダリングを使って半透明レンダリングパスを実行できるようになり、半透明を多く使ったシーンでのCPUコストを大幅に削減することができます。コンテンツの変更は必要ありません。プロジェクト設定でインスタンス化ステレオを有効にすれば、この新しい改善を自動的に利用できます。

新規:Magic Leap One™ アーリーアクセスサポート

GDCにおいて、 Magic Leap社の個人向け空間コンピューティングプラットフォーム体験の先行開発を可能にするソフトウェアツールキットである Magic Leap One™: Creator Edition のアーリーアクセスサポートを発表しました。これは2社間のパートナーシップの一部です。アンリアル エンジン 4.20 では完全にサポートされたアンリアル エンジンリリースを使って Magic Leap One™ 向けの開発が可能です。

image alt text

アンリアル エンジン 4 の Magic Leap One ではカメラコントロール、ワールドメッシング、モーションコントローラ、フォワードとディファードレンダリングといったビルトインのフレームワークを使用します。さらにアイトラッキングとジェスチャといった機能にもさらに柔軟なサポートを追加しました。

開発者は以下のサイトから Magic Leap ソフトウェア開発キットとシミュレーターをダウンロード可能です。 developer.magicleap.com ハードウェアにアクセスできるデベロッパーは、プレイ イン エディタでのゼロイテレーションワークフローに加えて、アンリアル エンジン 4.20 でデプロイして実機での実行も可能です。

新規:Apple ARKit 2.0 サポート

Apple の ARKit 2.0 へのサポートを追加しました。改善したトラッキング品質、垂直平面の検出、2D 画像検出、 3D オブジェクト検出、パーシスタント AR体験と Shared AR体験が含まれています。こうした新機能へのサポートにより、ARオブジェクトの様々な平面上への配置、顔の位置と向きの検出、2D 画像を認識して実体化、3D オブジェクトの検知、これまでにない協調型 AR 体験の実現が可能になります。

新規:Google ARCore 1.2 サポート

垂直平面の検出、Augmented Image、Cloud Anchorなどのサポートを含むGoogle’s ARCore 1.2 のサポートを追加しました。こうした新機能へのサポートにより、ARオブジェクトの様々な平面上への配置、2D 画像を認識して実体化、これまでにない協調型 AR 体験の実現が可能になります。

新規:プラットフォームの SDK をアップグレード

アンリアル エンジン 4 はリリースの際、プラットフォームのパートナーからリリースされる最新の SDK に対応するようにアップデートしています。

image alt text

  • ビルドファームによるコンパイルの対象である IDE のバージョン

    • Visual Studio: Visual Studio 2017 v15.6.3ツールチェーン(14.13.26128) と Windows10SDK (10.0.12699.0)

      • 最小サポートバージョン

        • Visual Studio 2017 v15.6

        • Visual Studio 2015 Update 3

    • Xcode: Xcode 9.4

  • Android:

    • NDK 12b (リリース前に新しい CodeWorks for Android 1r6u1 のインストーラーが、まだ NDK 12b のこれまでの CodeWorks for Android 1R5 と置き換わります。)

  • HTML5: Emscripten 1.37.19

  • LInux: v11_clang-5.0.0-centos7

  • Lumin: 0.12.0

  • Steam: 1.39

  • SteamVR: 1.39

  • Oculus Runtime: 1.25

  • Switch:

    • SDK 4.5.0 + 任意NEX 4.2.1 (Firmware 4.1.0-1.0)

    • SDK 5.3.0 + 任意NEX 4.4.2 (Firmware 5.0.0-4.0)

    • サポートされているIDE:VS 2015 / 2017

  • PS4:

    • 5.508.031

    • ファームウェアバージョン 5.530.011

    • サポートされているIDE:Visual Studio 2015、 Visual Studio 2017

  • Xbox One (XB1, XB1-S, XB!-X):

    • XDK:April 2018

    • ファームウェアバージョン:April 2018 (version 10.0.17133.2020)

    • サポートされているIDE:Visual Studio 2017

  • macOS: SDK 10.13

  • iOS: SDK 11

  • tvOS: SDK 11

RELEASE NOTES (以下の、細部に関する翻訳は割愛します。)

AI

  • Bug Fix: Updates have been made to the Instance Prepare Context Function of Env Query which will now return vectors and rotators now ignore Invalid Location and Invalid Rotation.

  • Bug Fix: Updates have been made so the Env Query Item Type_Actor of Get Item Location function and Env Query Item Type_Actor of Get Item Rotation function now return Invalid Location and Invalid Rotation instead of 0 when the hosted Actor pointer is set to null.

  • Bug Fix: The On Listener Forgets Actor function of AI Sense_Sight now removes queries only relating to the actor being forgotten.

  • Bug Fix: The AI Sense Config Blueprint and AI Sense Blueprint no longer show up in class drop-downs when selecting AI senses.

  • Bug Fix: Donut EQS generator no longer fails if inner radius is set to 0.

  • Bug Fix: THe Env Query Manager and Behavior Tree Manager classes are now transient to avoid being accidentally serialized.

  • Improvement: The Get Raw Value Ptr function of AI Data Provider Value is now accessible from outside of the AI Module

  • Improvement: Additional functions from Blueprint Node Helpers are now exposed in the AI Module's API.

  • Improvement: More public properties from AI Controller have now been exposed to Blueprints.

Behavior Tree
  • Bug Fix: The correct tooltips for Composite Behavior Tree nodes are now displayed in the Editor.

  • Bug Fix: The Rotate To Face BB Entry Behavior Tree Task now properly faces the location of the target agent.

Debugging Tools
  • Bug Fix: Navmesh debugging now properly displays octree elements with "per instance transforms".

  • Bug Fix: 'Get Categories' in the Visual Logger Helper no longer omits relevant information when called.

  • Improvement: Code maintainability and performance upgrades have been made to Nav Mesh Rendering Component when drawing navmesh and octree collision polys.

  • Bug Fix: The Static Mesh Editor now display AI-navigation-related data whenever Has Navigation Data is set to true.

  • Bug Fix: Navigation data gathering has been fixed for navmesh tile generation by expanding tile's bounding box by the agent's radius.

  • Bug Fix: Layers are now removed after Navmesh generation if they become empty after rebuilding the Navmesh.

  • Bug Fix: Calling Set Poly Area in Recast NavMesh no longer sets an improper flag when changing the poly's Area ID.

  • Improvement: The Tick in Navigation System Base is now called even when the world is paused.

  • Improvement: The Navigation System Config can now be subclassed to allow configuration of other aspects of navigation system, like overriding or modifying the Supported Agents list.

  • New: A flag has been added to Nav Modifier Component to control whether agent's height is being used while expanding the modifier's bounds during navmesh generation.

  • New: A Console Variable has been added that controls whether to cook and use Nav Collision.

  • New: World Settings has a property, called Navigation System Config, that allows you to specify the Navigation System class to be used on a per-world basis.

Animation

  • Crash Fix: Fixed a crash when attempting to shut down a Message Bus Source after the Heartbeat Manager had already been shut down.

  • Crash Fix: Fixed a crash when re-importing a Skeletal Alembic asset and placing it in the world.

  • Crash Fix: Trying to extract a transform from a raw track with no track data no longer crashes.

  • Crash Fix: Re-registering a Skeletal Mesh Component with a post process instance that references deleted virtual bones will no longer crash.

  • Crash Fix: Fixed crash on deleting Virtual Bones that are referenced by Bone Controller nodes.

  • Bug Fix: Fixed Live Link Client Panel not refreshing for sources that were not added through UI.

  • Bug Fix: Fixed an issue where the Skeletal Mesh was not ticking correctly and updating its bounds (it would use the cached bounds with an extent of 0 and not render).

  • Bug Fix: Fixed not-a-number (NaN) values occurring during Blend Space sampling.

  • Bug Fix: Fixed issue with double ticking a reused Animation Instance on set Skeletal Mesh because of parallel evaluation.

  • New: Added Anim Instance Get LOD Level override point to allow custom Anim Instances the ability to provide a different (potentially significance-based) LOD to the graph update/eval phase.

  • New: Added Blueprint functions to create a Message Bus Source for use in projects where the Editor UI is not available or is impractical.

  • New: Added a remapping of curve values in a range to the modify curve anim node.

  • New: Added a weighted moving average method to the modify curve anim node.

  • Improvement: Reduced per-frame allocations in the animation system.

Animation Assets
  • Crash Fix: Fixed a crash when retargeting a Skeleton when some of its animations are still open.

  • Crash Fix: Fixed a crash on Pose Asset when Skeleton has changed hierarchy.

  • Bug Fix: Fixed additive blending in PoseAsset.

  • Bug Fix: Fixed a deterministic cooking issue where notify names could change during load.

  • Bug Fix: Montage or Anim Blueprint assets can no longer modify the Skeleton during cook (causing non-deterministic cooking).

  • Bug Fix: Using the name "None" in a curve will no longer cause it to disappear.

  • Bug Fix: Fixed incorrect preview mesh being applied after retargeting an animation.

  • Bug Fix: Bone rotations are now forced to be normalized during bone extraction from raw animation data.

  • Bug Fix: Animations that have transform curves are considered up to date upon loading.

  • New: Added animation names to ensure when missing anim data.

  • New: Added notification when updating source for the Pose Asset.

  • New: Added Blueprint interface to get list of curve names, consisting of Get Active Curve Names, and Get All Curve Names.Pose Assets can use this interface to get pose names instead of curve names.

  • New: Materials can now be set on a Geometry Cache asset.

  • New: Added Socket Override Lookup to the Skinned Mesh Component, which will allow mapping one socket to another and when calling Get Socket By Name or Get Socket Bone Name.

  • New: Added LISTANIMS console command to generate CSV report on all loaded anims.

Animation Blueprints
  • Crash Fix: Fixed a crash when opening Animation Blueprints with sub graph inputs.

  • Crash Fix: Fixed a crash when running a standalone editor build using Animation Blueprint sub-instances that copy properties.

  • Bug Fix: Fixed Skeletal Mesh Components using post process Anim Instances but not anim script instances running on the Game Thread (work is now correctly pushed off-thread).

  • Bug Fix: Fixed duplicate node GUIDs in the Animation Blueprints that were causing state machine transition errors.

  • Bug Fix: Wrapped wind update using dynamics console variable so unnecessary work is not done if dynamics aren't running.

  • Bug Fix: Fixed issues with Skeletal Mesh Component teleports not being passed through to in-graph dynamics nodes.They are now passed through from transform updates.

  • Bug Fix: Fixed teleports causing anim dynamics to duplicate the limits that are generated, causing over-corrections for constraints.

  • Bug Fix: Animation state machine correctly handles copy-pasted transition getter nodes.

  • Bug Fix: Fixed stretching on spawn for Skeletal Mesh Components using Rigid Body Node.

  • Bug Fix: Fixed bad initial rigid body node states when spawned with non-reference pose.

  • Bug Fix: Fixed NaN in Rigid Body node when teleporting on a zero timestep.

  • New: Anim dynamics can now be globally turned off at a specific LOD threshold.

  • New: Added ECVF_Scalability to anim dynamics CVars.

  • New: RigidBody node supports any joint as a base of simulation.

  • New: RigidBody node supports reset dynamics.Anim Instance supports reset dynamics, and if you call it, it will reset simulation.

  • New: Added console variables to control rigid body node update and evaluation.

  • New: Added deterministic cooking warning to node GUID fix-up in Animation Blueprints to suggest a resave.

  • New: Added new "Apply limits" anim node.

  • New: RigidBody AnimNode has new options to automatically apply local space accelerations based on world component translation.Options are only active when using a non-worldspace simulation:

    • Component Linear Acc Scale - Amount of world space acceleration should be applied in local space (should be between 0 and 1)

    • Component Linear Vel Scale - Applies 'drag' to a body in the local space, based on the components world-space velocity.

    • Component Applied Linear Acc Clamp - Overall clamp on acceleration applied by Component Linear Acc Scale and Component Linear Vel Scale options.

  • New: Bone references are now validated during compilation for all anim graph nodes that use them.

  • Improvement: Optimized cases when Update Curve was called many times if you were using Sub Anim Instance and/or Post Process Graph.

  • Improvement: Animation Curves have faster lookups, and are not evaluated unless they're actively used.

Animation Tools
  • Crash Fix: Fixed a crash when undoing an operation performed in a Skeletal Mesh editor after it is closed.

  • Bug Fix: Fixed an issue with Skeletal Mesh bake pose not correctly applying when containing non-uniform scaling.

  • Bug Fix: Fixed accidental operation of pinned commands when closing them in animation editor viewports.

  • Bug Fix: Notify Trigger Chance is now hidden for anim notify states, since it has no effect.

  • Bug Fix: Automatic rules for animation state transitions are now shown in tooltips.

  • Bug Fix: Fixed anim notify drag/drop not allowing movement beyond halfway on high DPI displays.

  • Bug Fix: Prevented Blueprint notifies from destroying the animation preview actor.

  • Bug Fix: Fixed cropping of animations that have transform curves.

  • New: Added an "auto blend out" option to Anim Montage.

  • New: Animation Retargeting Manager now supports loading/saving the mapping data.

  • New: The Control Rig Experimental feature has been refactored, you now can create your own rig using Control Rig Blueprint.

  • New: In the Skeletal Mesh Editor, added section settings to ignore a section when creating a reduced LOD.

  • New: Added new animation viewport notifications.

  • New: Added option to preview Fixed Bounds in Skeletal Mesh tools.

  • New: Blendspace samples can now be be optionally moved off-grid by holding Alt and dragging samples to disable grid snapping.

  • New: Enabled "Follow Bone" to be popped out of the menu into the viewport by shift-selecting.

Import/Export
  • Bug Fix: Re-importing a mesh will no longer clear the Post Process Graph.

  • Bug Fix: Fixed an issue with not Regenerating LODs when re-importing Skeletal Meshes and when it has been simplified, causing mismatched LOD data.

Skeletal Mesh
  • Crash Fix: Fixed a crash in lazy-initialization of morph targets when LODs are stripped from Skeletal Meshes.

  • Crash Fix: Fixed crash when Skeletal Mesh tangent buffer is empty after the build and we serialize the tangent array.

  • Crash Fix: Importing a Skeletal Mesh with no vertices no longer crashes.

  • Crash Fix: Fixed an editor crash when setting Min LOD above the total number of LODs for Skeletal Meshes.

  • Bug Fix: Fixed various issues with Bake Pose related to missing animations, sharing Skeletons, and removing joints.

  • Bug Fix: Statically-rendered Skeletal Meshes now correctly report their rendered LOD.

  • New: Added a new console variable "r.SkeletalMesh.StripMinLodDataDuringCooking" which, when non-zero, will strip out unused rendering data as the asset is cooked.

  • New: Added per-platform minimum LOD for Skeletal Meshes.

  • New: Added per-platform overrides for Skeletal Mesh screen size.

  • New: Master pose component will now ensure slaves are using ref pose for the missing joints.

  • New: Added "Use High Precision Tangent Basis" option on Skeletal Meshes.

  • New: Recompute Tangent and Skin cache will now be higher precision (16 bits per channel).

  • Deprecated: The wireframe color in Skinned Mesh Component has been deprecated.

Audio

  • Crash Fix: Fixed a crash when Audio Capture Component is re-initialized.

  • Crash Fix: Fixed a crash when flushing audio device.

  • Crash Fix: Calling "Set Sound Wave" on Synth Sample Player or Synth Granulator no longer crashes.

  • Crash Fix: Fixed audio component threading issue, which could manifest in crashes during async loads.

  • Crash Fix: Audio Capture components don't crash if they are started a second time during a play session.

  • Bug Fix: Fixed an issue where Synth Sample Player would not play a Sound Wave set in Property Inspector.

  • Bug Fix: Fixed an issue where recording audio for a Sequence would keep the Editor from properly shutting down.

  • Bug Fix: Fixed issues with seeking Sound Waves on iOS.

  • Bug Fix: Fixed an issue where the Delay Submix Effect was over-allocating for delay lines.

  • Bug Fix: Fixed issue with Distance Scale with Focus Feature and Attenuation Settings.

  • Bug Fix: Fixed issue where audio was cut off abruptly when a UE4 application was moved to the background on iOS.

  • Bug Fix: Fixed regression that caused no audio to be returned when applications directly queried IVoiceCapture.

  • Bug Fix: Fixed Quality issues with mic component.

  • Bug Fix: Fixed issue where Set Mic Threshold Blueprint function would not change the threshold value on shipping builds.

  • Bug Fix: Audio now stops sounds when destroying its data.

  • New: Added settings fields, enabling iOS and Android to use specific quality indices by default on SoundCue nodes.

  • New: Added settings fields, enabling iOS and Android packaged projects to use a maximum amount of branches on a random node to reduce memory usage.

  • New: Audio assets can now be resampled when being cooked for iOS and Android.

  • New: Added BypassVolumeScaleForPriority bool to SoundBase properties, enabling specified sounds to ignore Volume Weighting during Priority Sort.

  • New: The Steam Audio Plugin now supports AMD TrueAudio Next on supporting platforms.

  • New: Added ability in C++ to register an ISubmixBufferListener with FAudioDevice to receive post-mixed audio buffers from any Submix.

  • New: Added simple source delay effect.

  • New: Added class type, enabling inherited versions of UAudioComponents to be created.

  • New: Activated reverbs will now take priority when World Settings are used (for example, no Volume Proxy is in use).

  • New: Added ability to bypass volume-weighted prioritization for sound sources and only use priority.

Automation

  • Crash Fix: Fixed crash during Editor Asset automation tests.

  • New: Added a Build Reflections option to the Resave Packages commandlet.

Blueprints

  • Crash Fix: Fixed crash when cooking with Blueprint Nativization enabled after encountering a nested, instanced, Editor-only default subobject inherited from a native C++ base class.

  • Crash Fix: Fixed crash when removing a pin that has been split from a "Make Struct" node.

  • Crash Fix: Fixed crash in Actor Component Instance Data floats, which occurred after deleting a Blueprint function.

  • Crash Fix: Fixed crash when redoing a change to a Blueprint's sub-object.

  • Crash Fix: Fixed random crashes seen when running searches in multiple global Find-In-Blueprint tabs.

  • Crash Fix: Fixed crash where the Component Instance Data Cache would try to duplicate streaming Levels when Component Delegates were bound to Actors in that Level.

  • Crash Fix: Fixed crash when deleting multiple Bookmarks selected in the Bookmarks tree view.

  • Crash Fix: Fixed occasional crash when dropping a Blueprint onto a node.

  • Crash Fix: Fixed rare crash when hovering over invalid Blueprint nodes.

  • Crash Fix: Fix crash when reloading or force deleting Blueprints open in a Blueprint diff window.

  • Crash Fix: Fixed crash when Find in Blueprints discovered a string table reference.

  • Crash Fix: Fixed crash when selecting an invalid interface class.

  • Bug Fix: Fixed memory corruption that occurs when reparenting a Blueprint to a class that already has a property of the same name as a component in the Blueprint.

  • Bug Fix: Fixed scoping issue for generated instanced sub-object reference local variables in nativized Blueprint C++ code.

  • Bug Fix: Fixed build failure that could occur with Blueprint Nativization enabled and EDL disabled.

  • Bug Fix: Set & Map fields containing converted assets are now properly emitted with proper syntax to generated C++ Blueprint class headers when Blueprint Nativization is enabled.

  • Bug Fix: Fixed bug where gameplay tag container literal created in Blueprints would not be correctly initialized, and the parent tags would not be populated.

  • Bug Fix: Blueprint Nativization bug fixes, including:

    • Ensured that Safe Context Scoped Emitters Validation Chains generate code calls to the global "Is Valid" utility function on objects.

    • Blueprint Compiler Backend class Emit Create Array Statement function now generates a proper cast on "Make Array" node inputs for enum class types.

    • Modified the Blueprint Compiler Backends' Emit Call Statement Inner function to more correctly identify an interface function call site.

    • Modified Emit Helpers' Generate Automatic Cast function to properly handle automatic casts of enum arrays.

    • Added new Component Data Utils static functions to consolidate custom init code generation for converted special-case component types (for example, BodyInstance).This ties native DSOs to the same pre or post steps as converted non-native component templates around the "Outer Generate" loop.

    • Modified Expose On Spawn Validator's "Is Supported" function to include CPT Soft Object Reference property types.

    • Modified Blueprint Generated Class' Check And Apply Component Template Overrides function to no longer break out of the loop before finding additional ICH override record matches.

  • Bug Fix: Ensured that sub-object class types are constructed prior to accessing its CDO in a nativized Blueprint class' generated C++ constructor at runtime in a cooked build.

  • Bug Fix: Fixed bug where the class of the "Get Class Defaults" node was being set to None.

  • Bug Fix: Fixed incorrect access to nested instanced subobjects in nativized Blueprint C++ constructor code.

  • Bug Fix: Fixed an ensure when exiting PIE after tracing into a BP Function Library source graph while single-stepping.

  • Bug Fix: Reduced the number of stat events generated by Blueprint execution.This reduces overhead, and makes things easier to read when using event-based 'flame graph' captures.

  • Bug Fix: Disabled ticking for Level Script Actors (if not used).

  • Bug Fix: Functions that require a World context can now correctly be used in CheatManager-derived Blueprints.

  • Bug Fix: Avoid inclusion of monolithic engine header files in nativized Blueprint C++ code.

  • Bug Fix: Resetting an array property to its default value now properly propagates to derived Blueprint's default values.

  • Bug Fix: Fixed Compositing Plugin source files to conform to updated relative include path specifications, ensuring compatibility with Blueprint Nativization.

  • Bug Fix: Integer math functions are now consistently tagged in menus.

  • Bug Fix: Fixed case where sub components with bAutoRegister false would get registered anyways.

  • Bug Fix: Fixed EDL cycle at load time in nativized cooked builds when a circular dependency exists between converted and unconverted Blueprint assets.

  • Bug Fix: Fixed array functions Add, Add Unique, Insert, and Remove, which were not correctly using the appropriate boolean value when a bit-packed boolean member function was supplied as input.

  • Bug Fix: Fixed initialization of special UMG struct types in nativized Blueprint Actor code.

  • Bug Fix: Improved handling of circular dependencies during Blueprint Nativization between converted and unconverted assets.

  • Bug Fix: You can now successfully set the category for Timeline component variables in the My Blueprint tab.

  • Bug Fix: Negate, Increment, Decrement Int, and Float macros output the desired result, even if a non-mutable pin is passed in.

  • Bug Fix: Undo of changing select node index type now works correctly.Connections to option pins are now maintained across change of index pin type.

  • Bug Fix: Blueprint pins on some nodes were incorrectly being displayed as out of scope because they were not directly under the active object being debugged.

  • Bug Fix: Message (interface) call nodes no longer display the Skeleton class name in the node subtitle.

  • Bug Fix: Fixed comments on Map and Set Add Blueprint library functions.

  • Bug Fix: Prevent "Defer Dependency Loads" from being dropped when we preload an object in another linker.

  • Bug Fix: Blueprint Native Event methods declared an interface class now implement the required Implementation method as Pure Virtual function rather than declare it as pure virtual in the UHT-generated boilerplate code, enabling Blueprint classes that implement a native C++ interface declaring one or more Blueprint Native Event methods to be nativized.

  • Bug Fix: Significantly optimized performance when refreshing the components tree in the Actor details panel.

  • Bug Fix: Fixed deterministic cooking issue by avoiding use of Make Unique Object Name when instantiating component templates.

  • Bug Fix: The compilation manager avoids purging old classes until they are being recompiled, fixing an issue that could cause Construct Object to fail to assign values on construction.

  • Bug Fix: Fixed existing placements of nativized Blueprint Actors with a non-zero (legacy) root component scene transform at the CDO level.

  • Bug Fix: Setting a Class Blueprint variable will correctly enable unloaded Blueprint children to be selected in the picker.

  • Bug Fix: When Blueprint debugging during PIE, step over and out commands no longer cause the mouse pointer to jump back to the game viewport after each step.

  • Bug Fix: Breakpoints on nodes that are connected to "For Each" Loops are no longer skipped.

  • Bug Fix: Soft Object / Class reference variables now correctly validate the type of an asset that is dragged or pasted into them, which prevents making invalid references from the Editor.

  • Bug Fix: Soft Object / Class references stored in Blueprint function local variables are now correctly tracked when Blueprints are saved, which means that they will be properly fixed up when assets are redirected, and may pull more content into your cook if you have unused local variables.

  • Bug Fix: Editable Blueprint events now add 'const' to array type and reference parameter properties when compiled.

  • Bug Fix: Sub-Anim instance nodes can now orphan pins as expected.

  • Bug Fix: Blueprints will no longer warn on load about member get nodes for members that have been removed if they are just on the canvas and not be used during compilation.

  • Bug Fix: Fixed a bug where Blueprint async task node names could not be redirected after a function rename.

  • Bug Fix: Blueprints are now reparented before replacing references when using the 'delete and replace references' tool, making the delete and replace references workflow more reliable when performed on Blueprint assets.

  • Bug Fix: Prevent struct properties with an Identical type trait (for example, Gameplay Tag Container) from showing up as different in a Blueprint diff, even if they were unmodified.

  • Bug Fix: Fixed a typo in name validation error messages where the name was already in use.

  • Bug Fix: Keyboard navigation when selecting an object or asset from a Blueprint node now works correctly.

  • Bug Fix: Fixed issue where reroute nodes inside macros could break AutoCreateRefTerm function parameters.

  • Bug Fix: Fixed an invalid child Actor template cast in nativized Blueprint code when the child actor class type is a converted Blueprint class asset.

  • New: Exposed vertex and triangle counts for Skeletal Meshes to Blutilities.

  • New: Exposed collision complexity to Blutility scripting.

  • New: Exposed more static mesh functionality to Editor scripting.

  • New: Add new parameter UX on a Blueprint delegate is now at parity with Blueprint functions.

  • New: Added the ability for Blueprint async task nodes to have additional output parameters, which can be added to the exposed factory method.

  • New: Added several Blueprint methods for reading color values from render targets.

  • New: Added a Blueprint method (Import File As Texture2D) for loading an image file from disk and creating a texture from it.

  • New: Exposed Blueprint nodes for "Get Number Verts" and "Get LOD Screen Sizes" functions for Static Mesh exposed in the Static Mesh Utility Library.

  • New: Added UV1, UV2, UV3 inputs to Procedural Mesh Component.

  • New: Pins for Blueprint async task nodes now display Tooltips consistent with other functions.

  • New: By default, the "For Each Enum" node will now skip over values marked as 'Hidden' in new placements, additionally, a new input pin has also been added into the "Advanced" section on the node, enabling users to control this behavior if needed.

  • New: Select node now displays "Add Pin" button.

  • New: Display "Object Reference" instead of "Object Object Reference", and display "Soft Object Reference" instead of "Object Soft Object Reference".

  • New: Select node now resets pins to wildcard if none of the pins are in use.

  • New: Execution flow, Blueprint call stack, and Blueprint watchpoint viewer refactored into a single Blueprint Debugger tab.

    • The call stack viewer now indicates whether the call stack is stale, and the watch point viewer layout now matches the call stack viewer.

  • New: Modified the watch window to provide more clarity for when watches have valid information versus stale watch values.Watches in the window are only valid when Blueprint execution is paused, and when execution is paused, the window will update to show the values for all Blueprint instances in the current call stack.

  • New: Exposed "Get Local Role" function to Blueprints, returning the value of the "Role Member Property."

  • New: Enable modification of camera shake oscillators at runtime in Blueprints.

  • New: Exposed the Game Mode class' "Player Can Restart" function to Blueprints.

  • New: Exposed PlayerController class' "Can Restart Player" function to Blueprints.

  • New: Exposed Playerm Camera Manager class' "Client Simulating View Target" boolean to Blueprints.

  • New: "Last Hit By" reference on Pawns now marked as Blueprint Read Only.

Core

  • Crash Fix: Fixed a threading crash with non-scoped Low-Level Memory tracking (seen in Android GL tracking).

  • Crash Fix: No longer crashes when disabling a cooling down tick function during a pause frame.

  • Crash Fix: Fixed a Startup crash that could happen depending on file compilation order.

  • Crash Fix: Deserializing tagged property containers containing bad elements no longer crashes.

  • Crash Fix: Fixed a crash in when allocating memory with the Malloc profiler.

  • Crash Fix: CSV Profiler no longer crashes on exit.

  • Crash Fix: Fixed crashes caused by defining UObjects with certain types of constructors.

  • Crash Fix: Fixed a Slate crash related to the Async Loading Thread.

  • Crash Fix: Fixed crashes when converting filenames to long package names and when running commandlets.

  • Crash Fix: Fixed A crash while destroying global Engine objects during shutdown.

  • Bug Fix: Fixed some Pak file code to use an int64 instead of int32 to handle large pak files.

  • Bug Fix: Undo/Redo history in Editor now works as expected.

  • Bug Fix: Fixed a buffer overrun when copying a context string in Malloc Leak Detection.

  • Bug Fix: Changed the internal Object Array to not be allocated up front.This fixes strange OOM reports on Editor startup.

  • Bug Fix: Made TCircularQueue thread-safe.

  • Bug Fix: MediaPlayer module no longer loads on non-game threads, as this could lead to thread safety issues when the Async Loading Thread was enabled.

  • Bug Fix: Corrected a buffer overflow debug logging code.

  • Bug Fix: Fixed abbreviations not displaying properly in Editor dialogs.

  • Bug Fix: Plugged a potential LinkerLoad leak when a package that still has a linker associated with it is being destroyed.

  • Bug Fix: Calling Reset on a String sometimes now always results in a null-terminated String.

  • Bug Fix: Unchanged Levels are no longer included in Pak patches.

  • Bug Fix: When Blueprint Clustering is enabled, the Widget Blueprint template will also be added to the parent cluster when the template is being replaced.

  • Bug Fix: Asset encryption settings are now being properly parsed from .ini files by UBT.

  • Bug Fix: Enabled C++ 14 usage of decltype(auto) in TTuple.This preserves the Engine's ability to compile in C++ 11.

  • Bug Fix: Corrected Format Int To Human Readable function for values greater than 999999 or negative.

  • Bug Fix: Asset redirectors can now redirect from a parent class to a child class, which can happen when using Consolidate Assets.

  • Bug Fix: Editor tutorials and related content are not accidentally included in a cooked build.References loaded from editor project settings are now treated as Editor-only.

  • Bug Fix: Fixed issue where the cooker could incorrectly load an asset registry cache built with "-game", causing missing dependency information.

  • Bug Fix: "-cookonthefly" and "-iterate" can be used at the same time, to avoid recooking unchanged packages when cooking on demand.

  • Bug Fix: Fixed asset registry memory tracking in memreport (and added some new fields).

  • Bug Fix: Corrected int64 -> int32 Archive offset truncation in several places.

  • Bug Fix: Fixed a Serialization History bug that occurred when trying to serialize 0 bytes.

  • Bug Fix: Fixed some bad offsets in non-deterministic cook report.

  • Bug Fix: Stats chunked array will now use smaller blocks to prevent malloc deadlocks when running in the editor with TBB allocator.

  • Bug Fix: Corrected stack space errors in generated code in Debug builds caused by the amount of code generated by very large UCLASSes.

  • Bug Fix: Moved level actor cluster creation to after actor construction scripts have been re-run to make sure all actor references are processed by the cluster creation code.

  • Bug Fix: Fixed non-determinism of the Raw PCM Data Size property of Sound Waves during cooking by making it transient.

  • Bug Fix: Fixed InitCommandArgs to parse command lines and handle errors gracefully.

  • Bug Fix: Bit Writer default constructor now initializes ArIsPersistent and ArIsSaving variables.

  • Bug Fix: Corrected a lot of inconsistent warning output and log categories while running the PkgInfo commandlet.

  • Bug Fix: Solved threading deadlock caused by the rendering thread trying to minimize the window after being ejected from full screen on Windows platform.

  • Bug Fix: Fixed a potential buffer over-read when converting UTF-8 characters to TCHARs when provided with invalid UTF-8 data.

  • Bug Fix: Corrected Get Len function for Strings.

  • Bug Fix: Explicitly defined the DEPRECATED_FORGAME macro only for non-engine modules in UBT.

  • Bug Fix: Fixed LoadEngineClass local to "UnrealEngine.cpp" to check class redirects before falling back to default class instance.

  • Bug Fix: Added initialization of deprecated Slate Brush member Tint_DEPRECATED, which was causing deterministic cook issues.

  • Bug Fix: Linker no longer incorrectly outputs warnings when LOAD_Quiet has been passed as a flag to the load call.

  • Bug Fix: Fixed asserts being fired when calling TBaseStructure's Get function while saving packages.

  • Bug Fix: Error codes are no longer discarded from zlib inflate.

  • Bug Fix: Fixed a compile error in UHT when declaring a function which returns a UEnum pointer.

  • Bug Fix: Calling the auto-generated Get Outer function on a CDO will now ensure and return null rather than returning the containing Package cast to the named class.

  • Bug Fix: Corrected export outer name when reporting differences in the export map for deterministic cooking

  • Bug Fix: Fixed hot reload of modules which were unloaded, changed, then compiled and reloaded.

  • Bug Fix: Solved several bad uses of Script Map Helper and Script Set Helper, which could have skipped elements during iteration.Affected searching for subobjects, exporting JSON, copying properties in the editor and property value iteration.

  • Bug Fix: Made Archive's Reset function public and virtual so it can be overloaded.Bit Writer's Reset function is now an overload of that function.

  • Bug Fix: Changed new anonymous object names to be based on an incrementing suffix per-outer, rather than per-package to fix some non-determinism issues when cooking.

  • Bug Fix: Fixed log output when displaying the number of skipped differences when diffing cook for deterministic cooking

  • Bug Fix: Fixed UTF-8 encoding detection in FXmlFile.

  • Bug Fix: Clarified Get Allocated Size comments in containers to make it clear that they only count direct allocations made by the container, not allocations made by the contained elements.

  • Bug Fix: Fixed the 4096 char limit on FParse::Value.

  • Bug Fix: Clarified the misleading error message when omitting the WithValidation specifier on a UFUNCTION(Server).

  • Bug Fix: Disabled warning C4868 in Visual C++ builds, which warns about the evaluation order of elements inside braced initializer lists.

  • Bug Fix: Made sure that lazy object pointers are only fixed up for Play In Editor in actual PIE worlds.

  • Bug Fix: Several fixes to ensure deterministic material cook results, mainly centered around ensuring ShaderMaps are consistently serialized regardless of cook order.

  • Bug Fix: Fixed verify cluster assumptions logic so that it also checks if some other cluster root object referenced by the current cluster is referenced through 'mutable' objects lists before asserting.

  • Bug Fix: Hitch detection will now be suspended when synchronously loading a new map.

  • Bug Fix: Disabled 'Took X.Y ms to ProcessLoadedPackages' warning in the editor so it doesn't show up when cooking.

  • Bug Fix: UFUNCTION metadata is once again correctly prevented when it is for a function of the same name as one in the parent class.

  • Bug Fix: We now destroy any world-owned particle FX on replay timeline scrub, since they shouldn't persist.

  • Bug Fix: Restored assertion message logging just before breakpoint is hit in Visual Studio output window.

  • Bug Fix: Overrides of const functions correctly inherit the const-ness of the parent function.

  • Bug Fix: Corrected issue where Property Value Iterator would skip value properties when used on a map with struct keys and direct values.

  • Bug Fix: Fixed sublevels not being recognized as properly loaded during cooking, which caused non-determinism issues.

  • Bug Fix: Solved non-determinism in Widget Tree when cooking.

  • Bug Fix: Meshes with painted vertex colors that did not use static lighting will no longer be cooked differently each time when Non-deterministically cooking.

  • Bug Fix: Fixed barycentric computation case causing a check.Now outputs an invalid coordinate so the caller can resolve issues.

  • Bug Fix: Default values specified in UFUNCTION metadata for TSubClassOf parameters that do not specify the full path name will now attempt to determine the desired class from the short name.

  • Bug Fix: Trying to convert a Soft Object reference to a hard reference during async load will throw a useful error instead of silently failing.

  • Bug Fix: Reference Chain Search class used by 'obj refs' command now reports all reference chains properly.

  • New: RHI Command List Enqueue Lambda method which can be used to enqueue arbitrary tasks on the RHI thread from the render thread, without having to write lots of bolierplate RHI Command functor classes.

  • New: Added "-csvdemostarttime" and "-csvdemoendtime" command line arguments to automate CSV profiles when running replays.

  • New: On dedicated servers, .CSV profile capture writing completion can now be indicated with an empty *.complete file that is also written out.

  • New: The .CSV profiler now tracks used physical and virtual memory usage by default.

  • New: Hang detector has a duration multiplier to allow extending the hang timeout on loading screens etc.

  • New: Added frame index named events for the game, render and RHI threads.This makes it possible to track end-to-end frame progress in platform-specific CPU profilers.

  • New: FPS Charts now can output stats assuming a 20 hz framerate.

  • New: The CSV profiler is now always compiled in on the server.

  • New: The CSV profiler can now handle both int32 and float stats.

  • New: Async helper for executing functions on a given thread pool

  • New: Added "debug hitch" and "renderhitch" console commands to sleep game or render threads.Also added "debug spin" and "renderspin" console commands that spin in a tight loop instead of sleeping.

  • New: Support for target configuration whitelist/blacklist support for modules/plugins.This could permit things like a Plugin containing debug/development code being excluded from a shipping build for testing purposes.

  • New: TSharedPtr can now be used as a bool in conditionals.

  • New: Enabled the master data cryptography for iOS and Android platforms, meaning they'll now respect the project settings.

  • New: Made Class Cast Flags and Property Flags enumerated types are now visible in the Visual C++ debugger.

  • New: The ability to get the actual filename of the log file Output Device File writes to.

  • New: Crypto Keys changes:

    • Removed UAT command line params for encryption.Centrally configured by the editor settings now.

    • UAT staging now creates a small json file containing the keys and settings used for encryption and signing and stores it in the build metadata.

    • UnrealPak can be told to get its encryption settings from a json crypto file with "-CryptoKeys=".

    • UnrealPak can now accept a "PatchCryptoKeys=" parameter which gives it a filename to a cryptokeys json file that it can use to unpack the patch reference paks.

  • New: When parsing crypto settings, UBT will always load legacy data first, then the new system can override it.Provides the same key backwards compatibility that the editor settings class gives.

  • New: Format string type checking added to output log code.

  • New: constexpr support to Variant's GetType function.

  • New: Initializer list support added to TMap.

  • New: Support for brace-initialized default member initializers in UnrealHeaderTool.

  • New: Support for writing specific log channels to their own files.Command line usage is as follows, including quotation marks:

    • -LogCategoryFiles="Category1=Filename1, Category2=Filename2"

  • New: Added support for CoreRedirects when resolving Soft Object Paths.Works for class, object, and module redirectors.

  • New: Reduced asset registry memory in cooked builds by stripping out searchable names and empty dependency nodes by default, modifiable with [AssetRegistry] .ini settings.

  • New: AvfPlayer on MacOS and iOS now has added support for streaming media.

  • New: Added a Property Temp Val helper class for owning a temporary instance of any UProperty value, which can be exported as text for later inspection.

  • New: Archive will now log its name when complaining about corrupted bool values.

  • New: Added reporting of absolute byte offsets into packages when detecting differences in non-deterministic cooks.

  • New: A non-determinism warning appears if we have imported a legacy Static Mesh Component during a cook.

  • New: A non-determinism warning has been added when importing a legacy Reflection Capture Component during cook.

  • New: Added a new engine CVar, "s.PriorityLevelStreamingActorsUpdateExtraTime", for controlling how much extra time is spent registering actors after streaming in a level when in "priority loading mode".The default is 5 ms.

  • New: Created a level streaming CVar, "s.MaxLevelRequestsAtOnceWhileInMatch" (defaults to 0).When non-zero, this limits the number of level load requests when the player is actively playing in a match.

  • New: Command line overrides for cook diff settings: -MaxDiffstoLog=x overrides maximum number of differences to log per file -HeaderDiffs forces cook commandlet to show differences for header files (.uasset files) -IgnoreHeaderDiffs ignores header files' differences.

  • New: Added interpolation functions for quaternions.

  • New: Implemented a generic Levenshtein distance to core algorithms.

  • New: Deterministic cooking tests will now also log out Name/Import/ExportMap items that moved within the file

  • New: Diffing cooked packages will now dump package header differences in NameMap, ImportMap and ExportMap

  • New: Constructing a new Weak Object Pointer at cook time will generate a non-determinism warning.

  • New: The window title bar now displays the Unreal Engine 4 build configuration (Debug, Development or Test) in non-Shipping configurations.You can customize this in your project settings.

  • New: A non-determinism warning is generated when upgrading clothing assets during a cook.

  • New: Static Memory Reader supports reading from memory specified by a pointer and size.

  • New: Added a before-and-after dump of values from certain property types which have changed during a deterministic cook.

  • New: Natvis visualizers for Frame Number, Frame Time, and TRange.

  • New: Math now contains a Divide And Round Nearest function.

  • New: Async support for single-threaded applications.

  • New: Custom version mismatch messages now include the friendly name of the custom version in addition to the tag GUID.

  • New: Unreal Header Tool now emits an error if ExpandEnumAsExecs metadata references a parameter name that is not a parameter to the function.

  • New: Changed the uncompiled modules report when starting the editor to display module names instead of DLL filenames.

  • New: PkgInfo commandlet can now dump all the info to a separate file for easier diffing with "-dumptofile=filename" argument.

  • New: PkgInfo commandlet can now dump information for unversioned packages

  • New: PkgInfo commandlet can now dump the list of properties that have been serialized for exports.This can be used for comparing cooked assets when investigating deterministic cooking issues.

  • New: -diffonlybreakoffset has been added to provide a way to break into the debugger when serializing data at a particular absolute offset during a -diffonly cook.

  • New: Functionality to track and log the debug name stack for diffonly cooks.

  • New: Randomize the package order when doing diffonly cooks, which can be explicitly disabled via -DIFFNORANDCOOK.

  • New: Allocator (TNonRelocatableInlineAllocator) which eliminates conditional logic from GetAllocation(), at the expense of not being trivially relocatable.This provides a significant performance increase for allocators that are dereferenced frequently, but prevents instances of it being stored inside other allocators (which are expected to be trivially relocatable by default).

  • New: Get Assets By Tags (Asset Registry function) optimizes tag look-up when you can have several potential values.

  • New: Added the ability to dump all objects to log before cooking a package while doing deterministic cook tests to help with tracking problems between deterministic cook tests.

  • New: Get Device Temperature Level function. iOS returns a value between 0 and 3, matching the values of the Temperature Severity enumerated type, while Android returns a temperature in Celcius, matching what was already being retrieved from the BatteryState.

  • New: Added an error message directing the user to the problematic file when the XML parser fails.

  • New: USE_SMALL_DELEGATES, USE_SMALL_MULTICAST_DELEGATES and USE_SMALL_TFUNCTIONS macros which switch from an inline allocator to a heap allocator for these types when defined to 1 at a project level.These will trade reduced object footprints for extra heap allocations.

  • New: The "-SaveForDiff" command line argument makes it possible to save packages that are different from their disk versions when running deterministic cooking tests.

  • New: Exec command CoreUObject.AttemptToFindUninitializedScriptStructMembers that can be used to try to find uninitialized reflected pointers in in USTRUCT() declarations

  • New: Directories To Never Cook and Directories To Always Cook in the packaging settings now support Plugin and Engine directories.It will convert from the old format of relative to game content to the new /Game/ format on startup.If you have any game-specific code accessing this you will have to take this into account

  • New: Exposed an optional name to Create Dynamic Material Instance.

  • New: Added a function, Is Async Loading Suspended, to check if async loading is currently suspended.

  • New: Enabled the overloading of functions which take TFunction or TFunctionRef of different signatures when the lambda being passed to them will unambiguously bind to only one of the overloads.

  • New: Changed Visual C++ debugger visualization of TFunctions to allow a lambda to be right-clicked on and the source jumped to by selecting "Go To Source Code".

  • New:MallocStomp can now be enabled on desktop platforms using the "-stompmalloc" command line argument.

  • New: Initial implementation of tracing profiler to show CPU and GPU on the same timeline.Use "TracingProfiler frames=N" console command to trigger a capture of the next N frames.Trace is saved to disk as a JSON file into the "Saved/Profiling/Traces" directory.Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing).

  • New: New parameter to "obj list" command, "-INSIDECLASS=classname", filters objects that are inside of all objects of the specified class.

  • New: Non-determinism is reported when changes to CDOs and archetypes are made by Pre Save during a cook.

  • New: TDefaultReferenceCollector and Simple Reference Processor Base classes to extract common code for classes that are used by TFastReferenceCollector

  • New: Option to save non-deterministically cooked assets to a folder specified by "-diffoutputdir", when differences are detected during a "-diffonly" cook.

  • Improvement: Made a minor optimisation to the deserialization of bad properties by using Seek() instead of skipping one byte at a time.

  • Improvement: Archetype pointer will now be cached to avoid locking the object tables when acquiring its info.It should also be faster this way regardless of any locks.

  • Improvement: Optimized lazy pointer fixup when starting Play In Editor.It should be up to 8x faster now.

  • Improvement: Optimized asset registry filter intersection.

  • Improvement: Moved PostLoad to the async loading thread where possible.This reduces the time the main thread spends on PostLoad by about 20%.

    • Added a .ini setting to disable PostLoad on ALT globally.In the [/Script/Engine.StreamingSettings] section, add "s.AsyncPostLoadEnabled=True".

    • Added command line param overrides: "-NoAsyncPostLoad" "-AsyncPostLoad"

  • Improvement: Pak Signing:

    • Unified naming of pak precacher and signed archive reader signature check functions to make it easier to search for them in crash reporter.

    • Formatted the signed archive reader output to match the pak precacher.

    • Optimization for pakprecacher signature checks.Instead of locking the cached files mutex for every decoded signature, take a local copy in blocks of 16.

  • Improvement: Crypto:

    • AES keys that are too long or short (need to be 32 bytes) will now emit a warning when being parsed, and be truncated or expanded before adding to the crypto settings.

    • Signing keys will emit an error when they are too long (greater than 64 bytes).

    • Unrealpak will still assert when invalid settings are passed via the other mechanisms (command line or -encryptionini mode).

    • Settings via the crypto .json file should now be sanitized and not cause issues.

  • Improvement: Headers for compressed blocks in a pak file now contain relative offsets, reducing the amount of data entropy between builds and improving patch efficiency.

  • Improvement: Use-after-free detection mechanism and physical memory usage of MallocStomp on Windows.

    • MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part.Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used.

  • Improvement: Unhashing unreachable objects will now also be done incrementally, just like the purge phase of Garbage Collection.

  • Improvement: Faster GUID creation.Previous method used a system Date / Time system call, which could be slow on some platforms.This change can decrease GameThread time on those platforms.

  • Deprecated:Direct access to Archive members Ar Is Text Format, Ar Want Binary Property Serialization, Ar Force Unicode, Ar Is Persistent, Ar Is Saving, Ar Is Transacting, Ar Licensee UE4 Ver, Ar Engine Ver, Ar Engine Net Ver and Ar Game Net Ver private.These should now only be accessed via their associated member functions.

  • Removed: Packaged UE4 applications that you distribute will no longer send anonymous usage data to Epic.Previously, this had to be disabled in project settings.

Garbage Collection
  • Crash Fix: Fixed a crash in Garbage Collector, when an object that was still being loaded was added to GC cluster.

  • Crash Fix: No longer crashes after a skeletal mesh that was already in a GC cluster created a new BodySetup object in Garbage Collector.

  • Crash Fix: Fixed a crash with async loading code referencing objects that were marked as Pending Kill in Garbage Collector.

  • Bug Fix: Fixed a possible hang when worker threads are preventing the Garbage Collector from running.

  • Bug Fix: Serializing object will now be passed to the Garbage Collector so that it can be logged in case the referenced object is thrashed.

  • Bug Fix: Global Garbage Collector Sync Object no longer wastes cycles in non-game threads while waiting for Garbage Collector to finish running.

  • Bug Fix: Objects that still haven't been through Post Load code will be added to Garbage Collector Clusters as 'mutable' objects, so that clusters can prevent them from being destroyed too early.

  • Bug Fix: Fixed Garbage Collector Clustering issues with Async Loading Thread enabled.

  • Bug Fix: Parallel Garbage Collection on the Mac is no longer turned off by default.

  • Bug Fix: Added code to detect hangs and log objects preventing the Garbage Collector from finishing when doing full purge in cooked builds,

  • Bug Fix: When async loading, GC Clusters will be created after packages have been processed to avoid situations where some of the objects that are being added to a cluster haven't been fully loaded yet

  • New: The Garbage Collector and the Async Loading Thread now coordinate timing, with the Async Loading Thread attempting to finish its current work to give GC a chance to run whenever GC sends a notification that it would like to run.The Async Loading Thread is more stable as a result.

  • New: Added "gc.ForceCollectGarbageEveryFrame" console variable that triggers a forced GC every frame.

  • New: Async package names will now be dumped to log when reporting Object references in Garbage Collection.

  • New: Added the ability to sort clusters by name/object count/mutable object count/referenced clusters count when dumping them with "gc.ListClusters" command.

  • New: Added the ability to toggle incremental BeginDestroy with "gc.IncrementalBeginDestroyEnabled".

  • Improvement: Set the minimum GC cluster size to 5 with "gc.MinGCClusterSize" console variable so that GC doesn't have to process micro clusters, which are more expensive to process than individual objects.

  • Improvement: Optimized Mark Phase of Garbage Collection by up to 10ms (depends on the number of objects and the number of threads available) by making it run in parallel and removing a huge array preallocation which we didn't need.

  • Improvement: Garbage Collector assumption verification should now be up to 4 times faster.

  • Improvement: GC Cluster creation will now be time-sliced to avoid hitches on the game thread when streaming packages.

Editor

  • Crash Fix: Fixed a crash when simplygon failed to generate LOD for Skeletal Mesh.

  • Crash Fix: Fixed a crash when saving HLOD assets if some have not been fully regenerated.

  • Crash Fix: Fixed an occasional Garbage Collector crash in HLOD proxy generation.

  • Crash Fix: Fixed a crash when the HLOD outliner is open in PIE when actors are destroyed.

  • Crash Fix: Generating HLODs for mesh components with no mesh assigned no longer crashes.

  • Crash Fix: Generating HLODs from child actor components no longer crashes.

  • Crash Fix: Fixed a crash when removing HLOD setup asset.

  • Crash Fix: Fixed a crash when viewing some complicated material instances generated by the HLOD system.

  • Crash Fix: Fixed a crash when overwriting existing level during level save as.

  • Crash Fix: Fixed a circular referencing issue causing the conversion of a BSP to a static mesh to crash.

  • Crash Fix: Fixed a crash when re-importing an animation and choosing a skeleton for the anim sequence.

  • Crash Fix: Fixed FBX import crash.

  • Crash Fix: Fixed a crash in Mac editor when copying unusual characters in the output log.

  • Crash Fix: Generating HLODs in a map with sublevels that also have HLODs no longer crashes.

  • Crash Fix: Fixed a crash occurring when Propagating Vertex Colors to Asset's source mesh.

  • Crash Fix: Using "Save As" on maps having more than 2 GB of build data no longer crashes.

  • Bug Fix: Fixed incorrect group name being returned by Get Group Name function for stat groups, causing incorrect editor tooltips.

  • Bug Fix: Fixed "Check Out Assets" window not properly receiving keyboard focus.

  • Bug Fix: Fixed bug causing "HighResShot" command to capture shots at a lower resolution in Immersive Mode.

  • Bug Fix: Scene Capture Component 2D properties, Hidden Actors and Show Only Actors, are no longer displayed in the Scene Capture Component 2D's Blueprints layout panel, but are still available on Blueprint nodes.

  • Bug Fix: Fixed an asset registry size calculation bug.

  • Bug Fix: Fixed Play in Editor recorded replays not writing their last marker when the user goes to end the simulated instance while recording.

  • Bug Fix: Fixed issue with out of range UV sampling in material baking.

  • Bug Fix: Fixed mesh merging producing incorrect UV mapping for mirrored meshes.

  • Bug Fix: Fixed texture binning UV transforms not being correct according to the gutter settings.

  • Bug Fix: Removed the two-actor limit when generating HLOD hierarchies.

  • Bug Fix: Fixed a bug in the editor where a user's Editor Startup Map setting would be ignored if the project had no default startup map set.

  • Bug Fix: Collision generation is now disabled by default for HLOD proxy meshes.

  • Bug Fix: Fixed a memory leak in FBX Scene during import.

  • Bug Fix: Fixed extra re-allocation of memory buffer holding files during asset import.

  • Bug Fix: Fixed case in Perforce source control code where the server available flag was set even when the server was not successfully connected.

  • Bug Fix: Output Log suggestions list is now clamped to the work area width of the monitor that hosts the widget.

  • Bug Fix: Fixed an issue where saving a sub-level level would cause Map Build Data to be deleted.

  • Bug Fix: Selected joints can now be removed even after bone simplification fails.

  • Bug Fix: HLOD generation commandlet now caches any shaders it generates.

  • Bug Fix: Fixed infinite loop in Simplygon mesh reduction when a LOD actor is encountered with no valid meshes.

  • Bug Fix: HLOD rebuild resave packages commandlet now does not pre-checkout levels.

  • Bug Fix: Removed spurious Simplygon errors when rebuilding HLODs.

  • Bug Fix: Popping the view out of a locked actor and manipulating the view will no longer jump to the previous "look at" location.

  • Bug Fix: Fixed static mesh simplification with input meshes that have nearly singular triangles.Applies to Static Mesh LODs.

  • Bug Fix: A new level now prompts to be saved when lighting or build data has been modified.

  • Bug Fix: Fixed property table not working with multi-line editable text.

  • Bug Fix: Per-instance added components marked as editor only will now always display in the component tree.

  • Bug Fix: Fixed macOS Magic Mouse zoom in world composition editor.

  • Bug Fix: We now display a Blueprint's parent Blueprint class in the content browser when hovering over it.

  • Bug Fix: Fixed not being able to enter simulate more than once in a row.

  • Bug Fix: Corrected UV generation for merged HLOD meshes.

  • Bug Fix: Fixed expand/collapse issues and performance issues for details customizations which were using external properties.

  • Bug Fix: Updating the max on the size of texture the material proxy now generates successfully.The old max value could cause int32 overflow.

  • Bug Fix: Merged, negative-scaled meshes now have materials mapped correctly.

  • Bug Fix: Fixed emissive scale not being set correctly during material baking.

  • Bug Fix: Fixed bug where "Merge Actors" or HLOD proxies result in too many mesh sections.

  • Bug Fix: FBX exporter now supports non-uniform scale scene transforms for skeletal meshes.

  • Bug Fix: Fixed undo spam when changing colors in the gradient editor.

  • Bug Fix: Added Client target options for iOS, TVOS and Android ETC1a flavor.

  • Bug Fix: Key Up triggers no longer hit the disk during PIE sessions.

  • Bug Fix: Editor MacOS main menu now correctly displays unicode items for keyboard shortcuts.

  • Bug Fix: Shared DDC is now correctly being used for installed engine builds.

  • Bug Fix: Niagara Editor fixes:

    • You can only Add Parameters in graphs where it makes sense to do so.Promoting variables also follows the same logic.

    • Fixed community issue where you could connect an input and output node and encounter a check that the warnings variable array was no longer the same size as the variables array.

    • Multiple fixes to the Niagara Spline Data Interface.It is currently only supported on CPU VM.

    • Niagara Systems now run their Update on the first frame with a small delta time so that they can begin spawning immediately after creation.This also simplifies Emitter and System Spawn logic by guaranteeing that if you want to animate a value, you don't have to special-case the first frame.

    • Added support for dynamic inputs that don't have any external inputs.

  • Bug Fix: Niagara Editor Houdini fixes:

    • Added a version to Niagara Data Interface Parameters CS Houdini CSV to avoid further issues when deserializing them.

    • Fixed a bug causing no points to spawn when all points in a file spawned at the same time value.

    • Removed unneeded tests/restriction when calling functions requiring time values on files without time values.When no time value is in the file, it is treated as time 0.

    • Fixed differences between GPU/CPU code.

    • Fixed special attributes column for Vectors in the CSV file not properly named after being expanded.

    • Moved the logic of Get Point IDs To Spawn At Time to Houdini CSV so the function can be called from Blueprints.

  • New: Datasmith now imports 3ds max object user-defined properties and CAD metadata as Unreal readable metadata through the Datasmith User Data.

  • New: Added a way to generate diffs from editor transactions

  • New: Added support for relative asset source paths in content plugins.

  • New: Built Data is now deleted with map files.

  • New: Added support for importing grayscale PSD images.

  • New: Implemented vertex welding threshold in the quadric simplifier.

  • New: The FBX importer converts "LODX_" prefixes into "LodGroup".

  • New: Added a "Reimport All" feature for both static and skeletal mesh.Reimport All will reimport the base LOD and also reimport all custom LODs and regenerate the generated LODs.

  • New: Added source import filename per LOD for static meshes.

  • New: Added HLOD "Save All" button.

  • New: Added UV gutters to material atlasing when merging meshes.

  • New: Enabled Blueprint Read Write for the bool Enable Auto LOD Generation.

  • New: Added the ability to strip UV channels from merged meshes.

  • New: Added new 'lowest detail LOD' setting to mesh merging & allowed base material override.

  • New: Added a property on Primitive Component to be excluded from a specific HLOD level.This behavior can be enabled inside of the HLOD level settings with the "Allow Exclusion" boolean.

  • New: Added the ability to set base material for Hierarchical LOD proxy materials.This can be done in Project Settings, HLOD Setup asset and world settings.

  • New: Added -csv parse option to the OBJ LIST command.

  • New: Added new static mesh instancing tool.

  • New: Added editor scripting utilities plugin.

  • New: Added option to auto remap morphs when generating LODs.

  • New: Made it possible to get the value address of a struct property via Get Value Data for struct detail customizations.

  • New: Added info/warning and error message storage to all the source control operation structures so additional information can be made available via the Source Control Operation Get Result Info function.

  • New: Ensured that the Source Control Provider's Execute delegate is called on initial connection even if it fails immediately.Modified Perforce, Git and Subversion source control providers to do the same.

  • New: Added a delegate to the function Source Control Windows Choose Packages To Checkin that gives info for result, result description, files added, files checked in and flag indicating whether files were checked out again.Also added result info to the function Source Control Windows Prompt For Checkin.

  • New: You can now label the colors stored in the theme bar of the Color Picker.Right-click on any color to give it a label.

  • New: HLOD now minimally rebuilds according to whether source data (actors, materials, meshes etc.) has actually changed.

  • New: Tweaked numbers to maintain previously perceived wire thickness in various graph-based editors.

  • New: Added support for clipping ProxyLOD geometry.Clipping volumes will now be supported by the HLOD generation system allowing the user to specify regions to be clipped from the proxy geometry.

  • New: When generating distant proxy geometry (for example HLOD), added hole filling and the ability to specify the base color that will be used for proxy geometry that can't be associated with source geometry (e.g. a newly closed window or door).

  • New: Added ability for HLOD levels to reuse clusters of the previous HLOD level.For example, HLOD level 1 can have the same clusters as HLOD level 0.

  • New: Added a command line argument to specify a working directory for shader compilation.For example, "-ShaderWorkingDir=D:\ShaderWorkingDir".

  • New: Added the option to close tabs to the right of the active tab.

  • New: The experimental ProxyLOD system now has support for generating split normals on hard edges, and additionally selecting the method used for normal calculation.

  • New: Added import/export of Static Mesh user-defined FBX properties as metadata.

  • New: Linear Color Curves now create with 2 keys at 0 and 1, and you can shift-click to add both a color and an alpha key.

  • New: You can now edit the H,S,V of a color curve in the curve editor.This fixes the curve in-editor not reflecting the sRGB color.

  • New: You can now create, playback and manipulate Geometry Cache Tracks when Geometry Cache Components are added to the Sequencer.

  • Improvement: Mesh merging uses available texture space better.

  • Improvement: Optimized editor startup time.

  • Improvement: Improved the experimental ProxyLOD system to make it more robust and eliminate a potential hang.

  • Improvement: Optimized skeletal mesh import speed for larger meshes.

  • Improvement: Scene outliner is now more performant. (especially during Play In Editor)

  • Improvement: HLOD workflow:

    • Levels now do not get dirtied unless actual changes are made to the LOD actors.

    • UI reworked to promote standard workflow (i.e. regeneration without dirtying the level).

    • UI states now better expose available options.

    • Made horizontal/vertical arrangements work better.

    • Buttons are now coded to their 'danger level'.

    • LOD selection now follows the dropdown convention found in other parts of the editor.

  • Improvement: Removed extra file read into memory buffer during FBX import.

Content Browser
  • Crash Fix: Fixed a crash when content hot-reloading the build data for the current world, or a world with streaming sub-levels.

  • Crash Fix: Fixed a crash after attempting to content hot-reload a package that is too new.

  • Crash Fix: Saving over the level you're about to load no longer crashes.

  • Bug Fix: Fixed "ghost asset" in Content Browser when an asset is added and renamed before the Recently Added Assets list had a chance to be processed.

  • Bug Fix: Fixed content browser favorites making config files very large.

  • Bug Fix: Updated config file to keep folder color in sync.

  • New: Added "Search Asset Class Names", "Search Asset Paths", and "Search Collection Names" toggles to the Asset View options.These options allow the user to further filter their search results and appear under a "Search" header in the "View Options" panel on the bottom right of the Content Browser / Asset Picker.

  • New: Added "LODs" searchable tag to "Skeletal Mesh" assets.

  • New: Add a new menu to show the metadata of an asset.

  • New: Asset metadata can now be transferred to the Asset Registry through configurable metadata tags in the Asset Manager Settings.

  • New: Added "recently opened assets" filter under Other Filters in the Content Browser.It shows the most recently opened assets, and defaults to storing 20 assets.You can change the number of assets saved for the filter in Editor Preferences.

  • New: The Editor now saves editor config to file first time a favorite folder is added in the Content Browser.

Foliage
  • New: Added the bool Enable Density Scaling flag to Landscape Grass assets, to prevent density scaling for grass types with gameplay significance.

  • New: Cooking the instance buffer is now supported.

  • Bug Fix: Fixed the array duplicate button behavior of Per Instance SM Data.

  • Bug Fix: Disallowed specifying two types of the same grass asset in a material.

  • Bug Fix: Foliage density scaling in editor is applied correctly when not in foliage editing mode.

  • Bug Fix: Fixed Editor instance count to only include placed instances.Calling Generate Procedural Content will no longer automatically remove the current content.

  • New: Added the possibility to edit the full Body Instance on a Landscape Spline Segment instead of only some parameters.

  • New: Exposed LD Max Draw Distance.

  • Improvement: Changed the UI of the Copy tool to be more clear, and added a drop down that will suggest a valid size for the specified heightmap to import.

Landscape
  • Bug Fix: When changing Component size, Foliage will be properly added again.

  • Bug Fix: World Offset is applied properly to Landscapes.

  • New: Added two new console variables to allow scaling of the landscape LOD distribution values in a device profile or scalability group, "r.LandscapeLOD0DistributionScale" and "r.LandscapeLODDistributionScale".

  • New: Added ability to set Landscape Material from an Editor Blueprint.

  • Improvement: Added some debug text info to Landscape Layer Usage Material, listing how many layers each component uses.This is much easier to read than the old "stripes" method.

  • Improvement: Changed the UI of the Copy tool to be more clear, and added a drop down that will suggest valid size for the specified heightmap to import.

  • Improvement: Added the possibility to edit the full Body Instance on Landscape Spline Segment, instead of only being able to edit some parameters.

  • Improvement: Exposed LD Max Draw Distance.

Material Editor
  • Crash Fix: Fixed a crash on pasting comments.All other accesses to Material Expression Comment check its validity first.

  • Crash Fix: Fixed a material editor crash if content hot-reloading a texture used by the material.

  • Bug Fix: Prevented materials from showing up in the editing assets list twice.

  • Bug Fix: Updating an atlas texture now correctly updates materials and material instances.

  • Removed: Default keybinding for 'apply' in the material editor removed.

Scripting
  • Crash Fix: Fixed crashes associated with Python threads when external C code called into Python without taking the GIL.

  • Bug Fix: Fixed generated Python types sometimes using reserved names.

  • Bug Fix: Python files executed from the Output Log can now support arguments.

  • Bug Fix: Fixed Python parameter packing sometimes treating bool output parameters as return values.

  • Bug Fix: Removed redundant outer parameter from find_asset, load_asset, find_package, and load_package.

  • Bug Fix: Python now honors Edit Instance Only and Edit Defaults Only when setting property values.

  • Bug Fix: Fixed default value application for some struct types that use a custom default value format when exported by UHT.

  • Bug Fix: Fixed old-style enums being missed by the Python glue generation if they're only referenced by a property of function.

  • Bug Fix: Fixed context leaking between the console and files.

  • Bug Fix: Fixed lingering exception state when converting a dict to a struct in Python.

  • Bug Fix: Fixed Execute Python Script failing when passed file arguments.

  • Bug Fix: Implemented negative indexing for Python wrapped arrays.

  • Bug Fix: Fixed Python menus failing to execute scripts with spaces in their name or path.

  • New: Source Control API:

    • Updated Source Control Helpers commands to use smart file strings that can convert from any of fully qualified path, relative path, long package name, asset path, or export text path.

    • Added script bindings and helper functions for version control (Source Control Helpers) for the Editor as Source Control class and associated Source Control State.

  • New: Added support for struct operator extension functions in Python.

  • New: Exposed asset import and export.

  • New: The CDO can now be accessed via the get_default_object class method on Python wrapped object types.

  • New: Added Python iterators for selected actors.(Actor Iterator, Selected Actor Iterator)

  • New: Added Python iterators for Unreal objects, classes, and structs, as well as the Python types wrapped by Unreal classes or structs.(Object Iterator, Class Iterator, Struct Iterator, Type Iterator)

  • New: Exposed Scoped Slow Task to Python to allow you to report progress to the editor while performing slow, blocking tasks.

  • New: Added make and break support in Python.

  • New: Logging runtime errors or warnings will now produce Python exceptions.

  • New: Added support for init_unreal.py start-up scripts.These can be placed in any known sys.path in Python, including the Content/Python folders we automatically add, and the UnrealEngine/Python directory under the user's home directory.

  • New: Added support for UPARAM(ref) on arguments exposed to Python.

  • New: Added support for extension constants in Python.

  • New: Moved Editor Scripting Utilities to be a general Editor plugin.

  • New: Exposed generic get_default_object function that takes a type and returns the CDO.

  • New: Marked Asset Registry Helpers functions dealing with Asset Data as Script Method so they're available as methods of Asset Data in Python.

  • New: Exposed some asset registry functions that may be useful in a commandlet environment.

  • New: Added support for deprecated (renamed) classes, structs, enums, functions, and properties in Python.

  • New: Added warnings for conflicting Python type and field names.

  • New: Added support for using Python callables with delegates.

  • New: Added assign method to Python exposed structs.

  • New: Added callbacks for when Python is initialized and shutdown so that external modules can hook in appropriately.

  • New: Updated wrapped enums to be more consistent with native Python enums.

Sequencer
  • Crash Fix: Fixed Sequencer copy/paste crash.

  • Crash Fix: Fixed crash when trying to record audio without any active capture devices.A warning is logged if the number of input channels is not 1 or 2.

  • Crash Fix: Added Null checks to prevent crash when saving the default state of a spawnable.

  • Crash Fix: Opening a new sequence while another is still active will no longer crash.

  • Crash Fix: Fixed a crash on compiling Blueprint with a deleted actor sequence.

  • Crash Fix: Fixed a crash when an actor factory is not found.

  • Crash Fix: Fixed a copy/paste crash for lights.

  • Crash Fix: Added template signature that is re-generated every time the base template is regenerated, which invalidates evaluation fields.Fixed a crash where the same sub-sequence is instantiated multiple times in a sequence is saved without the master sequence also being saved.

  • Crash Fix: Sequencer now resets if the focused movie scene is null.This fixes a crash if the user is focused in on a shot and undo takes the user past the point of where the shot was created.

  • Crash Fix: Fixed a crash with stale section pointer.

  • Bug Fix: Restricted spawnables from being created if they have a Class Within that Movie Scene is not a child of.

  • Bug Fix: Sequencer now skips if the binding ID's sequence can't be found.

  • Bug Fix: Sequencer overrides the animation asset in the player state if it doesn't match the animation asset that's being evaluated.

  • Bug Fix: HDR Compression Quality is clamped between 0 and 1 for Movie Scene Captures.

  • Bug Fix: Fixed overlapping ranges being inserted into the evaluation field during compilation.

  • Bug Fix: Fixes curves changed on end drag so that only curves that had keys/tangents changed receive notifications, otherwise all loaded curves were getting notified that they were changed.

  • Bug Fix: Sequencer now swaps the camera object to the camera component's owner if it's not the same.

  • Bug Fix: The UI for adding tracks that only support one instance (such as the Fade track) now gets disabled after an instance has been added to the sequence.

  • Bug Fix: Sequence Recorder now logs an error if the number of frames changes while recording.This can happen if the skeleton changes while recording.

  • Bug Fix: Sequencer now clears autoscrub offset when stopping autoscroll.

  • Bug Fix: Sequencer now determines whether a transform track is for a camera by using the spawned object or template.

  • Bug Fix: Sequencer now prevents Goto and Transform boxes from overlapping by allowing them to be visible at the same time in an autosized horizontal box.

  • Bug Fix: Fixed sibling folders being allowed to have the same folder name.

  • Bug Fix: Removed the bool Keep Stale Tracks so that stale tracks are now always purged.

  • Bug Fix: Fixed unbound possessable components when pasting spawnables.

  • Bug Fix: Convert to possessable now uses object template instead of copying properties.This fixes MIDs getting lost when converting to spawnable and back to possessable.

  • Bug Fix: Property values are no longer lost when converting back and forth from possessable to spawnable.

  • Bug Fix: Fixed stale object references remaining in Level Sequence Binding References when using convert to spawnable/possessable, or assigning an actor to an unresolved binding.

  • Bug Fix: Sequence Recorder no longer creates a spawn section if the object is a possessable.

  • Bug Fix: Removed Sequence Actor Tag when converting to possessable.This fixes the icon for actors so that they don't appear as spawnables after converting to possessable.

  • Bug Fix: Sequencer now stops recording if the preview window is destroyed.

  • Bug Fix: Locked down the first and last keys in the redundant keys removal range so that they're unaffected.

  • Bug Fix: Restored hud based on whether it was enabled.This fixes a bug where the HUD is getting restored to true after the level sequence actor disables it.

  • Bug Fix: When enabling the "MovieCapture", the Stereo-3D display now does not turn off.

  • Bug Fix: Spacer nodes are no longer selectable.

  • Bug Fix: Validated actor names passed to Set Actor Label to ensure 'None' isn't passed in, which could corrupt levels.

  • Bug Fix: Sequencer no longer preserves root component when copying object properties.

  • Bug Fix: Fixed Key Frame Manipulator assignment operators and copy/move constructors.

  • Bug Fix: Sequencer now jumps to the playback start frame instead of 0 to start playback for recording.

  • Bug Fix: Sequencer no longer automatically marks transforms to be recorded by sequence recorder.

  • Bug Fix: Sequence template source signatures are now also compared to catch the case where a sub-sequence asset has been saved but not modified.

  • Bug Fix: Sequencer now stops all sounds before generating audio waveforms.

  • Bug Fix: Appended command list to global level editor actions so that shortcuts for recorder are accessible in level editor.

  • Bug Fix: Sequencer sections that do not properly support infinite time ranges will no longer allow you to set an infinite range.

  • Bug Fix: Audio that is split into 2 channels no longer gets a duration that's twice as long as it needs.

  • Bug Fix: Level Sequences with spawnables no longer mark the package as dirty on close unless the spawnable default state has actually changed.

  • Bug Fix: Flipped Cine Camera Vista Vision width and height.

  • Bug Fix: Fixed FBX camera import so that the default tracks use the values from the FBX instead of inheriting the default properties of the camera.

  • Bug Fix: Changed path/attach track sequence binding ID to currently focused sequence ID so that bindings can be created in subsequences.

  • Bug Fix: Fixed Set Playback Position so that it jumps or plays based on playback status.

  • Bug Fix: Sequencer no longer shows Transform/Path/Attach track if the actor has the "Mobility" property hidden.

  • Bug Fix: Dragging the time slider no longer causes the time slider to ignore the Snap to Interval setting when "Snap to Keys While Scrubbing" is enabled.

  • Bug Fix: Made the track color picker focusable so that it will close when you click away or lose focus.

  • Bug Fix: Added support for "Enter" key to add assets for all sequencer track editors that have asset pickers.

  • Bug Fix: Legacy Blueprint spawnables are now purged from Level Sequence packages on load.

  • Bug Fix: Fixed issue with being able to drag/drop montage onto Animation Track in Sequencer.

  • Bug Fix: Fixed an issue with Sequence Evaluator to handle properly when jumps from end to front or front to end.

  • Bug Fix: When getting selected tracks for the external selection api, include tracks if any of their child nodes are selected.This behavior now matches the behavior for object guid external selection.

  • Bug Fix: Fixed instances where sequencer data was being modified without calling Notify Movie Scene Data Changed.

  • Bug Fix: Allowed actor components for synchronization.

  • Bug Fix: Fixed some sequences not evaluating correctly with "Evaluate Sub Sequences in Isolation" enabled.

  • Bug Fix: Fixed a case where the first recording is null but there are other valid recordings.Stop Recording wasn't getting called because the EndPIE delegate wasn't bound since ActorWorld was incorrectly set.

  • Bug Fix: Fixed edits to sub-sections not invalidating their sub sequence data for deep hierarchical sequence structures.

  • Bug Fix: Fixed various issues copy and pasting Spawnables from one sequence to another and within the same sequence.No longer prints superfluous warnings on paste and properly initializes the new object template so that it does not get garbage collected/cause issues on save.

  • Bug Fix: When rotating Euler angles with gizmos, rotation keys are now wound correctly.

  • Bug Fix: The Camera/Shot Lock button no longer changes state inappropriately when exiting a sequence.

  • Bug Fix: Step to Next/Previous key now works for all tracks when none are selected.

  • New: Added notification when the blend type is changed.

  • New: Dragging onto a particular row would move out any overlapping sections to make space for the newly created section.Newly created sections are now selected and throbbed to draw attention to themselves.

  • New: Added getter for media player in media sound components.

  • New: Disabled sub-sequences now show [Inactive] in their title bars in the Sequencer UI.This helps communicate why a sequence isn't being evaluated as you scrub through it.

  • New: Added an option to toggle 'disable screen percentage' in Movie Scene Capture.By default this is on (no change to current behavior).

  • New: Items that are now added to the Sequencer via the "+Track" menu will be selected after being added.If a folder is selected the item will be added inside of the folder.

  • New: Split camera properties to two groups, "Camera Options" and "Camera Settings".The cine camera now hides properties in the "Camera Settings" group so that properties like the bool Constrain Aspect Ratio (in the "Camera Options" group) can be visible.

  • New: Sequence Recorder can now store preset groups of Actors to record.

  • New: Added logging per frame to Movie Scene Capture.

  • New: Added section selection throbbing.

  • New: Sequencer Sub section now has a takes menu.

  • New: Added attenuation visualizer for media sound components in the media player editor.

  • New: Added sprite visualization to media sound components.

  • New: Removed unfinished overlay asset types from Content Browser menu.

  • New: Added various media assets to Content Browser filter menu.

  • New: Added FBX property mapping for "FocusDistance" to "FocusSettings.ManualFocusDistance".

  • New: Added format mapping for the name of the current camera.

  • New: Enabled "Run Construction Scripts in Sequencer" by default.

  • New: Implemented thread scheduler for higher performance in image sequence loaders.

  • New: Exposed Is Reversed from Movie Scene Sequence Player Sequence Recorder.

  • New: Renamed Automated Level Sequence Capture's StartFrame and EndFrame to Custom Start Frame / Custom End Frame to reflect that it is user-overriden.This will also resolve upgrade issues due to the variable datatype changing.

  • New: Import the camera switcher track as a camera cut track in Sequencer when importing an FBX with the "Create Cameras" option selected.

  • New: Similar to Matinee, there is now a Skip Anim Notifies Toggle for being to control whether or not notifies should be fired when the animation plays in the sequence.

  • New: Added option to toggle the behavior of locking the rail mount to the orientation of the spline.By default, the option is off.(No change in behavior.)

  • New: Added ability to Rekey the selected key at the current time.

  • New: Bound rename command to selected track so that F2 shortcut invokes renaming.

  • New: Array elements within USTRUCT properties can be animated.

  • New: Adding a single key to the Particle Toggle track now makes an infinite range section that is displayed in the UI.

  • New: Moved Record to possessable "Actor Recording" group.

  • New: A selected animation track in the sequencer will now show the animation frame number of the sequence when it is playing.

  • New: Event names are shown when the event track is selected.

  • New: Added the option to key a group of transform channels instead of just the changed channel, or all of them.

  • New: Transform sections in the sequencer now include a Quaternion Interpolation option which takes the smallest rotation path during rotation interpolations.

  • New: Dragging the left or right handles of the Time Range slider in Sequencer will now zoom your view in on the current center of the screen.This prevents the view from being translating as you tried to zoom in which caused issues at high zoom levels.

  • New: Scrubbing with the Snap to Keys setting enabled now mirrors the behavior of the "jump to next key" feature.If a track is selected, it only snaps to keys on the selected track, otherwise it snaps to all keys.

  • New: Enabled keying the "Enable Look at Tracking" toggle on Cine Camera.

  • New: Added create pose asset to skeletal animation section.This allows animators to blend animations in sequencer and create new pose assets from them.

  • New: Exposed default level sequence instance data to Blueprints.

  • New: Added level name to spawn a spawnable into.Added sublevel menu option to set the level.

  • New: Added Edit -> Autosize Section Length to duration of source.

  • New: Added event names to selected event tracks.

  • New: Sequencer will now focus the vertical scroll view on newly created items.

  • New: Initial scripting exposure and support for movie scene types, including:

    • Find/add/interate master tracks.

    • Find/add/interate bindings (both possessables and spawnables).

    • Find/add/interate tracks on bindings.

    • Add/interate sections on tracks.

    • Get/Set section ranges.

  • New: Timecode recording saved as editor-only data to the Movie Scene Section and Movie Scene.

  • New: Introduced a common base class for all movie scene channel data.

  • New: The Transform dialog (Ctrl + M) now can now transform sections, including when you have a section and keys within that section selected.

  • New: Added audio support to FCP XML import/export.

  • New: Exposed "Add Scalar Parameter Key", "Add Vector Parameter Key", and "Add Color Parameter Key."

  • Improvement: In Sequencer, inactive tracks are dimmed.

  • Removed: Removed the ability to bind sequencer to PIE/simulate while recording.

  • Removed: Removed experimental image plate media playback functionality.

Static Mesh Editor
  • Bug Fix: Fixed an issue where we would fail to pack the UVs properly if we had multiple identically sized charts.

World Browser
  • Crash Fix: No longer crashes when performing an Undo operation right after generating LOD of a sub-level.

  • Bug Fix: Fixed filtering of sub-levels in hierarchy view by world composition layers.

Level Editor and Tools
  • Crash Fix: Fixed a crash when a level is in an incorrect level collection after reverting the changes of a sublevel of the current level being edited.

  • Bug Fix: Fixed attenuation settings not being disabled when Override Attenuation is false for force feedback and non-English builds.

  • Bug Fix: Actors in the open editor level can no longer be set as the default value for maps, sets, or arrays in user defined structs.

  • Bug Fix: PIE sessions can no longer inappropriately affect editor sessions when the input setting "Use Mouse For Touch" is active.

  • New: Source control history control now includes revisions made prior to branch actions

  • Improvement: The Actor Component function, On Rep Is Active, can now be overridden in subclasses.

Learning Resources

Documentation
  • New: The "-GenerateBlueprintAPI" commandlet now writes clean JSON and provides the option to export information about a subset of the Blueprint nodes available in the Editor rather than all nodes.

Gameplay Framework

  • Bug Fix: Get Components now collects components from child actors when requested to.

  • Bug Fix: Can Crouch In Current State now returns false when character capsule is simulating physics.

  • Bug Fix: Uncrouching now uses the right height for "unencroached" test, when jumping from crouch or uncrouching while in the air.

  • Bug Fix: Moves are no longer combined, when a move triggers a new actor and/or component overlap event.

  • Bug Fix: Character Movement Component's Get Client Net Send Delta Time function now uses this time if Acceleration and Velocity are zero, and the control rotation matches the last acknowledged control rotation from the server.

  • Bug Fix: Input Chords that are set to "None" no longer get replaced with "Any Key" value when the containing Blueprint is reopened.

  • Bug Fix: Removed a dereference that was causing a crash inside Gameplay Cue Manager.

  • Bug Fix: Fixed an issue where Save Game objects could be loaded with the wrong class type when using a Blueprint Save Game type.

  • Bug Fix: Set Allow CPU Access now correctly dirties Static Mesh assets.

  • Bug Fix: Character Movement Component's Server Move function no longer sends the movement base component / bone name unless it's a dynamic base.

  • Bug Fix: CharacterMovementComponent now removes branches when using repeated access of TSharedPtr with FSavedMovePtr.

  • Bug Fix: NaN checking has been removed in Shipping configs within Character Movement, even when checks are enabled in Shipping.

  • Bug Fix: The Actor function called Is Overlapping Actor now avoids function calls on each Primitive Component unless there are actually any overlaps on that component.

  • Bug Fix: Calling Rename on an Actor now correctly removes and adds the Actor to the Actors array of the Level.

  • Bug Fix: Walking in to a wedge between geometry and a slope no longer launches the player in the air with a variable height affected by framerate.

  • Bug Fix: You can now import Data Tables from .CSV files that contain only a header row and no data rows.

  • Bug Fix: Client move combining now works while holding down the jump key or while jump is providing force.

  • Bug Fix: Simulated proxies now correctly simulate gravity when jump force is being applied.

  • Bug Fix: Jump height dependency on framerate has been fixed when applying jump force for more than a single frame burst.

  • Bug Fix: Fixed unsafe weak object pointer when dereferencing iterating pawns.

  • Bug Fix: Force feedback events are now played on the correct controller if the Offset Player Gamepad IDs feature is in use.

  • Bug Fix: Fixed Characters using default scoped movement updates.They no longer visually rotate when rotated at small rates at high framerate.

  • Bug Fix: You now receive a warning rather than an assert on a child promotion failure when destroying a non-root scene component within an Actor's scene component hierarchy.

  • Bug Fix: Child Actor Components are no longer attached to a CDO's root component.

  • Bug Fix: Component instances no longer crash due to sub components.

  • Bug Fix: EndPlay will now be executed if the Actor is destroyed as a result of actions from within its own BeginPlay call.

  • Bug Fix: Gameplay Ability System has been optimized to remove redundant uses of Weak Object Pointer operator.

  • Bug Fix: Scoped Movement Update now propagates the teleport flag from an inner scope to outer scope when they are nested.

  • Bug Fix: Revert Move correctly resets the Teleport Type now.

  • Bug Fix: Fixed log spam when a client character receives acknowledgment for a move that has been removed from the saved moves.

  • Bug Fix: Jump force for character proxies is more accurately predicted to stop on time in case state is not yet replicated from the server.

  • Bug Fix: Blueprint dynamic force feedback effects now update their values when the update node is invoked and while the latent action is active.

  • Bug Fix: Gameplay tag serialization now handles "NumBitsForContainerSize=8" correctly without uint8 overflow.

  • Bug Fix: Invalid Ground Movement Mode coming from Character Movement Component's On Movement Mode Changed function has been fixed.

  • Bug Fix: Delegates now have calls when a periodic Gameplay Effect executes a final time as it is being removed.

  • Bug Fix: The current result of Get Max Speed is now saved in client character saved moves and avoids combining moves with different max speeds.

  • Bug Fix: Ensured that Flush Server Moves only runs on autonomous proxies in case the caller erroneously calls it elsewhere.

  • Bug Fix: Time dilation and frame time values in world settings are now clamped so they won't accidentally be set to negative values.

  • Bug Fix: Target Point's Arrow component is no longer too small to see.

  • Bug Fix: Project World To Screen no longer returns true in the event that the projection failed.

  • Bug Fix: Async Load Primary Asset nodes can now be called safely from a loop.

  • Bug Fix: Placed Editor Utility Base once again ticks in the editor as intended.

  • Bug Fix: The default physics volume can now be spawned during construction script execution if it needs to be lazily created.

  • Bug Fix: In Level Streaming, Should Block On Load now properly blocks for the entire loading process, not just the file load.

  • New: Added Client Net Send Move Delta Time Stationary (default 12Hz) to supplement existing Client Net Send Move Delta Time and Client Net Send Move Delta Time Throttled.

  • New: A Post Script Construct trait has been added that allows users to perform initialization after a blueprint has created a temporary object.If the With Post Script Construct trait is true for a class, that class must implement Post Script Construct.This function is called after an instance of the class is constructed by a blueprint.

  • New: Saved Moves now support subclasses adding combination logic by overriding the Combine With function.

  • New: User Defined Enums now support redirecting.

  • New: Added "r.CookOutUnusedDetailModeComponents" CVar to cook out actors on a per-platform basis.Actors (and Components) are now optionally removed on cook if the device detail level is lower than the component's detail level.This behaviour is controlled by a CVar which can be set via the device profile.

  • New: A toggle has been added to disable the gesture recognizer to input settings.By default this is disabled.

  • New: Radial Damage multicast delegate has been added to Actor and is consistent with Point Damage.

  • New: A Console Variable has been added to enable Async Trace:"RunAsyncTraceOnWorkerThread".

  • New: Added a constructor for Gameplay Ability Spec that takes an ability class instead of forcing the caller to supply the CDO.

  • New: Added macros to Attribute Set to declare helpful accessors, a version of which is used by all Epic internal games.

  • New: Added a function to Gameplay Ability called Get Ability System Component From Actor Info .

  • New: Implemented a new Ability System Component function, Add Gameplay Event Tag Container Delegate, to enable listening for gameplay events using non-exact tag matches, and an option to Wait Gameplay Event to use this.

  • New: Added a Save Game flag to Gameplay Tags so they can be used for native save systems.

  • New: Added a Development Always Cook setting to the asset manager cook rule, this works like Always Cook in development and like Never Cook in production.Development Cook works like Unknown in development.

  • New: "WindDirectionalSourceComponent.h" can now be fully used outside of the Engine module.

  • New: Keys (FKey struct) can now register a short display name, and Get Display Name can request either the long or short version of the name.

  • New: Added a new type of Gameplay Tag called Restricted Gameplay Tag.At runtime, it behaves exactly the same as normal Gameplay Tags, but in the editor, it allows for more control of higher level tags while still leaving flexibility for more specific tags.Restricted gameplay tags are intended for larger projects that want to be able to enforce a high level hierarchy on their tags while still allowing full control and flexibility over lower levels of the tag structure.

  • New: A public method, Strip Save Game Header, has been added for serializing internal header data from save game data buffers.

  • New: A helper function has been added to make it easier to query containers for the presence of a single tag.

  • New: CSV stats have been added for Character movement.

  • Improvement: Gameplay Tags now import from config files by default.Previously the default method for importing was through tag tables.

  • Improvement: Workflow has been improved to support multiple config files that store Gameplay Tags.

  • Improvement: You can now invoke dynamic force feedback effects from native code using Player Controller's Play Dynamic Force Feedback function.The latent function has been made private and only usable from blueprints so it can no longer be misused.

  • Improvement: Attribute Set's Init From Meta Data Table function is now virtual.

  • Improvement: Optimized Update Overlaps by 20% in test cases with large numbers of overlapping actors moving.Further optimized by improving Weak Object Pointer usage to avoid deep comparisons when not necessary.

  • Improvement: Bandwidth is now reduced for replicated characters by only replicating 4 byte timestamp value to clients if it's actually needed for Linear smoothing.By setting Network Always Replicate Transform Update Timestamp to true, you can revert to the old behavior.

  • Improvement: Reduced network RPC overhead for characters that are not moving.

  • Improvement: Projectiles now feature a variable, Bounce Additional Iterations, to control physics iteration count, rather than being hardcoded to one iteration.Default value is two.

  • Improvement: Update Character State Before Movement and Update Character State After Movement now include a DeltaSeconds argument.

  • Improvement: Process Input Stack from the Player class has improved evaluation of which Actions occurred during a frame.

  • Improvement: Actors now have a Pre Register All Components virtual function to match the Post Register All Components function.

  • Improvement: Updated the process of loading/unloading and hiding/showing streaming levels.Many of the variables involved in level streaming have been made private and you must use functions to modify/interact with the them.

  • Improvement: Added delay functionality to MediaPlayer.This will allow more than one player to start at a same time.They will play at the same frame, but be offset in relation to each other.

  • Improvement: Cleaned up and reorganized the public headers of the GameplayAbilities plugin.Many comments were added and the classes were reorganized to group related things together.

  • Improvement: Made several changes to Projectile Movement Component that have improved the default performance settings with minimal behavior impact.

  • Improvement: Per-frame allocations have been reduced in the input manager.

  • Improvement: Reduced per-frame allocations when using DataTables.Accessing a DataTable with a string literal now avoids a allocating an FString variable with each call.

  • Improvement: The Actor function called Is Overlapping Actor is optimized to avoid function calls on Primitive Components that have no current overlaps.

  • Improvement: Optimized SetCollisionProfileName when calling it from a constructor.

  • Improvement: Made some improvements and added flexibility to how Character Movement Component saved moves are combined.

  • Improvement: Removed 3 branches from the Weak Object Pointer function, Get.

  • Improvement: Looping camera shakes can now be blended out.

Localization

  • Bug Fix: Fixed "Should Exclude Derived Classes" option not working in the asset gather.

  • Bug Fix: Fixed PO files failing to import translations containing only whitespace.

  • Bug Fix: Text that doesn't belong to the current package is no longer cached in the localization cache for that package.

  • Bug Fix: Fixed struct instances comparing against the wrong default values when gathering for localization.

  • Bug Fix: PO import no longer fails if a PO file is missing, which is the case for new languages.

  • Bug Fix: Localization multi-line fix.

  • Bug Fix: Fixed single-culture PO import/export failing.

  • Bug Fix: Fixed an issue where some languages would be unavailable due to how ICU reports available cultures.

  • Bug Fix: Fixed placeholder string table entries for different keys being considered identical.

  • Bug Fix: Fixed class/actor names in the placement panel not localizing correctly.

  • Bug Fix:Added missing Hiragana combining character range.

  • New: Localization Pipeline Optimization that mainly focus on asset gathering and other general improvements to other parts of the pipeline.The gather time for 250,000+ word project spanning 80,000+ assets down from over an hour, to just over 10 minutes now.

  • New: Improved the localized asset cooking so that it only cooks L10N variants if their source asset is cooked.

  • New: Added some command line options for GatherText to detect and fix stale or missing package localization caches.

  • New: Added a way to view the localization cache on a package through Asset Localization > Show Localization Cache.

  • New: Improved the ability to lockdown available game languages.

    • In addition to the previous "Disabled Cultures" array, you can now add an array of "Enabled Cultures" (using the same per-build config filters) to explicitly list the cultures that are allowed to be used in your build (if the list is empty, then everything is allowed unless otherwise disabled).

    • This also stops the game from attempting to fallback to the native language if the native language has been disabled (it will fallback to the first available language instead).

  • New: Added an optimized conversion process between Unreal strings and Unicode strings for platforms that use UTF-16 strings natively.

  • New: Added support for additional localized text sources, including arbitrary polyglot data.

  • Deprecated:"Get Cultures With Available Location" is deprecated and should be replaced with "Get Localized Culture Names" to get the names, or "Get Available Cultures" if a pointer to the full culture data is needed.

Networking

  • Crash Fix: Cleared a debug callback when "Curl HTTP Request" was destroyed to prevent crashes.

  • Bug Fix: Fixed several issues with seamless travel while using Play-In-Editor that could cause crashes.

  • Bug Fix: Fixed an issue with stateless handshake, when the server sends a challenge and receives a response during the same tick.

  • Bug Fix: Pitch is now properly stored when aiming in client recorded replays.

  • Bug Fix: Removed the overhead of "Compress Axis" in the function Rotator for each element in Serialize Compressed when loading.

  • Bug Fix: An issue with stateless handshake was fixed, where the server sends a challenge and receives a response during the same tick.

  • Bug Fix: Guaranteed a return value of 0 when the "Get Port No" function of "Socket" fails.

  • Bug Fix: Fixed MULTIHOME returning the incorrect host address on Linux and Android.

  • Bug Fix: Infinite recursion no longer occurs when trying to flush/send on socket close.

  • Bug Fix: Fixed a rare bug where a remote function call from the client could use the wrong value for an object reference in a struct.

  • New: Cleaned up the "Get Type Hash" function on the "Unique Net ID Replication" function to call into the "Unique Net ID Version" function.

  • New: Added a keyfunc class for use with Unique Net ID as a key in TMap.

  • New: Added support for message bus in single-threaded applications.

  • New: Added support for single-threaded applications in UDP socket sender/receiver.

  • New: Added some parameters to "Rep Layout" member functions const-correct.

  • New: Included a sample replication graph for ShooterGame.

  • New: The CVar "CVar Ping Exclude Frame Time" is now enabled in shipping builds.

  • New: Net Connection now tracks how many total bytes of data it has sent and received during its lifetime.

  • New: Net Driver now tracks how many bunches its connections have sent and received.

  • Improvement: Unique Net IDs serialized over the network in 18 bytes, down from 41.

Replays
  • Crash Fix: Fixed a potential crash when recording replays.

  • Bug Fix: Fixed the current replay's timestamp if the replay is close to finishing.

  • Bug Fix: Allowed Automatic Replay / Stream names to be configurable.

  • Bug Fix: Fixed up edge cases in Replays where Actors were being destroyed inappropriately.

  • Bug Fix: Net Connection now keeps track of both in and out packet loss during its entire lifetime.

  • Bug Fix: Fixed a security issue if a malformed packet was sent with a channel index greater than the maximum number of channels.

  • Bug Fix: Fixed the "Play Replay" function of Game Instance to return false if the replay fails to play.

  • Bug Fix: Fixed many issues with replicated, placed-in-map Actors and replay scrubbing.Places Actors will now always respawn correctly after scrubbing, with the correct transformas applied and correct replicated properties.

  • Bug Fix: No processing will be done in "Demo Net Driver" if the Stream isn't ready.

  • Bug Fix: Fixed up DemoNetDriver to always call Handle Demo Net Playback Failure for cases when the demo is stopped due to errors.

  • Bug Fix: Fixed initially dormant replicated actors not being recorded in client replays.

  • Bug Fix: Replays now ignore RPCs while fast forwarding.

  • Bug Fix: Dedicated server no longer runs the render thread.

  • Bug Fix: Fixed an issue where the client could receive redundant actor destruction messages during level streaming, which could cause broken actor channels.

  • Bug Fix: The dithering effect on LOD actors during replay playback now ignores time dilation.

  • Bug Fix: Placed Actors now appear correctly in replays.

  • Bug Fix: Replays handle dynamic level streaming correctly, instead of keeping all levels loaded at all times.

  • New: Added an option for replays to track additional Actor state to be applied after the actor is respawned during playback scrubbing.

  • New: Added an option to allow multiple connections to share network serialization state during server replication.This applies to both property replication and multicast remote procedure calls.

  • New: The maximum number of actor channels can now be configured by setting the "net.MaxChannelSize" console variable.

  • New: Added additional stats around network GUID remapping, with new options to limit the number processed per frame and filter the list based on closed and broken actor channels.

  • New: Net connections now maintain a mapping of class names to an array of time differences between replication instances of actors of that class.This can be used to help track if certain classes of actors are taking too long to replicate.

  • New: Added Support with Rewindable Actors for replays.

  • New: Added a way to retrieve the active replay name from the Demo Net Driver.

  • New: Added functions Save Property State and Compare Property State to Demo Net Driver.

  • New: Added the function "Is Saving Checkpoint" to Demo Net Driver to allow other code to query whether the driver is currently saving a checkpoint.

  • New: Added a console variable demo with "Time Burn In" to show the current replay timestamp on-screen with debug text.

  • New: Added "-csvdemostarttime" and "-csvdemoendtime" commandline arguments to automate CSV profiles when running replays.

  • New: Local File Streamer replaces Null Streamer as the default Replay Streamer.Works asynchronously and performs better on low-speed hard drives, such as those found in game consoles.

Online

  • Crash Fix: Fixed a CEF browser threading issue causing rare crashes.

  • Crash Fix: Fixed a rare crash in Steam Sessions.

  • Bug Fix: The HTTP Retry System function now uses the "Retry-After" or "X-Rate-Limit-Reset" header to determine when it should connect next for responses that returned 429 or 503.

  • Bug Fix: Changed the behavior of Curl HTTP requests that failed and had no HTTP activity to be a connection failure instead of a generic failure.

  • Bug Fix: Changed access pattern to the HTTP Thread function removing a critical section.

  • Bug Fix: Online Hotfix Manager restores old ini settings in the same frame as applying the new ini values.

  • Bug Fix: Changed the behavior of Curl HTTP requests that failed and had no HTTP activity to be a connection failure instead of a generic failure.

  • Bug Fix: Fixed voice failing to play locally after performing a seamless travel when using NullOSS.

  • Bug Fix: Cleaned up Steam P2P connection logging to prevent excessive log spam.

  • Bug Fix: Fixed Steam Leaderboard code to overwrite stat variables instead of increment them as per the documentation.

  • Bug Fix: Added missing domains for Google/Facebook to properly delete cookies on logout.

  • Bug Fix: Fixed iOS/Mac HTTP requests repeating the contents of their user agent header.

  • Bug Fix: Fixed a non-null termination close reason coming from "LWS Web Socket."

  • Bug Fix: Fixed Steam Dedicated Server from forcibly linking Steam Client dlls which can cause issues depending on environment setup.

  • Bug Fix: Fixed OSS Live not initializing its subsystem name.

  • Bug Fix: A crash no longer occurs when receiving unhandled XMPP stanzas in debug builds.

  • Bug Fix: Re-added max connections per host and multi home http support to Curl HTTP.

  • Bug Fix: The b.VerifyPeer ini setting is now used by Windows Curl HTTP implementation.

  • Bug Fix: Fixed a connection failure to Google API during initialization for Google Sign In.

  • Bug Fix: Fixed an issue with Google sign in where delegates fire inappropriately in Login() as well as giving a bad return value.

  • New: LibCurl now advertises that it accepts compressed HTTP content in gzip and deflate formats.

  • New: Default UserAgent sent with HTTP calls is now "$Product/$Version $OS/$OSVersion".

  • New: Added serialized json as a valid value type for Variant Data function Serialize Online Key Value Pairs function.

  • New: Added bulk UnregisterPlayers function to AGameSession.

  • New: Update libwebsockets to v2.2.

  • New: Added SSL Manager to the SSL module to manage the lifetime in monolithic builds and create SSL contexts.

  • New: Added the ability to override Facebook app id, set API version via config and added more debugging options.

  • New: Updated Facebook SDK to 2.12 which allows you to use a version config value.

  • New: Implemented more tests into the leaderboard testing harness.

    • Added the ability to fetch arbitrary rank for platforms that support it.Command is "online test leaderboards [optional arbitrary user id for lookup]"

  • New: An HTTP retry option was added to allow for multiple alternate domain attempts if a connection to the host fails.

    • Only attempt other domains if it fails to connect, not if the request fails for non-connection related reasons.

  • New: An ini setting was added to set the maximum number of connections that curl will use.

  • New: Implemented "Online Play Time Limit" in the "Play Time Limit" module to the Online Framework plugin.

  • New: The OnlineSubsystem "Get By Platform" is now more extensible with new platforms.

  • New: Online Hotfix Manager now supports a version value that is compared against the network compatible version.

  • New: Updated cacert.pem from https://curl.haxx.se/docs/caextract.html.

  • New: Added a delegate when receiving an http header Add FHttp Request Impl to implement simple virtual functions that all platforms implement in the same way.

  • New: Upgraded Google Sign In SDK for Android to the latest version.

  • New: The "Get Online Environment Name" function of Online Subsystem now allows for subsystem implementations to give specific names for their online environment.

  • Deprecated: Disabled the Slate Remote server in shipping builds and on non-Desktop platforms.

Paper2D

  • Bug Fix: Corrected commands mapped in the incorrect location.

  • Bug Fix: Fixed Tile Maps being edited in the Tile Map Editor always having a selection color tint.

  • Bug Fix: Fixed collision generation for Tile Maps with non-orthogonal projections.

  • Bug Fix: Improved positioning of newly added collision or rendering shapes (box/sphere) when a sprite is not at the origin in UV space.

  • Bug Fix: Double-clicking to change the UV region in the Sprite Editor now correctly marks the Sprite Asset as modified.

  • New: The Tile Grid color is now customizable.

Physics

  • Bug Fix: Fixed a cook warning with "Contains Physics Tri Mesh Data" returning true but "Get Physics Tri Mesh Data" returning false.

  • Bug Fix: Re-enabled warnings for when PhysX fails to cook a mesh.

  • Bug Fix: Origin-shifting no longer causes big impulses on Cable Components.

  • Bug Fix: Improved load times for PhysX tri meshes by turning off 8-bit index buffer optimization and avoiding conversion from 8-bit to 16-bit one index at a time.

  • New: Contact modification callbacks have been exposed in the Engine, allowing access to custom contact modifications.

  • New: Added a warning when applying a non-substepped force while inside a substep callback.

  • New: Cable Actor class is now exposed with the Engine API.

Clothing
  • Crash Fix: Fixed a crash when clothing simulation was dispatched from a pending kill Skeletal Mesh Component.

  • Crash Fix: A crash no longer occurs during clothing actor creation when a clothing simulation mesh has no simulated vertices.

  • Crash Fix: Fixed a crash caused by switching clothing meshes when clothing LOD0 is unbound on a clothing data object.

  • Crash Fix: Fixed a crash reimporting over clothing when the bind step would make a section exceed MAX_GPUSKIN_BONES.

  • Bug Fix: Proxy now updates cloth shader data independently, causing sections to no longer get stuck in the clothing rendering path due to the component not ticking.

  • Bug Fix: Changed clothing render data to always use component-relative transforms so we don't see single frame stretching of clothing on component spawning.

  • Bug Fix: Fixes to clothing 'pops' during server corrections due to unexpected linear forces.

  • Bug Fix: Motion Blur is now correctly calculated on clothing sections of Skeletal Meshes.

  • Bug Fix: Fixed clothing data binding state becoming mismatched after a reimport over multiple LODs.

  • Bug Fix: Fixed clothing LOD update receiving empty bone transform array on initialization if a master pose component was used

  • New: Added support for Tapered Capsules to physics assets.Tapered Capsules are only supported by clothing, not by rigid bodies.

  • New: Added tool to copy Skeletal Mesh Vertex Colors to selected clothing parameter mask.

Collision Detection
  • New: Added rest offset for geometry, which allows us to smooth out contact generation.This helps with sliding objects on sharp irregularities.

Physics Asset Editor
  • Crash Fix: Fixed a crash caused by using the undo command to undo primitive regeneration while simulation is in progress & stopping simulation.

  • Bug Fix: Fixed physics asset editor relying on the "Block All" profile for its Collision Enabled in case a project has redefined the properties of the "Block All" profile.

  • Bug Fix: Constraints and bodies now rotate in their own Local Space in the Physics Asset Editor when local coordinate system is applied.

Rigid Bodies
  • Bug Fix: Removed unnecessary read locks when updating kinematic targets during substepping.

  • Bug Fix: Substepping is no longer used on Query Only kinematic bodies.

  • Bug Fix: Fixed Rigid Body awake check needlessly iterating all bodies in a Skeletal Mesh component.

  • Bug Fix: Fixed bug where only points on one side of a plane were being checked in Convex Hull validation.

  • Bug Fix: Mass scale of Physics Bodies is no longer incorrectly clamped.It now allows mass scales below 0.01 and above 100.

  • New: Added new boolean flag, "Not For Dedicated Server," to Physics Assets, which disables creation of bodies on dedicated servers.

Platforms

  • Bug Fix: Added support to check if persistent storage is available before attempting to use it.

  • New: Made the Apple Vision Plugin use version checking consistent with ARKit.

  • Improvement: Optimized JPEG compression, saving about 20-25 percent time on the CPU.

  • Removed: Removed SharpZipLib and references from bundled Mono on Mac and Linux.

All Mobile
  • Bug Fix: Shaders are now synchronously loaded if not previously requested.

  • Bug Fix: Fixed issue where landscape would not render when cooked for a PC mobile emulation shader platform.

  • New: Distance Fields no longer included in cooked data on iOS and Android.

  • New: Added ability to cook contents for the PC mobile emulation shader platforms PCD3D_ES2 and PCD3D_ES31.

Android
  • Crash Fix: Added a fix for '+' conversion modifier for Android in vswprintf because it caused crashes with non on-the-hour time zones.

  • Crash Fix: Fixed a potential crash that could occur when Virtual Keyboard Widget is hidden while trying to use in it in the game thread.

  • Crash Fix: Due to a possible crash on Galaxy S8 on Android 7.0, notifications are now downgraded to simple suggestions on text change.This is due to suggestions not being hidden and disabling predictive input.

  • Crash Fix: Fixed potential crash if virtual keyboard is hidden on Android before deferred action.

  • Bug Fix: Force Completion is now called for the initial movie player on On Pause and App Restart is called on Resume.

  • Bug Fix: Made tutorial and documentation links optional and disabled any unnecessary tutorial link for Android license agreement error.

  • Bug Fix: Used UPL hash to invalidate build if any UPL files are changed.

  • Bug Fix: Prevented Android virtual keyboard input from being covered by software buttons.

  • Bug Fix: Fixed distribution build issue with OBB downloader.

  • Bug Fix: Disabled manual vertex fetch on Android.

  • Bug Fix: Used physical memory is now returned from JNI after initialization completes on Android.

  • Bug Fix: We now wait for the audio thread to pause audio so playback stops properly in background on Android.

  • Bug Fix: Fixed Resonance Audio Api warning about wrong library format.

  • Bug Fix: Updated Android license used to generate licenses file for Gradle.

  • Bug Fix: Added fix so that Android no longer tries to queue ticks in parallel because it could cause hitches.

  • Bug Fix: Stopped Gradle from leaving a daemon process running after completed.

  • Bug Fix: Fixed missing text input field for Android virtual keyboard in cases where it doesn't show properly by forcing a layout request.

  • Bug Fix: Changed how we count available cores on Android, skipping ones that are dedicated to external uses.

  • Bug Fix: Fixed navigation bar showing during splash screen with full immersive setting enabled.

  • Bug Fix: Removed unnecessary #include "AndroidTargetDevice.h", which caused circular reference and nightly build errors.

  • Bug Fix: Fixed issue where a r.MobileContentScaleFactor variable specified in a Device Profile was immediately recreating the Android window, breaking Vulkan detection.

  • Bug Fix: Fixed store version used for saving symbols directory on Android Shipping builds with bBuildWithHiddenSymbolVisibility.

  • Bug Fix: Removed early stop if missing Android SDK and if Gradle can download it.

  • Bug Fix: Fixed Material texture coordinate compile error when compiling landscape materials for ES2.

  • Bug Fix: Added missing Android AMOTION relative axis defines for older NDKs.

  • Bug Fix: Fixed issue where native WebView could not load HTML5 movies if the control's layout didn't have FILL_PARENT param.

  • Bug Fix: Fixed issue with unresponsive WebView on iPhone X that was caused by touches not registering due to a parent being smaller than a child.

  • Bug Fix: Added a proguard exception for WebViewControl.FrameUpdateInfo.

  • Bug Fix: Fixed install/uninstall batch filenames for Android Blueprint-only projects.

  • New: Added GL memory tracking to LLM, and added LLM Alloc functions to Android.

  • New: Made changes to Android toolchain support to use new includes with NDK 14b and above.

  • New: NEON instructions now enabled by default on ARMv8.Can be optionally enabled on ARMv7 with bUseNEONForArmV7=True in Android Runtime Settings.

  • New: Added client Android platform variants and proper filtering out of non-game types from package menu flavors.

  • New: Added message box with reasons for failure if ES2 fallback fails.

  • New: Added option to disable IMU for performance on Android.

  • New: Added Android Get Network Connection Type support.

  • New: Added AndroidThunkCpp_LaunchPackage() to start another application.

  • New: Implemented Clipboard function on Android.

  • New: Added logging on low memory conditions for Android.

    • Check logcat for GameActive.onTrimMemory messages.

  • New: Updated Google Play Services dependencies to 11.8.0.

  • New: Added handling of Android mouse events, a way to block them, and hardware keyboard events.

    • Android.EnableMouse=1 enables mouse events (disabled by default).

    • Android.EnableHardwareKeyboard=1 enables hardware-generated key events (disabled by default).

  • New: UE4Commandline.txt is now enabled in APK.

  • New: Provided support for disabling ASTC texture compression on devices where it does not work properly but driver extension is present (r.OpenGL.DisableASTCSupport=1).

  • New: Added a new Device Proxy type called "All devices".

    • Holds a list of physical device IDs for every texture format variant instead of a single device ID.

    • Updated automatically by the device discovery thread.

  • New: Device discovery is now used to signal when a running device is disconnected.

  • New: Added Mali G72 device profile for Android.

  • New: Added support RHI Thread for startup movie playback on Android.

  • New: Added XBox 360 wired controller support for Android.

  • Improvement: Overrode "Max Object In Game" on Android to save approximately 30M with the Object Array size by default.

  • Improvement: Removed color attachment while rendering depth on ES3 devices, saving 16mb.

  • Improvement: Added improvements for handling of Android IMU updates

    • Reduced memory allocations needed to handle sensor events.

    • Low-pass gravity filtering was made more consistent (only at rate of accelerometer updates, not all sensor events).

    • Changed to only push final sensor update state per tick instead of for any sensor update (reducing JNI calls).

  • Improvement: Improved Android debugging, including:

    • Detect java and gdb/lldb debugger are now attached.

    • Added proper implementation of DebugBreak for each architecture.

    • Improved stack walking, and now properly terminates, showing relative offset for addr2line.

HTML5
  • Bug Fix: Controller axis and button max value is now set in code instead of relying on the function "Emscripten Get Gamepad Status" as it seems emscripten might be uninitialized by the time controllers being used.

  • Bug Fix: Virtual joysticks are no longer shown by default and mouse not captured, now behaving like the Windows-64bit client version.

  • Bug Fix: Disabled "Supports Screen Percentage" as it was causing the HTML5 screen to only render a portion of the screen properly.

  • Bug Fix: Fixed issue with double printing to console.log.

  • Bug Fix: Fixed unnecessary padding margins that were present when using Fixed scale mode.

  • New: Added project setting drop down box to select canvas scaling mode when editing HTML5 game window size.

iOS
  • Crash Fix: Fixed crash on backgrounding for non-backgrounding apps.

  • Crash Fix: Fixed crash on iOS being caused by large mismatches between a drawable texture and a scene's depth-stencil target.

  • Bug Fix: Fixed bug that occurred when the last Slate element to be drawn in the scene is a Scroll Bar with progress between 0 and 1 with Metal on iOS.

  • Bug Fix: Fixed Metal Mip-to-Mip copying validation errors when copying mips smaller than 4x4 with ASTC.

  • Bug Fix: Fixed Metal ring buffer memory leak.

  • Bug Fix: Fixed issue causing distribution build errors for some Blueprint projects on iOS or tvOS.

  • Bug Fix: Fixed compilation error being caused by enabling Location Services Plugin on iOS.

  • Bug Fix: Renamed "Initial Movie" to "Startup Movie", including methods related to the Android platform.

  • Bug Fix: Changed to allow for empty paths in UPL Init which may occur for remote iOS builds.

  • Bug Fix: Client/Host input mapping will now use only interactable area of host window, without title bar and borders.

  • Bug Fix: If host's TCP socket was already connected, we get SE_ECONNRESET when trying to re-use it.When client disconnects, we now also reset the host TCP socket.

  • Bug Fix: Fixed potential memory leak in iOS display logic.

  • Bug Fix: EnumerateFiles().ToList() now prefaced with a check for if the CookOutputDir exists, preventing exception from being raised.

  • Bug Fix: Fixed TVOS/iOS error resulting in numerous errors related to 'no such file or directory' (Binary builds only).

  • New: Added availability checks for Apple Image Utils Plugin (similar to ARKit).

  • New: Added UTexture2D to CGImage conversion in Apple Image Utils Plugin.

  • New: Added ability to push a single file to an iOS app's Documents folder from PC using a command such as DeploymentServer.exe copyfile -bundle com.mycompany.MyApp -file C:\PathToFileOnPC -file /Documents/MyApp/MyFileOnDevice.

  • New: Added listener to viewport resize event on host.

Linux
  • Crash Fix: Added check for null StdOut and ReturnCode parameters on input to ExecProcess on Unix platforms, otherwise code will crash if the process failed to be created.

  • Crash Fix: Fixed crash when importing to level.

  • Crash Fix: Converted Vulkan initialization failure crash to be a graceful exit.

  • Bug Fix: Linux now correctly sets current working directory as executable location.

  • Bug Fix: Fixed splash image for big endian machines.

  • Bug Fix: Implemented use of X11 pointer barriers to bound cursor to region over warping the pointers.

  • Bug Fix: Fixed RPath issues when bundling a project.

  • Bug Fix: UBT will now disable -fPIE when producing monolithic binaries if the compiler is configured to enable it by default.

  • Bug Fix: Remove tracking of CLion/CMake build files.

  • Bug Fix: Default to -as-needed for debug builds resulting in faster startup times.

  • Bug Fix: Added more verbose message about missing VK extensions.

  • Bug Fix: Fixed gamepad thumbstick clicks not registering.

  • Bug Fix: Fixed infinite logging when failing a system operation.

  • Bug Fix: Fixed UE_ENGINE_DIRECTORY not being set on Linux.

  • Bug Fix: Fixed forked child process trying to wait on a sibling process.

  • Bug Fix: Fixed possibly selecting multiple clock sources during initialization.

  • Bug Fix: Restored better printing of FNames through GDB.

  • Bug Fix: Fixed performance regression in Editor (for OpenGL RHI).

  • Bug Fix: Fixed checking commandline arguments prior to being initialized.

  • Bug Fix: Filename and line numbers are now printed during an ensure.

  • Bug Fix: Fixed reporting crash handling frames during an ensure or crash.

  • Bug Fix: Fixed a deadlock in crash handler.

  • Bug Fix: Fixed issue with Mono persisting after RunUAT has exited.

  • New: Added script to download the latest toolchain.

  • New: Added support for terminfo2.

  • New: Added support for a bundled native toolchain on Linux.

  • New: Enabled EXR support for Linux.

  • New: Added binaries for GoogleTest and add to BuildThirdParty script.

  • New: Added LXC container script for building some third party libraries.

  • New: Added support for Unreal Version Selector.

  • New: Added a new way to symbolicate symbols for ensures and crashes at runtime.

  • New: Updated Build Cross Toolchain script to enable a Linux host targeting multiple Linux architectures (including the host's architecture).

  • New: Implemented Low Level Memory (LLM) tracker for Linux.

  • New: Added functionality to cache recently accessed files that required case insensitive look-ups.

  • New: Added pop-up message box to prompt for whether or not the user wants to submit crash report data.

  • New: Enabled RenderDoc support for Vulkan RHI.

  • Improvement: Removed unused start-up module, ALAudio.

  • Removed: Removed Linux SDL2 dependency from Core.

Mac
  • Bug Fix: Progress Bar widgets on Mac no longer render as full when fill value is 0.

  • Bug Fix: Restored Mac Graphics Switching Plugin, refactoring it to support switching the Editor between Metal GPUs:

    • Primarily this is of benefit to those with eGPUs.

    • Changing the GPU will ask you to restart.

    • Fixes a bug where 27" iMacs report an Intel GPU even though it is physically disabled.

  • Bug Fix: Updated Mac OS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago.

  • Bug Fix: Fixed deprecation warnings for macOS 10.12.

  • Bug Fix: Make Light Propagation Volumes debug visualisation work on macOS.

  • Bug Fix: Refactor Metal RHI debugging tools to move away from reimplementing Objective-C protocols, to adding separate debugging classes.This makes it easier for future OSes without having to update each time new functionality is added.

  • Bug Fix: Added update for Xcode 10 Beta, moving the metal shader compiler and requiring different arguments.

  • Bug Fix: Xcode project generator now preserves the schemes' command line arguments when regenerating the project.

  • New: Added LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library, which enables arbitrary runtime function interposition, enabling Unreal to hook the custom allocators used in Objective-C frameworks and charge Objective-C allocations to the caller.

  • New: Added INTELLISENSE to preprocessor definitions for indexing to improve indexing without generating game header files.

  • Improvement: Changed button mapping for PS4 controller on Mac to use Touchpad instead of Share button as "Special Left" to match other platforms.

  • Improvement: Reduced incremental build times on Mac by updating dependencies for dSYM files so that only cross-referenced Modules have their dSYMs recreated on subsequent builds.

  • Improvement: Improved CPU performance of some post-processing passes on Mac by changing the way we allocate a fallback depth-stencil texture to avoid constantly reallocating it.

  • Improvement: Improved the way we generate groups in Xcode project's source code navigator.They are now sorted alphabetically and have correct paths, making it so Xcode no longer displays them in red.

Rendering

  • Crash Fix: Fixed crashes inside "Remove Speed Tree Wind" function and "Remove Speed Tree Wind Render Thread" function.

  • Crash Fix: Fix for Intel HD 4000 crashing on driver 10.12.6.

  • Crash Fix: Fixed a crash occurring when two Post Process Volumes, in a level and sub-level with elements in their Blendables array, were simultaneously selected.

  • Crash Fix: Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area.

  • Crash Fix: Fixed crash caused by automatic building Reflection Captures, while being in Mobile Preview mode.

  • Bug Fix: Vulkan will now expose additional driver information for Unix platforms.

  • Bug Fix: Vulkan now prefers mailbox present mode if available.

  • Bug Fix: Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation.

  • Bug Fix: Optimized bounding sphere radius for objects with non uniform scale.

  • Bug Fix: Allow disabling VSync in windowed mode for macOS 10.13.4+ and above.

  • Bug Fix: Fixed Freeze Rendering on non Editor builds.

  • Bug Fix: Fixed remaining Quad Overdraw Viewmode contents on screen after switching to certain other View modes (e.g. light overlap or complexity).

  • Bug Fix: Fixed tesselation shader texture and uniform initialization in OpenGL3 and OpenGL4.

  • Bug Fix: Fix the black ground scattering on Metal by changing the Atmospheric Fog shader to avoid passing small negative values into the sqrt() function.

  • Bug Fix: Fixed compiling Metal shaders into native shader libraries by disambiguating structs defined by tessellation shaders.

  • Bug Fix: Now Vulkan only uses up to 95% of available GPU memory to handle some OS fragmentation.

  • Bug Fix: Shadow Setup will now only stencil mask drawn Static Meshes.

  • Bug Fix: Asynchronous SSAO now automatically switches to Synchronous SSOA when there are multiple Ambient Occlusion levels.

  • Bug Fix: Fixed a possible GPU hang.Initialize all of Function Forward Global LightData to avoid uninitialized numreflections or other bad params.

  • Bug Fix: Make Manual Vertex Fetch a property of the shader platform for Metal - only the desktop platforms (METAL SM5/SM5_NoTess/MRT) will use manual vertex fetch.The Mobile platforms use vertex descriptors.

  • Bug Fix: Fixed not releasing SRV on render thread for Function Position Vertex Buffer, Function Static Mesh Vertex Buffer, Function Color Vertex Buffer, Function Static Mesh Instance Buffer.

  • Bug Fix: Adjusted HLODs to use the "Never Distance Cull" flag by default.

  • Bug Fix: Retconned Texture 2D Dynamic to include a deprecated API path.

  • Bug Fix: Fixed Planar Reflections on Vulkan.

  • Bug Fix: Fixed assert inside Bind Light Map Vertex Buffer when re-importing meshes with auto generated UV channels.

  • Bug Fix: Fixed a memory leak fix when playing video and main thread blocks.

  • Bug Fix: Improved responsiveness audio synchronization when unpausing or seeking video on Windows platforms.

  • Bug Fix: Slightly improved CPU performance on Metal by caching all the state objects.

  • Bug Fix: Fixed an assert that intermittently fired on Metal with tessellation enabled caused by retaining unused uniform buffers.

  • Bug Fix: Implemented more *_RenderThread functions in MetalRHI to avoid stalling the RHI thread on macOS.

  • Bug Fix: Fixed a number of subtle bugs in the handling of uniform buffers within MetalRHI that could result in unbound buffers or invalid data being provided to shaders.

  • Bug Fix: Enabled use of 4-component formats for Buffer UAVs in MetalRHI.

  • Bug Fix: Metal shaders don't provide an actual instruction count, but the line count is a sufficient proxy to make the shader complexity views work in the Editor.

  • Bug Fix: Fixed compilation of the Forward Shading METAL_MRT shader platform for iOS by removing references to native Cubemap-array Textures that are only available on some Apple GPUs.

  • Bug Fix: Fixed issues with the mesh simplifier when simplifying meshes with large Texture coordinate values.

  • Bug Fix: Altered the way we invalidate Metal visibility buffers inside MetalRHI to slightly increase performance on iOS by sharing them across encoders when possible.

  • Bug Fix: Fixed MetalRHI memory reporting in non-default path.

  • Bug Fix: If a Metal shader has an error it will now generate the shader hash and function name.

  • Bug Fix: Fixed a hitch when enabling Shader Complexity view mode.

  • Bug Fix: Fixed case typo in path for Custom Mesh Component build file.

  • Bug Fix: Bounds of Skeletal Meshes will no longer get inverted when an object has negative scaling causing Occlusion Queries to break, leading to flickering.

  • Bug Fix: Fixed incorrect SV_InstanceID and SV_VertexID conversions in the Metal shader compiler backend.

  • Bug Fix: The Metal Backend for Shader Compile Worker will now correctly convert the return type of Depth Texture Samples to float4 from Metal's float to fix compile errors in newer shader code.

  • Bug Fix: Extended the Mac & iOS Frame-Pacer API to provide the target output time and the intended duration.

  • Bug Fix: Enabled Volumetric Fog on Vulkan.

  • Bug Fix: Fixed a race condition inside MetalRHI caused by misuse of the Function RW Scope Lock.

  • Bug Fix: Fixed a memory leak in Batched Lines.

  • Bug Fix: Fixed a crash on Apple TV caused by using an unsupported Metal API call.

  • Bug Fix: Fixed missing debug markers on Vulkan (TCHAR_TO_ANSI lifetime issues)

  • Bug FIx: Improved performance by unifying the Metal buffer implementation so that the different types have a common parent and can share pooling and sub-allocation behavior.

  • New: Added "framegrabber.framelatency" command to allow variable frame-latency in Frame Grabber frames.

  • New: Added r.Vulkan.SubmitAfterEveryEndRenderPass command to help track down GPU crashes.

  • New: Ansel photography plugin improvements:

    • The free-roaming photography camera has new constraints by default.These prevent it from passing through walls.

    • Photography session can be started and stopped programmatically, making it possible to bind photography to a hotkey or button combination.

    • Tweakables and utilities are now exposed through a Blueprint Function Library, rather than requiring direct manipulation of console variables.

    • The Ansel photography session UI now exposes some Engine effect tweakables as sliders.For example, if the game is using Depth-Of-Field, a slider for Focal Depth becomes available.This behavior can be turned off through the Blueprint Function Library.

    • Letterboxing is now removed during multi-part capture.

    • Tiled shots are taken at full resolution even if Screen Percentage is less than 100.

    • Screen Space Reflections are enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts.

    • Postprocess settings are frozen at session start to avoid discontinuities during photography such as when wandering between postprocess volumes during stereo and 360 shots.

  • New: Added support in Vulkan to prefer a specific GPU using -preferNvidia|AMD|Intel.

  • New: Added scalability control to adjust Object Draw Scale with Camera Field of View under the "r.ViewDistanceScale.FieldOfView***" command.

  • New: Added support on Vulkan for vktrace using the command line "-vktrace".

  • New: Added support for RenderDoc on Vulkan, Android, Debug and Development builds.

  • New: Added support on Vulkan for r.DisableEngineAndAppRegistration.

  • New: Added the ability to segment shade code libraries for global shaders and different .pak files in packages.

  • New: Added -AllowSoftwareRendering command line to allow D3D11 to fall back to software rendering if desired.

  • New: Added a explicit error message that tells users when they are over the maximum size when allocating very large Render Targets.

  • New: Added support for VK_AMD_buffer_marker on Vulkan to dump information when a GPU crash occurs.

  • New: Added support for D3D11, D3D12 & Vulkan for UAVs off Index Buffers.

  • New: Added support for r.DefaultBackBufferPixelFormat on Vulkan.

  • New: Added support for storing Vulkan validation information with r.Vulkan.SaveValidationCache which uses the VK_EXT_validation_cache extension

  • New: Added support for NVIDIA Aftermath to be enabled by default.

  • New: Refactored Function Realtime GPU Profiler Frame to avoid splitting profile events when calculating exclusive times of scopes.This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact.

  • New: Vulkan now uses 256MB pages for Device heap allocations (or 1/8th if less).

  • New: Updated to 1.1.70.1 Vulkan headers to use for both Windows & Linux.

  • New: Added support for multiple UV channels on the Procedural Mesh Component.

  • New: Extensively refactored the MetalRHI GPU profiling code.There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler.The MetalProfiler shows the frame in terms of command-buffers, V-Blanks (if frame-pacing is enabled) and resource allocations.

  • New: Vulkan now generates a generic pipeline cache file, and a device specific one.

  • New: Support for DX12 quad buffer stereo rendering.

FX
  • Bug Fix: Fixed Motion Blur vectors on Mesh Particles.

  • Bug Fix: Return far plane when Scene Textures are disabled in order not to break Depth Fade.

  • Bug Fix: Fixed Particle shadows, when Particle Material uses Depth Fade.

  • New: Engine level pooling system for Particle system components.

  • New: Improved interpolated spawning behavior in Cascade.Gated behind a property that defaults to true for existing content.

  • New: Implemented get previous position to Niagara sprite Particles in order to fix Sprite Particle Motion vectors.

Lighting
  • Bug Fix: Fixed 1.5 Texel offset inside Manual 2x2 PCF shadow filtering.

  • Bug Fix: Fixed white thumbnails and other issues with Sky Lighting on ES3_1 path.

  • Bug Fix: Removed lights with Lighting Channels out of tiled deferred light list, as tiled deferred lights do not support Lighting Channels.

  • Bug Fix: Fixed DFAO resolution scaling border artifacts.

  • Bug Fix: Fixed crash inside Indirect Lighting Cache, which can happen when user cancels Lightmap generation.

  • Bug Fix: Fixed hard coded Reflection Capture Cube Map size, this will fix Static Light Aliasing in captures.

  • Bug Fix: Fixed joined charts forming an L so they inflate both axes.

  • Bug Fix: Fixed Checkerboard Subsurface Scattering for resolutions non divisible by two.

  • Bug Fix: Fixed missing Reflections in Blueprint Editor.

  • New: Indirect Lighting Color Scale is now applied to Subsurface Lighting and Diffuse Lighting.

  • New: Added RTDF r.DFShadowQuality allowing to adjust for shadow performance or quality.

  • New: Added r.AOQuality allowing to adjust for DFAO quality or performance.

  • New: Added a toggle for specifying Contact Shadow Length in World Space units.

  • New: Exposed Contact Shadow parameters to Blueprints.

  • New: Added Dual Specular for Subsurface Profile Shading Model.

  • New: Added Subsurface profile for Eye Shading Model.

  • Improvement: Contact shadow Improvements:

    • Contact shadows now use representative light's direction.

    • Will keep constant Screen Space length independent of FoV settings.

    • Added Contact shadows for Translucents.

    • Added Contact shadows for eye Shader model.

Materials
  • Crash Fix: Fixed case where using "Shader Cache" and "Share Material Shader Code" was causing crashes in games.

  • Bug Fix: Reduced memory usage of Materials in cooked builds by marking properties of Material Expression and Material Expression Material Function Call as WITH_EDITORONLY_DATA.

  • Bug Fix: Fixed case where iterative cooking will not working properly when project has "Share Material Shader Code" option enabled.

  • Bug Fix: Shader compilation log output now correctly identifies which Material Instance is being processed.

  • Bug Fix: Fixed Material Expression Functions for External Texture support.

  • Bug Fix: Changed Material Instance Dynamic Function Copy Material Uniform Parameters and Material Instance function Copy Material Instance Parameters to do no work if passed in the same Material (preventing accidental clearing out parameters on a MID).

  • Bug Fix: Added support with SketchUp Alpha channels and Texture/Color on Opacity.

  • New: Translucency Lighting mode on Materials are now searchable via the asset registry to make finding FX with expensive Materials easier.

  • New: Added Vertex Interpolator node support for Post Process Materials.

  • New: Material Cross Product nodes are now treated as a uniform expression and can be folded with other math operations.

  • New: The Object Orientation Material node now returns a Decal projection vector when used on the 'Deferred Decal' Material Domain.

  • New: Material Attribute Get/Set nodes now append the next unused attribute to the list rather than a Default value.

  • New: Material Attribute nodes have been reordered in a few locations to give a more consistent experience.

  • New: Added a "Estimated Number of Texture Lookups" stat to Material Views, split by vertex and pixel counts.

  • New: Material Texture Sample nodes now re-use previous samples when only differing by swizzle, reducing HLSL size and compiler burden.

  • New: Improved code generated by the HLSL Translator by re-using intermediate function results where possible.

  • New: Optimized Material and Material Instance loading by trimming and caching more data at cook time.

Mobile Rendering
  • Bug Fix: Removed GL_EXT_shader_io_blocks extension requirement to run games packaged for Android ES3.1

  • Bug Fix: iOS now properly discards Depth and Stencil buffers at then end of scene rendering if those buffer are not required.

  • Bug Fix: Material 'Apply Fogging' will no longer be ignored on Mobile.

  • New: 'stat unit' on Mobile devices along with frame timings will now show number of Draw Calls and number of Drawn Primitives in a frame.

Optimizations
  • Bug Fix: Updates for HLOD visibility now take place before frustum and Occlusion Culling.

  • Bug Fix: Stopped forcing NVIDIA GPUs to use slower retained command-buffers as the mtlpp refactor provides stronger resource lifetime guarantees.

  • Bug Fix: Material Parameter Collection instances only setup when initializing a persistent world, which drastically reduces the instance creation count for levels with many Streaming sub-levels this.

  • Bug Fix: Optimized PCF 2x2 and PCF 3x3 Shadow Filtering.

  • New: Improved bounding sphere for Spotlights by making them tighter.

  • New: View frustum shadow caster culling for Point Lights and Spotlights.

  • New: Added option to Skinned Mesh Component to render it as a Static Mesh.

  • New: Instanced Static Mesh per-instance data size was reduced by 20%.

  • New: Implemented segmented shader code libraries on all platforms, with one shader code library generated for the global shaders, one for the project's Materials and then one for each DLC package that contains Materials.This allows downloading of additional shader libraries as DLC.

  • New: Merged Sky Diffuse and Reflection passes in order to save performance by reading the GBuffer and writing target Texture only once.

  • New: Added support for not flushing compute jobs on D3D11 via the Automatic Cache Flush After Compute Shader function and Flush Compute Shader Cache function.

  • New: Rewrites have been made to MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. New: Implemented a new shader pipeline cache called Function Shader Pipeline Cache to replace the older Function Shader Cache API.

  • New:Added log to Vulkan when compiling new PSO.

  • Removed: Disabled Global Clip Plane for Post Process and UI Material Domains.

  • Removed: Removed redundant divide by w during World Space decoding from Scene Depth.

Tools

  • Bug Fix: Fixed editor preferred source code accessor parsing in the project file generator.

  • Bug Fix: Updated the Make Dile Generator.cs for CLion and added cleanup for the macro errors that result in FOO()= definitions.

  • Bug Fix: Capped the allowed number of "Waiting Packages" to avoid creating too many kernel objects in pathological load time cases.

  • New: Added "List Static Meshes" and List Skeletal Meshes Console commands.

  • New: Data for Crash Report Client is now stored in a PAK file of its own which can be found under Engine/Programs/CrashReportClient/Content/Paks/CrashReportClient.pak.

  • New: Added 'Build SCW' to the CMake build command lines for editors to match what XCode is doing on Mac.

  • New: Added a new break pad dump_syms tool to symbolicate elf files on Windows.

  • New: Added a CLion Generator for consistency.

  • New: Added code to detect the bad assumption of the project name always being UE4 and stripped that off in the CLion Source Code Accessor.

AutomationTool
  • Bug Fix: Fixed Editor targets not being rebuilt when packaging from an installed Engine build.

  • Bug Fix: Fixed a bug when building with chunk installs enabled to not generate the master manifest from each pak creation thread and instead just do it once after all pak files have been created.

  • Bug Fix: Fixed platform groups (for example, "Apple", "Microsoft", "Sony") to now included in the list of restricted folder names when staging files for a project.

  • Bug Fix: Allowed the use of PDBCOPY.EXE to be installed as part of the Windows 10 SDK to strip symbols, and add a better message if it can't be found.

  • Bug Fix: While cooking on the fly a .pak file will no longer be produced.

  • Bug Fix: Fixed incorrect console colors being restored after a warning or error on Mac or Linux.

  • New: Added a script to rewrite source files with public include paths relative to the 'Public' folder.

  • New: Added a -SeparateDebugInfo argument to Build Cook Run, which allows staging debug files to a separate output directory (for example, WindowsClientDebug).

  • New: Allow passing -Project=Foo.uproject arguments to the MegaXGE commandlet so it can be used from an installed engine build.

  • New: Added an automation script for the CryptoKeys plugin which allows the cycling of encryption and signing keys from UAT.

  • New: As a security measure, a warning will now be output when staging a project for any config files which are not whitelisted or blacklisted.

  • New: Added a Whitelist Directories list under the [Staging] category in DefaultEngine.ini, which allows specifying folders that can be staged despite having restricted folder names.

  • New: Added Record Performance automation script for running demos multiple times, gathering performance stats and plotting results on charts.

BuildGraph
  • Bug Fix: The Build Editor And Tools .xml script will no longer force copying files to a staging directory.

  • Bug Fix: When Build Graph is run with the -Preprocess=... argument, no steps will be executed.

  • Bug Fix: Fixed "copy local" files not being included in build products enumerated from C# projects.

  • Bug Fix: Added a warning message when trying to use the task without the -Submit argument being passed to UAT.

  • New: Added a element, which allows logging messages after the string is parsed (as opposed to the Log task, which logs them at runtime).

  • New: Added a -show diagnostics parameter, to have diagnostic messages output even when running with the -listonly option.

  • New: Added support for enumerating content copied by the "CsCompile" task and support for invoking methods on string properties.

  • New: When displaying an XML parse error it will nowInclude the path to the XML file.

  • New: Added support for user-defined macros, which can contain a list of BuildGraph commands to be expanded within a node.An example script is located in Engine/Build/Graph/Examples/Macros.xml.

  • Removed: Files with "Embed Interop Types" from the output list have been removed.

UnrealBuildTool
  • Bug Fix: Exceptions are no longer thrown on a background thread while caching C++ includes which caused incorrect logging.It now captures exceptions and re-throws on the Main thread.

  • Bug Fix: Allowed link time code generation on any configurations where b Allow LTCG is set to true.

  • Bug Fix: When building with the UBT it will now explicitly query the number of logical processors in the system to fix Environment.Processor Count by returning the number available to the .NET framework.For machines with > 64 cores, processors in a different processor groups will not be included in this number.

  • Bug Fix: The UBT will now always determine whether a project is a foreign project or not from the valid .uprojectdirs entries, rather than relying on the user passing -game on the command line.

  • Bug Fix: Fixed errors during incremental builds if a build contains an exported symbol change, but the build fails after the source files have been compiled but before the import library is built.

  • Bug Fix: Fixed an incremental build issue caused by force-included files not being treated as dependencies.

  • Bug Fix: Fixed issues caused by the tool chain assuming that the Editor target will be the name of the project with an "Editor" suffix.The launcher will allow you to instantiate a project with any name, and it will not rename the target files.

  • Bug Fix: Changed RPC toolchain to abort early, rather than continue to try to build even though SSH init failed.

  • Bug Fix: Fixed platforms not adding response files as dependencies, causing incremental builds to fail if input files/compile arguments change.

  • Bug Fix: Updated project file generator to support VS2017 solution options file; C# projects will no longer open by default when generating new project files.

  • Bug Fix: Fixed platforms overriding project generation.

  • Bug Fix: Fixed a build failure that occurs on the very first build after adding new files with reflected types.

  • Bug Fix: Fixed an issue where overlapping circular header dependencies would not be parsed correctly, preventing files not being rebuilt on header changes.

  • New: Warnings and errors will output when compiling module rules assembly in a way that allows them to be double-clicked in the Visual Studio output window.

  • New: Precompiled targets will now generate a separate manifest for each precompiled module.This fixes issues where object files from static libraries would not be linked into a target if a symbol in them was not referenced.

  • New: Targets may now opt-out of having public include paths added for every dependent module.This reduces the command line length when building a target.All engine modules are compiled with this enabled; games may opt into it by setting bLegacyPublicIncludePaths = false; from their .target.cs.

  • New: Unreal Build Tool now writes a log file to Engine/Programs/UnrealBuildTool/Log.txt, containing the regular console output and any reasons why actions are outdated and needed to be executed.

  • New: C# projects for unsupported platforms are now excluded when generating project files.

  • New: When building with Incredibuild, the agent executing the compile step is now shown by default.

  • New: Unreal Build Tool will now validate that targets don't modify properties that affect other targets.Warnings are output for any include paths added via a .build.cs file that do not exist.

  • New: Added a working directory setting to custom build steps.

  • New: Added a new Build Configuration .xml setting which allows setting the solution name based on the folder that it's in, making it easier to distinguish between multiple instances of Visual Studio.

  • New: The name of the UE4 solution can now be overridden on a branch-specific basis, making it easier to work with multiple open solutions at once.

  • New: Added a better error if an XML config file is corrupt.

  • New: The engine will now use the Windows 10 SDK by default, if available.Projects can be configured to use older versions, if necessary.

  • New: Added warnings whenever a module adds an include path or library path that doesn't exist.

  • New: Only output a warning message if Build Configuration .xml schema validation fails; we may have settings that only apply to code in another branch.

  • New: An "Engine Directory" property has been added to the Module Rules base class, making it easier to find paths to files under the Engine folder.

  • New: Verbose timing information from the compiler frontend is now included with the bPrintToolChainTimingInfo option enabled if using VS2017 15.7 preview 2 or later.

  • New: The UnrealBuildToolnow enumerates all Visual Studio 2017 install locations using the Visual Studio Setup interop SDK, and supports multiple simultaneous Visual Studio installations.

  • New: Additional compiler/linker arguments can now be set through properties on the TargetRules object again.

  • New: Added support for reading the local PVS-Studio settings file to the PVS toolchain.

  • New: Added a new executor for Windows which uses the Managed Process class, spawning child processes under a job object using P/Invoke to ensure that any child process is terminated if the build is canceled.

  • New: Added support for multiple debug extensions.

UnrealGameSync(UGS)
  • Bug Fix: Fixed an issue where pop-up menus can create top level windows in the taskbar.

  • Bug Fix: Fixed notification window not expanding to fit long captions.

  • Bug Fix: Pre compiled binaries no longer will not be shown as available for a change until scrolling the last submitted code change into the buffer.It now queries changes up to the last change for which zipped binaries are available.

  • Bug Fix: The application lifecycle now uses a custom application context to allow creating separate 'main' windows, and does not require any forms to be shown in order to be updating in the background.This fixed issues with scheduled syncs on background windows not activating, and window jumping to the front after auto-update.

  • Bug Fix: UnrealGameSync will now Detect if other programs are running before allowing a sync to start, show a dialog listing them, and give an option to ignore them if necessary.

  • Bug Fix: Do not create a modal dialog if a scheduled sync is unable to run because the editor is open, and do not run the editor after a scheduled sync.

  • New: Workspace sync filter categories are now able to re-enable categories that are disabled by the global filter.

  • New: UnrealGameSync Launcher now shows an error window allowing setting default P4 server settings if syncing UGS fails.

  • New: Files which are excluded by the sync filter will now be removed from the workspace when syncing.The user's config file stores a hash of the last sync filter.During syncing, if this hash doesn't not match the previous value, we enumerate all the files in the #have list and remove anything masked out by the filter.

  • New: Added an option to allow setting a tint color to be applied to the status panel, to allow identifying streams more easily.

  • New: Columns are now automatically resized when the main window is resized, and default column widths for projects that have a large number of CIS badges can be specified in the project's UnrealGameSync.ini file.

  • New: The stream name is now in tab labels by default.

  • New: Added support for a per-branch "message of the day"-style feature.Messages can be specified in a project's config file in Perforce (eg. /Build/UnrealGameSync.ini).

  • New: Added an extensible method for adding arbitrary badges to the right of the "description" column, by running a regular expression over the changelist description. New: Added an option to show changes by build machines, and move the "only show reviewed" option in there too (Options > Show Changes).

  • New: UnrealGameSync now detects Perforce login tickets expiring, and allows entering login credentials.

  • New: Added an option to prompt for arguments prompting before launching the editor.

  • New: Added a "Bisect" mode for regressing bugs between a certain range of changes.

  • New: Moved the prompt to close the editor before allowing the user to enter a changelist to sync to, when syncing to a specific changelist.

  • New: Added an error dialog when trying to clean the workspace before closing the editor.

  • New: You can now select which projects to sync on schedule.Any projects not already opened at the time the schedule is triggered will be opened first.

  • New: Added an option for syncing all projects in a branch.

  • New: Added support for masking in additional paths to be synced (eg. one or two extra projects) via the sync filter.

  • New: The "clean workspace" functionality will now detect and force-sync files that have been deleted or made writable.

  • New: You can now use a select stream dialog instead of displaying a drop list unless there's a stream filter specified.Makes it easier to find streams in large depots.

  • New: Added UI to allow creating new workspaces and selecting projects from existing workspaces that are not currently synced.

UnrealHeaderTool
  • Bug Fix: Fixed some cases where empty default values would be lost from UHT (eg, empty strings, null objects)

UnrealPak
  • New: UnrealPak now logs the size of all encrypted data

  • New: The key generator now only generates a prime table when required, not all the time

  • New: Added a parameter for compression block size with -compressionblocksize=XXXX.Accepts arguments with MB/KB suffixes, as well as byte counts.

  • New: Added support for custom compressors implemented via modular features.

  • New: Added an -overrideplatformcompressor argument that allows selecting compressor without using the default platform implementation.

  • New: Added an option that allows rebuilding a set of PAK files with different settings.

UI

  • Bug Fix: Using scroll into view now selects the item being brought into view.

  • Bug Fix: Fixed improper scaling for on-screen debug messages, causing them to be hidden.

  • Bug Fix: Fixed Common Popup Menu staying on top of Activatable Panel stack even if the Popup Menu has been closed.

  • Bug Fix: Set Common Text Block's inner Text Block to Self Hit Test Invisible when a scroll style is applied.

  • Bug Fix: Fixed monochromatic font rendering:

    • All non-8bpp images are now converted to 8bpp images for processing in Slate.

    • We convert the gray color of any images not using 256 grays (for example, monochromatic images that use 2 grays).

    • Added a CVar "Slate.EnableFontAntiAliasing" to control whether you want anti-aliased (256 grayscale) rendering (default), or monochromatic (2 grayscale) rendering.

  • Bug Fix: Fixed Canvas Safe Zone offset.

  • Bug Fix: Hid the controller input on the Storm Shield check mark box.

  • Bug Fix: Fixed list views not wrapping properly in some cases.

  • New: Added an event to Common List View for when an item has finished scrolling into view.

  • New: Added support for TTC/OTC fonts:

    • These can be used via a sub-face index on FFontData, which can be set via a new combo in the Font Editor.

    • You can also see the cached list of sub-faces within a font file from the Font Face asset.

  • New: Added "Allow Engine Tick" option to Loading Screen Attributes used when starting a loading screen movie.

    • If set, it will run the main engine tick while waiting for a manually disabled loading screen to finish displaying.This enables latent actions such as level streaming to complete before stopping the load movie, but is disabled by default as it may not be safe for every game.

Slate
  • Crash Fix: Fixed a crash when Object Table is null.

  • New: Added "Show Only Keyable" and "Show Only Animated" to the Filter list in the property editor.

  • New: The Slate Tree View is now able to show wires that clarify the parent-child. relationship of the items in the tree.It has been enabled in the Widget Reflector.

  • New: Line and Spline rendering changes:

    • Lines/Splines now use 1 UV channel to anti-alias.The channel can be used for texturing.

    • Anti-aliasing filter will now be adjusted based on resolution.

    • Modified Line/Spline topology to accommodate new UV requirements.

    • Disabled vertex snapping for anti-aliased lines/splines; previously vertices were snapped, but vertex positions did not affect line rendering leaving the behavior effectively unchanged.

    • Splines now adaptively subdivide to avoid certain edge-cases.

  • New: Added a way to defer Slate retainer widget render target updates until the end of Slate draw.This avoids the extra copy operations that result from switching render targets in the middle of the frame.This feature is controlled by the "Slate.DeferRetainedRenderingRenderThread" variable.Note that UI updates will render more quickly, but will show one frame later, if this feature is used.By default, this feature is enabled only on mobile devices.

UMG
  • Crash Fix: Fixed a crash on adding an "On Clicked" event to a button in Widget BP.

  • Bug Fix: In the UMG editor it will now indicate the name of the property that is not bound.

  • Bug Fix: Fixed template finish not getting called on stop.This fixes a bug where sections aren't restored when finished.

  • Bug Fix: Refresh the widget preview even if the dragged widgets are dropped in an invalid location.

  • Bug Fix: UMG evaluation will now properly finish on stop.

  • Bug Fix: Fixed incomplete state when undoing after deleting user widgets from the widget tree.

  • Bug Fix: Widgets will not be removed from parent when they are pending garbage collection/

  • Bug Fix: Replacing widgets should now also clear out references to the widget.

  • Bug Fix: Reordering will now correctly handled by a undo, and will no longer cause a "ghost" widget to also be part of the tree.

  • Bug Fix: Animating a Slate Brush's material will now invalidate the cached widget's layout and volatility when setting MIDs.

  • New: Added right-click functionality to replace the object reference of a track with a different object in UMG Sequencer.

  • New: Added support for 2D transform mask (translation, rotation, scale, shear).

  • New: Improved copy/paste behavior for UMG editor:

    • Pasting in the Designer while a canvas is selected will place the new widget under the cursor.

    • Pasting multiple times while a canvas panel is selected in the hierarchy view will cascade the widgets starting at 0,0.

    • Pasting while something that isn't a panel is selected is now allowed, and will cascade the pasted widgets off the position of the selected widget (as siblings).

    • Newly pasted widgets will now be selected automatically.

    • Pasting multiple widgets at once will try and maintain their relative positions if they're being pasted into a canvas panel.

  • New: Added a function to Scroll Box to determine what fraction of the window we're displaying.

  • Removed: Removed legacy uses of Get Editor Icon from UMG.

  • New: UserWidgets have a new setting to determine how the Widget will tick.By default, this will be set to "Auto", meaning Widgets will turn ticking on only in the following cases:

    • A latent action (such as Delay nodes) is triggered.

    • An animation was triggered.

    • A script implements the Tick event.

    • A native tick is assumed to exist (meaning the Widget lacks "DisableNativeTick" metadata).

  • New: Added a new way to audit the tickability of a Widget with three Asset-Registry-searchable properties.

XR

  • Crash Fix: Fixed a crash when setting screen percentage to less than 100 in VR preview.

  • Bug Fix: Fixed a bug with Motion Controller Components not properly overriding the display model's material.XRAsset API now handles asynchronous resource loading.

  • Bug Fix: Fixed SteamVR headset detection on platforms with more than one GPU.

  • Bug Fix: VR preview now works with dedicated server mode in the editor.

  • Bug Fix: Fixed late update floating point precision issues when far from the origin.

  • Bug Fix: Improved tracking latency on Oculus.Cached poses are now updated at the end of the frame.

  • Bug Fix: Fixed an issue where aliased textures were mistakenly deleted by OpenGL.

  • Bug Fix: Morpheus HMD "World To Meters Scale" now updates camera offset scale in "On Start Game Frame."

  • Bug Fix: Fixed a bug that caused a crash when using SteamVR motion controller models.

  • Bug Fix: Fixed a bug that caused a slow down in reallocating render targets when using reflection captures in VR.

  • Bug Fix: Fixed a bug that caused world locked stereo layers to drift on Oculus when using an explicit camera component.

  • Bug Fix: Fixed a issue where the Oculus controller models wouldn't show up in cooked builds when using the motion controller's display model property.

  • Bug Fix: Fixed a crash that occurred when building lighting in VR.

  • New: Added a label to the VR spectator screen render call so it is distinguishable in profiling tools, such as RenderDoc.

  • New: Added the ability for Motion Controller components to track/display HMD devices by using "HMD" as the source name.

  • New: Added experimental support for lens calibration on MR projects using OpenCV.

  • New: Updated SteamVR SDK to version 1.0.11, this includes improved Vulkan support.

  • New: Improved SteamVR compositor timing and overall engine performance through more accurate CPU utilization data.

  • New: Added Render Bridge base class, FXRRenderBridge, to reduce code duplication when creating an XR Plugin with a Custom Present implementation.

  • New: Added initial support for omni-directional stereo captures.

  • New: Made Oculus code-scheduling functions available for use by other XR Plugins through the "Head Mounted Display" module.

  • New: Added virtual curves for head rotation from FaceAR's face tracking LiveLink streaming.

  • New: Added support for instanced stereo translucent rendering.

  • New: Added support for enabling the ARKit 1.5 auto-focus setting.

  • New: Added checks for ARKit 1.0 availability when creating the AR session, preventing calls to invalid selectors on older iOS devices.

  • New: Added functions for checking ARKit version availability at runtime.

  • New: Refactored how ARKit supports #define, simplifying wrapping individual features by ARKit version.

  • New: Added a console command to change where Face AR is publishing LiveLink curve data."LiveLinkFaceAR SendTo=192.168.1.1".

  • New: Wrapped vertical plane detection in an "if iOS 11.3" check, since ARKit 1.5 is only available in 11.3 and later.

  • New: Added orientation to the "AR Candidate Image" object for passing to the detection system.

  • New: Added support for handling "AR Image Anchor" notifications from ARKit.

  • New: Added a friendly name to UARCandidateImage objects.

  • New: Added base types for detecting images in an AR session.

  • New: Added the name from the candidate image when creating the Apple side representation.

  • New: Added support for configuring which images to detect during an AR session.

  • New: Improved debug layer rendering on Oculus, circumventing a superfluous blit by rendering directly to the layer.

  • New: Added models to the Oculus plugin for HMD and Sensors.

  • New: Added "Use Camera Rotation" feature to "Stereo Panorama" Plugin.Now this plugin can take the current camera's rotation.To enable this feature, use the console command "SP.UseCameraRotation 7".

  • New: Updated Camera Component can now tell the "Late Update Manager" to store that we don't want to do a late update this frame.Default XR Camera checks this flag before applying the late update to the camera.

  • New: Refactored PSVR Minor reprojection for Frame Counter comparison.

  • New: Added a new PSVR API function for getting a transform between "floor" and "eye" tracking spaces.

  • New: Added a new PSVR delegate that can detect when an app changes between "floor" and "eye" tracking space.

  • Removed: Unused Stereo Rendering function "Get Custom Present" method has been removed.

Programming

  • Crash Fix: Fixed crash in FBX Scene Importer caused by user importing a FBX LOD group with no geometry under it.

  • Bug Fix: Fixed issue where FBX Importer used the incorrect owner when creating asset import data.

  • Bug Fix: Fixed FBX Static Mesh re-import to properly match names between the existing data and the incoming FBX file.

  • Bug Fix: Fixed import socket logic for Static Meshes to prevent it from duplicating sockets when re-importing.

  • Bug Fix: Fixed issue where FBX Importer's Global Transform options were not persisting in config file.

  • Bug Fix: Fixed SColorGradingPicker, which were preventing PIE sessions from working.

  • Bug Fix: Removed external profiling support from shipping builds to fix an issue that caused DLL queries for external profiles at start-up to fail.

  • Bug Fix: Changed FPlatformTime::Seconds(), FPlatformTime::Cycles(), and FPlatformTime::Cycles64() on Android to use CLOCK_MONOTONIC instead of system time-of-day clock.

  • New: Consolidated codepaths for embedding version information in the Engine.

    • Engine/Build/Build.version is now the authoritative place to configure version information.

    • Engine/Source/Runtime/Launch/Resources/Version.h no longer includes macros for the current branch and changelist.

    • These settings are compiled into the BuildSettings module at runtime rather than being exposed as global macros.

    • Licensee builds of the Engine are now automatically detected, no longer needing to be manually configured.

  • New: Added FBX Re-Import Resolve Material windows, enabling users to manually resolve materials if the importer failed to find a match with existing materials.

  • New: Added Visual C++ 2017 redist files to AppLocalDependencies.

  • New: Updated prereq installer to include Visual C++ 2017 support DLLs.

  • New: Added base include paths relative to the "Public" directory in Engine source files to reduce the number of public include paths needed for Engine modules.

  • New: Added rd_route v1.1.1 to provide macOS function interposition, which can be used for debugging.

  • New: Enabled undefined identifiers in conditional preprocessor expressions (by default).

  • New: Exposed Consolidate function through EditorAssetLibrary.

  • New: Added new Ray/Plane intersection function, named FMath::RayPlaneIntersection(), to Unreal Math library.

  • New: Exported Mobile Patching Library API so it can be used by Plugins.

  • New: Exported World Browser API so it can be used by Plugins.

UPGRADE NOTES

Animation

Control Rig
  • Removed: Control Rig has been completely redone and the previous BaseHuman has been removed and will not work anymore.If you wish to still use the previous Control Rig, this build will break it.

Core

  • Bug Fix: Fixed archive serialization issues for archives larger than 4 GB.

  • Bug Fix: UnrealHeaderTool now reports an error if a ufunction is used to mark up a function in a subclass where a ufunction of the same name already exists in the parent class, even if they have the same signature and markup data.To handle this situation:

    • For virtual functions, remove the UFUNCTION tag.

    • For blueprint implementable events, remove it entirely from the subclass.The parent class definition is adequate.

    • For blueprint native events and rep notifies, remove the UFUNCTION tag and instead simply define the "Implementation" or "Verify" virtual overrides as needed.

    • Any non-virtual cases that were essentially allowing parameter overloading for functions in blueprints we recommend renaming the functions and redirecting to new locations using CoreRedirects.At the very least, the base class version must be renamed, since the Engine will find that instead of your CoreRedirect.

Gameplay Framework

  • Projects making use of gesture bindings will need to enable the gesture recognizer in the project's input settings.

  • Direct access to UWorld::StreamingLevels, CurrentLevelPendingVisibility, CurrentLevelPendingInvisibility, bShouldForceUnloadStreamingLevels, and bShouldForceVisibleStreamingLevels, as well as most members of ULevelStreaming is no longer available.Instead, developers should use the appropriate get/set functions.

  • Projects that were calling SetToDefaults to make sure that their overridden implementation was called may want to remove their calls to avoid duplicated work.If your project overrides SetToDefaults and gives it side effects or introduces a dependency on the order of operations, this change may force you to change that.

Online

  • If you need to disable accepting compressed content, this is typically done on the webserver.The webserver should not be compressing images, since they are already compressed.If you need to prevent your game from ever accepting compressed HTTP content, this can be done with the .ini setting AcceptCompressedContent.

  • There has been a data format change to the UserAgent string.If you have backend code identifying HTTP calls from the game based on the UserAgent string, it will need to be updated.

  • Added pure virtual GetType() to FUniqueNetId, implemented in all subsystems that use their own subclass of FUniqueNetId or FUniqueNetIdString.

    • Created concrete types for all subsystems that were previously relying on a generic FUniqueNetIdString for their UniquePlayerIds, replaced all usages in their respective OnlineSubsystems with new type.

    • FUniqueNetIdString now contains a "Type" member variable that can be set at construct time to denote which OnlineSubsystem is required to properly interpret/instantiate that type.

Platforms

XBox One
  • You may now specify an optional DebugStackSizeOverride value in your XBox One target settings in the editor.

Rendering

  • Meshes might have to be re-imported to get precision of tangents and normals back to where they were.Unfortunately the old serialized data only stored the already compressed values and realigning them (to allow zero as value) might cause jitters and imprecision, re-importing should fix those issues.

  • Bug Fix: Fixed crash when using FreezeRendering in non editor builds.

  • Bug Fix: Fixed quad overdraw viewmode contents remaining on screen after switching to certain other viewmodes (such as light overlap or complexity).

  • Bug Fix: Enabling Forward Shading rather than the Mobile renderer on iOS now requires an Apple A9 or later iOS device.

FX
  • Bug Fix: Fixed motion blur vectors on sprite particles.

  • Bug Fix: Fixed particle shadow, when using material with depth fade.

Lighting
  • Bug Fix: Fixed white thumbnails bug when mobile preview is enabled.

Tools

UnrealBuildTool
  • Errors and warnings from UnrealBuildTool are now output in a format that allows them to be double-clicked in the Visual Studio output window.

PROGRAMMING UPGRADE NOTES

AI

  • New: Most Navigation System-related code has been moved out of the Engine code and into a new Navigation System Module.Game-specific code using navigation system functionality might need to be updated.

    • Include statements need to be updated (the removal of the AI/Navigation part of the header files path should be sufficient).

    • NavigationSystem class has been renamed to UNavigationSystemV1.

    • Navigation-related entries in DefaultEngine.ini and DefaultGame.ini need to be updated manually.

    • NavigationSystem code being removed from the Engine module means you will have to add NavigationSystem module to your project's dependencies.

    • World->GetNavigationSystem was renamed to FNavigationSystem:::GetCurrent

    • GetMainNavData was replaced by GetDefaultNavDataInstance

    • This Python (3.5) script parses game's sources and points at lines that need updating.

      • Optionally, the script can perform the changes but make sure to use this option with caution and assisted by a version control system.

      • Script options can be found at the top of the file.

Animation

  • Bug Fix: Removed unused CopySkinnedModelData function.

Animation Blueprints
  • Exposed types on SkeletalControlBase to allow creation of derived classes.

  • Added support for creating sub-classes of FAnimNode_StateMachine outside Engine module.

  • Allowed UAnimNotify_PlayMontageNotify to be inherited by other modules.

  • Bug Fix: Fixed sub-classes of FAnimNode_SkeletalControlBase not having deprecated CacheBones called.

Skeletal Mesh
  • Bug Fix: Removed unused RigidInfluenceIndex from CPU skinning code.

  • SkeletalMesh.LODInfo is also now private.You can use a function to add/remove LOD Setting, which ensures the correct setting is set when adding a new LOD.

Blueprints

  • If you have a default implementation of a BlueprintNativeEvent's required _Implementation() method inside of an interface class, the default implementation must now be removed from the interface class.

  • Removed FUnloadedClassDragDropOp as it was only used by the class viewer and had several issues.Any uses should be switched to use FAssetDragDrop instead.

Core

  • Logging calls like UE_LOG() or GLog->Logf() will no longer compile if the formatting string is not a string literal.These should be updated.

  • Direct access to FArchive members ArIsTextFormat, ArWantBinaryPropertySerialization, ArForceUnicode, ArIsPersistent, ArIsSaving, ArIsTransacting, ArLicenseeUE4Ver, ArEngineVer, ArEngineNetVer and ArGameNetVer should be replaced by their IsTextFormat(), WantBinaryPropertySerialization() etc. member functions.

  • Added a value of Unkown to FCoreDelegates::ETemperatureSeverity enum (and mirrored ETemperatureSeverityType).This adjusts the integral values of each enum to ensure Unknown == 0.

  • Bug Fix: StringToBytes() used to return a value one less than it should have.This has now been fixed, so if this error was being compensated for at the call site, the call should be updated.

  • Renamed confusing argument in LineBoxIntersection function

Editor

  • Crash Fix: Fix for crash when using macOS clipboard string copy commands.

  • Bug Fix: macOS Play In Editor performance fix when key / mouse up event occurs.

Scripting
  • Deprecated ExportToFileEx(), use newly created UAssetExportTask with RunAssetExportTask() instead of FExportToFileParams.

Sequencer
  • All movie scene channel types must now implement FMovieSceneChannel.

Gameplay Framework

  • Renamed the EReplicationMode enum used in AbilitySystemComponent to EGameplayEffectReplicationMode as the old name was misleading and too general for global scope.Also fixed several typos on function and variable names used in the ability system.

  • Deprecated FSavedMove_Character::MovementMode in favor of StartPackedMovementMode and EndPackedMovementMode, so they are more explicit (about being packed modes) and capture the state separately at the start and end of the move.

Localization

  • FInternationalization::GetCulturesWithAvailableLocalization was deprecated as it would only provide cultures that used LocRes files (ignoring additional localization text sources).This should be replaced with a call to FTextLocalizationManager::GetLocalizedCultureNames, and an optional call to FInternationalization::GetAvailableCultures if you need culture pointers (rather than just their names).

Networking

Replays
  • FRepLayout::DiffProperties now takes an enum flag type instead of a bool as its last parameter.

Online

  • See CurlHttpManager.cpp for more information on the AcceptCompressedContent INI setting.Also see CurlHttp.cpp where the curl option CURLOPT_ACCEPT_ENCODING is set to support curl's default encodings.

  • The UserAgent is set in FGenericPlatformHttp::GetDefaultUserAgent.

  • FUniqueNetIdString::FUniqueNetIdString(String) style constructors will likely be hidden soon to enforce usage of Type across the game.

  • Calls to IXmppChat::SendChat and IXmppMessages::SendMessage will need to be updated.

  • Bug Fix:Please note that Steam leaderboards no longer automatically increment variables (its original behavior was a bug).As such the new behavior follows that of other platforms.

  • Bug Fix:The dedicated server fix introduces a new launch argument ("-force_steamclient_link") that can be used to force the steamclient link for dedicated server projects that require it.

Physics

Rigid Bodies
  • Added ENGINE_API to UPhysicsHandleComponent so it can be sub-classed.

  • Removed unnecessary InitialLinearVelocity vector from BodyInstance (reduces PrimitiveComponent size by 12 bytes).

  • Bug Fix: Threading is no longer used for PhysX if ShouldUseThreadingForPerformance is false.

Rendering

  • Bug Fix:Changed texture streaming to not use background task when FApp::ShouldUseThreadingForPerformance is false.

UI

Slate
  • While ITableRow was never intended as a public-facing interface, some advanced programmers may have chosen to implement it.Two additional methods were added to the interface, so any code implementing ITableRow will have to add an implementation for these methods.Sample implementations can be found in STableRow.h.

XR

  • If you maintain an XR plugin that implements IStereoRendering::GetCustomPresent, it should be removed.

  • If you maintain a XR plugin implementation, please review the new FXRRenderBridge base class if your module needs to provide a custom present implementation.

DEPRECATIONS

Animation

  • Removed: BaseHuman has been removed and will not work anymore.

Blueprints

  • Deprecated BlutilityActor & DatasmithBlutilityActor in favor of PlacedEditorUtilityBase.Existing data will migrate to PlacedEditorUtilityBase.PlacedEditorUtilityBase should be used for Blutility base class.

Core

  • Deprecated Lex namespace and converted all existing methods to Lex- prefixed functions instead.This avoids issues with using the Lex namespace generically in the presence of 2-phase template instantiating compilers like clang.

  • Passing anything other than a literal string to ensureMsgf() as its format string has now been deprecated.Please ensure formatting strings are always string literals.

  • De-virtualized from FArchive::IsSaveGame() and FArchive::IsFilterEditorOnly().Please ensure that your custom archives do not try to override these functions.

  • Passing anything other than a literal string to FString::Printf() as its format string has now been deprecated.Please ensure formatting strings are always string literals.

Gameplay Framework

  • FInputActionBinding::ActionName is now private.Direct setting after construction is no longer permitted, access to read the name can be done via GetActionName accessor.

Physics

Rigid Bodies
  • Removed unused PhysX serialization support.

Programming

  • Removed welded vertices option from the FBX exporter dialog.The vertices are always welded.

  • Deprecated FindOverlappingCorners() storing data as TMultiMap, replaced with struct FOverlappingCorners.New container is optimized for better performance and memory usage.

  • Removed experimental "SubD Surface" feature.This feature was never completed, and will be superseded by Editable Mesh in a future release.

  • Merge plugin AssetScriptingUtilititesEditor with plugin EditorScriptingUtilities.Existing data will be migrated.

Tools

  • Removed old, invalid Niagara Collision Bounce module. Please have your Niagara Emitters and Systems use the Collision Linear Impulse module.

BuildGraph
  • UnrealFrontend is no longer included in the BuildEditorAndTools.xml script.This functionality is available through the editor, and is rarely required in standalone.

UnrealBuildTool
  • The explicit construction of RuntimeDependency objects from .build.cs files is now deprecated.The path string can be added to the list of runtime dependencies instead.