Language:

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

image alt text

新機能

アンリアル エンジン 4.18 では、仮想現実 (VR) や拡張現実 (AR) の分野でデスクトップからモバイルまで ユーザーのニーズに応える様々なコンテンツを作成する ツールを用意しました。プラットフォームのサポートも拡張、向上し、使用場所がどこであってもコンテンツを提供 できるようになりました。エピックでは開発プロセスの効率化と合理化を絶えず追い求め、アンリアルのあらゆるツールの更新と改善を続けることで、かつてないほど迅速にコンテンツを開発できる ようにしました。

ボリューメトリック ライトマップのようなライティングの新機能とスカイライトからのマルチ バウンスの間接ライティングを使うと、ワールドが一段とリアルで説得力のあるものになります。新しい Media Framework 機能では、現実世界のものを取り込んだリアルタイム合成が可能になります。Apple の ARKit や Google の ARCore を使って現実世界に独自のワールドを構築し、究極の没入感を実現することもできます。

ゲームの購買層やコンテンツの利用者は絶えず進化しており、新旧様々なプラットフォームからコンテンツを入手しています。アンリアル エンジン 4.18 では、すべての主要プラットフォーム向けのコンテンツをこれまでにない高い忠実度とパフォーマンスで制作することができます。最近の iOS デバイスでデスクトップ フォワード レンダラーが利用できるようになり、高品質のモバイル コンテンツ、および超高速で動く AR コンテンツが可能になりました。WebAssembly は現在 HTML 5 プロジェクトでデフォルト設定になっており、迅速にロードし、滑らかに動く複雑なゲームを制作することができます。

アンリアル エンジン 4.18 では、重要度が高い作業に時間をかけられるようになりました。グローバル検索の新機能、 Find in Blueprints を使うと、一括検索が可能になり、複数のブループリントから何かを検索する際の時間の無駄がなくなります。クロス (布) ツールにも改善を加えました。新規物理アセット エディタと詳細なマテリアル エディタのプレビューのサポートや、他の作業の質も向上させて開発プロセスにかかる時間を大幅に短縮しました。

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

Akihiro Kayama (kayama-shift), Alan Edwardes (alanedwardes), Alec Kosik (akosik), Andrey Yamashev (ayamashev), Artem (umerov1999), aziot, Cameron Angus (kamrann), Carsten Neumann (cneumann), Cengiz Terzibas (yaakuro), Chris Conway (Koderz), Christopher Reed (christopherreed), Cody C.(Mumbles4), Courtland Idstrom (Frugality), DaveC79, DavidNSilva, getnamo, Grant Peters (ggpeters), Guillaume Buisson (monsieurgustav), Harry Kim (shuaiharry), Ian Huff (IanMatthewHuff), IHappyDayI, Ilya (ill), Isabela Schulze (Ereski), Jason Calvert (jasoncalvert), Jesse Yeh (jesseyeh), John McBroom (jimbomcb), Jørgen P. Tjernø (jorgenpt), Josef Gluyas (Josef-CL), Kalle Hämäläinen (kallehamalainen), karanseqwb, Konstantin Nosov (gildor2), Kostas Nakos (jubanka), lwdingNT, Masanori Shinkawa, Mathias Hübscher (user37337), Matt Hoffman (LordNed), Maurice Laveaux (mlaveaux), Michael Allar (Allar), Michael Kösel (TheCodez), Mikayla Hutchinson (mhutch), minichris, Nick Pearson (Nick-Pearson), Nick Verenik (nverenik), Patrice Vignola (PatriceVignola), projectgheist, Rama (EverNewJoy), Roman Chehowski (RChehowski), Roman Maksymyschyn (miracle7), Sam Hocevar (samhocevar), Scott Freeman (gsfreema), Sébastien Rombauts (SRombauts), Sertaç Ogan (SertacOgan), steelixb, stfx, Triplelexx, Vivid Games - Engine Team (enginevividgames), Vladimir Ivanov (ArCorvus), XueBing (DarkSlot), Yujiang Wang (Luoshuang), yhase7, YuchenMei, Zeblote

主要機能

新規:ボリューメトリック ライトマップ

新しいボリューメトリック ライトマップ機能を使うと、事前計算された低負荷のライティングを使って高品質なライティングを可動オブジェクトに適用することができます。キャラクター、パーティクル システム、インスタンス化されたフォリッジ、その他の動的オブジェクトが背景に対していっそう自然に見えるようになります。

image alt text image alt text

ボリューメトリック ライトマップは、Lightmass Importance Volume 全体をライティングのサンプルを取る 4x4x4 のブロック状の物 (Brick) で覆って、空間のあらゆるポイントで事前計算されたライティングを保存します。ブロック (Brick) は、間接ライティングが最も変化する静的ジオメトリの近くでは高密度で配置されます。こうしたデータ構造により、GPU 上の空間のすべてのポイントで間接ライティングを効率的に補間することができます。ボリューメトリック ライトマップでは、コンポーネント全体に対して一回ではなく、各ピクセルで補間されます。これまでの間接ライティング キャッシュ方式よりもディテールの信頼性が高まり、ライトの漏れが少なくなります。

プロジェクトでボリューメトリック ライトマップを使うための詳細情報については、 ボリューメトリック ライトマップのドキュメント をご覧ください。

ボリューメトリック フォグに事前計算されたライティングを適用

ボリューメトリック フォグは事前計算されたライティングをボリューメトリック ライトマップを使って各ボクセルに補間するようになりました。これにより固定ライトからの間接ライティング (ライトマップに保存) でフォグに影響を与えることが可能になります。静的ライトおよびエミッシブ ライトは、負荷を全く生じることなくフォグを照らすことができます。負荷が生じないのは、ボリューメトリック ライトマップにすべてマージされているためです。

image alt text

スカイライトも適切にシャドウ処理されるようになり、室内でのフォグのかかりすぎを防止します。

image alt text

1 - フォグへのスカイライトで適切にシャドウがかかっている、 2 - フォグへの均一なスカイライトで光の漏れが発生

パフォーマンス

  • サードパーソン キャラクター上でボリューメトリック ライトマップを使用すると、PlayStation 4 では GPU の処理時間で 0.02ms のコストがかかります。すべてのIndirect Lighting Cache Rendering (間接ライティングのキャッシュのレンダリング) のスレッドのコストはなくなりました。

  • エピックの Paragon の Monolith マップでは、間接ライティング キャッシュを使用した場合のメモリ使用量は 5Mb でしたが、ボリューメトリック ライトマップをデフォルトの [Detail Cell Size] 設定で使用すると 30 Mb に増えました。メモリ使用量は、‘stat memory’ の下で確認できます。

詳細な比較

ボリューメトリック ライトマップ

事前計算ライト ボリューム / 間接ライティングのキャッシュ

GPU 上で効率的な補間

CPU での補間コストが高い

ピクセル毎の補間

インスタンス化されたコンポーネント上であってもオブジェクト毎の補間

ボリューメトリック フォグに適用

ボリューメトリック フォグに影響を及ぼすことができない

すべての静的サーフェス周囲に高密度で配置

静的サーフェス上にのみ高密度で配置、低密度のサンプルからの光の漏れは高頻度で発生

境界ボクセルを拡張して Importance Volume 外の領域を覆う

Importance Volume 外部では間接ライティングが黒くなる

現時点ではレベル ストリーミングには非対応

レベル ストリーミングに対応

新規:静的スカイライトの指向性の改善

これまでスカイライトは三次の球面調和関数 (Spherical Harmonic) でライトマスに表現されていましたが、日の出や日没のディテールはキャプチャしていませんでした。今回、デフォルト設定でかなり高い解像度でフィルタリングしたキューブマップを使用するようになりました。ライトマスは、Final Gather Ray のサイズに基づきキューブマップの適切なミップを選んでエイリアシングを防ぎます。明るさと色のバリエーションが多いスカイライトのキューブマップで遮蔽度がかなり高いシーンの場合にこの違いが顕著になります。

image alt text

1 - 新しくフィルタリングされたキューブマップの静的スカイライト、2 - オリジナルの静的スカイライト

開口部が小さくなるほど、スカイライトの指向性は高まります。開口部を十分に小さくすることでピンホール カメラ エフェクトを再現することができます。

image alt text

image alt text

スカイライトのソース キューブマップ

結果のスカイライト

新規:スカイライトからのマルチ バウンス間接ライティング

静的スカイライトと固定スカイライトからの間接ライティングの複数バウンスをサポートするようになりました。これを使用するには、 [World Settings -> Lightmass] の順に進み、新しい設定項目である ‘Num Sky Lighting Bounces (スカイライティングのバウンド数) ’ を設定します。この機能を最初に実装してくださったフォーラムのユーザー、 Luoshuang さん に謝意を表します。

image alt text

1 - スカイライトのバウンスは複数回、2 - スカイライトのバウンスは 1 回

スカイライトの複数バウンスの効果を得るには、ほとんどのケースでマテリアルのディフューズの値を高くする必要があります。例えば、ディフューズが .18 (18% グレイ) の場合、2 回目のスカイライトのバウンスはライトが放射するエネルギーの .18^3 = .006 しか寄与せず、これはごくわずかなものです。例えば、ディフューズが .5 の場合、2 回目のスカイライトのバウンスはライトが放射するエネルギーの .125 寄与し、顕著なものになっています。

さらにエミッシブ メッシュから複数回のバウンスがあります。

image alt text

ライトマスでは、Radiosity Solver を使ってスカイライトとエミッシブ メッシュの複数回のバウンスを計算します。バウンス毎に分散できないビルドの時間が増えるため、注意深く使用してください。

新規:Apple ARKit iOS 11 のサポート

アンリアル エンジン 4.18 では、Apple の iOS 11 の ARKit を実際の開発に使用できるレベルでサポートしています。これは、 iPhone 8 と iPhone X を発表したApple の基調講演に関わるパートナー企業との連携に基づくものです。

image alt text

image alt text

既存のフレームワーク コンポーネントを使用してワークフローを合理化し、パススルー カメラの堅牢な処理を追加し、パフォーマンスと予測の向上によって忠実度を高めました。

注意: アンリアル エンジン 4.17 における ARKit の実験的サポートに、大幅な変更を加えました。アンリアル エンジン 4.17 を使用して作成した ARKit プロジェクトは 4.18 で機能するようにアップデートする必要があります。 アップデートされた ARSample プロジェクトをダウンロード して、4.18 で何が変わったかをご覧ください。

使用の開始

ARKit は非常に簡単に使用できるようになりました。以下の手順を行うだけです。

  1. プロジェクト用に適切な ARKit プラグインを有効にします。

  2. [Project Settings (プロジェクト設定)] で [bStartInAR] プロパティにチェックを入れます。

  3. Camera コンポーネントを持つポーンを用意します。

ARKit に関する既知の問題

  • デバイスの回転はまだ完全にはサポートされていません。現時点では、プロジェクトで唯一サポートされる方向として Landscape Right を選択するようにしてください。

  • ヒット テスト用に唯一公開されている関数は、HitTestAtScreenPosition_TrackingSpace です。結果は Camera コンポーネントの親の空間として返します。デフォルトの設定ではポーンの空間になっています。ワールド空間に変換するためには、現在、親 (例、ポーン) のワールド トランスフォームを結果に乗算処理する必要があります。

  • 関数、 HitTestAtScreenPosition_TrackingSpace は、Types パラメータを無視し、常に利用可能なすべてのサーフェスに対してヒットテストを行い、FAppleARKitHitTestResult 構造体の Types 欄にチェックを入れることによって手動でフィルタリング可能な結果を戻します。

  • FAppleARKitHitTestResult は、 Anchor プロパティにデータを供給しませんが、常に nullptr になります。

  • World Scale は現在、デフォルト設定であり、変更できません。

新規:Google の ARCore デベロッパー プレビュー版のサポート

アンリアル エンジン 4.18 では、Google ARCore のデベロッパー プレビュー版を公式にサポートしました。エンジンの一般的な拡張現実機能を活用し、パススルー カメラの処理を向上させています。

ARKit と同様に、ARCore に対応する ARSample プロジェクトも更新しました。4.18 で何が変わったかを確認し、ARCore を使った開発を今すぐ開始するには、 プロジェクトをダウンロード してください。

Mac での SteamVR サポート

アンリアル エンジン 4.18 から UE4 から SteamVR を通して Mac 上で VR をサポートするようになりました。PC で使い慣れたものとまったく同じインターフェースが Mac 上で利用可能になったため、プロジェクトを Mac に移行して簡単にお試しいただくことができます。このアップデートは、Metal 2 と他の多くの実行時の最適化に関するサポートと共に提供するものです。最新の SteamVR のリリースにアップデートして試してみてください。

image_24.png

新規:クロス (布) ツール

スケルタルメッシュ エディタでクロスを作成し、構成するためのツールセットに全面的な改良を加えました。

クロス固有のプロパティの拡張セットを編集するための [Clothing] のためのペインが加わりました。ここでは、クロスのコンストレイント、自己コリジョンの頂点のカリング、慣性スケーリングについてさらに細かく制御することができます。拡張されたペイント ツールを使うと、直接メッシュ上に頂点毎のクロス パラメータをペイントすることができます。この新しいペイント ツールには、以下が含まれます。Brush、 Gradient、 Smooth、 Fill。ペイントされたパラメータは、イテレーションの助けになるように、上書きではなく切り替えることができます。

クロス ツールは、コリジョンを作るために Physics アセットと統合されました。Clothing Data オブジェクトでシミュレーション メッシュを作成、置換するための新しい LOD (Level of Detail) パイプラインができました。このパイプラインには、ペイントしたパラメータを新しい LOD または置換ジオメトリにマッピングし、細かい LOD パラメータから粗い LOD パラメータを算出するパラメータ マッピング システムが備わっています。また、スケルタルメッシュ エディタで変換するメッシュのセクションを右クリックして、クロス データを簡単に作れるようになりました。

このツールは実験的で早期アクセスでしたが、今回の機能には、その間に判明した数々の小さなバグ修正や重要な改善に加えられています。

注意: DCC パイプラインを使用する必要があれば、APEX ファイルのインポートはまだ利用可能です。

新規:Media Framework の改善

今後の高度なユース ケース向けに、アンリアル エンジン 4.18 では Media Framework を以下のように大幅に更新、拡張しました。リアルタイム ビデオ合成、時間同期、ワークフローの簡素化、キャプチャ ハードウェアとビデオ オーバー IP のサポート、オンライン メディア ストリーミング、アンリアル エディタとの統合、安定性とパフォーマンスの改善などがあります。

Media Framework API はコンパイル時間を短縮するように整備され、C++11 の最新機能を利用するようにアップデートされました。さらに、メディア プレイヤーのハイレベルなロジックが、プッシュベースのパラダイムから、プル ベースの方法にリファクタリングされて、エンジンに依存しない再利用可能なクラスに移動しました。これにより、メディア プレイヤーのインターフェースにおける関心の分離 (Separation of Concerns:SoC) を実現しました。

レイテンシとパフォーマンスが改善しました。これは、タイムコード ベースのサンプル処理のパイプラインによるものです。オーディオ、カメラ トラッキング、フェイス トラッキングなど、時間管理が重要なサンプリングについて高頻度でティックが実施されます。フレームの効果的な利用と予測可能なタイミングを向上させるために任意のオブジェクトによって使用可能な多段階のティックが実施されます。

オーディオ再生は、新規 Audio Mixer API に統合されて、新しい Media Sound コンポーネントを (Media Sound Waves の代わりに) 使用するようになりました。Media Sound コンポーネントは、レベルのアクタにアタッチしたり、UMG のウィジェットで使用することができる Synth コンポーネントの上に構築されます。メディアのサンプル レート コンバータ (これまでは 16-bit、 44.1kHz のみをサポート) は、最高 8 個までのオーディオ入力チャンネルと 1 ないし 2 の出力チャンネルを持ち、int8、 int16、 int32、 float、 double の入力サンプルと任意のサンプルレート (可変レートを含む) をサポートするようになりました (サラウンド サウンドはアンリアル エンジン 4.19 で対応予定)。アクタの Media Sound コンポーネントで空間音響もサポートするようになりました。

映像に関しては、Media Framework が外部テクスチャ サンプラー API を使用するようになりました。これによりメモリ コピーなしで映像フレームのレンダリングが可能になりました。この機能は現在、Android 向けに限り実装されていますが、他のプラットフォームにも拡張予定です。問題があったトリプル バッファリング方式をサンプル キューに置き換えて、非標準のビデオとピクセルのフォーマット、および不完全なエンコーダのサポートも改善しました。

メディア プレイヤー エディタがアップデートされて、新しい [Track format selector] メニュー、オーディオ / ビデオ キャプチャー デバイス セレクタ、キャッシュ ステートの視覚化 (この機能をサポートするプレイヤーのプラグイン用)、プレイリストの制御、およびプレイリストの保存機能が加わりました。さらに、スクラブの反応が良くなり、情報のオーバーレイが向上しました。テキスト オーバーレイの視覚化や 360 度ビデオ ビューポート コントロールも実験的にサポートします。Media Source アセットのプラットフォーム毎のメディア プレイヤーのオーバーライドも機能するようになりました。

メディア プレイヤーのトラックとトラック フォーマットをクエリする機能、オーディオ、ビデオおよびウェブカメラのキャプチャ デバイスを列挙する機能、メディア プレイリストにファイルと URL を追加するための機能がブループリントに追加されました。

メディア プレイヤーのすべてのプラグインがアップデートされて、アンリアルエンジン 4. 18 の Media Framework で利用可能になったすべての素晴らしい新機能をサポートするようになりました。

注意:シーケンサーの統合、ステレオスコピックと 360 度の映像のサポート、ハードウェア アクセラレーションによる 4K 再生など、一部の機能は現時点で開発進行中です。

新規:シーケンサーの改善

以下のようにシーケンサーに作業の質に関わる改善を加えました。

  • FBX のインポート機能を改善し、静的 / デフォルトのトランスフォームのインポート機能、対応するカメラがマップに存在しない場合にシネマティック カメラを追加する機能、 x 軸を強制的に前にするオプションの機能を追加しました。

  • トラック、キーフレーム、およびパスの軌道の描画を効率化。オーバーラップするキーは赤いボーダーで描画されます。

  • オーディオ、スケルタル アニメーション、ショット トラックのスリップ編集を含む編集ツール。

  • ドラッグ&ドロップを使える場所が増えました。ショット トラック、サブシーン トラックのカメラ カット トラック、およびシーケンス レコーダーにドラッグが可能になりました。

  • マスター シーケンスから動画を録画するときに、ショットの境界にウォームアップを追加。

  • スクラブ中にエディタでコンストラクション スクリプトを再実行する機能を追加。

  • Cine Camera の Look At が、ロールの動きが可能に。

*アニメーション録画キーの補間 / タンジェント設定およびドラッグ アンド ドロップ サポートなど、シーケンス レコーダーが改善されました。

新規:物理アセット エディタの改善

Physics Asset Editor (従来の PhAT) がユーザビリティの大幅な改善、および機能を拡張するために全面的に整備し直されました。UI は見た目と使用感が変わりました。スケルトン ツリー ビューがアップグレードされて、フィルタリングとシーン エレメントの表示が改善しました。また、新規グラフビューによって、ボディ間のコンストレイントを、ノードを使って視覚的に設定することができるようになりました。これまで不可能だったコンストレイントのループをセットアップすることもできます。

image alt text

UI 要素の不要部分を削除して、整理しました。多くのものを合理的な場所に移動、変更しました。例えば、アニメーション エディタのように [Show] メニューからアニメーション関連の設定が利用できるようになりました。アニメーションがいつでも選べるようになり、を、一時停止、スクラブしたときなどもいつでも可能になりました (以前はシミュレーションを開始しなければ選ぶことができませんでした)。シミュレーションは [Simulate] ボタンとその下のオプションを使ってアニメート中にいつでも開始、終了することが可能になり、レベル エディタでのシミュレーションと同じように機能するようになりました。

追加の更新と改善点

  • Time Dilation (時間の遅れ) は、アニメーションと物理と共に機能し、アニメーション エディタのようにビューポートのメニューから迅速に設定できるようになりました。

  • 他のアニメーション エディタのようにトランスポート コントロールから録画を制御することができるようになりました。

  • 物理アニメーションとコンストレイント プロファイルの UI が改善され、コンストレイントと物理プロファイルの選択、割り当て、管理が用意になります。

  • コンストレイント モードとボディ モードはなくなりました。コンストレイントとボディを一緒に表示するようになりました。それぞれのレンダリングはツリー ビューとビューポートで有効化、無効化、フィルタリングすることができます。

  • 新規ボディ作成は、これまでのモーダル ダイアログから新規 [Tools] タブに移動しました。これにより、新規アセットのイタレーション時間が改善し、毎回 3 クリック分の節約になります。新規 Physics アセット作成時に同じウィジェットを再利用することができます。

  • Physics アセットをコンテンツ ブラウザから直接作成できるようになりました。これまでは、Skeletal Mesh アセットの非表示のコンテキスト メニューのオプションからのみ作成可能でした。

  • ボディ / コンストレイントで行われる操作は、これまでのキーボード ショートカットに加えて、すべてのコンテキスト メニューに入りました。

新規:Physics アセット ボディの複数の凸包生成

ボーン毎に複数の凸包を使って物理ボディを自動生成できるようになりました。これによって複数の凸包を使って非凸型のジオメトリを近似できるようになりました。

image alt text

新規:アニメーション モンタージュの Time Stretch Curve

アニメーション モンタージュに Time Stretch Curve トラックを追加して再生速度を制御できるようになりました。これにより、モンタージュを部分的に選択して再生速度を遅くしながら、他の部分では通常の再生速度を維持することができます。例えば、Time Stretch Curve を使うと、ひとつの攻撃のアニメーションを作って幅広い範囲の再生時間を使って見た目を制御して最適化することができます。

Time Stretch Curve を使用するには、モンタージュで MontageTimeStretchCurve という名前の Float Curve を作成し、カーブを定義するキーを追加します。さらに細かく制御する必要があれば、 [Asset Details] パネル内で [Time Stretch Curve] プロパティを使ってカーブのサンプリング方法やデバッグ目的で作成されたマーカー数を調べることができます。

新規:RigidBody Anim Node の改善

RigidBody ノードにルートボーンのシミュレーション空間のオプションが追加されました。アタッチされたスケルタルメッシュをプレイヤーのカプセルと逆向き回転させる場合に便利です。さらに、物理アセットエディタに慣性スケーリングとコンストレイント ドミナンス (優勢) を適用することで、安定性とジッターが大幅に改善されました。

新規:ブレンドスペース エディタのユーザビリティの改善

これまでは、Shift キーを押しながらカーソルを当てた場所にプレビュー ピン (緑のダイヤ型アイコン) を置いていましたが、グリッド上でピンをドラッグできるようになりました。また、特性と機能について状況に応じた説明を提供するために、実際のブレンドスペース グリッドの状態に合わせて関連するヒントが出るようになりました。

新規:ブループリントのグローバル検索

ブループリント エディタ ウィンドウを開く必要なく、[Find in All Blueprints (すべてのブループリントを検索)] 機能を実行できるようになりました。最高 4 つまでの [Find in Blueprints (ブループリントを検索)] タブを開いたままにしたり、別のウィンドウにいつでもドッキングすることができます。これらは、メインの [Window] メニューから利用することができます。

ブループリントのエディタのメニューで [Edit->Find in Blueprints] の順に選択すると (またはブループリント エディタのウィンドウをフォーカスした状態で CTRL-SHIFT-F キーを押す)、グローバル検索の新機能 [Find in Blueprints] タブが開きます (または開いているか、ロックされていない最初のグローバル タブに切り替わります)。タブが開いているか、ブループリントのエディタ ウィンドウの外部のどこかにタブがドッキングされている場合、ブループリントのエディタ ウィンドウが閉じてもこのタブは開いたままになります。

グローバル検索機能の [Find in Blueprints] タブには、現在の結果一式を現在のタブにロックする [Lock] ボタンもあります。ブループリントのエディタのメニューで [Edit (編集)] -> [Find in Blueprints (ブループリントを検索)] を呼び出す場合、現在開いているタブでロックされているものがあれば、グローバル検索の新機能の [Find in Blueprints] タブが開きます。

ブループリントのエディタのメニューで [Edit->Find] を選択すると (または CTRL-F を押す)、現在のブループリント内でのみ検索を行うためのローカルの [Find Results] タブが開きます。[Find in all Blueprints] ボタンをクリックすると、グローバル検索機能 [Find in Blueprints] のタブですべての Blueprint アセットに対して同じ検索を行うことができます。

この新機能は必要に応じてオフにすることができます。オフにするには、 [Editor Preferences] -> [Blueprint Editor] -> [Workflow] の順に選択し [Host Find in Blueprints in Global Tab] のオプションのチェックを外します。

新規:クロスレベル アクタ参照の改善

これまで Asset ID/AssetPtr と呼ばれていた Soft Object Reference によってクロスレベル アクタ参照が改善されました。Soft Object Reference プロパティを作成してあるアクタを指すようにすると、指されている Actor ID がフルパスで表示されるとともに、ロードされていなことや参照が切れていることも表示されるようになりました。

image alt text

参照されているアクタが [Move to current level (現在のレベルに移動)] オプションを使ってその名前が変更または削除された場合でも、このようなレベル横断的な参照は正しく修正されるようになりました。特定のアクタを指している別のレベル / シーケンスが確認されて再保存されます。このようにして、参照されているアクタが削除される場合はその前に警告も出されます。さらに、レベル ストリーミングを使う場合、プレイ イン エディタ (PIE) で正しく機能するようになりました。新たに作成された Sequencer Actor の参照は Soft Object Reference となりましたが、古い Sequence は "Rebind Possessable References" で修正を行い、まず再保存されなければなりません。

注意: このアップデートの一環として、ネイティブ型である FStringAssetReference と TAssetPtr がそれぞれ FSoftObjectPath と TSoftObjectPtr に名称変更されました。

新規:エディタ内でのローカリゼーションのプレビュー

プレイ イン エディタ (PIE) の実行中におけるゲームのローカリゼーション プレビュー機能が追加されました。また、UMG エディタでさまざまな言語でウィジェットをプレビューできる機能が追加されました。

  • [Preview Game Culture] の ([Editor Preferences] -> [Region & Language]) で設定すると、プレイ イン エディタ (PIE) の実行時に自動的にアクティブになります。プレビュー言語はエディタから起動したスタンドアロン ゲームにも渡されます。

  • プレビューの実行中、編集可能なすべてのフィールドはロック (読み取り専用) 状態になり、翻訳データでソース データを間違って上書きしないようにします。この新しいロック機能を利用すると、プロジェクトのローカリゼーションの変更を防止することもできます。「DefaultGame.ini」もしくは「DefaultEngine.ini configuration」ファイルの「Internationalization」セクションの [LockLocalization] を [True] に設定します。

新規:配列の並び替え

配列内で配列要素をドラッグ アンド ドロップして並び替えが可能になりました。ブループリントおよび C++ で設定された配列はすべてデフォルトで並び替えが可能です。デフォルトの挙動をオプトアウトし C++ で固定した順番の配列を作成するには、EditFixedOrder メタデータを使用します。

新規:詳細マテリアル プレビュー ビューポート

ビューポートでマテリアルをプレビューするための詳細プレビュー シーンがマテリアル エディタおよびマテリアル インスタンス エディタに追加されました。シーンのライティングや環境キューブ マップなどのビュー設定を変更することができます。また、シーンの中のプレビュー メッシュの周囲にある背景の回転も可能になります。

プレビューの設定変更は、[Window] > [Preview Scene Settings] で行います。

image alt text image alt text

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

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

image alt text

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

    • Visual Studio: Visual Studio 2015 Update 3

    • Xcode: XCode 9.0

  • Android:

    • NDK 12b

    • Installer 1r6u1

Emscripten ツールチェーンを 1.37.19 にアップデートしました。

  • Linux: v10_clang-5.0.0-centos7

  • Steam: 1.39

  • Oculus Runtime: 1.17

  • Steam: 1.39

  • Switch: 1.7.0, 3.5.1 + NEX 4.2.0; Firmware Version 3.0.1-1.0

  • PS4:

    • 4.508.111

    • Firmware Version 4.730.001

    • Supported IDE:Visual Studio 2015, Visual Studio 2013

  • Xbox One:

    • XDK:すべての Xbox コンソール機 (XB, XB1-S, XB1-X) を対象とする June 2017 QFE3

    • Firmware Version:October 2017 Preview 3 (versuib 16291.1000.170913-1900)

    • Supported IDE:Visual Studio 2015

  • macOS: macOS 10.13 High Sierra のサポートはフルサポート プラットフォームとして追加されました。

  • iOS: SDK 11

tvOS: SDK 11

新規:Visual Studio Code が、Windows、Mac、Linux でサポート

UE4 のすべてのホスト プラットフォームのために Visual Studio Code を使ってコードを書くことができるようになりました。Visual Studio Code を使用するには、Editor Preference ダイアログで "Visual Studio Code" をお気に入りの IDE として選択するか、コマンドラインでプロジェクト ファイルを生成する時に -vscode 引数を追加します。すべてのプラットフォームについて、Microsoft .NET Core website で提供されている.NET Core 2.0 ランタイムをインストールが必要となります。

Visual Studio Code を使ってすべてのプロジェクト タイプのビルドおよびデバッグを行うには、拡張機能をいくつか追加する必要があります。すべてのプラットフォームにおいて、Microsoft C/C++ の拡張機能、および C# の拡張機能がインストールされていることを確認してください。Linux および Mac の場合は、C# プロジェクトのデバッグのために Mono Debug 拡張機能が、また C++ プロジェクトのデバッグのために LLDB Debugger 拡張機能がそれぞれ必要となります。さらに、C# プロジェクトのデバッグには、Mono ランタイムのインストールが必須となります。

  • OS X: brew install mono

  • Linux: sudo apt-get install mono-complete

image alt text

新規:iOS 証明書と署名が簡素化されました。

リモート ツールチェーンを使って自分の PC からリモートの Mac 上で OS をビルドすると、PC のプロジェクト設定から証明書とプロビジョニング ファイルが設定されるようになりました。リモートの Mac 上でキーチェーン アクセスを使ってプライベート キーや証明書をインストールする必要はなくなりました。

新規:IOS でのデスクトップクラス フォワード レンダラ (実験的)

アンリアル エンジン 4.18 に、WWDC 2017 で Wingnut チームが AR デモで使用したデスクトップクラス フォワード レンダラが追加されました。A9 以上のプロセッサを搭載した iOS 10.3 以降のデバイスでサポートされていますが、A10X 以上のプロセッサを搭載した iOS 11 での使用を強く推奨します。

image alt text

このレンダリング技術により、物理ベースのシェーディング、反射、ライティング、シャドウイングと同じサポートが最新の iOS デバイス上で可能になります。ただし、これらの機能はハードウェア上の現行のモバイル レンダラよりも高いスペックを要し、さらには実験的機能であるため、デバイスまたは OS によっては正しく動作しない機能もあります。以下の機能は正常に動作しないことが確認されています。GPU skin-cache、GPU morph-targets、Atmospheric Fog、Multi-Sample Anti-Aliasing

新規:Gradle が Android でデフォル設定化

Gradle が Android アプリケーションのパッケージ化のデフォルト設定になりました。必要に応じて [Enable Gradle] Android プロジェクト設定を無効にすれば Ant を使用することができますが、Ant は非推奨のため Gradle への移行をお勧めします。

注意: まだ Android SDK ライセンス契約を受け入れるために [Enable Gradle] にチェックを入れていない場合は、[Android Project Settings] の [Accept SDK License] ボタンをクリックする必要があります。ライセンスに同意しないままパッケージ化あるいは起動を進めるとエラーが出ます。

新規:Android Camera のためのプラグイン

Android デバイスのフロント / バック カメラへのアクセスを可能にするためのプラグイン (任意) がアンリアル エンジンに追加されました。プラグインを有効にすると、[Android Camera] のためのパネルが [プロジェクト設定] の[プラグイン] に追加され、Android Manifest のための要件を選択できるようになります。

image alt text

新規:HTML5 Optimized Browser WebAssembly がデフォルト設定になりました。

WebAssembly が HTML5 のプロジェクトではデフォルトで有効になりました。主要なブラウザ メーカーは WebAssembly 標準に対応しているので、ウェブ上でパブリッシュを行う際に、アセット サイズ、ブラウザのロード時間、ランタイム パフォーマンスにおける大幅な改善を実感できます。これまで HTML5 に最適化されていた ASM.js が廃止されてコードベースから削除されました。

注意: マルチスレッドは WebAssembly でまだ使用できません。ASM.js はサポートしていますが、WebAssembly は当面シングル スレッド モードでのみ実行されます。ただし、マルチスレッドは今後数ヶ月ですべてのブラウザ メーカーが目指す目玉機能となるでしょう。

新規:LLM Low Level Memory Tracker

LLM Low Level Memory Tracker を使うと、見逃しや重複カウントなしに すべてのメモリを 1 度だけトラッキングする ことができるようになります。

image alt text

エンジンあるいはゲームによるすべてのアロケーションには、属するカテゴリが特定できるタグ値が割り当てられています。すべてのカテゴリの合計が加算されて、ゲームで使用されるメモリ量の合計になります。タグはタグ スコープ マクロを使って適用されます。このスコープ内で行われる割り当てには、指定されたタグが与えられます。

LLM 統計情報は、'stat LLM' または 'stat LLMFULL' を使ってゲーム内で表示することができます。各タグの現在の合計値が MB 単位で表示されます。LLM は、統計情報の値をcsv に書き出します。それによって経時的なグラフで値を表示できるようになります。

LLM は、その性質上、プラットフォームごとにサポートする必要があります。現時点でのサポート対象は PS4 と XboxOne であり、Windows は実験的リリースとしてサポートしています。

新規:XGE (Incredibuild) シェーダー コンパイラーのサポートを改善

XGE (Incredibuild) シェーダー コンパイラのサポートを改善することにより、これまでの XGE (Incredibuild) シェーダー コンパイラで見られたストールとレイテンシを大幅に削減するとともに、新しいシェーダーのジョブを非同期で XGE に流し込むことが可能になりました。

新しいシステムはさらにパフォーマンスが向上し、クック オンザフライ、クック バイザブック、エディタ内でのシェーダのイタレーションなど、あらゆる状況でのシェーダー コンパイルが格段に速くなりました。

これらの改善内容はデフォルトで有効になっていますが、Incredibuild version 8.01 以上が必要になります。エンジンは起動時にバージョン チェックをし、サポート対象のインストレーションが見つからない場合はレガシーの XGE シェーダー コンパイラにフォールバックします。これまでのシステムと同様に、XGE シェーダー コンパイラ自体を有効にするには、コマンドラインで "-xgeshadercompile" を使います。あるいは ConsoleVariables.ini. で “r.XGEShaderCompile” を「1」に設定しておきます。

Unreal Audio Engine (早期アクセス プレビュー)

新アンリアル オーディオ エンジンは引き続き開発中です。4.18 では、サポート対象のプラットフォームがますます増えました。アップデートされたプラグインのアーキテクチャや素晴らしい新機能へのサポートも行われます。アンリアル オーディオのこれらの新機能は早期アクセス版です。今後のリリースでは、パフォーマンスおよび安定性に注力していきます。

Windows、Mac、iOS、Android、XboxOne、PS4 に加えて、Nintendo Switch、Linux および HTML5 でもアンリアル オーディオ エンジンが使えるようになりました。Linux では、この新アンリアル オーディオ エンジンがすでにデフォルトで有効にされています。4.16 および 4.17 で初めてリリースされたその他のすべてのバックエンドに対する重大な修正および改善が完了しました。

オーディオ プラグイン アーキテクチャの改善 (新アンリアル オーディオ エンジンのみ)

オーディオ プラグインは、オーディオ エンジンのコア機能を オーバーライド もしくは 拡張 する必要があるオーディオ エフェクトに役立ちます。オブジェクトごとに両耳に適用される音源の立体化、音源のオクルージョン、マスターのリバーブは、コア ミキシング エンジにより深く統合することによって、ベストな結果を得ることができます。これらのエフェクトには、特殊なオーディオ プラグインが必要になります。

image alt text

  • コア ミックス機能のオーバーライドを求めるサード パーティ デベロッパーのために、オーディオ プラグインのアーキテクチャが改善されて、円滑なインテグレートが可能になりました。

  • プロジェクトにおいて、音源の立体化、音源のオクルージョン、およびリバーブについて、プラグインのオーバーライドを組み合わせることができます。

  • エディタを再起動せずに別のプラグインへの切り替えが可能になりました。

新規:Source Bus (新アンリアル オーディオ エンジンのみ)

Source Bus は新アンリアル オーディオ エンジンの強力な新機能であり、柔軟にルーティングを行うことができます。複数の音源をセンドして単一のリアルタイム音源としてまとめることができます。Source Bus は Sound Base を元にしているため、Sound Wave や Sound Cue と同じ方法で再生および使用することができます。3D ミックスバスとして立体化する場合でも、あるいは Source Effect の持続を維持する手段として立体化する場合でも、オーディオ デザイナーにとっては非常に重要なツールとなって今後わくわくするような機能を生み出すことでしょう。

  • Source Bus を使うと、あらゆる音源のオーディオデータを 3D 音源に送ることができるようになります。これには他の Source Bus も含まれます (この Source Bus 自身も含まれ、実行時オーディオ フィードバック システムが作成されます)。

  • Source Bus は新しい USoundBase 型です。そのため、通常のサウンド BP および C++ API、オーディオ コンポーネント、環境アクタの中でまるで別の音のように再生できます。さらには、間隔を指定することによって、1 回限りのバス (0.0 として指定した場合) にしたり、ループする音源にすることが可能です。

  • Source Effect と Submix Send は、通常の音源と同じように Source Bus で使用することができます。

  • 他の音源のバスへのオーディオ送信は Submix Send への送信と類似しており、オーディオを Source Buse のみに送るか、あるいは Submixe にも送るかを選択できます。

新機能 Submix Effect (新アンリアル オーディオ エンジンのみ)

Synthesis Plugin を時間ベースの新機能 Submix Effects でアップデートしました。Submix Effects は、シンプルなディレイから、柔軟で演算効率のよいリバーブに至るまで扱うことができるため、複雑で面白いインタラクティブな空間的なエフェクトの作成ができるようになります。

  • Delay:シンプルなマルチチャンネル ディレイ ラインで、ブループリントからランタイム時のモジュレートが可能です。エフェクトが適用された状態で機能しているサブミックスに送られるオーディオにおいて、シンプルな ブロードキャスト ディレイをシミュレートするエフェクトです。アニメーションや他のゲームプレイシステムとのミリセカンド未満での同期に使用できます。

  • Tap Delay:ランタイム中にパワフルなブループリント API を使って、任意の数だけタップ ("エコー") を個別に追加、修正、削除することができる複雑なマルチチャンネル ディレイ エフェクトです。各タップは毎、タップの減衰、タップの方位角、タップのディレイによってパラメータ化されます。ドップラー効果のシミュレーション、初期反射、その他の多くのディレイ ベースのミックス エフェクトのエミュレーションに役立ちます

  • Flexiverb:エコー密度を最低限の掛け合わせで最大化できるように最適化された、計算負荷の低い単一チャンネル リバーブ アルゴリズムです。このエフェクトは CPU リソースに制限のあるプラットフォーム上で小さな部屋の反響をエミュレートする場合に便利です。

減衰 (Attenuation) の設定項目の改善

今回の改善は、減衰の設定項目の分かりやすさと見やすさに重点が置かれました。たとえば、特定の編集条件を持つカテゴリに合わせて減衰設定が表示されるので、使用中の減衰設定機能が一目で分かるようになりました。

image alt text

新規:VR / AR カメラ システムのリファクタリング

4.18 では、Camera Component と生のビューの両方のために、デフォルトのカメラの実装が含まれるようになり、エンジンで自動処理される最新のアップデートが含まれるようになりました。このデフォルトのカメラの実装は、ビュー ターゲットに CameraComponent がある場合、現実世界におけるデバイスの変位に等しく、キャリブレートされた基点からそれ自体を移動 (相対トランスフォーム) させます。結果として、ハードウェアのデベロッパーが実装する必要のある API がかなり削減され、結果として効率性の飛躍につながります。

注意: すべての既存プラットフォームにおけるカメラの実装は削除され、デフォルトのカメラ実装に変更されています。

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

AI

  • Added a Blueprint callable function AIPerceptionComponent.SetSenseEnabled that can be used to toggle specific AI senses.

  • Bug Fix:Prevent crashes if UMockTask_Log is created manually rather than via the CreateTask factory method

  • Bug Fix:Fixed a bug in AISense_Sight processing that resulted in inconsistent frequency of "line of sight lost" reporting.Now this even should be reported only once, when sight of target is lost.

Behavior Tree

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

General

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

  • Bug Fix:Fixed UCrowdFollowingComponent::UpdateCachedDirections crashing when CharacterMovement is null

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

Animation

  • New:TimeStretchCurve system for AnimMontages.Allows adjusting playback time of montages in a non constant way.This optional curve allows the user to determine how animation frames are influenced by play back time scaling, instead of using a constant play rate scaling.For example, with an attack animation, the strike could have zero influence (no play rate), and the recovery time could have 100% influence (most play rated).This system is entirely optional and compatible with current Montage API. You still determine desired play back time via the Play Rate parameter.Based on desired playback time, if there is a curve named 'MontageTimeStretchCurve' then, it will use the curve to determine animation frames to play based on playback time and TimeStretchCurve.Otherwise, if no curve exists, it is done using the constant supplied PlayRate.

  • Added FAnimationRuntime::LerpPosesPerBone

  • Added FAnimationRuntime::LerpPoses.Blends two poses together, but first pose is also storing results.To save on copying poses when not necessary.Removed individual use of ZERO_ANIMWEIGHT_THRESH, instead use FAnimWeight functions.FAnimationRuntime weight functions use FAnimWeight for consistency.(IsFullWeight was different).

  • Added outline to skeletal mesh section selection.

  • Changed behaviour when reimporting an Alembic Cache to ensure at least one track is ticked

  • Animation Optimization:Added EMeshComponentUpdateFlag::OnlyTickMontagesWhenNotRendered to only update montages when not rendered, instead of doing a whole pose update.This means on dedicated servers we'll only update montages when needed, and not the AnimGraph, which we have no need for.This is also affects non rendered meshes on clients.

  • Added short dummy bones to end effectors to prevent their rotations from being too aggressively compressed.

  • Fixed broken 'ComputeCompressionError' with additive animations.Optimized 'ComputeCompressionError' by caching bone indices, so they don't have to be looked up every frame.Added CompressCommandletVersion INDEX_NONE to bypass DDC and test locally recompression.

  • RemoveLinearKey optimizations from licensee submission: https://udn.unrealengine.com/questions/167344/animation-compression-doesnt-scale-well.html

  • More Anim Compression Fixes: - Fixed frame->error bug in FAnimationUtils::ComputeCompressionError resulting in incorrect compression error measurement, and in some rare animations not being able to find a suitable compressor. - Make sure automatic compression actually go through all the compressors. - Removed unused reduction based on retargeting settings.

  • Automatic Compression fixes. - Error reporting: normalize rotations and added ensures to make sure NaNs do not sneak in there. - switched size reporting from 32 to 64 bits, so we have enough space for large recompression jobs. - fixed compression ratio to be accurate.Measures actual compressed animation data instead of whole asset size. - prevented infinite loop when trying to recompressed a failed automatic compression. - Fixed reporting when no suitable compressors were found. - Compression ratio is now against uncompressed raw size, and not (trivially) compressed raw size. - Force recompression if data we got back from DDC is invalid.

  • Bug Fix:SkelMeshComponent LOD update only refreshes transforms when rendered.If AnimGraph eval is done, make sure Graph has been updated at least once.

  • Bug Fix:SkeletalMeshComponent::InitAnim - Do not call RefreshBoneTransforms without calling TickAnim first.AnimGraph could get in a bad state. - Do not call RefreshBoneTransforms if AnimInstance has not been initialized. - Do not call RefreshBoneTransforms if bUseRefPoseOnInitAnim is set.Which it could if bForceReinit was false.

  • Bug Fix:Fixed animation curves not correctly being updated to post process instances.

  • Bug Fix:Removed deprecated FTAlphaBlend class and AlphaBlendType.h header

  • Bug Fix:Marked UAnimInstance as Within=SkeletalMeshComponent since it assumes the outer in various places

  • Bug Fix:Fix FPoseDataContainer::Shrink bug while LocalSpacePoseMask already contains Tracks.Num() data before SetNumZeroed.

  • Bug Fix:Fixed issue with Animation Sequence bounds imported from an Alembic Cache including the origin

Animation Assets

  • This allows you to link curve to MaxLOD, where the lowest LOD (as 0 is highest) is [0, MaxLOD].If your MaxLOD is 1, it will be only evaluate from [0, 1].You can't disable LOD 0 this way, but if you want to disable curve, use USkeletalMeshComponent.bAllowAnimCurveEvaluation

  • Cleaned up animation compression logging (change to compression category and downgraded from warning)

  • -Added option to state machine to allow it to skip reinitialization when it becomes relevant -Added option to slot nodes to keep source pose relevant while montage slot is playing.

  • Bug Fix:Fix for the bug: when montage is interrupted after it starts to BlendOut neither Completed pin no Interrupted pin is executed.

  • Bug Fix:Fix playrate not being calculated correctly when 2 samples use the same animation

  • Bug Fix:Add curve evaluation to aim offset blendspaces

  • Bug Fix:Correct root motion extraction on anim composites and montages with more than one segment

  • Bug Fix:Fixed crash in compression code when cropping animations in editor.

Animation Blueprint

  • New:

    • Two Bone IK and FABRIK uses FBoneSocketTarget that supports bone and socket

    • Created new detail customizaton for FBoneSocketTarget that can display bone and socket together.

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

    • void SetAllowAnimCurveEvaluation(bool bInAllow);

    • bool GetAllowedAnimCurveEvaluate() const { return bAllowAnimCurveEvaluation; }

    • void AllowAnimCurveEvaluation(FName NameOfCurve, bool bAllow);

    • void ResetAllowedAnimCurveEvaluation();

    • void SetAllowedAnimCurvesEvaluation(const TArray& List, bool bAllow);

  • Re-organized AnimBlueprint menu, so that it prioritize showing up anim node Two Bone IK.

  • Added more descriptive pin name and node text for constraint node

  • Improved root motion extraction performance by storing it on the anim instance during post update to avoid waiting on the parallel eval task later on.

  • Bug Fix:Fixed inconsistent animation entries in Blueprint context menu (displaying differently depending on whether the asset is loaded) and cached correct tooltip when asset isn't loaded

  • Bug Fix:Fixed compilation errors when nativizing animation Blueprints that use subinstances

Animation Blueprints

  • Bug Fix:Fixed debug link for animation Blueprints not persisting when changing preview mesh

  • Bug Fix:Fixed incorrect reporting of animation Blueprint fast path caused by compilation manager

Animation Tools

  • Bug Fix:Prevented actors & components of anim preview scenes (and the preview scenes themselves) from persisting after editors are shut down

  • Bug Fix:Assets with no preview mesh now no longer allow access to other skeleton's physics assets in their shortcut bars

  • Bug Fix:Undo/redo now correctly affects animation preview scene settings

  • Bug Fix:Fix crash with Retargeting Manager:Auto Mapping.

  • Bug Fix:Fixed crash when deleting notifies while the mouse was moving on top of the notify.orion

General

  • Bug Fix:Changed SmartNames FindUID API to return UID rather than pointer to UID.

  • Bug Fix:Fixed multiple calls to FinalizeBoneTransforms when calling RefreshBoneTransforms outside of tick

  • Bug Fix:Fixed root motion when using ForceAnimRate's of more than 1

Skeletal Mesh

  • Bug Fix:Fixed insert/delete/duplicate button not appearing for bones within the "Bones to Remove" setting of the Skeletal Mesh editor.

  • Bug Fix:Fixed crash when reloading mesh asset that are used by animation editor.

  • Bug Fix:Fix for USkinnedMeshComponent::GetCPUSkinnedVertices() failing in shipping config on platforms that supported GPU skinning (Contributed by Koderz)

Tools

  • New:Improved discover-ability for Blend Space Editor features

  • Break up Live Link plugin so that the client can run in cooked builds too

  • Smart name refactor - Remove guids entirely - Remove automatic fix up - Simplify smart name mapping container - Make animations deterministic for cooking

  • Add bulk rename support (matching bulk remove support)

  • Bug Fix:Fixed crash when Undo-ing transactions after placing Blendspace Samples on the Grid

  • Bug Fix:AnimNotify Macro is not visible anymore in the notify selection list.

  • Bug Fix:Fix crash when interacting with multiple notify management windows for the same skeleton

  • Bug Fix:Fix newline being added to single selection bone name copies

  • Bug Fix:Fix crash when pasting invalid bone name into 'Bones to Remove' array.

  • Bug Fix:Fixed BlendSpace editor preview (holding Control) when it doesn't have focus.

  • Bug Fix:Fixed issue with BlendSpace editor where new samples list would not regenerate BlendSpace sampling.

  • Bug Fix:Fixed crash when performing drag operations in the notify track window

  • Bug Fix:Notify windows now stay up to data across multiple editors when adding notifies to an animation.

  • Bug Fix:Fixed Bake Pose functionality not working correctly if the Root Bone of the Skeleton contained any transformations

Audio

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

  • New:

    • Cleaning up Attenuation Settings UI.

    • Breaking up attenuation settings into categories.

    • Added edit condition so only editable if attenuation settings are overridden in audio components or sound cues.

    • Adding ability for audio plugins to indicate if they have custom settings.Allows hiding settings in attenuation settings.

    • Cleaning up reverb send code and updated attenuation settings.

    • Added custom reverb send curve support.

    • Added default stereo spread of 200 for attenuation settings.

    • Added ability to do a normalization for stereo spatialized sound sources (to avoid clipping when spread is

    • Added ability to apply a HPF to a sound source based on distance for audio mixer and added that option to attenuation settings if audio mixer is enabled.

  • New:

    • Source buses allow any audio source to route their audio to a 3d audio sources.

    • Source buses can be routed to other source buses (including themselves).

    • Source buses are a new USoundBase type, so can be played as if it was another sound in our normal sound BP and C++ APIs, audio components, and ambient actors.

    • Buses can have their duration specified to become a 1-shot bus or, if specified as 0.0, will be treated as a looping source (i.e. indefinite duration).

    • Source effects and submix sends can be used with buses like normal sound sources.

    • Other sources send their audio to buses in an analogous way to submix sends and can opt to only send their audio to buses vs also sending their audio to submixes.

    • Fundamental architectural feature allows sources to be mixed into 3d buses which allow persistence of source effect state between instances of other sources and opens up the possibility for a number of other exciting features.

  • New:The new Unreal Audio Engine now supports HTML5.

  • New Submix Effect added:Tap Delay.The Tap Delay submix effect allows you to add any general number of taps ("echoes") and control them independently, both ahead of time and at runtime using Blueprint functions.This can be used to emulate the doppler effect, simulate early reflections, and more.

  • Added ability to pass in an owner to PlaySound2D and PlaySoundAtLocation BP functions so they can be used with concurrency limits that are limited to owners.

  • Allowing launching audio to HMD audio device with -VR in non-editor builds.

  • Moved setting a default reverb send level for audio mixer master reverb to audio settings.

  • Moving the synth component initialize to before audio component attachment is setup.

  • Adding code to not update filter parameters unless the parameters have changed.

  • Adding utility function to get a log-frequency value from a linear value.

  • Update to IAudioPlugin to allow audio plugins to query if they have custom settings.

  • Removing default master reverb send amount on audio components.Breaking out an initialize function so that synth components can be initialized outside of OnRegister().

  • SDL backend implementation for windows, linux, and HTML

  • Don't send or mix built-in reverb submix if there's a plugin reverb enabled.

  • Added Blueprint functions to the Sound Utilities plugin:GetBeatTempo.GetFrequencyFromMIDIPitch, GetMIDIPitchFromFrequency, and GetPitchScaleFromMIDINote.

  • Added a new submix effect to the Synthesis library:Flexiverb. Flexiverb is a computationally inexpensive single-channel reverb algorithm optimized for maximizing echo density with as few multiplies as possible.This effect is best suited for emulating small room reverberation on platforms where CPU resources are limited.

  • Fix for allowing audio plugins to work in non-editor builds who don't support multiple audio devices for PIE.

  • The new Unreal Audio engine has been refactored so that audio buffers are allocated with platform specific memory alignments.

  • Adding attack and decay interpolation times for focus feature to avoid fast sweeps of focus.

  • Optimization in converting procedural audio buffers to 16 bit PCM.

  • New submix effect in the Synthesis library:Delay.This effect is a simple multichannel delay line that can be adjust at runtime.

  • SoundMix Fade and Duration Times now operate as expected.

  • Bug Fix:Fix for Editor crash when baking indirect sound for a Phonon Source that has no audio component attached.

  • Bug Fix:Fixing assets showing up under miscellaneous when audio mixer isn't enabled.

  • Bug Fix:Fixed issue in the new Audio Engine's FDelay class wherein Delay lines would not work when set to the maximum time they were initialized for.

  • Bug Fix:Fixed issue where the new Unreal Audio engine would sometimes crash on shutdown while playing a streaming sound wave.

  • Bug Fix:Adding thread safe mode for plugin interface shared pointers.

  • Bug Fix:Resetting available byte count when resetting the procedural sound wave

  • Bug Fix:Moving opus lib to subfolder Windows instead of win32 to fix UGS game sync issues.

  • Bug Fix:Allowing audio devices to have a fade in when creating a new PIE window.

  • Bug Fix:Crash fix for loading multiple sound waves with multiple granulators.

  • Bug Fix:Using audio thread platform affinity mask for audio render thread in audio mixer.

  • Bug Fix:Fixing a crash in Ngs2 when initializing a source from the Ngs2 rack that is still being stopped from its previous lifetime.

  • Bug Fix:Fix for incorrect spatialization of audio sources on iOS using legacy audio engine.

  • Bug Fix:Implemented basic handling for audio device hotswap.This will solve the issue of the UE4 editor hanging when an audio device is unplugged from the system.However, please note that any audio sources played via source or Blueprint will be stopped when this happens.

  • Bug Fix:Audio:Fix case where audio is already set to be a preview sound.Sequencer sets the sound to be a preview sound when scrubbing in editor.

  • Bug Fix:Streaming audio on MacOS and iOS in the audio mixer is now fixed.

  • Bug Fix:Fixed Platform Headroom levels for Android.

  • Bug Fix:Fixing parameter interpolation in the audio mixer.

  • Bug Fix:Fix for ajm decoder running out of memory for large source instances.

  • Bug Fix:Fixing audio mixer shutdown to ensure final commands are pumped.

  • Bug Fix:Fixing seaking in ADPCM sound files.

  • Bug Fix:Fixed issue where OnReleaseSource would not be called on every active source for audio plugins.

  • Bug Fix:Fixing thumbnail generation on sound file reimport.

  • Bug Fix:Fix for sound submix graph recursion.

Automation

  • Add individual FTest enumeration to perf tests Moved methods to run FTests to helper for reuse.Effects perf tests now show individual test cases for more granular runs.All perf tests now do map check and draft logic as setup.

  • Bug Fix:Fix Perforce automation routine to return files whose last action was a rename.

Blueprints

  • New:Find-in-Blueprints is now hosted in a global tab by default.This tab can remain open even if the Blueprint Editor window is closed.

  • New:Added MakeMap Blueprint node.

  • New:Added MakeSet Blueprint node

  • Added Blueprint functions for getting vectors from cones using random streams, to complement the existing non-stream variants.For consistency, this entire family of functions have been modified and renamed to provide versions that take arguments in both degrees and in radians.See the Programmer notes for specific details.

  • Blueprint input nodes for key, action, and axis can now be subclassed from other modules.

  • Made the compact node title for cross and dot product the words cross and dot rather than hard to see . and x symbols

  • Improved the visual styling of user disabled nodes and development-only nodes (still an experimental feature, but this is a step towards removing that label)

  • Made it easier to pick a specific actor in the level as the Blueprint instance to debug by adding "(selected)" after the label in the 'debug filter' dropdown in the Blueprint editor

  • Allow adjusting the font size for each individual comment box node in Blueprint graphs (also works in Material graphs)

  • Allow specifying a description for user defined enum assets (shown in the content browser)

  • Allow drag-dropping component Blueprint assets into the graph to create Add Component nodes and improved the error message when dragging something that cannot be dropped into an actor Blueprint

  • Added a tooltip field for each value in a user defined enum

  • Added a key binding for Find References (Shift+Alt+F)

  • Improved the implementation of Goto Definition, allowing any node to implement it by overriding CanJumpToDefinition or JumpToDefinition - Collapsed 'Goto Code Definition' for variables and functions into the same path, so there aren't separate menu items and commands - The default behavior for UK2Node subclasses is to call GetJumpTargetForDoubleClick and call into FKismetEditorUtilities::BringKismetToFocusAttentionOnObject - Going to a native function now goes thru a better code path that will actually put the source code editor on the function definition, rather than just opening the file containing the definition

  • Added a key binding for Goto Definition (Alt+G)

  • Allow 'Goto Definition' and 'Find References' to be used while stopped at a breakpoint

  • Added an option to disable the comment bubble on comment boxes that appears when zoomed out

  • Added the full name of the type, container type, and value type (for maps) to the tooltips for the type picker on Blueprint variables, so long names can be read in full

  • No longer need to explicitly register nodes implementing UK2Node_AddPinInterface to use SGraphNodeK2Sequence

  • Remove deprecated CustomMapParamValue code

  • Add InRange (int) to Blueprint math library

  • Added Blueprint node for swapping entries in arrays.

  • KismetRenderingLibrary:Added EditorOnly Blueprint function for creating static textures from Render Targets.Has options for Mip and Compression Settings

  • The VirtualReality Blueprint template is now available on Mac.

  • Blueprint compilation manager now skips compilation of dependent Blueprints when no function signatures are changed.This can greatly speed up compilation of Blueprints with large numbers of dependent Blueprints

  • Fixed various issues with both UAT-driven and manually-configured code/data build workflows with respect to enabling Blueprint nativization.

  • Added new Editor Only Plugin called Blueprint Material Texture Nodes.This plugin adds Blueprint nodes for reading texture and render target data as well as the ability to create and modify MIC assets.

  • Bug Fix:Marked a number of container functions as BlueprintThreadSafe From UDN: https://udn.unrealengine.com/questions/384561/should-map-find-be-tagged-Blueprintthreadsafe.html

  • Bug Fix:Fixed an issue diffing text properties/pins in Blueprints

  • Bug Fix:Blueprint nodes can no longer be renamed on read-only graphs.

  • Bug Fix:Fixed undo not removing pins added to make container nodes via Add Pin from the context context menu.

  • Bug Fix:Compiling a Blueprint containing a child actor component will no longer mark the Blueprint of child actor's class dirty.

  • Bug Fix:Fixed a runtime crash in nativized child Blueprints that include a parent function call node in a replicated function implementation.

  • Bug Fix:Array shuffle node no longer uses biased shuffle algorithm.

  • Bug Fix:Fixed various issues with split pins not being correctly connected when expanding macros and functions.

  • Bug Fix:Fixed ensure when connecting the output pin of a create delegate node to a wildcard input.

  • Bug Fix:Correctly reconnect split pins when changing class on create widget, construct object, and spawn actor nodes

  • Bug Fix:Fix two compilation manager issues:Make sure CDOs are not renamed under a UClass, because they will be considered as possible subobjects, which has bad side effects and make sure that we update references even on empty functions, so that empty UFunctions are not left with references to REINST data

  • Bug Fix:Prevent crashes when a loading blueprint that implement an interface that was deleted

  • Bug Fix:Fixed Construct Object not working correctly with split expose on spawn pins.

  • Bug Fix:Fixed an EDL assert on load in a nativized build caused by a native reference to a nativized BP class that also references a nativized UDS asset.

  • Bug Fix:Prevent wildcard pins from being connected to exec pins

  • Bug Fix:Made drag-dropping assets into a graph to create a component undoable

  • Bug Fix:Made wires into/out of a user-disabled node draw very dimly (other than the passthrough execution wire if it exists)

  • Bug Fix:Fixed the tooltip when dragging a variable onto an inherited category so it shows the 'move to category' hint

  • Bug Fix:Changed UK2Node::GetPassThroughPin so that only the execution wire on nodes with exactly one input and one output exec wire will have a corresponding pass-through pin (when there is ambiguity in which exec would be used, e.g., with a branch or sequence or timeline node, the subsequent nodes are now effectively disabled as well)

  • Bug Fix:Changed the behavior of various things that were hard-coded to operate on the first event graph to instead operate on the most recently used event graph page

  • Bug Fix:Fixed the tooltip of a user defined structure not updating immediately in the content browser after being edited

  • Bug Fix:Fixed discrepancy between the Structure tab name and the menu option for the tab in the user defined structure editor (now both say Structure Editor)

  • Bug Fix:Improved editor performance when working with Blueprints that contain many components or variables

  • Bug Fix:Prevent converting a variable get node to impure/back while debugging

  • Bug Fix:Add support for 'goto definition' on Create Event nodes when the Object pin is not hooked up

  • Bug Fix:Fixed swapped undo/redo messages when converting a cast node between pure and impure

  • Bug Fix:Actor bound event related warnings now show up in Blueprint status when opening level Blueprint for first time, improved warning message

  • Bug Fix:Adjust search query when doing 'Find References' on variables from My Blueprints so that bound event nodes show up for components and widgets

  • Bug Fix:Allow the autowiring logic to better break and replace existing connections when made (e.g., when dragging a variable onto a compatible pin with an existing connection, break the old connection to allow the new connection to be made)

  • Bug Fix:UField::Serialize no longer serializes its next ptr, UStruct::Serialize serializes all Children properties instead.This resolves a hard circular dependency between function libraries that EDL detected.It was resolved in an ad hoc way by the old linker

  • Bug Fix:User-Defined Struct assets now support their own external dependencies when nativized.

  • Bug Fix:Blueprints will no longer remain dirty when compiling when a Get Class Defaults node with a split struct pin is in the graph.

  • Bug Fix:Changing the pin type of a function input from struct to something else now correctly works when the struct input pin had been split.

  • Bug Fix:Undoing 'Collapse to Macro' now works as expected

  • Bug Fix:Prevent CDOs from getting weird names if they are loaded while we are reinstancing

  • Bug Fix:Clear out null entries in the LastEditedDocuments list during PostLoad() and remove entries when a graph is being deleted to prevent new nulls from being added

  • Bug Fix:Fixed crash on launch of a nativized build that includes an instanced default subobject that's referenced by another instanced default subobject.

  • Bug Fix:Fixed a bug where a bogus value could be read from a Map Find node if a find failed after a previous success

  • Bug Fix:Can no longer select remove pin on split pins on a MakeSet node.

  • Bug Fix:Cast nodes can no longer be switched from pure to impure while debugging.

  • Bug Fix:Fixed a packaging code build failure that would occur with a nativized Blueprint class that contained a UInterfaceProperty.

  • Bug Fix:Fixed a crash on load when an external variable member reference's owning type could not be loaded.

  • Bug Fix:It is no longer possible to create a set or map with duplicate entries from the Blueprint virtual machine.

  • Bug Fix:Remove Tooltip, Category, and HideCategories tooltip from the Blueprint generated class if source data is cleared, this allows these fields to be cleared after they have been set

  • Bug Fix:Subobjects in Sets and Maps are now properly patched into the linker table.Required add of missing implementation for sets/maps to FInstancedPropertyPath, correct uproperty logic in FFindInstancedReferenceSubobjectHelper::GetInstancedSubObjects_Inner

  • Bug Fix:Added support for creating appropriate outers for objects that must be nested within another class during fuzzing (ones that specify Within=, other relationships aren't knowable yet)

  • Bug Fix:We now prevent ConstructGenericObject nodes from compiling in a Blueprint if the selected class type does not include 'BlueprintType' in its inheritance hierarchy.

  • Bug Fix:Fix for crash when attempting to access a value in an array by ref, when the array being accessed was trying to be found on a null object ref

  • Bug Fix:Placing a get to an input parameter with same name as a member variable no longer creates an incorrect property reference.

  • Bug Fix:Fix rare crash when running ConformImplementedEvents when loading .uassets asynchronously

  • Bug Fix:Fixed a potential crash when changing the ChildActorComponent class default value on a Blueprint that also sets the class in the Construction Script.

  • Bug Fix:Fix ActorBoundEvent and ComponentBoundEvent to always refresh their event signature from the delegate property they are bound to, which will fix broken Blueprints when those signatures are moved or renamed

  • Bug Fix:CollectGarbage Blueprint node now correctly works in shipping builds.

  • Bug Fix:Fixed non-native script interface property value initialization for nativized Blueprint class default objects.

  • Bug Fix:Fix issue where GUID variables on Blueprints would not correctly update after being cleared or initialized

  • Bug Fix:Fixed a compile error in UHT-generated boilerplate code after choosing to package with Blueprint nativization enabled if the project includes a converted User-Defined Structure asset.

  • Bug Fix:Fix issue where pasting or moving actors between levels would break delegates bound within that actor/component hierarchy

  • Bug Fix:Fixed bug in Blueprint Compilation Manager that could result in a crash when compiling Blueprints that both inherited from another Blueprint and called functions in that Blueprint

  • Bug Fix:Fixed issues where a class reference to a Blueprint class in a set or map could fail to load correctly.

  • Bug Fix:Fixed NegateInt/Float in StandardMacros returning an unchanged value even though the passed in reference had been changed.

  • Bug Fix:Fixed generated code failing to compile when nativizing a Blueprint which has a property of a less derived type referencing a sub object with modified default properties declared in a more derived class.

  • Bug Fix:Fixed crash when adding component to child actor class after a component of the same name was removed from the parent.

  • Bug Fix:Fix grammar and improve clarity of comment for DestroyComponent node

  • Bug Fix:Fix crash renaming a composite graph with no bound graph.

  • Bug Fix:Fix native code generation for MakeMap node.

  • Bug Fix:Fixed crash that could occur when compiling Blueprints that had function calls to Blueprints that used Construct Object nodes (e.g. SpawnActorFromClass or ConstructObjectFromClass)

  • Bug Fix:Fixed bug copy pasting collapsed graphs resulting in a crash or invalid graph.

  • Bug Fix:Functions that have parameter type changes (rather than name changes) now properly orphan their pins

  • Bug Fix:Fix crash when diffing a Blueprint whose older version's parent Blueprint has been deleted.

  • Bug Fix:Fixed rare assertion failure when undoing Blueprint graph node deletion operations

  • Bug Fix:We no longer emit a BOM to generated nativized Blueprint asset source files encoded as UTF-8.Fixes an issue with C++ compilation on some platforms.

  • Bug Fix:Fixed a crash on load in a nativized build caused by a reference to a BP class containing a nativized enum

  • Bug Fix:Fix construct object from class nodes not clearing orphan pins when connection broken.Improved warning messages about orphaned pins to include the name of the node it is occurring on.Fixed some bad content causing an orphan pin.

Core

  • New:Support for Visual Studio Code

    • Pass "-vscode" to GenerateProjectFiles in order to create a set of task/launch/cppconfig files that can be used by Visual Studio Code to build and debug Unreal Engine projects

    • A new source code access plugin that will allow the opening of projects and source files in Visual Studio Code

  • New:Chromium Embedded Framework (CEF) upgraded to branch 3071 Win32/Win64/Mac.Added web browser support for foreign language character input via IME.

  • Core:Various improvements to FTimespan

  • Core:Added scalar division to FTimespan

  • Core:Added TLruCache template for least-recently used caches

  • Core:Added FTimespan::Ratio

  • Changed the default sorting algorithm to intro sort. - Algo::Sort and ::Sort will call Algo::IntroSort - The sort version that was in Algo::Sort is now in Algo::LegacySort

  • Added the ability to verify the DDC content is not stale.Systems have to opt in (-VerifyDDC).

  • Fixed documentation comments for FName inequality operator.

  • Fixed incorrect definition of DECLARE_DELEGATE_NineParams, DECLARE_MULTICAST_DELEGATE_NineParams macros.

  • Added FString::ToUpper() and FString::ToLower() rvalue overloads for improved efficiency.

  • Improved UnrealHeaderTool to support multiple interface definitions in a single header.

  • Improved UnrealHeaderTool's error message when unsupported template parameters are provided in a TSet property.

  • Improved Intellisense when generated headers are missing or out of date (eg. line numbers changed, etc...).These errors seem to be masked by VAX, but are present when using the default Visual Studio Intellisense. UCLASS macro is defined to empty when INTELLISENSE is defined.Previous macro was preventing any following class declaration being parsed correctly if generated code was out of date, causing squiggles over all class methods/variables. Insert a semicolon after each expanded GENERATED_BODY macro, so that if it parses incorrectly, the compiler can still continue parsing the next declaration.

  • Added container modification checks to ranged-for loops which are iterating over TMap, TSet and TSparseArray.

  • Added code to verify compression flags in package file summary to avoid cases where corrupt packages are crashing the editor

  • Added a batch file to Engine/Build/BatchFiles for detecting and running MSBuild

  • Added VisitTupleElements, which calls the given functor with each element in the tuple.

  • Improved UnrealHeaderTool's error message when multiple types with the same name are found.

  • Changed the logic so that engine UObjects boot before anything else.The engine classes are known to be cycle-free, so we will get them done before moving onto game modules.

  • UENUM enumerator initializers can now be arbitrary C++ constants, including values which are not parsed by UnrealHeaderTool (e.g. values from third party headers).However, script generator plugins will not have access to these values at script-generation time.Added support for editor-only data UENUMs. Fixed multiple MAX values being generated for UENUMs which already define a MAX.

  • Logging improvements for pak signature check failures

  • Split RunExternalExecutable into RunExternaNativelExecutable and RunExternalDotNETExecutable

  • Added editor support for packages cooked with the Event Driven Loader enabled.

  • Added validation that arguments passed to the checkf macro are valid sprintf types, and fix up a few places which are currently incorrect.

  • When creating GC clusters and asserting due to objects still being pending load, the object name and cluster name will now be logged with the assert.

  • Added FBase64::GetDecodedDataSize() to determine the size of bytes of a decoded base64 string

  • PR #3847:Add GC callbacks for script integrations (Contributed by mhutch)

  • Added support for displaying log timestamps in local time.Set LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command line.

  • Various changes to Unreal Build Tool and DotNETUtilities assemblies to help support building and executing on the .NET Core 2.0 platform

  • Added ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject pointer checks in shipping builds when the garbage collector is running.

  • Fixed a race condition with the async loading thread enabled caused by missing linker object.

  • PR #3839:Make non-encoding specific Base64 functions accessible (Contributed by stfx)

  • Moved some common C# classes into the DotNETCommon assembly

  • FString::Trim() and FString::TrimTrailing() have been replaced with separate versions to mutate (TrimStartInline(), TrimEndInline()) or return by copy (TrimStart(), TrimEnd()).

  • Allow the network version to be set via Build.version if it's not overriden from Version.h.

  • UBT - Add a ToString to ProjectFile.Source file to help with debugger watch presentation

  • Plugins may now specify a list of supported target platforms, which are propagated to any .uproject file that enables it.This has several advantages over the per-module platform whitelist/blacklist: Platform-specific .uplugin files can now be excluded when staging other platforms.Previously, it was only possible to determine which platforms a plugin supports by reading the plugin descriptor itself.Now that information is copied into the .uproject file, so the runtime knows which plugins to ignore. References to dependent plugins from platform-specific plugins can now be eliminated. Plugins containing content can now be unambiguously disabled on a per-platform basis (having no modules for a platform does not confer that a plugin doesn't support that platform; now it is possible to specify supported platforms explicitly). The editor can load any plugins without having to whitelist supported editor host platforms.UE4 targets which support loading plugins for target platforms can set TargetRules.bIncludePluginsForTargetPlatforms (true for the editor by default, false for any other target types).This defines the LOAD_PLUGINS_FOR_TARGET_PLATFORMS macro at runtime, which allows the plugin system to filter which plugins to look for at runtime.Any .uproject file will be updated at startup to contain the list of supported platforms for each referenced plugin if necessary.

  • Fixed lazy object pointers not being updated for streaming sub-levels in PIE.Fixed lazy pointers returning object that is still being loaded which could lead to undefined behavior when client code started modifying the returned object.

  • PR #3760:Fix typo (Contributed by jesseyeh)

  • Made MoveTemp static assert when called on a const reference or rvalue, to allow inefficiencies to be tracked more easily.Added MoveTempIfPossible which follows the earlier behavior, which is still useful for templates and macros where it's unclear if the argument is valid.

  • Removed the extraneous subfolder when writing out .mprof files.

  • Fix non-thread safe construction of FPluginManager singleton.Length of time spent in the constructor resulted in multiple instances being constructed at startup, making the time to enumerate plugins on slow media significantly worse.

  • Optimizations to SignedArchiveReader

  • Improved assert message when the initial package read request was too small.

  • Made max package summary size to be configurable with ini setting

  • Add support for a "Mods" folder distinct from the project's "Plugins" folder, instead of using the bIsMod flag on the plugin descriptor. Mods are enumerated similarly to regular plugins, but IPlugin::GetType() will return EPluginType::Mod. The DLCName parameter to BuildCookRun and the cooker now correctly finds any plugin in the Plugins or Mods directory (or any subfolders).

  • Added a new TArray constructor that takes a raw pointer and a count.Improved checks inside TArray::Append() to allow nullptr in empty ranges.

  • UDataTable::AddReferencedObjects will no longer try to iterate over the RowMap if there's no UObject references in it.

  • Custom Version Container will no longer be always constructed in FArchive constructor.This reduces the number of the Custom Version Container allocations considerably.

  • Removed obsolete code for UHT makefiles.

  • Moved FSimpleObjectReferenceCollectorArchive and FSimpleObjectReferenceCollectorArchive to be internal archives used only by FReferenceCollector so that they are constructed only once per GC task instead of potentially multiple times per GC (as was the case with UDataTables and BlueprintGeneratedClasses).

  • Added new AllOf, AnyOf and NoneOf algorithms.

  • Shrunk size of code generated by UnrealHeaderTool, around 10% of Win64 executable size.

  • Deprecate /-prefixed commandline switches as they cannot be distinguished from absolute file paths on Linux/Mac.

  • Bitfield properties can now be exposed on spawn.

  • FName now works correctly with Lex::To/FromString.

  • Added FQuat::InitFromString.

  • Add ability to pass option flags to ActorIterator to enable searching non-active levels

  • Moved the Hamming-weight function from StaticMeshDrawList.inl to FGenericPlatformMath Added SSE versions using _mm_popcnt_u64 for platforms that support it Added a SSE check to gracefully exit when missing the instruction and it was expected to be there

  • Fixed stale modules being enumerated when running UE4Editor-Cmd.exe.

  • Fix DECLARE_LOG_CATEGORY_EXTERN requiring a trailing semicolon if NO_LOGGING is defined.

  • Added a packaging setting that allows the user to choose whether or not to build the game executable.Includes a setting to build the executable only if not using a promoted build ("Only if locally built editor").The same option has to the "Play" settings in the editor.This allows developers that want to submit game binaries to Perforce to configure the engine to use it without building anything.

  • Bug Fix:Core:Fixed FTimespan import/export/copypaste (UE-43990)

  • Bug Fix:Fixed custom mesh component bounds being computed incorrectly.

  • Bug Fix:Fixed the deserialization of integer properties, which would cause a guaranteed property mismatch each time and an inefficient tag lookup.Added support for converting double and float properties to int properties.Fixed conversion of enum class properties to int properties when their value is greater than 255.

  • Bug Fix:UBT - Minor refactor of BackgroundProcess shutdown in SourceFileWorkingSet.Check whether the process has already exited before trying to kill it during Dispose.

  • Bug Fix:Move pre/post garbage collection delegates into accessor functions so they can be used by globally constructed objects

  • Bug Fix:Build fixes for when malloc profiler is enabled

  • Bug Fix:Fixed parsing error in UnrealHeaderTool when a class name is fully capitalized.

  • Bug Fix:Fixed bad code generation in UnrealHeaderTool when passing a TMap to a BlueprintCallable function.

  • Bug Fix:Fixed FPaths::GetProjectFilePath() to return a value instead of a reference, for thread safety reasons.

  • Bug Fix:Fixed TTuple visualization in the Visual Studio debugger.

  • Bug Fix:Fixed a race condition with async read completion in the prescence of cancels.

  • Bug Fix:Fixed some incorrect EObjectFlags use due to implicit conversions.

  • Bug Fix:Follow up to fixing several edge cases in the low level async loading code.

  • Bug Fix:Fixed several edge cases in the low level async loading code, especially around cancellation.Also PakFileTest is a console command which can be used to stress test pak file loading.

  • Bug Fix:Marking UObject as intrinsic clas to fix a potential crash on Unreal Frontend startup.

  • Bug Fix:UBT - Correct direction of slash in global named mutex creation

  • Bug Fix:Fixed Visual Studio debugger visualizers for containers whose elements are pointers which aren't syntactically like Type*.

  • Bug Fix:Fixed UFunctions disappearing from Blueprints after a hot reload.

  • Bug Fix:Fixed a buffer overrun in TChunkedArray ranged-for iteration.

  • Bug Fix:After loading packages the engine will flush linker cache on uncooked platforms to free precache memory

  • Bug Fix:Include 'ExeBinariesSubFolder' in nmake target path for vcproj files if it exists

  • Bug Fix:Material resources will now be discarded in PostLoad (Game Thread) instead of in Serialize (potentially Async Loading Thread) so that shader deregistration doesn't assert when done from a different thread than the game thread.

  • Bug Fix:Fixed nested preprocessor block parsing in UnrealHeaderTool.

  • Bug Fix:MaterialInstanceCollections will no longer be added to GC clusters to prevent materials staying around in memory for too long

  • Bug Fix:Fixed a race condition in async package reference counting when the async loading thread is enabled.

  • Bug Fix:Fixed Japanese errors not displaying correctly in the cook output log.

  • Bug Fix:Fixed a critical race in the pak precacher.

  • Bug Fix:Fixed critical race which potentially could cause a crash in the pak precacher.

  • Bug Fix:Fixed a critical race condition in the new async loader.This was only reproducible on IOS, but may affect other platforms.

  • Bug Fix:Fixed a critical crash bug relating to a race condition in async package summary reading.

  • Bug Fix:Fixed a crash on UnrealFrontend startup caused by re-assembling GC token stream for one of the classes.

  • Bug Fix:Fixed a critical crash bug with non-EDL loading from pak files.

  • Bug Fix:Fixed the error message in FAsyncPackage::AddObjectReference to refer to the correct scope guard class.

  • Bug Fix:Added missing PF_ATC_RGBA_I into FOREACH_ENUM_EPIXELFORMAT.

  • Bug Fix:Fixed a crash in the taskgraph when running single threaded

  • Bug Fix:Fixed FScopedMallocProfilerLock to be properly non-copyable.

  • Bug Fix:Forced a garbage collection after a hot reload to clean up reinstanced objects which may still be registered to tick.

  • Bug Fix:Fixed bad codegen when TAssetPtrs are passed into BlueprintImplementableEvent functions.

  • Bug Fix:Disabled MallocBinned2 stat collection in shipping builds.

  • Bug Fix:System error dialogs when loading DLLs are now suppressed if -unnattended is on the command line.

  • Bug Fix:Added MemoryProfiler2 to the generated project files.

  • Bug Fix:Fix rare assert involving cancelled precache requests and non-pak-file loading.

  • Bug Fix:Fixed compile errors caused by incorrect line numbers when parsing multiline macros in UnrealHeaderTool.

  • Bug Fix:Fixed a compile error when attempting to serialize a TUnion.

  • Bug Fix:Fixed mismatched stat categories warnings in AudioMixer.

  • Bug Fix:Fixed EObjectFlags' operators so that they can now be used in constexpr contexts.

  • Bug Fix:Made sure the Super Class token stream is also locked when assembling Class token stream with async loading thread enabled.This to to prevent race conditions when loading BP classes.

  • Bug Fix:Fixed a crash caused by recursion guard being enabled with the old async loading path but it should only be active with the Event Driven Loader.

  • Bug Fix:Fixed generated indices of static arrays when saving config files.

  • Bug Fix:Made servers not to link to CEF3 (even if otherwise enabled).

  • Bug Fix:Fix several crashes while incremental cooking if the source content is heavily changed

  • Bug Fix:Change it so Editor builds work like cooked builds when loading packages that are already in memory, it will now reuse them instead of trying to recreate them in place.This fixes several PIE crashes.

  • Bug Fix:Fix issue where IsEditorOnlyObject would return false for objects with editor only classes or outers.There is now a recursive check option that defaults to true.

  • Bug Fix:Reduced the chance of .RC file compilation errors by reducing the number of defines passed in on the command line (excluding definitions that contain "_API")

  • Bug Fix:Removed any deprecated code older than 4.10 that didn't affect content compatibility

  • Bug Fix:Prevent FScopedExternalProfilerBase::StopScopedTimer() from asserting if called an unmatched number of times with StartScopedTimer, as both are exposed to Blueprints

  • Bug Fix:Class Properties are only identical if they are literally the same object.Do not consider the deep compare port flags as object property base does.

  • Bug Fix:Changed ensureAsRuntimeWarning to just evaluate to the expression when USING_CODE_ANALYSIS is true (matching the behavior of ensure() and preventing false positive errors in static analyzers)

  • Bug Fix:Fix issues where using Launch multiple times during one editor session would not pick up all modified files

  • Bug Fix:Fixed error writing files to disk with long package names, due to attempting to create an intermediate file with a GUID appended.

  • Bug Fix:Fixed +Array=... and .Array=... config syntax (unique/non-unique addition) having opposite meaning.

  • Bug Fix:Fix memory corruption crash when using the StreamableManager when the async loading thread is enabled via ini

  • Bug Fix:Fixed console output not working when using -log in a shipping build

  • Bug Fix:Fixed hot reload not considering dependent modules when rebinding a package (e.g. after adding a new class to one).Fixed FMacPlatformProcess::GetDllApiVersion() returning a valid version number for a missing module.

  • Bug Fix:Fix bug where requesting an async load with StreamableManager from a PostLoad could return a partially loaded object, it now queues up to wait for it to properly load

  • Bug Fix:Fixed crashes when accessing console variables with the async loading thread enabled

  • Bug Fix:Fixed a crash when recompiling the Graph Editor module in the editor.

  • Bug Fix:Fixed crash when adding a new native feature pack to a Blueprint project for the first time.

Editor

  • New:Array elements can now be re-ordered using a drag and drop handle on the left side.

  • It is now possible to save and reload the result of the 'profileGPU' command.The ProfileVizualizer can be found under Windows\Developer Tools\Debug menu.

  • Added the ability to remove vertex colors from static meshes from the content browser

  • Added flag to PrimitiveComponent to disable certain BP components to be excluded from HLOD generation

  • Added support for incremental cooking in File->Cook Content via the new flag in Project Settings, Editor->Cooker->Iterative cooking.

  • Added FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the name of the selected source code accessor.Replaced all usages of FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with GetSelectedSourceCodeIDE(), where the message is referring to the opening or editing of code.

  • Added an option to allow overriding the local DDC path from the editor (under Editor Preferences > Global > Local Derived Data Cache).

  • Add fbx exporter option dialog.

  • Create a LOD Custom Mode in the meshes editor UI. This allow user to compare details values between LODs

  • Added dual key bindings support.There is another column In Editor Preferences - General - Keyboard Shortcuts and users can now set two keyboard shortcuts for each operation.

  • Enabled high DPI awareness for the editor.The editor now respects OS level DPI scaling.On high dpi monitors fonts should look crisp and the editor properly scaled.

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

  • Focus the details view when actor selection changes if it is not focused

  • Issue warning when we found zero normal, tangent or binormal

  • PR #3852:Add FEditorDelegates::BeginLocalPlay event (Contributed by mhutch)

  • PR #3851:Add argument to pass params to standalone play session (Contributed by mhutch)

  • Merged the "Categories" menu into the Output Log "Filter" menu

  • Added a new type of property editor called a property row generator.This is essentially a details panel that can generate each unique row but adds no visual styling around the property editors and does not generate a master tree widget for the properties.This is useful for creating proper widgets for properties and displaying them in a UI that is not the details panel

  • The output log now applies a search to its editable text when filtering to highlight the term matches on each line

  • Make sure we export normals, tangents and bi-normals information when exporting to FBX.

  • Fbx SDK 2018.1.1 Integration

  • Added automated import support for USD. Automated import now also supports loading a level per import group so that factories may spawn actors and manipulate the level

  • Added ability for users to specifiy usd plugins for the USD importer

  • Added ability to set properties from USD attributes when using scene import to import USD files.See UsdPropTestScene.usda for an example file of how this works

  • New setting for specifying a custom port when launching a multiplayer PIE instance.

  • Moving favorited levels to a standard flyout submenu under File.

  • PR #3933:Git plugin: add "branch source" in history window (Contributed by SRombauts)

  • Added support for ArrayRemove, ArrayClear in property change event type Added the possibility to know if an archetype instance was updated

  • Bug Fix:Matinee:Fix Matinee redirect missing as UClass has been GC'ed (GitHub PR 3382)

  • Bug Fix:Editor:Fixed texture samplers in materials not getting notified when sRGB mode changed

  • Bug Fix:Fixed a crash occurring when Generating Proxy Meshes for an HLOD cluster which was not overlapping with the culling (landscape) mesh

  • Bug Fix:Optimize checks for whether the game project contains source code.Now stops as soon as the first file is found and ignores directories beginning with a '.' character (eg. .git)

  • Bug Fix:Make sure a warning is log when we cannot export an animation sequence.

  • Bug Fix:Fix merge actor do not keep the material slot name

  • Bug Fix:Fix crash accessing potentially invalid parent layout from a detail category

  • Bug Fix:The class viewer now functions properly on mac.

  • Bug Fix:Fix ctrl+w not duplicating on mac

  • Bug Fix:Fix LOD identification in USD files

  • Bug Fix:PR #3897:Git plugin: fix action icon in history window (Contributed by SRombauts)

  • Bug Fix:Fix widget component spawning widgets when cooking

  • Bug Fix:Fix mac menus updating during unsafe times such as modal windows and slow tasks

  • Bug Fix:Fix color picker not properly converting FColor properties back to gamma space

  • Bug Fix:Fix bogus warning message when a property has an editcondition that is not marked edit aynwhere.This has always been supported and is the correct way to make an editcondition

  • Bug Fix:Fix USD importing not respecting DestinationPath set by the automated import commandlet

  • Bug Fix:Editor:Fix toolbar shared ref which was keeping the viewport toolbar around when switching between default and cinematic viewports.

  • Bug Fix:Prevent slow task feedback from performing slow operations (flushing rendering commands, checking if shaders are initialized) when there are no modal dialogs open

  • Bug Fix:Guard against high res screenshot crashing if the requested image size doesnt match the image data size

  • Bug Fix:Guard against crash in the details panel when there is a message in the queue and something scrolls into view when the list has been invalidated

  • Bug Fix:Reduce memory footprint when importing large FBX scene PR #3834

  • Bug Fix:Fix the fbx re-import factory handler to say failed in case there was no geometry to import.

  • Bug Fix:PR #3850:Source code navigation is now extensible

  • Bug Fix:Fix staticmesh merge applying scale twice PR #3807

  • Bug Fix:Fix how the FBX importer find the sample rate to import an animation.

  • Bug Fix:Fix locked actors still being moved by piloting them

  • Bug Fix:Fix import of large FBX scene (over 2 Gb) base on pr #3784

  • Bug Fix: fix FBX reset options code.

  • Bug Fix:Make sure all staticmesh general settings(build, reduce...) are persist when we re-import from a FBX file.

  • Bug Fix:Exporting render targets now chooses PNG if the render target format is an LDR format

  • Bug Fix:Fixed a bug where the transform widget on selected actors occasionally disappeared after exiting PIE mode.

  • Bug Fix:PR #3733:UE-46683:Don't increment MovieIndex when playing next movie (Contributed by projectgheist)

  • Bug Fix:Dont save non-dirty built data when playing PIE in a standalone process

  • Bug Fix:PR #3715:Turn off the automatic expiration of the restore assets notification (Contributed by IHappyDayI)

  • Bug Fix:Fixed a bug where the Editor Undo History didn't refresh when after a single undo followed by a single action.

  • Bug Fix:Fixed a bug where World Outliner selection did not update transform widget location during play.

  • Bug Fix:Hide property matrix button from settings editor.For the combined settings objects view this produces nonsensical results and the property matrix is for bulk editing which settings are not designed for.

  • Bug Fix:PR #3682:Details view - matrix button visibility toggle and crash fix (Contributed by kamrann)

  • Bug Fix:Fixed cases where the redo buffer could be removed despite no new transaction being added to the undo buffer.

  • Bug Fix:Fixed a Pixel Inspector crash when using the high-precision normals format.

  • Bug Fix:Fixed foliage not updating to match the new landscape height

  • Bug Fix:PR #3942:Sort Data Table Structures Alphabetically (Contributed by Nick-Pearson)

  • Bug Fix:PR #3932:UE-48693: if instead of while statement (Contributed by projectgheist)

  • Bug Fix:Fixed a profiler crash when selecting the "Maximum" button while aggressively filtering.

  • Bug Fix:Fixed a bug where editor would crash when showing the property matrix and deleting one of the targeted actors.

  • Bug Fix:Fix several issues with the Component Transform UI that is used for actor and component placement.Dragging to spin rotation now works better and in most cases it will correctly maintain the exact rotation entered.It now correctly displays "dirty" status and will propagate values better to inherited or instanced components.

  • Bug Fix:Fix issue where pressing escape while dragging on a numeric field with a spinner could lock input from ever working again

  • Bug Fix:Fixed HLOD selection sphere persisting on undo/redo

  • Bug Fix:Fixed ortho viewports being bright white in sub-editors

  • Bug Fix:Make editor scene viewport backbuffer format consistent with game back buffer format to avoid quantization.

  • Bug Fix:Fixed issue with vertex colors being distorted after using the Merge Actor tool

  • Bug Fix:Fixed texture disappearing in the Texture Editor when zoomed to a zoom level other than "Zoom to Fit".

  • Bug Fix: fix reduce algorithm to make sure the order of used material is consistent

  • Bug Fix:Fixed an issue where sometimes a client wouldn't be able to connect to the server if "Use Single Process" was unchecked in the editor Play settings and starting a play session with more than one player.

  • Bug Fix:Fix crash setting edit conditions on inner array props due to potentially stale array indices

  • Bug Fix:Fixed rare import failure in AbcImporter

  • Bug Fix:Fixed a hang at exit after asset reimport.

  • Bug Fix:Fixed FastXML to properly parse attributes with legally unescaped single and double quote characters

Content Browser

  • Add Export To CSV to Content Browser/Asset Audit windows, accessible from the view options while in column mode

  • Bug Fix:Fixed:Entering search expression into Content Browser crashes Editor in some rare cases

  • Bug Fix:Fixed various issues with filename validation for collections (e.g. trying to use system reserved keywords as filenames).

  • Bug Fix:Custom columns with the same name as fixed columns no longer cause infinite duplication in the Content Browser

  • Bug Fix:Fixed a crash when reloading the lighting data for a world while the world was open in the editor

  • Bug Fix:Content browser settings are now global instead of per-project

  • Bug Fix:Solved an issue where Content Browser returned to the previous directory after duplicating a searched asset.

  • Bug Fix:Cleaned up source control log spam when finding out-of-date dependencies when reloading assets

  • Bug Fix:Improved drag-and-drop validation between Content Browsers

  • Bug Fix:Fixed a crash when Force Deleting the MapBuildData package.

  • Bug Fix:Fixed crash when doing editor 'Force Delete' on a static mesh whose distance field is still being built.

  • Bug Fix:Fix for asset context menu warning on Mac.

  • Bug Fix:Fixed a crash that could happen if renaming an asset failed

Foliage

  • Add the possibility to specify if we need CPU access to the instance buffer depending on the usage.

  • Bug Fix:Bug fixing of Static Mesh Instancing

  • Bug Fix:Added a guard to prevent a possible crash when using CVarFoliageDiscardDataOnLoad.

  • Bug Fix:User can no longer hide the actor holding the foliage instances

  • Bug Fix:No longer mark the package dirty while generating the GrassMap

  • Bug Fix:When occlusion query is disabled no longer process sub queries

  • Bug Fix:Fixed a possible graphic corruption if you had unbuilt instances being draw on Vulkan/DX12 device

  • Bug Fix:Handle static mesh instancing removal properly

  • Bug Fix:Properly handle the creation of Instance Static Mesh Component from c++ Add handling of all operations on the PerInstanceSMData array when done in PostEditChange

Landscape

  • Improve performance when having many landscape layer in Paint mode

  • Bug Fix:Prevent moving a Landscape Actor when running in Simulate Mode

  • Bug Fix:Prevent possible crash when building lighting with a non squared heightmap

  • Bug Fix:Fixed:Occasional Landscape related crash while streaming in sub-levels

  • Bug Fix:Prevent copy of landscape in simulate mode/or any other PIE related mode

  • Bug Fix:Properly register to material changes event so we always have an up to date used layer list

  • Bug Fix:Fixed a ensure related to bad handling of copy/paste of spline component

Media Framework

  • General

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

      • Low-level interfaces exposed via facade (see FMediaPlayerFacade)

      • Reusable helper objects for creating, caching and consuming samples

    • NEW:Support for multiple output formats per media track (see IMediaTracks)

    • NEW:API for querying player's caching state (IMediaCache)

    • NEW:API for enumerating A/V capture devices (IMediaCaptureSupport)

    • NEW:Time source API (for internal and external clocks / timecode generators)

    • NEW:Exposed buffering and connecting states

    • NEW:Separation of media overlays into caption, subtitle and custom text tracks

    • NEW:Added extensive verbose logging in most player plug-ins

      • To enable, add the following to your project's \Config\DefaultEngine.ini file - add the below to the [Core.Log] section:

        • LogMediaAssets=VeryVerbose

        • LogMediaUtils=VeryVerbose

        • LogAndroidMedia=VeryVerbose

        • LogAvfMedia=VeryVerbose

        • LogImgMedia=VeryVerbose

        • LogWmfMedia=VeryVerbose

    • Better separation of concerns in media player interfaces

    • Delegates were replaced with thread-safe interfaces

    • Refactored push-based into pull-based API (see IMediaSamples)

    • Most operations are now asynchronous to eliminate hitches

    • Multiple media assets can now use the same MediaPlayer

    • Modernized all Media related modules (IWYU, C++11, documentation)

    • NEW: multi-stage ticking API

      • Can be used by any object, not just media players (see IMediaClockSink)

      • Better frame utilization and predictable timing

    • NEW: timecode based sample processing pipeline

    • NEW: high-frequency (200 Hz) ticker for time sensitive samples, such as audio, camera tracking, and face tracking (see IMediaTicker and IMediaTickable)

    • NEW:Sample queues and pooling for better memory usage

    • NEW:Generic C++ template for media object pooling (see TMediaObjectPool)

    • NEW:String conversion functions for media enums (see MediaHelpers.h)

    • Media Framework is now mostly lock-free to eliminate thread stalls

    • Removed all render thread flushes & render thread dependencies

    • Fixed media texture crash when recreating render device, i.e. when changing resolutions

    • Fixed all known multi-threading and concurrency issues

  • Audio

    • NEW:Integrated with new Audio Mixer API

    • NEW:Media Sound Components (replaces Media Sound Waves)

      • Built on top of synth components

      • Can be attached to level actors

      • Can be used in UMG widgets

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

      • Supports int8, int16, int32, float, double input samples

      • Supports any sample rate, including variable rates

      • Supports up to 8 audio input channels

      • Supports 1 and 2 output channels (surround sound is scheduled for 4.19)

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

  • Video

    • NEW:External texture sampler API

      • Enables video frame rendering without memory copies

      • Currently only implemented for Android

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

      • Currently not implemented in any player plug-ins

    • Replaced problematic triple-buffering mechanism with sample queues

    • Better support for exotic video and pixel formats, and faulty encoders

  • Media Player Editor

    • NEW:Track format selector menu

    • NEW:Audio/video capture device selector

    • NEW:Cache state visualization (for player plug-ins that support it)

    • NEW:Playlist controls & ability to save playlists (playlist editing is still WIP)

    • EXPERIMENTAL:Text overlay visualization (currently not used)

    • EXPERIMENTAL:360 video viewport controls (currently not used)

    • Scrubbing is now more responsive

    • Improved information overlays

  • Media source assets

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

  • Blueprints

    • NEW:BP functions for querying media player tracks and track formats

    • NEW:BP function library for enumerating audio, video and webcam capture devices

    • NEW:BP events for SeekCompleted and TracksChanged

    • NEW:BP functions for adding files and URLs to media play lists

  • Media Player Plug-ins

  • AndroidMedia

    • NEW:External texture sampler support for highest performance (no data copies)

    • NEW:Asynchronous file loading

    • Improved support for streaming video

  • AndroidCamera

    • NEW:Media Framework plug-in for Android webcam support

    • Access front or rear camera using available resolutions / frame rates (see Mobile Major Features for additional details on this feature)

  • AvfMedia (macOS / iOS)

    • NEW:Support for caption tracks

    • NEW:Audio playback via Audio Mixer (will be enabled in 4.18 Preview 2)

    • Fixed track switching issues / lock-ups

    • Fixed rendering artifacts/flicker on some devices

    • Fixed aliasing/pixelation with high-res media

    • Removed render thread flushes to prevent hitches

    • Improved video sample texture handling

  • ImgMedia (macOS, Windows)

    • Replaces the old ExrMedia plug-in

    • NEW:Generic file loader for extensible file format support

    • NEW:BMP, JPG, PNG support (albeit much slower than EXR due to slow legacy loaders)

    • NEW:Proxy directories for alternative (i.e. low-res) image streams

    • NEW:Per-image sequence frame rate & proxy override (i.e. for using a low-res sequence during development)

    • NEW:Supports playback synchronization with Sequencer

    • NEW:Loading and caching system similar to Shotgun RV

    • NEW:Multi-threaded EXR loader

    • NEW:Asynchronous file loading

  • WmfMedia (Windows)

    • State machine has been completely rewritten

    • NEW:Track switching

    • NEW:SAMI subtitle file support

    • NEW:Low-latency pipeline support in Windows 8 and newer

    • EXPERIMENTAL:Support for audio and video capture devices

    • Fixed color space conversion problems with certain encoders

    • Fixed audio track lock-up when no audio device available

    • Fixed playlist related problems

    • NEW:Asynchronous file loading

    • Fixed skipping to next I-frame when pausing

    • NOTE:Hardware acceleration is not finished yet

Material Editor

  • New:Added Advanced Preview Scenes to the Material Editor and the Material Instance Editor.Adjust the settings from the Windows menu.

  • The realtime state of the preview viewport in the Material Editor and Material Instance editor now also changes when the turntable rotation is toggled for the advanced preview scene.

  • Bug Fix:Fix for parameter tooltips not being found in the Material Editor.

  • Bug Fix:PR #3913:Fixed 3D preview issue in the material editor (Contributed by YuchenMei)

  • Bug Fix:Adjust floor height in material editor preview scene based on preview mesh

Sequencer

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

    • Textures can now dynamically provide an external texture GUID at runtime, which is queried by the uniform expression.Statically defined GUIDs remain supported.

    • Added necessary ExternalTexture(Parameter) methods to the material compiler and HLSL translator

  • New:New ImgMedia media player plug-in for EXR/BMP/PNG/JPG image sequences

  • New:Media:Media Framework 3.0 API updates

  • Media:Added Buffering media event

  • Media:Split media capabilities into features and controls

  • MediaAssets:Filtering out unused UTexture properties in UMediaTexture in the Editor

  • MediaAssets:Notifying materials when media texture properties changed.

  • MediaAssets:Added unit tests for UMediaPlaylist

  • MediaAssets:Added looping for play lists

  • Cine Camera:Add toggle to disable constraining the roll when look at tracking is enabled.This allows the user to animate the roll while tracking an object.

  • Sequencer:Add OnPlayReverse() event for when playback is in reverse

  • Sequencer:Import FBX settings.Added settings to toggle force front x axis and whether to create cameras that don't already exist in the level.

  • Sequencer:Added option to rerun construction scripts on bound actors in the sequence every frame.

  • Movie Scene Capture:Delay on shot boundaries by setting the sequencer play rate to 0.This allows particles, TAA, and other effects to settle on the shot cuts.

  • Movie Scene Capture:Expose "Open Folder" hyperlink while capturing.

  • Sequence Recorder:Add interpolation and tangent settings for animation recording keys

  • Sequencer:Track drag drop.Implement drag and drop onto a camera track, subscene track, and cinematic shot track.

  • Sequencer:Import static/default transforms and camera focal lengths from fbx.

  • Fbx:Add static transform values to curve data import.

  • Optimization pass on key and trajectory rendering when dealing with large numbers of tracks and/or keys

    • Memory is reserved where possible on hot code paths

    • Reduced amount of sorting and shuffling of arrays where possible

    • Key collections (and thus key groups) are now cacheable so we don't have to regenerate them every frame

    • Reduced amount of overdraw on keys in sequencer UI

    • Added editor preference to limit the number of keys shown around the current time when rendering trajectories in the editor (default=250)

    • Optimized various algorithms used for key introspection and manipulation

    • Overlapping keys are now highlighted with a red border

  • Sequence Recorder:Add drag and drop functionality to sequence recorder

  • Cine Camera:Added GetFilmbackPresetName(), SetFilmbackPresetByName(), GetLensPresetName(), SetLensPresetByName().

  • Sequencer:Added slip functionality for sections.Hold down shift and drag the section left and right (as if you were moving it).

  • Bug Fix:Sequencer:Fixed skylight and reflection components off by one frame in PIE

  • Bug Fix:GitHub #3183:Conversion to base class is inaccessible.

  • Bug Fix:Sequencer:Fixed sections not being filtered on select in range

  • Bug Fix:Camera Rig:Fix crane and rail not being packaged properly.

  • Bug Fix:Sequencer:Update spawnable name when the spawnable actor name is changed.

  • Bug Fix:Sequencer:Fix a few player state issues.When paused, calling stop now tears down properly (spawnables are removed, etc).When a level sequence is deleted, tears down properly as well.

  • Bug Fix:Sequencer:Fix cinematic mode getting activated on BeginPlay() instead of OnStartedPlaying().

  • Bug Fix:PR #3872:Fix small typo in ImagePlate Plugin (Contributed by TheCodez)

  • Bug Fix:Sequencer:Put level visibility tracks in the SpawnObjects evaluation group to ensure levels are streamed before any possessable bindings are resolved

  • Bug Fix:Sequencer:Fix crash in removing delegate

  • Bug Fix:Sequencer:Array bounds check.

  • Bug Fix:Movie Scene Capture:Override cinematic mode in the movie scene capture.

  • Bug Fix:Sequencer:Capture thumbnail before pre save so that the thumbnail isn't captured with the evaluation in a reset state.

  • Bug Fix:Movie Scene Capture:Move window to within the desktop bounds when resizing.

  • Bug Fix:Fbx:Fix aperture width, height, focal length and field of view calculations.

  • Bug Fix:Sequencer:If already at the correct play position, don't jump to it.This fixes a bug where if you play to a position and pause, resuming play will playforward and not keep pausing.

  • Bug Fix:Sequencer:Serialize the custom guid version for sections.

  • Bug Fix:Sequencer:Call SkyLightComponent's SetLightColor() directly, similar to LightComponent

  • Bug Fix:Actor Sequence:Add runtime as a plugin, remove from dynamically loaded module list.

  • Bug Fix:Sequencer:Add transactions to easing type and setting changes.

  • Bug Fix:Sequencer:Fix ensure when deleting sections.Sections were getting removed from the array during iteration.

  • Bug Fix:Sequencer:Fixed crash caused by erroneous persistent references to FSequencer.

  • Bug Fix:Fix crash when recording to animation in-use

  • Bug Fix:Sequence Recorder:Record to the specified target animation for the target actor only.Newly tracked components will have newly created animations so that they don't record to the same target animation assets.Sequence Recorder:Close the target animation asset editor if it exists before recording into it.

  • Bug Fix:WmfMedia:Fixed NV12 webcam output not working for non-multiple of 16 horizontal resolutions

  • Bug Fix:WmfMedia:Fixed NV12 webcam output not working for non-multiple of 16 vertical resolution

VR-Editor

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

World Browser

  • Added more zoom levels for World Composition window

  • Better selection behavior in World Composition window

  • Added a new context menu command to lock all tiles location in World Composition window.Once tiles are locked they can't be accidentally moved/dragged.

  • Bug Fix:Fixed:Toolbar widget clipping issues in World Composition window

Editor and Tools

  • Added feature to allow for calculating final Light Map Resolution for the output Static Mesh from Merging Actors according to the input Static Mesh Light Map resolutions.

  • Adding ability to add custom row and properties to categories for detail customizations.

  • Renamed "Find in CB" toolbar button to "Browse" and renamed "Search" (in Blueprints) to "Find", so terminology is consistent and keyboard shortcuts make sense (Ctrl+B for Browse, Ctrl+F for Find)

  • Bug Fix:Fixed clothing meshes sometimes not drawing from certain angles when the clothing tools were in paint mode, as the mesh bounds were being computed incorrectly.

  • Bug Fix:Fixed merging negative-scaled actors breaking the mesh normals

  • Bug Fix:Fixed crash when specifying too large texture size for Bake Material tool.

  • Bug Fix:Fixed issue with Bake Out Material not updating data used for texture streaming, causing ensure.

  • Bug Fix:Fixed bug with Merge Actor when using recompute normal and Overlapping UVs causing incorrect normals.

  • Bug Fix:Asset reloading now defers re-opening asset editors until post-GC phase

  • Bug Fix:Fix issues renaming maps that contain legacy map build lighting data

  • Bug Fix:Removed any deprecated code older than 4.10 that didn't affect content compatibility

  • Bug Fix:Fixed crash that could occur when opening a physics asset and deleting unused bones.

  • Bug Fix:Fixed issue when trying to Vertex Paint on a Skeletal Mesh without a Physics Asset or non overlapping Physics Bodies with the Skeletal Mesh

  • Bug Fix:When visualising constraint axes in the physics asset editor, the axis arrows are now scaled in world space according to the user-specified constraint drawing scale, instead of being a fixed size on-screen.

  • Bug Fix:Fixed issues with HLOD content left unchanged after a Level is renamed

  • Bug Fix:Fixed issue with Texture Sizing Type not having any effect on Merge Actor functionality

Landscape

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

Sequencer

  • Bug Fix:Fixed issue with Animation re-initializes when using AnimBlueprint for the animation track.

  • Bug Fix:Fixed a potential crash in UMediaPlaylist::Insert and UMediaPlaylist::RemoveAt when passed an invalid index

  • Bug Fix:Prevented crashes in some methods of UMovieSceneSequencePlayer when there is no Sequence set Prevented a crash in FMovieSceneRootEvaluationTemplateInstance::Evaluate when the instance has no template set

  • Bug Fix:You can only select AnimSequence or AnimComposite on the property window of track.

Gameplay Framework

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

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

  • Draw box around Actor being debugged by 'ShowDebug' command, to help identify what we're viewing.

  • Allow Scale to be set on an AnimNotify as well as the spawn emitter gameplay statics

  • Add ToString Blueprint functions for SoftObjectReference/SoftClassReference/PrimaryAssetId/PrimaryAssetType to assist in debugging

  • USceneComponent::ComponentToWorld has now been made private per the previous deprecation message.

  • Change the way that PIE networking works so the sent paths strip the PIE prefix and restore on load.This allows connecting a PIE client/server to an external non-PIE client/server.

  • Change it so Standalone PIE and multiprocess networked PIE do not save temporary levels starting with UEDPC and instead prompt the user to save.This is how Launch On works by default already, and this fixes several cross level reference and sequencer bugs.

  • Added GetKeysForAxis() to complement GetKeysForAction() in UPlayerInput

  • Add support for downloading Chunks on demand to the Asset Manager, if they are set up for your project.AcquireResourcesForAssetList can be used to predownload chunks, and chunks will be downloaded on demand if bShouldAcquireMissingChunksOnLoad is true in the Asset Manager Settings

  • Add FCollectionReference type and customization that allows selecting a Collection in the editor.Add one to PrimaryAssetLabel so it will label all assets in a Collection

  • Small optimization to CleanupActors

  • Reduced memory footprint of UActorComponent, USceneComponent, UPrimitiveComponent, UMeshComponent, UStaticMeshComponent, and UParticleSystemComponent.

  • UStaticMeshComponent::StaticMesh has completed being made private.Use Get/SetStaticMesh() instead.

  • AHUD::GetOwningPlayerController and GetOwningPawn are now public accessors.

  • Added FTransform::TransformRotation(FQuat) and FTransform::InverseTransformRotation(FQuat).Added matching Blueprint library functions taking FRotator.(Contributed by EverNewJoy).

  • Active force feedback effects and components can now ignore time dilation.

  • Added console command to disable URO interpolation.

  • Exposed GetAzimuthAndElevation to Blueprints.

  • Bug Fix:Removed call to DebugCanvas->Flush_GameThread(); to fix 'showdebug' commands not rendering anymore.

  • Bug Fix:Fix several crashes that could happen while attempting to use Play in Editor in less common configurations

  • Bug Fix:Child Actors created by transient child actor components are now correctly created as transient.Note that this will not remove existing Actors that had been saved in to maps inadvertently.

  • Bug Fix:Fix issue where running a game with bUseFixedFrameRate=true could crash because it generated negative delta times.

  • Bug Fix:Copying an actor in the level editor will no longer reset array values if a new element has been added.

  • Bug Fix:Fix issue where Combined streamable handles could be freed before they finished loading

  • Bug Fix:Removed any deprecated code older than 4.10 that didn't affect content compatibility

  • Bug Fix:Overriden Child Actor Class property will no longer reset to default when a new instance is created through copy/paste.

  • Bug Fix:Garbage Collection timing is no longer managed on a per World basis, but instead at the UEngine level.

  • Bug Fix:Marked ULevelStreaming as Within=World, since various places already assume it

  • Bug Fix:Fix several issues with loading the same asset twice in a row with Asset Manager.

  • Bug Fix:All components will now clear the component need end of frame update mark when unregistered, not just primitive components.

  • Bug Fix:Added GetTargetRotation() to SpringArmComponent, which returns the rotation target based on the combination of various rotation setting flags (bUsePawnControlRotation, bInheritPitch, bInheritYaw, bInheritRoll, absolute rotation flags).Use this instead of querying the SpringArmComponent's own rotation, which isn't changed at runtime.

  • Bug Fix:Reduced memory churn/allocations when duplicating an Actor's components for PIE.

  • Bug Fix:Fixed comment in GetComponents (UActorComponent version), which was referencing wrong component type.

  • Bug Fix:Fixed issues where lighting could be unbuilt when reloading packages.

  • Bug Fix:Renamed USceneComponent::bWorldToComponentUpdated to bComponentToWorldUpdated (since the transform is called ComponentToWorld).

  • Bug Fix:Fixed crash when SpawnObject has a null class passed to it.

Localization

  • New:In-Editor Localization Preview

  • Bug Fix:Fixed some crashes where IMEs would try and access a deleted widget

  • Bug Fix:Fixed high memory usage when using certain IMEs

  • Bug Fix:Games now use the native culture of any of the game targets as the fallback (rather than always using English)

  • Bug Fix:Fixed abnormally long PO export times under certain circumstances

  • Bug Fix:Fixed iOS not detecting the locale correctly

Networking

  • New:Added experimental network encryption functionality.

    • This is handled by a new packet handler component in the AESHandlerComponent plugin.

    • This component depends on another new plugin, PlatformCrypto, which wraps basic encryption algorithms implemented either by APIs provided by the platform, or by OpenSSL.

    • Net connections and their packet handler objects are now aware of encryption components, and have new functions to allow setting the encryption key.

    • When connecting to a game server, a custom token can be exchanged.This token may be used to obtain the actual encryption key for the connection.

  • UdpMessaging:Not showing warning message if tunnel settings left empty to use defaults

  • Messaging:Waking up message router thread on shutdown

  • Messaging:Moved common helper classes into MessagingCommon module

  • Merged over the change to expose more of dormancy to Blueprints (UE-46240)

  • Enable the TCPMessaging plugin on platforms other than Windows/Mac so it can be used for profiling/automation, and fix several platform-specific bugs.If this is not desired, you should disable the plugin for your project.

  • Add support for -TcpMessagingListen=IP:port and -TcpMessagingConnect=IP:Port command line options to the TCP messaging layer used for automation and profiling, this allows manually connecting to specific devices

  • Added some additional stat instrumentation to the low-level network replication code.This may help track down replication performance issues when viewing ue4stats files in the Profiler.

  • It is now possible to configure the UDP socket buffer sizes that the IpNetDriver requests of the operating system when creating a new connection.

  • Bug Fix:Networking:Fixed nullpointer crash in TcpListener if socket initialization fails

  • Bug Fix:NBOSerializer security fixes to protect against possible overflow in the values

  • Bug Fix:Fixed client assert when trying to send RPCs while connection is pending closure due to queued bunches.ChIndex is -1 during this time, though the channel is not actually closed.Added ensure when calling SendBunch() under this condition to catch future cases like this.

  • Bug Fix:Fix issue where nonblocking BSD sockets on some platforms may return EINPROGRESS on initial connect, which should not be treated as an error

  • Bug Fix:AActor::PreReplication is now called prior to RPCs when they would have triggered initial replication.

  • Bug Fix:Fixed an issue where connecting to a Server that had deleted startup actors and then unloaded their sub level would cause a crash.

  • Bug Fix:Fix to update actor replication stats even when the connection is currently saturated.

  • Bug Fix:APawn::IsNetRelevantFor properly checks AGameNetworkManager::bUseDistanceBasedRelevancy.

  • Bug Fix:Fixed a rare issue where the data stored in network replays could be corrupted, potentially causing a crash when the replay is played back.

  • Bug Fix:Fixed an issue when the server is paused, the clients were not getting the update that it had happened.

  • Bug Fix:Changes were made to FTcpListener and FTcpMessageTransportConnection to prevent them from polling sockets in a thread while waiting for connections or data.This improves performance on Android clients when launched from the editor and should also benefit other systems using FTcpListener.

Online

  • New:Google Sign In SDK for iOS/Android/PC has been integrated into the engine with OnlineSubsystemGoogle

  • IOnlineIdentity::GetPlatformUserIdFromUniqueNetId is now const

  • Voip streaming improvements - use the underflow feature of sound streaming to feed the audio buffer rather than enqueue the data directly - wait a small period of time to buffer period actually playing new voip streams

  • Added intrinsic FNames for NAME_GameSession and NAME_PartySession left #define for GameSessionName and PartySessionName to map to new FNames

  • Voice module improvements / refactors for Windows/Opus codec - added ability to change more parameters at runtime (samplerate, channels, device) - ability to change bitrate at runtime - ability to change complexity at runtime - ability to set VBR on/off - fixed some bugs related to stereo playback / diagnostics - exposed more settings / information in the various classes - added num channels as an input parameter to CreateVoiceAudioComponent helper function - improved test voice class and its capabilities - various exec commands to change audio capture values at runtime - queue audio data differently for the procedural sound wave class - more buffer sanity checks - fixed bug when nothing to encode (super low bitrate) causing the decoder to fail -- encode 0 size frame data and make decoder aware of it - added more stats under "stat voice" - added LogVoiceEngine to separate out OSS related voice calls from rest of audio capture code

  • Update cacert.pem from curl's website https://curl.haxx.se/docs/caextract.html

  • Google Sign In SDK implemented for iOS, Android, and desktop platforms

  • Hotfix manager will only reload config during "restore ini" for classes that were actually affected by the previous hotfix which prevents calling ReloadConfig on every class in an ini file

  • Handle instances in UParty where World is null

  • Add optional StatePrefix to OnlineSubsystemTwitch

  • Add RevokeAuthToken to IOnlineIdentity.Implemented in OnlineSubsystemTwitch.Remove auto revoke auth token on logout from OnlineSubsystemTwitch.

  • OnlineSubsystemTwitch:Use a specific error when auth token validation fails

  • Add join party failure reason of GameSpecificReason for game defined join party failures

  • Extended IOnlineTitleFile OnEnumerateFilesComplete to include an error string.

  • OnlineSubsystemTwitch:Use the web browser to go through the Twitch login flow on consoles.

  • Bug Fix:Fix potential null pointer access in Oculus session cleanup

  • Bug Fix:VoiceDecoder Opus security fixes that sanity check packet header calculations to prevent buffer overrun

  • Bug Fix:Facebook implementations using the embedded browser will delete cookies on logout

  • Bug Fix:Google implementations using the embedded browser will delete cookies on logout

  • Bug Fix:Update manager will skip initial hotfix check if user isn't signed into the console at the time.

  • Bug Fix:Remove caching of config values in OnlineSubsystemTwitch.Fixes hotfixes not taking effect

  • Bug Fix:Party Beacon:Prevent player from being leader of multiple party reservations.Prevent party from creating a reservation that contains members that are in other reservations.

  • Bug Fix:Changed message sanitizer SanitizeMessage to SanitizeDisplayNames to better convey its function Added QueryBlockedUser to check user to user permissions Added ResetCache function for clearing permission cache Added Live version of message sanitizer

  • Bug Fix:Fixed hardcoded controller id in RejoinCheck in TravelToSession call

  • Bug Fix:Remove ensure in UPartyBeaconState::UpdatePartyLeader, this function is called while the player is being kicked, revoking their reservation

  • Bug Fix:LoginFlow module now properly included in OnlineFramework uplugin with proper IWYU semantics

  • Bug Fix:Fix crash when logging out in the middle of joining a party

  • Bug Fix:Fix simultaneous party join requests dropping some requests

  • Bug Fix:Added GetFirstSignedInUser function as an improvement/workaround for a bunch of GetPlayerUniqueId(0) calls in the OnlineSubsystem APIs.

Other

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

Physics

  • New:Clothing tools moved out of experimental

  • Added per-axis inertia scaling and parent dominance settings to physics bodies/constraints

  • Added "Smooth Mesh" button to the smooth clothing paint tool that applies the smoothing effect to the entire mesh in one action.

  • Added support for physical materials in immediate mode (Rigid Body node)

  • Improved internal automated tests for physical animation.

  • Expose FHitResult::Distance to Blueprint's Break/Make Nodes (Pull Request Contributed by LordNed)

  • Improved physics asset generation using the multi-convex hull primitive type.Multi-convex hull primitives can now be created from meshes containing vertices that are influenced by more than one bone.

  • Remove Box2D support

  • Exposed an inertia scale for body instances

  • Added ExternalForce to rigid body node for faking inertia while simulating in component space

  • Added RootBone simulation space to RigidBody node.This is useful for cases where we rotate the skeletal mesh component and counter rotate the root bone and do not want to affect simulated bodies' velocities.

  • The UPrimitiveComponent angular physics functions have been standardised to use consistent units.Functions suffixed with "InDegrees" use degrees, and functions suffixed with "InRadians" use radians.The existing functions have been deprecated in favour of their new versions.

    Under the hood, the FBodyInstance angular physics functions now work entirely in radians.Any functions that previously used degrees have been deprecated.

  • Clothing optimization pass, mainly removing allocations and precaching some skin information.10% Overall non-gamethread time reduction, gamethread sync completion task time halved.

  • Added ability to rename clothing assets after creation

  • Clothing LOD improvements - Added full pipeline for adding LODs to clothing assets in editor - Added methods for mapping parameters between masks on meshes with differing topology - Fixed a few UI bugs

  • Added single threaded PhysX tasks stats using "stat PhysXTasks"

  • Bug Fix:Removed the need for calling constructors for PhysX PxRaycastHit in the dynamic hit result buffer for sweeps/raycasts.Saves 30% of the cost of doing small raycasts.

  • Bug Fix:Fixed crashes in physics asset editor and skeletal mesh editor when the preview scene clears out the preview mesh while clothing is running

  • Bug Fix:Restricted painter processing to no longer attempt painting while in simulation previews in cloth paint mode.

  • Bug Fix:Fixed clothing gradient tool renderer not showing selected points when camera was moving

  • Bug Fix:Fixed cloth paint falloff to actually calculate falloff, and take brush strength into account.

  • Bug Fix:Fixed cloth paint gradient allowing invalid values

  • Bug Fix:Fixed crash shutting down editor with active cloth paint tab,.

  • Bug Fix:Fixed mismatch between paint values and view values for clothing tools

  • Bug Fix:Fixed skel surf particles being misplaced when clothing was active.And fixed particles spawning on disabled cloth proxy sections.

  • Bug Fix:Fixed physics substepping causing erratic simulation of simulated bodies that were attached to kinematic ones (eg. simulated ponytails).This was due to incorrect interpolation paths on the kinematic bodies, which caused the attached physical bodies to accumulate too much velocity each frame.

  • Bug Fix:Fixed clothing not resimulating after resetting physics asset to default in a details panel

  • Bug Fix:Fix crash in show collision

  • Bug Fix:Fixed clothing visualizations not drawing at correct orientation (Normals, Max Distances and Backstops)

  • Bug Fix:Internal application stability improvements to physics simulations.

  • Bug Fix:Fixed crash attempting to render clothing collisions extracted from a physics asset incompaticble with the acive mesh skeleton

  • Bug Fix:Fixed crash when deleting a selected clothing section and relaunching the skeletal mesh editor

  • Bug Fix:Fixed changing or reloading the current level causing certain physics debugging bounds not to be shown if collision visualisation is turned on.

  • Bug Fix:Fixed UPhysicsAsset::CalcAABB to properly handle scaled bones.

  • Bug Fix:Fixed "Apply Clothing" menu showing an invalid widget when there were no clothing assets.

  • Bug Fix:Fixed crash attempting to paint on a clothing object created by importing an incompatible APEX asset.

  • Bug Fix:Fixed clothing bounds calculation always including the component root.

  • Bug Fix:Fix bad bounds computation for immediate mode.

  • Bug Fix:Updated FRaycastHit::Distance Documentation (Contributed by LordNed)

  • Bug Fix:Change GetMaterialFromCollisionFaceIndex implementations to return null if face index is negative

  • Bug Fix:Fix incorrect bone mapping for rigid body node.(Only matters when first call to init has a different number of bodies, for example a different skin)

  • Bug Fix:Turn joint pre-processing on for immediate mode.This helps with some stability issues.

  • Bug Fix:Remove unused HACD library.We only use V-HACD now.

  • Bug Fix:Made it so that linear and angular velocity are properly computed for kinematic targets in immediate physics and rigid body node.

  • Bug Fix:Fixed bug with PhysX cooked data not taking into account complexity type of body setup.

  • Bug Fix:Fixed merge error in PhysX immediate mode as reported by NVIDIA

  • Bug Fix:Removed deprecated methods that were replaced by _AssumesLocked variations

  • Bug Fix:Imported new simple collision for Engine/Content/BasicShapes/Cylinder.uasset which is a single convex shape (rather than being 4 shapes as before).

  • Bug Fix:Fixed a few crashes in UVehicleWheel when spawned directly

  • Bug Fix:Improved the comment on UPhysicalMaterial::Friction

  • Bug Fix:Changed FBodyInstance::InstanceBodyIndex to int32, fixes incorrect body index being returned from traces if there are a large number within one component.

  • Bug Fix:Removing unnecessary conditional in WheeledVehicleMovementComponent.

  • Bug Fix:Removed duplicated forward declaration in VehicleAnimInstance.h

  • Bug Fix:Fixed Capsules where axis length (half-height - radius) < 1 were clamped to a new capsule with axis length of 1.Changed the clamp threshold to 1e-4 and changed FPhysXShapeAdaptor to use a Sphere instead when Radius >= HalfHeight.

    • This would cause sweeps using the capsule params to use a capsule of a different size, up to 1 UU different along the axis.

    • Moved hardcoded limits on FCollisionShape extents to a static value and refactored external code to reference that instead.

Collision Detection

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

Physics Asset Editor

  • New:New Physics Asset Editor

  • Bug Fix:Fixed crash when regenerating large amounts of bodies

  • Bug Fix:Fixed crash when regenerating multi convex hulls from zero-vert bones

  • Bug Fix:Fixed physics assets not simulating when BlockAll was globally overridden

  • Bug Fix:Make sure the physics asset editor floor has collision, regardless of what BlockAll does

  • Bug Fix:Fixed physics asset shortcut not working correctly in certain circumstances

  • Bug Fix:Exposed LOD menu in PhAT

  • Bug Fix:Fixed tooltip for PhysicsType

  • Bug Fix:Improved UI feedback around bounds/in-game bounds in animation editor viewports

  • Bug Fix:Fixing undo/redo of bone modifications in Physics Asset Editor (and others)

  • Bug Fix:Fix for crash in physics asset editor after garbage collection

  • Bug Fix:Fix crash undo-ing primitive regeneration while simulation is in progress & stopping simulation in PhAT

  • Bug Fix:Prevented undo/redo breaking when moving both a constraint and a body at the same time in PhAT

  • Bug Fix:Re-added "Apply Physical Material To All" to PhAT.Also re-instated quick constraint setting options in the toolbar.

Rigid Bodies

  • Added per-axis inertia and parent dominance settings to physics assets

  • Bug Fix:Fixed crash deleting a destructible mesh while it was open in an editor with a sub-chunk selected

  • Bug Fix:Fixed crash when physics update causes other bodies to be destroyed (e.g falling out of world).

Platforms

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

All Mobile

  • Improvements to localization initialization time on application startup, which reduces overall boot time

  • Added GetDiskTotalAndFreeSpace implementation for IOS and Android

  • Added to UPL

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

  • Allow addElement and addElements to only insert once with once="true" attribute in UPL

  • Bug Fix:Prevent UMobileInstalledContent methods from crashing when called on a created instance in an uncooked build (no installed manifest)

Android

  • New:Android camera plugin

  • New:Enabled Gradle by default and added button to accept Android SDK license to project settings

  • New:Updated Android improved virtual keyboard support; now works on more devices / keyboard types

  • New:Updated to Google Play Services 11.0.4 and GPG C++ v2.3

  • Android media player updates for Vulkan support

  • Added detection of Houdini (running on Intel Android CPU) for device profiles (SRC_UsingHoudini=true)

  • More informative Android SDK license requirements description in Android project settings and errors if attempting to launch or package without accepted agreement

  • Added to UPL to allow additions to the root-level build.gradle

  • Add 'sustained performance mode' support for API 24+ devices.

  • Add Android cpu stats (stat AndroidCPU)

    • Displays core frequency and core utilization.

* Android cpu stats update rate is governed by the CVar 'Android.CPUStatsUpdateRate'.
  • Allow variable expansion in addPermission, addFeature, and addLibrary UPL commands

  • Changes to use the VS2017 sandbox Android SDK if enabled (contributed by IanMatthewHuff)

  • Added new "Include AdMob support for ads" checkbox to Android project settings to disable inclusion of the AdMob SDK in the APK if you do not need ad support.

  • Only use external texture shader version override on shaders needing it

  • Bug Fix:Check for runtime permission to use Android camera in plugin

  • Bug Fix:Android camera plugin improvements

    • return correct capture device type (webcamfront/rear)

    • remove seek (not supported)

    • support track formats

    • better framerate selection

  • Bug Fix:Fixed playlist looping (send PlaybackEndReached event) in Android media player

  • Bug Fix:AndroidMedia:Fixed flicker issue

  • Bug Fix:Protect against null window during shutdown

  • Bug Fix:Don't add the APK as a build product for Android (.so is marked as Executable)

  • Bug Fix:Various improvements have been made to the experimental Virtual Keyboard including:

    • Multiline is now disabled when not needed

    • Suggestions and autocorrect are now hidden

    • The Done and Back button behavior has been adjusted with Enter and Back key events returned to the UMG controls so they can implement appropriate behavior

    • If the keyboard is up and you click on the same control that has focus, it will hide the keyboard

  • Bug Fix:Fixed issue with trying to link ARMv7-only libovrplatformloader.so for non ARMv7 targets

  • Bug Fix:Filter out unneeded architectures from APK for Gradle builds

  • Bug Fix:Don't use V2 signing for Gear VR APKs

  • Bug Fix:Set online provider back to GooglePlay and remove forcing IAP permission (contributed by umerov1999)

  • Bug Fix:Fixed GoogleVR Gradle packaging

  • Bug Fix:Removed unneeded settings.gradle file since it is generated

  • Bug Fix:Include JAR files from libs in classes.dex with Gradle enabled

  • Bug Fix:Use absolute path for repositories for Gradle

  • Bug Fix:The Android experimental virtual keyboard now has a native edit box above the keyboard to receive the text and pass it to Slate/UMG.This improves support for non-English characters.

  • Bug Fix:Fixed tilt axis to be consistent between Android and iOS devices

  • Bug Fix:Use FMath::log2 instead of log2 to fix Android runtime dlopen failure on some devices

  • Bug Fix:Only recompile android_native_app_glue.c and UELinkerExceptions if necessary

  • Bug Fix:Clean up Gradle intermediates after packaging if on build machine (IsBuildMachine environment variable set to 1)

  • Bug Fix:Android external texture extension updates for compatibility (forcing ES2 or using ESSL3 if available)

  • Bug Fix:Fixed media player to allow disabling audio by setting track to INDEX_NONE (-1) before playing

  • Bug Fix:Fixes for Android media player and camera player

    • buffer samples copy proper bytecount

    • realloc sets new buffer ptr

    • refcount of Java buffers fixed

  • Bug Fix:Moved more of the Android link command arguments to response file to deal with command line limit on Windows.This fixes issues with having a large number of modules enabled.

  • Bug Fix:The Kindle Fire HD7 5th generation (GPU Mali 450) seems to have problems with threaded rendering, crashing when returning to the main thread.We have added a device profile [Android_Mali_4xx_KindleFire] to disable startup movies during initial loading which prevents the crash.This is the best workaround we have for this device at the moment.

  • Bug Fix:Fixed issue with Android password keyboard input

  • Bug Fix:Protect mediaplayer from entering wrong state if async prepare has not completed

  • Bug Fix:Corrected ordering of Android media player suspend and playbackendreached events

  • Bug Fix:Fixed issue with immersive mode enabled if volume buttons used even if disabled

  • Bug Fix:Fixed error returns from rungradle.bat and ant.bat

  • Bug Fix:Fixed issue where enabling the Shared Material Native Libraries caused packaging for Android to fail

  • Bug Fix:Fixed Android startup movies not always playing

  • Bug Fix:Fixed compile error in Android project generator on Linux

  • Bug Fix:Stops packaging if resulting OBB too large to use on device

  • Bug Fix:Added workaround to install scripts for copying distribution builds to Android/obb

  • Bug Fix:Only add Android NDK glue files to Launch module on first call to prevent unnecessary recompiles

  • Bug Fix:Properly pause and resume Android event listeners when app is paused / resumed. Prevents possible excess CPU use when a UE4 app is paused.

  • Bug Fix:Skip unneeded events on changing Android camera resolution or framerate

  • Bug Fix:Added OBB exceeds 2 GiB failure error code

  • Bug Fix:Fixed movie playback on Android devices when packaged for ES 3.1

  • Bug Fix:Fixed orientation change issue on Android Oreo

  • Bug Fix:Fixed text flicker during update of new virtual keyboard contents and fix crash on deleting selections

  • Bug Fix:Fixed shader compile errors that occurred at runtime on Galaxy S6 devices

  • Bug Fix:Fixed virtual keyboard setFilters crash

  • Bug Fix:Added missing TangoSDK to Android binaries needed for ARCore

  • Bug Fix:Don't show incorrect cursor location with improved Android virtual keyboard

  • Bug Fix:Deal with rapid changing of improved Android virtual keyboard state

  • Bug Fix:Fixed Android camera orientation for front camera on some devices

  • Bug Fix:Don't set GL_TEXTURE_MAX_LEVEL on external textures Added r.Android.OverrideExternalTextureSupport CVar to override external texture detection

  • Bug Fix:Reduced frequency of adb calls waiting for Android Launch On process to complete

  • Bug Fix:Updatef manifest configChanges for adActivity and only include if AdMob support enabled

  • Bug Fix:Fix Android camera orientation for rear camera on some devices

  • Bug Fix:Only use density configChanges in AndroidManifest if SDK API 24+ and minSDK 17+

  • Bug Fix:Fixed Android UPL plugin detection

HTML5

  • HTML5 3rd Party Libs - compiled with emscripten 1.37.19

  • HTML5 emscripten 1.37.19 Win64

  • Updated HTML5 to use the Emscripten 1.37.19 toolchain on Windows, OSX and Linux

  • HTML5 emscripten 1.37.19 Linux

  • HTML5 emscripten 1.37.19 OSX

  • WebAssembly is now enabled by default and ASM.js support has been sunsetted

  • Bug Fix:Fix a crash on HTML5 when rendering landscapes

  • Bug Fix:Pak file compression is now disabled by default; instead it's best to compress the content packages with gzip and use the browser's internal decompression after configuring your web server to include the header "Content-Encoding: gzip".

  • Bug Fix:Zen Garden now has its textures limited to 256x256 when packaging for HTML5 to make the content size more practical on HTML5 and fixing memory issues on Chrome.

  • Bug Fix:Fixed refraction on HTML5 that was caused by several issues with the shaders on WebGL2

  • Bug Fix:Removed the HTML5 PreLoadMap "feature"

  • Bug Fix:Fixed issue with HTML5 failing to show the game scene on Chrome on OSX. Even though canvas had been set with alpha:false, the scene was rendering as transparent.

  • Bug Fix:Fixed various issue with vehicle-based projects that failed launch on HTML5

iOS

  • Added IsRegisteredForRemoteNotifications to allow detection during program execution.

  • Added an option to enable/disable exceptions when compiling Objective C for iOS. This removes upto 6mb of unwind tables from the iOS executable of UE4.

  • Added an option to disable force inline when compiling for iOS.Use this in combination with build for size to reduce the size of the executable.

  • Improved Xcode project generation to be compatible with Xcode 9.

  • IOS 9 is now the minimum OS level supported from the editor.Older iOS version support can be enabled via a GitHub build by modifying the build and deploy tools.

  • The iOS signing process has been simplified when using the remote toolchain from PC. It is no longer necessary to to have any signing certificates or private keys installed on the remote Mac.It is now sufficient to have the certificates and keys installed on the PC and configured in the IOS section of the Project Settings.

  • Addition of asset catalogs for application icons on IOS 11.When utilizing Xcode 9, the build tools will now create and compile an asset catalog composed of the application icons.This catalog is required when uploading the application to the store.Users can still specify their icons in the IOS Project Settings as normal and the location of the those files has not changed.They are automatically copied in to the asset catalog at build time.

  • The editor now defaults to building 64-bit only executables for iOS.This change has been made to be compatible with iOS 11 and it's 64-bit only policy.Source users can still build 32-bit executables by updating the 32-bit build variables in their configuration files.

  • Added Info.plist entrees for required capabilities and camera usage messaging when ARKit usage is detected.

  • Added detection of new iOS devices: iPad Pro 10.5, iPad Pro 1.29 (2nd Gen), iPad 5th Gen, AppleTV 4K, iPhone 8, iPhone 8Plus, and iPhone X

  • Bug Fix:Fixed occasional hangs on startup when launching from a received remote notification.

  • Bug Fix:Fixed an issue where the start touch was not being stored for use when determining scroll delta.

  • Bug Fix:Fixed an issue where refraction was not rendering on tvOS

  • Bug Fix:Password protected iOS certificates are now properly installed after prompting the user to enter the password.

  • Bug Fix:Fix an issue where the orientations supported by the game were not being limited by the information in the Info.plist.

  • Bug Fix:Fix for ScreenSpaceReflections not working properly on iOS 11

  • Bug Fix:Fixed an issue where after restoring purchases user could no longer purchase anything (courtesy of nverenik). Fix for InApp purchase raw price not being initialized (courtesy of nverenik).

  • Bug Fix:The bForcePVRTC4 cooker option was previously ignored on iOS.It now correctly uses PVRTC4 for all textures when enabled.

  • Bug Fix:Fixed LAN multiplayer discovery on iOS devices over WiFi

  • Bug Fix:Fixed Xcode location detection in the editor.Non-Standard Xcode installations can now be properly detected and used by the editor and corresponding tools.

  • Bug Fix:Fixed an issue where code signing was failing when the user has specifically selected only a wildcard provision

Linux

  • Updated UE4 fork of SDL2 library to the latest trunk.

  • Added logic to SDL2 to select a specific EGL device for offscreen rendering.

  • Reduced size of editor binaries by making FPlatformMisc::DebugBreak() not inlined on Linux.

  • Eliminated SCW logspam on Linux.

  • Updated Linux's MCPP to include fix for long defines.

  • Switched UBT to the new clang 5.0.0-based toolchain.

  • Added initial high DPI support on Linux.

  • Added files to cross-build glslang on Windows.

  • New SDL-based audio mixer backend is now used on Linux by default.

  • Bug Fix:Rewrote Linux splash screen to avoid threading hazards that caused crashes.

  • Bug Fix:Fixed Linux editor crashing when capturing a movie.

  • Bug Fix:Fixed UnrealLightmass not being included in the installed build on Linux.

  • Bug Fix:Made FAnsiMalloc compatible with malloc()/free() on Linux so it can be used with ASan.

  • Bug Fix:Fixed name collision of GL func pointers between splash screen and RHI.

  • Bug Fix:Fixed save window prompt failing to be modal.

  • Bug Fix:Removed unnecessary symbols for MSVC visualizers on Linux/Mac.

  • Bug Fix:Fixed copy-paste issues due to buffer being associated with an intermittent window.

  • Bug Fix:Made SDL_SetWindowInputFocus() wait until window is viewable (pull request #2608 by Ereski).

  • Bug Fix:Fixed Engine and Project shortcuts not working in Linux dialogs.

  • Bug Fix:Fixed "Anim to Play" being inaccessible after import.

  • Bug Fix:Fixed UBT not doing full rebuild when system (e.g. kernel) headers have been updated.

  • Bug Fix:Fixed performance drop in Blueprint editor on Linux.

  • Bug Fix:Rebuilt CEF with fewer dependencies, fixing inability to start without libgobject installed.

  • Bug Fix:Fixed not using bundled GL headers during a native build on Linux.

  • Bug Fix:Removed FCustomStd* workaround from hlslcc (STL compat problems are gone due to bundled libc++).

  • Bug Fix:Fixed confusing messagebox message during headless run.

  • Bug Fix:Fixed tesselation in packaged Linux projects.

  • Bug Fix:Fixed crashes on AMD Mesa drivers due to name collision in libelf.

  • Bug Fix:Fixed regression in Linux PhysX (sweeps taking too long time).

  • Bug Fix:Fix spurious CMake configuration errors by specifying the compiler in CMakeLists.

  • Bug Fix:Fixed crash on some ARM platforms due to memory pools being too large.

  • Bug Fix:Made handling inability to load libGL user-friendlier (message box instead of hard assertion).

  • Bug Fix:Fixed another case where initialization failure was resulted in assertion failure instead of a clean exit with error message.

  • Bug Fix:Fixed memory corruption causing crash on Linux when editing geometry.

  • Bug Fix:Fixed crash handler crashing if editor's console output window is open.

  • Bug Fix:Removed IOS module on Linux, to prevent a crash and make compilation faster.

Mac

  • Add -enableasan / -enabletsan command line options to UnrealBuildTool, and bEnableAddressSanitizer / bEnableThreadSanitizer settings in BuildConfiguration.xml.Support for enabling these features via environment variables has been removed.

  • Made few small changes to UnrealBuildTool to make it faster when running on Mono

  • Added support for changing monitor's display mode on Mac in fullscreen mode.This greatly improves performance on Retina screens when playing in resolutions lower than native.

  • Updated minimum macOS requirement to 10.12.6

  • Bug Fix:Fixed a crash in MediaCompositing plugin

  • Bug Fix:Fixed thread safety issues in AVFMediaPlayer

  • Bug Fix:Fixed crash at exit caused by FDDCCleanup trying to use IFileManager.Get() after the file manager was destroyed

  • Bug Fix:Fixed a hang when building lighting using commandlet

  • Bug Fix:Fixed header search paths in Xcode project for paths containing space character

  • Bug Fix:Solved a number of issues related to window activation, for example being unable to rename items using Rename from the right-click menu and the editor not allowing to override already bound shortcuts.

  • Bug Fix:Fixed missing Window menu contents in Mac UnrealFrontend

  • Bug Fix:Fixed a rare crash at exit caused by an attempt to process Cocoa events after required parts of the engine were already shut down.

  • Bug Fix:Fixed issues with windows not activating on mouse up on Mac in some cases when clicking on draggable Slate widgets

  • Bug Fix:Fixed problems with Mac menu bar not updating in some situations, for example when opening an asset in new window or changing active window with Cmd+~

  • Bug Fix:Fixed a crash on startup that would occur if Steam was running in the background.

  • Bug Fix:Slate modal windows now behave correctly (menu disabling, etc.) on Mac

  • Bug Fix:Fixed crashes caused by an attempt to process window show and hide events after window was destroyed.

  • Bug Fix:Added code for detecting case-sensitive file system on Mac.We now inform users that we currently don't support running from case-sensitive volumes, then quit instead of the app crashing.

Windows

  • Fix race for initialization of ThreadID variable on FRunnableThreadWin, and restore a previous check that was working around it.

  • Bug Fix:Fixed case sensitivity issue in FWindowsPlatformProcess::IsApplicationRunning.

Programming

  • New IPlatformFile::FindFiles and IPlatformFile::FindFilesRecursively are much more efficient than other methods for finding files in packaged games.

  • Windows CHM file is no longer included within the installed engine release, due to size limits of the format.A cross-platform compressed HTML archive is still available in the Engine/Documentation/Builds subfolder for offline viewing.

  • Added: a new RHI function to invalidate/clear cached state - RHIInvalidateCachedState().Currently has implementation only for OpenGL.This could be used by plugin developers to inform RHI that current state has been changed outside of RHI.

  • Added t.DumpHitches.AllThreads so all threads are dumped when doing 'stat dumphitches'

  • Bug Fix:SavePackageHelper now always honors KeepObjectFlags

  • Bug Fix:Make UScriptStruct::ExportText const-correct

  • Bug Fix:Fixed compiling errors with clang 5.0-rc1 (only Linux editor has been tested).

  • Bug Fix:Fixed some places that were iterating over sets/maps using their element indices as if they were the sparse indices

  • Bug Fix:ULevelStreamingKismet::LoadLevelInstance function is now exposed to game code

Rendering

  • New:Remove rendering support code in MetalRHI for Mac OS X El Capitan (10.11) - MetalRHI now requires macOS Sierra (10.12) to function on Mac.

  • Extended ExternalTexture to support 2x3 transform (scale/rotation + offset)

  • Make all Metal shader platforms compiled with Metal version 1.2 or later compile such that half may be used, unless the material specifies full precision.

  • A sampler can now be shared amongst different textures in Vulkan

  • Added support for ddx_fine, ddy_fine, ddx_coarse, ddy_coarse to hlslcc

  • PR #3714:Fix typo in EOcclusionCombineMode (Contributed by Mumbles4)

  • Where available use Metal's new CaptureManager to provide additional capture options in Xcode's GPU frame capture tool to capture more than one frame at a time.

  • Added Render Target Pool Stats.Use "stat rendertargetpool" on the in-game console to view.

  • Updated Vulkan headers to SDK 1.0.57.0

  • Integrating the MIT-licensed mtlpp C++ Metal wrapper from Nikolay Aleksiev which will eventually replace previous Metal API wrappers in MetalRHI once it has been extended to support all the features required.

  • Support disabling V-Sync in MetalRHI on macOS 10.13+.

  • Added a command-line option "-MetalRuntimeDebugLevel=X" (where X is a number 0-8, defined in MetalContext.cpp) to specify the amount of runtime validation of Metal operations that MetalRHI will perform over and above Xcode's validation layer.For macOS level 5 and above will attempt to emit GPU instructions such that if a command-buffer fails the error report will indicate the last successfully completed debug-group.

  • HDR logic refactor - simplify enable/disable logic, particularly on console.This add a high level r.AllowHDR cvar to enable/disable HDR on a per-platform or per-title basis.(This is a breaking change, since it defaults to off.).By default, the user setting now default to true on Console.Instead, we rely on the OS to determine HDR capability

  • D3D12:Enable GPU validation if -d3d12gpuvalidation is passed on the commandline

  • Allow disabling of display V-Sync in Metal on macOS 10.13+ when running in true fullscreen mode (not windowed or windowed-fullscreen).This stops synchronizing frame presentation with the display, so can be slightly faster but will tear visibly as it does on all other platforms.

  • Bug Fix:Fix RHITransitionResources crash with more than 16 UAVs.

  • Bug Fix:Fix deterministic cooking issue in particle systems; always use a pseudo-random number stream when compiling a module.

  • Bug Fix:Fixed incorrect usage of OpenGL queries after deletion.

  • Bug Fix:Fixed hlslcc not working properly with newer compilers.

  • Bug Fix:Fixed:Texture streaming issues after world origin was rebased

  • Bug Fix:Avoid an intermittent crash in AVPlayer on macOS & iOS.

  • Bug Fix:Correctly implement ClipDistance for Metal as an array of floats as required by the Metal shading language and move the vertex-shader-layer clip-distance to index 2 to avoid any conflicts.

  • Bug Fix:Fix render when the GPU Skin Cache is enabled on Mac by switching the type of the input buffer from float to uint.This avoids bits being lost due to different handling of denorm floating point values between Metal drivers.

  • Bug Fix:When compiling Metal shaders without access to the native Metal compiler correctly set the debug-flag in the shader header and disallow archiving the shader into a Metal library which requires native bytecode compilation.

  • Bug Fix:Fixed a memory leak when using distance fields

  • Bug Fix:Fix distance field techniques on Vulkan.

  • Bug Fix:D3D12 fix for command list crash:Committed resources can not have aliasing barriers.

  • Bug Fix:Fix for a crash in RenderDoc when running a shipping application.

  • Bug Fix:Fix cascade preview viewport background color not changing

  • Bug Fix:Use less peak memory on Vulkan with staging buffers at boot time.

  • Bug Fix:Enable recompute tangents using skin cache on Vulkan.

  • Bug Fix:Memory optimization and leak fixes for recompute tangents using skin cache.

  • Bug Fix:Added a manually created Xcode project for glslang so that we include all the necessary code and can link properly.

  • Bug Fix:Fix Vulkan scissor causing text to not clip on editor while resizing.

  • Bug Fix:Fix Vulkan texture streaming

  • Bug Fix:Fix decals on Vulkan

  • Bug Fix:Temporarily disable GPU morph targets on Mac because they require implicit Buffer<> format conversion which isn't available in MetalRHI.

  • Bug Fix:Fix editor outline in Vulkan

  • Bug Fix:Make TonemapperConfBitmaskPC the proper size so we don't attempt to access uninitialized memory.

  • Bug Fix:PR #3875:Removed Duplicated "RHI" Module Dependency (Contributed by DavidNSilva)

  • Bug Fix:Fix generation of .metallib on local Macs and exclude .metallib files from the pak - they must always be loaded from disk.

  • Bug Fix:Do not store DDC data if a static mesh failed to build.

  • Bug Fix:Fixed divide by 0 crash when GPU timing frequency not available.

  • Bug Fix:Fix a LPV race condtion due to parallel RSM draw-call submission

  • Bug Fix:PR #2992:Fixing aspect ratio issue of SceneCapture2D rendering in "Ortho" camera mode (Contributed by monsieurgustav)

  • Bug Fix:Fixed an intermittent assert on startup where the AVFoundation movie player could initialize a video prior to the rendering thread being back online after resizing the window to go into full-screen.

  • Bug Fix:Fixed cloth rendering on Metal by changing the way FClothVertex is loaded.Some of the data in FClothVertex needs to be treated as uint data and loading it as floats was exposing a difference in behavior between some Metal drivers and Direct3D.

  • Bug Fix:Moved RHISupportsMSAA and add the necessary conditions for when it is available on Metal (AMD & Nvidia for macOS 10.13+, Mobile Renderer for iOS).

  • Bug Fix:Rework handling of various Metal intrinsics and implement a full fused-multiply-add optimization pass within hlslcc to ensure greater consistency of results between different Metal shaders motivated by changes to the behavior of Apple's Metal compiler.

  • Bug Fix:Fixed iOS builds picking up the Mac's Metal shader standard setting which caused the wrong shaders to be compiled.

  • Bug Fix:Fixed lighting in VR Forward rendering on Nvidia GPUs under macOS by changing how we load the ForwardLocalLightBuffer data to avoid a difference in behavior between some Metal drivers and Direct3D.

  • Bug Fix:Fixed an intermittent crash launching games into fullscreen on macOS caused by deleting the render targets before they should be and correcting specification of some render-target load-actions.

  • Bug Fix:Fixed Pixel Inspector not working on Mac by implementing the missing CopySubTextureRegion function in MetalRHI.

  • Bug Fix:Improve the handling of features that are restricted to certain Mac/iOS & Metal versions in Editor UI and the way the Editor handles the absence of the native Metal shader-compiler.

    • Disable half floats for Metal v1.0 & Metal v1.1 - too many shaders just don't compile anymore for no apparent reason - this will only get worse as the compiler stack advances.

    • Change the Editor code to ensure that cooking without access to the native Metal shader compiler does not pollute the DerivedDataCache for other users.

    • The global clip plane implies clip_distance support which on A8 devices requires iOS 10.

    • The Desktop Forward renderer for iOS requires Metal v1.2 and iOS 10.

  • Bug Fix:Rework the error reporting for remote shader compilation so that the correct error message is actually reported when the native Metal compiler is not available.

  • Bug Fix:Fix rendering of shaders that use World-Position-Offset on Metal platforms by extensive use of newer intrinsics.

  • Bug Fix:Change an assert in the Metal shader translator that fires whenever a float literal is NaN or an otherwise unhandled non-finite value to a compiler warning that can be debugged as NaN/INF literals will be incorrect on all platforms.

  • Bug Fix:Fix a crash when switching between normal and Mobile Preview rendering modes in the Editor on Mac.

  • Bug Fix:Fix the incorrect velocity & motion-blur rendering in the Desktop Forward renderer on A8 iOS devices (e.g. iPhone 6/6+), the Desktop Forward renderer is now minimally functional on these older iOS devices but will be slow as it is much more demanding than the Mobile Renderer.

  • Bug Fix:Fixed project thumbnails on Vulkan

  • Bug Fix:Fixed RHILockVertexBuffer on DX12 to work properly with and without RHI commandlist.

  • Bug Fix:Emit only one declaration for system provided shader variables for Metal as sometimes we end up with multiple specifications for some volumetric fog shaders.

  • Bug Fix:Protect against invalid copysubresource bounds.Protects against GPU crashes on some drivers.

  • Bug Fix:Fix black flickering on some materials that use World Position Offset - the Metal sincos intrinsic comes into two flavours for single precision floats and we want the precise version not the fast version but only for Vertex shaders.

  • Bug Fix:Fix a crash on shutdown due to MetalRHI caching vertex-declarations beyond the lifetime of the RHI by moving the cache into the FMetalDynamicRHI itself.

  • Bug Fix:Fix D3D12 validation error when GBV is enabled, courtesy of Sebastian Merry at Microsoft

  • Bug Fix:Avoid a Metal GPU driver bug by only emitting one clip-distance on Metal, when the global clip-plane is enabled this takes priority over all others as it is essential to function correctly, other uses are merely optimizations.

  • Bug Fix:Fixed outline in editor missing on Vulkan

  • Bug Fix:Rebuilt IntelISPCTexComp with Visual Studio 2015 to remove dependency on VS2013 redist.

  • Bug Fix:Precomputed visibility on components added through a Blueprint will now correctly be retained when reloading a level.

FX

  • Bug Fix:Prevent crashes when UNiagaraComponent::GetEffectDataInterface is called on a component with no effect asset set

  • Bug Fix:Fixed life-time fading on deferred decals.

Lighting

  • Disable r.GenerateLandscapeGIData by default, opt-in for kite demo.Projects that want to use heightfield GI need to opt-in to r.GenerateLandscapeGIData.

  • Added 'Render Unbuilt Preview Shadows in game' rendering project setting and r.Shadow.UnbuiltPreviewInGame console variable

  • Swarm hands out the most expensive tasks in roughly a round robin ordering among distribution agents.Lightmass processing of a single task is multithreaded, so ideally the most expensive tasks are evenly distributed among active agents.This has the biggest impact in small scenes with 10's of high resolution lightmaps, and with a distribution farm.Build time in one scene went from to 113s -> 47s.

  • Allow masked dynamic shadows to be cast by translucent materials, based on a threshold opacity value.

  • Volume materials on every component type except particle sprites now voxelize the mesh's Object space bounding box, allowing more control over the shape of fog added and better performance when adding ground density.

  • Bug Fix:Enable PCSS on Vulkan & Metal and enable capsule shadows on Vulkan

  • Bug Fix:Only use skylight OcclusionMaxDistance for the global distance field if it casts shadows

  • Bug Fix:Fixed shadow occlusion culling broken by shadowmap caching change.

  • Bug Fix:Fixed spotlight whole scene shadow occlusion queries using a radius 2x too long

  • Bug Fix:Fix for movable skylight shader missing on simple forward (low lighting quality mode)

  • Bug Fix:Fixed ObjectRadius in Volume domain materials

  • Bug Fix:Dynamic Indirect Occlusion from mesh distance fields is disabled when operating on a movable skylight, since Distance Field Ambient Occlusion fills that role

  • Bug Fix:Exposed EmissiveBoost, since Lightmass supports Emissive areas on meshes

  • Bug Fix:VolumetricScatteringIntensity is greyed out based on Mobility

Materials

  • Moved UTexture material notification code into separate function, so it can be used by derived classes.

  • Improved streaming support for AO textures and lighting scenarios. Improved resolution metrics in the texture editor. Added a new editor command "BuildMaterialTextureStreamingData" to refresh material texture streaming data.

  • Removed the 1945MB VRAM cap in DX11 and DX12 when running 64 bit builds.Non console platforms will now allocate non streaming texture outside the texture pool if there is enough free VRAM available.This improves the behavior and maintainability of low texture settings.

  • Bug Fix:Fixed some cases where material instances would be treated as masked instead of opaque as intended.

  • Bug Fix:Fixed behavior of custom material attribute display names and function names.

  • Bug Fix:Fixed an issue where some materials would overstream some textures.

  • Bug Fix:Fixed an issue where textures would stay at low resolution following a memory usage spike.

  • Bug Fix:Fixed an issue when building the DDC for composite textures where the texture sources would be missing.

  • Bug Fix:Fixed a case where parameters behind a static switch would be invisible in a material instance.

Mobile Rendering

  • Exposed "Use Full Precision" for UI materials, which can be used to improve precision at performance cost in UI pixel shaders on mobile devices.

  • Added support for Vulkan validation layers on Android.Only in Debug and Development configuration (requires r.Vulkan.EnableValidation=1)

  • Vertex Fog is disabled on Mobile by default.This saves a number of instruction in base pass shaders.

  • Bug Fix:Correct tracking of static mesh index memory.

  • Bug Fix:Fixed:Decals on mobile devices should not disappear when there is planar reflection in the view

  • Bug Fix:Fixed:Protostar in Vulkan mode crashes without error on Tegra K1 Nvidia Shield due to OOM - fixed r.MobileReduceLoadedMips has no effect - added r.MobileMaxLoadedMips to set a limit to a number of mips - reduced size of vulkan allocation pages on android

  • Bug Fix:Fixed a problem which could cause the Scene Depth material node to return 0 on some mobile devices.

  • Bug Fix:Fixed:Crash after Splash Screen on Android (ETC2) when Adding r.UseShaderCaching and r.UseShaderPredraw - Added r.SaveShaderCache command to save current cache on demand - Removed support for caching multiple platforms at the same time, each platform now uses separate cache/file - Significantly reduced size of draw log on disk - Mobile platforms support only basic caching, logging shaders and bound shader states without full gfx state

  • Bug Fix:Fixed:Usage of dynamic shadows leads to application crash on Galaxy S7 device (SM-G930V) when project packaged with Vulkan support.

  • Bug Fix:Fixed an issue where streaming in or out levels each with their own stationary directional lights could cause the lighting system to lose track of which lights are loaded and surfaces be lit incorrectly

  • Bug Fix:Fixed upside down triangle rendering with UCanvas::K2_DrawMaterialTriangle on OpenGL ES devices.

Optimizations

  • New:Removed render thread stalls and improved reactivity when streaming mips for 2D textures.

  • New project settings to globally disable/enable creation of depth-only and reversed index buffers.

  • Added:Async loading bytecode from shader library.Along with bytecode de-duplication shader library will now pre-load requested bytecode to ensure there are no disk access related hitches in game when creating shaders.

  • Cloth vertex buffers no longer generate dummy vertices, which reduces runtime memory usage of skeletal meshes with multiple sections of which only one has cloth.

  • Fixed lights calling InvalidateLightingCache on Destroy in game, causing a hitch

  • Fixed UWorld::DestroyActor in PIE calling InvalidateLightingCacheDetailed which can do a FlushRenderingCommands and cause a large hitch

  • Snap volumetric fog light function target resolution to a factor of 32 to avoid constant texture reallocation

  • Added SendAllEndOfFrameUpdates draw event to wrap skin cache events

  • When compiling shaders for Metal explicitly emit the early-fragment-test qualifier unless the fragment shader invokes discard() or explicitly writes a depth-output semantic, this should better match driver behavior on Direct3D.

  • Optimise the constant-propagation pass in hlslcc by using a hash-table to reduce the cost of looking up the existing constant assignment instructions.

  • Vulkan will not use staging memory for dynamic vertex/index buffers on devices with unified memory access

  • Implement support for the SV_DepthLessEqual semantic in Metal.

  • Optimizations to reduce MetalRHI CPU overheads:

    • Avoid reallocating memory by making the TArray of uniform buffers a static C-array instead.

    • Use count-trailing-zero's intrinsics to eliminate redundant iterations over the set of bound resources.

  • Small optimizations to MetalRHI primarily for iOS: - Only buffers less than a platform-specific threshold are uploaded via Metal's set*Bytes API to balance CPU overheads (on iOS this is 512 bytes, on Mac it is 4096 bytes). - Increase the minimum pool sizes for MTLBuffer's to reflect this. - Avoid redundantly rebinding uniform buffers in MetalRHI.

  • Rewrite of the Vulkan pipeline cache:Multiple files can now be read off projectdir/Build/ShaderCaches/Platform folders; cache files are now compressed with rates of up to 70-90% off the original size.

  • Bug Fix:Fixes for profilegpu on Vulkan

  • Bug Fix:Discard now gets called on BulkData on D3D11, D3D12 and Vulkan.

Postprocessing

  • Improve performance of bokeh depth of field.

Tools

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

  • Added an option in the Texture browser to allow a texture to override the default compression quality.This has an effect for textures compressed as PVRTC or ASTC.

  • Bug Fix:Fixed a condition where cooking DLC would cook all maps even if specific maps were specified.

AutomationTool

  • Added support for pre-build and post-build steps when using MegaXGE.

  • Added validation against shipping files in restricted folders. Added a new SystemNonUFS type for staged files, which excludes files from being remapped or renamed by the platform layer. Replaced the DeplyomentContext.StageFiles() function with simpler overloads for particular use cases (options for remapping are replaced with the SystemNonUFS file type) Config entries in the [Staging] category in DefaultGame.ini file allow remapping one directory to another, so restricted content can be made public in packaged builds (Example syntax: +RemapDirectory=(From="Foo/NoRedist", To="Foo")) An error is output if any restricted folder names other than the output platform are in the staged output.

  • The -submit or -nosubmit arguments are only passed to child instances of UAT if they were specified on the original command line.BuildCookRun uses this flag to determine whether to submit, rather than just whether to allow submitting, so we shouldn't pass an inferred value.

  • Added a -SkipHeader parameter to the UpdateLocalVersion command, to allow updating version files without updating Version.h and improve link times on incremental builds.

  • During staging, we now create a manifest for each PAK file containing all the plugin descriptors in one place.Eliminates need to recurse through directories and read separate multiple files in serial at startup, and allows reading all plugin descriptors with one read.The "Mods" directory is excluded from the manifest, since these are intended to be installed separately by the user.

  • Removed the -ForceLocal command line option.Settings are now always determined automatically if not set via environment variables, independently of the -BuildMachine argument.

  • Simplified logic for detecting Perforce settings, using environment variables if they are set, otherwise falling back to detecting them.Removes special cases for build machines, and makes it simpler to set up UAT commands on builders outside Epic.

  • Packaging a plugin will now force include what you use to be enabled.Since plugins distributed on the marketplace will be moved into the engine folder, they need to be IWYU compatible.

  • Bug Fix:Fixed incorrect username in BuildGraph task.Should use the username from the Perforce environment, not assume the logged in user name is the same.

  • Bug Fix:Formatting in JSON output from C# tools now matches formatting used by the engine.

  • Bug Fix:When patching temporary files are now put in the correct directories.Thanks David Yerkess @ Milestone

  • Bug Fix:Fixed executable not being recompiled for a content-only project if a plugin which is enabled by default is disabled.

BuildGraph

  • Added an example script to package ShooterGame for any platforms.

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

  • Added support for nullable parameter types.

UnrealBuildTool

  • Added support for adaptive non-unity builds when working from a Git repository.The ISourceFileWorkingSet interface is now used to query files belonging to the working set, and has separate implementations for Perforce (PerforceSourceFileWorkingSet) and Git (GitSourceFileWorkingSet).The Git implementation is used if a .git directory is found in the directory containing the Engine folder, the directory containing the project file, or the parent directory of the project file, and spawns a "git status" process in the background to determine which files are untracked or staged.Several new settings are supported in BuildConfiguration.xml to allow modifying default behavior: Default git

  • Simplified how targets are cleaned.Delete all intermediate folders for a platform/configuration, and delete any build products matching the UE4 naming convention for that target, rather than relying on the current build configuration or list of previous build products.This will ensure that build products which are no longer being generated will also be cleaned.

  • A .version file is now created for every target built by UBT in the same JSON format as Engine/Build/Build.version.This allows monolithic targets to read a version number at runtime, unlike when it's embedded in a .modules file, and allows creating versioned client executables that will work with versioned servers when syncing through UnrealGameSync.

  • Use P/Invoke to determine number of physical processors on Windows rather than using WMI. Starting up WMIC adds 2.5 seconds to build times, and is not compatible with .NET core.

  • Added support for declaring custom pre-build steps and post-build steps from .target.cs files.Similarly to the custom build steps configurable from .uproject and .uplugin files, these specify commands which will be executed by the host platform's shell before or after a build.The following variables are expanded within the list of commands before execution: $(EngineDir), $(ProjectDir), $(TargetName), $(TargetPlatform), $(TargetConfiguration), $(TargetType), $(ProjectFile).Example usage: public class UnrealPakTarget :TargetRules { public UnrealPakTarget(TargetInfo Target) : base(Target) { Type = TargetType.Program; LinkType = TargetLinkType.Monolithic; LaunchModuleName = "UnrealPak"; if(HostPlatform == UnrealTargetPlatform.Win64) { PreBuildSteps.Add("echo Before building:"); PreBuildSteps.Add("echo This is $(TargetName) $(TargetConfiguration) $(TargetPlatform)"); PostBuildSteps.Add("echo After building!"); PostBuildSteps.Add("echo This is $(TargetName) $(TargetConfiguration) $(TargetPlatform)"); } } }

  • The user's preferred source code IDE selected in the editor is now used to generate project files.

  • Bug Fix:UnrealHeaderTool will now be re-run if the .build.cs file for a module has changed.

  • Bug Fix:Fixed incorrect MSBuild version occasionally being used when invoking UnrealBuildTool.

  • Bug Fix:Removed the dependency on the ShaderCompileWorker project when running with generating project files with the -useprecompiled argument.

  • Bug Fix:Fixed hot reload generating import libraries without DLLs.Now that they are produced by separate actions by default, it was removing DLLs from the action graph due to the bSkipLinkingWhenNothingToCompile setting.

  • Bug Fix:Fixed UBT stack size not being propagated through to the toolchain from the target settings.

  • Bug Fix:Files in output directories which match build products in other output directories are now deleted.Prevents slate binaries from being loaded when a module is moved.

  • Bug Fix:Fixed unchanged modules always being relinked with VS2017 15.3

UnrealGameSync

  • Added variables for stream and client name, and the ability to escape any variables for URIs using the syntax $(VariableName:URI).

  • Allow adding custom actions to the context menu for right clicking on a changelist.Actions are specified in the project's UnrealEngine.ini file, with the following syntax: +ContextMenu=(Label="This is the menu item", Execute="foo.exe", Arguments="bar") The standard set of variables for custom tools is expanded in each parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the $(Change) variable.

  • Always sync the Enterprise folder if the selected .uproject file has the "Enterprise" flag set.

  • If working in a virtual stream, use the name of the first non-virtual ancestor for writing version files.

  • Added additional search paths for UGS config files, and fix a few cosmetic issues (inability to display ampersands in tools menu, showing changelist -1 when running a tool without syncing).Config files are now read from:Engine/Programs/UnrealGameSync/UnrealGameSync.ini Engine/Programs/UnrealGameSync/NotForLicensees/UnrealGameSync.ini If a project is selected: /Build/UnrealGameSync.ini /Build/NotForLicensees/UnrealGameSync.ini If the .uprojectdirs file is selected:Engine/Programs/UnrealGameSync/DefaultProject.ini Engine/Programs/UnrealGameSync/NotForLicensees/DefaultProject.ini

  • Project files are no longer generated when syncing precompiled binaries.

  • The user's server settings are now read by spawning P4.EXE from the directory containing the project being opened, so people can override the P4PORT setting on a per-workspace basis using a P4CONFIG file.

  • Added support for custom post-sync actions.These cannot be configured per-user, but are set by the project configuration file.Since they are always executed, they should be fast and reliable.Example additions to an UnrealGameSync.ini file: [Sync] +Step=(FileName="cmd.exe", Arguments="/C echo Change=$(Change), CodeChange=$(CodeChange), BranchDir=$(BranchDir)")

  • Added support for predefined categories of files to exclude from being synced.The "Sync Filter" dialog now shows a list of these categories as well as the custom view that was previously supported.Several built-in categories are defined, for various target platforms, documentation, and so on.Each category is identified by a GUID, and projects may add or modify existing categories through the /Build/UnrealGameSync.ini config file.Config file entries are formatted as follows: +SyncCategory=(UniqueId="{00000000-0000-0000-0000-000000000000}", Name="Name of this Category", Enable=true/false, Clear=true/false, Paths="/Path1/...;/Path2/...") All fields other than the UniqueId are optional.Specify Enable=false to prevent the filter from being applied or shown to the user.Specify Clear=true when modifying an existing category to clear the existing paths rather than append new paths.Specify the list of patterns to be filtered out separated by semicolons.

  • Bug Fix:Changed to use the default Perforce server port when opening P4V if there is not one set in the environment.

  • Bug Fix:Fix tab names setting not being correctly read back in from config file.

  • Bug Fix:Fixed build configuration not correctly being updated to reflect changes on other tabs.

  • Bug Fix:Fix directory separators not being normalized before filtering files for sync.If the workspace root directory has non-native separators (eg. D:/P4), they will be propagated to the file list.

  • Bug Fix:Fixed crash when switching streams to a stream that does not contain the current project file.

  • Bug Fix:Reparse points (symlinks) are no longer enumerated when recursively deleting directories.This could cause the contents of the linked directory to be deleted rather than the symlink itself, and can cause crashes if the symlink is to an outer directory.

UnrealVS

  • Bug Fix:Fixed setting the command line to empty not affecting the underlying property sheet.

  • Bug Fix:Fix single-file compilation for foreign projects, where the command line contains $(SolutionDir) and $(ProjectName) variables.

UI

  • Disabled the skeletal mesh's "Use async scene" property if the current project is not set to use an async scene, as this property will have no effect otherwise.A warning is shown on the property if the project does not currently use an async scene. A similar warning will be shown in the physics asset editor in the near future.

  • Disabled viewport post processing when in cloth painting mode on clothing assets, to make the paint colours more easily distinguishable.

  • Bug Fix:Stopped property context menus closing the whole window stack when an item is clicked

  • Bug Fix:Improve PhAT UI to stop showing convex bodies as editable, as they currently contain no editable properties.

  • Bug Fix:Fixed "Use Internal" button for Soundwave curves being too large.

  • Bug Fix:Fixed various dropdown menus in the cloth asset creation popup not hiding themselves when the input focus is lost.

  • Bug Fix:Fix for custom rows having their "is enabled" attribute stomped.

  • Bug Fix:Force low quality mode for background blurs by default on android

  • Bug Fix:Force low quality fallback mode on ES2 devices for slate blur widgets.This feature does not work on es2

  • Bug Fix:Prevent resizing when a context menu is open.This prevents a number of rare crashes when a window is resized when a child menu is open.

  • Bug Fix:Converted remaining uses of EKeyboardFocusCause to EFocusCause and properly deprecated it

  • Bug Fix:Fix issues with marking a widget Blueprint class as abstract

  • Bug Fix:Added a console variable to prevent touch events from sending multiple bogus mouse events.Disabled by default.Enabling this will prevent pen tablets from working but may be necessary for touch events to work in windows 7.

Slate

  • Added search to editable texts

    • This can be invoked by selecting some text and using Ctrl+(Shift+)F3 to begin a search, and then using (Shift+)F3 to move through the matches.

    • It can also be done in code by calling BeginSearch and AdvanceSearch on an editable text.

  • Added bApplyWidgetStyleToMenu to SMenuAnchor - if false, the popup is given a default FWidgetStyle when painted.This allows the menu to ignore the inherited tint and opacity, so a faded button can still summon a fully opaque menu.

  • Bug Fix:Added a lock around access to slate active timers to protect it against race conditions when accessed on the slate movie thread and the game thread

  • Bug Fix:Fixed issue where undocked tabs had no way to be made visible again after being hidden

UMG

  • Bug Fix:UMG:Apply latent actions like in movie scene sequence player.

  • Bug Fix:Scroll Widget Into View will now work for widgets not directly parented to a scroll box.

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

XR

  • Debug stereo layer support.This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd.

  • Updated OpenVR SDK to 1.0.10.

  • Bug Fix:Editor primitives we not being handled correctly with ISR.

  • Bug Fix:Adding ISR and multiview support for custom depth.This fixes z-fighting that can occur between the custom depth pass and pre/base pass when the custom depth pass doesn't use ISR/multiview.

  • Bug Fix:PR #3997:Fix quad buffer stereo crash in Windows (Contributed by ayamashev)

VR

  • Added support for non-parallel projections for HMDs that have canted display panels

  • Split interface for handling custom render targets from IStereoRendering into its own interface and unified common code between different VR platforms into a single base implementation class.

  • Adding core VR controller re-centering delegate notification.Users can now use this delegate via the VRNotificationsComponent

  • Adding in support for the SteamVR Knuckles controllers

  • Code applying late updates has been unified across different VR platforms, reducing code duplication and unifying behavior.

  • Added in SteamVR visible area mesh support.Can be toggled with vr.SteamVR.UseVisibleAreaMesh

  • Updating SteamVR libraries to 1.10

  • Oculus changes for SI1.16 and SI1.17 Adds Vulkan and D3D12 improvements/fixes for VR, depth target allocation for VR plugins, Android thread naming and a number of new Oculus features.

  • Added Vulcan Extensions for OculusVR

  • UE-47210 VR Mode in-Editor Viewport Camera is misaligned with HMD camera -Added calculation of the point on the render target directly in front of your eyes based on the HMD's projection matrix. -This is used by cropping spectator screen modes to adjust the cropping used to favor putting the eye center point in the center of the spectator screen.Oculus is most noticable as its center point is about .45 out of 1 from the top, rather than 0.5. -I also found that we were not successfuly detecting the aspect ratio of the spectator screen in windowed mode.We were using the render target aspect ratio, which is constant.Now we pass down the window size to get the correct aspect ratio.

  • Updated library revision for GoogleVR

  • Bug Fix:Fixed SpectatorScreen Flickering Fixed Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture Fixed Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Now I pull the Texture2DRHI out of the UTexture every frame and pass it to the render thread via a rendercommand.This has us getting it after it is created, and using it until the end of the current renderframe. -Note: scene capture components crash if you release their render target, so point them away from it first. -Note: this still leaves the possibility of setting a texture who's resources do not yet exist, or which have not been rendered to yet as the spectator screen texture.The spectator screen will, by default display all black if it doesn't find a resource at all.For debugging one can switch that to all white or breakpoint it in GetFallbackRHITexture().

  • Bug Fix:Don't snap motion controllers to the origin when tracking is lost.

  • Bug Fix:Vive spectator flat rect expanded to match other platforms.

  • Bug Fix:PSVR Social Screen needs to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode.

  • Bug Fix:Fixed a regression causing splash screens on Oculus to be forced to a 16:9 aspect ratio regardless of the texture size used.

  • Bug Fix:Fixed an issue with backwards compatibility, where the old XR module names (OculusRift, GearVR, etc.) still work with the command line and XR prioritization.

  • Bug Fix:Fixed a bug that would modify the camera view unwantedly outside of VR, when the camera's LockToHMD option was enabled.

  • Bug Fix:Fixed a crash that could occur when using a SteamVRChaperoneComponent on a XR platform other than SteamVR.

  • Bug Fix:Fixed a bug where the in-game camera view could become vertically locked after playing in VR preview.

  • Bug Fix:Fixed a bug with the Daydream controller model where the laser was rendering undersized.

  • Bug Fix:Fixed a bug with SteamVR on Mac where controller haptics would not fire.

  • Bug Fix:Fix for Daydream 2D transition on Android Fix for Cardboard on Samsung S8 devices when not set to native resolution

  • Bug Fix:Fixed a bug on Oculus, where the tracking space's origin was being ignored/reset on initialization.

UPGRADE NOTES

AI

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

Animation

Animation Blueprint

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

Automation

  • Moved functional testing automation commands to an exported helper.

Blueprints

  • Blueprint references to "Random Unit Vector in Cone" or "Random Unit Vector in Cone With Yaw and Pitch" will automatically be redirected, but function calls in code will not.See the Programmer Notes for technical instructions.

  • If your project's .uproject file contains an "AdditionalPluginDirectories" section with an entry listed as "Intermediate/Plugins", please remove that entry.If it is the only entry, it is safe to remove the entire section.

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

  • Most paths in the UE4 editor UI that cook and/or build the game now look to the "BlueprintNativizationMethod" option in Project settings->Packaging in the Editor UI in order to determine if Blueprint nativization should be enabled.

    • This means that if you've set that option to something other than "Disabled" for your project, any time you (or someone else working on the same project who you share the config files with) does something that cooks and/or builds the game, it will now do so with Blueprint nativization enabled.

    • This only applies to workflows that use "Cook by the book" mode.Blueprint nativization is not enabled with "Cook on the fly" mode, regardless of the "BlueprintNativizationMethod" setting.

    • One exception is the "Launch on " command.This command performs a "Cook by the Book" within the Editor process itself, and Blueprint nativization also cannot be enabled for cooking in that mode either.

    • Other situations that will currently always disable Blueprint nativization include when Cook on the Fly mode is used for launching a profile in the Project Launcher, and when a Blueprint-only project is launched through the Project Launcher using a binary (i.e. not built locally) version of the editor.

    • In the Project Launcher, you can create a custom Launch profile to override the current setting by adding the following into the "Additional Cook Options" field for the "Cook by the Book" settings: "-ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=", replacing the "" substring with one of those 3 available options.

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

Core

  • FTimespan:The %D string formatter (previously total number of days) is now the zero-padded days component of the time span.Time spans are now always exported and stringified with a leading plus or minus sign.

  • Modifying a TMap, TSet or TSparseArray while you are iterating over it with a ranged-for loop will now cause an assertion, matching the same behavior as TArray.If you need this functionality, you should change your loop to a traditional iterator loop:

    for (auto MyMapIter = MyMap.CreateIterator(); MyMapIter; ++MyMapIter)
    {
        if (RemoveElement(*MyMapIter))
        {
            MyMapIter.RemoveCurrent();
        }
    }
  • Multiple MAX values will no longer be generated for UENUMs. Assets (including Blueprints) which refer to redundant MAX values will throw a warning about the missing value.These assets should be reexported to be saved with the new MAX value.

  • Any custom C# projects (UAT plugins for example) should add a reference to the DotNETCommon assembly

  • MoveTemp will no longer compile if passed an rvalue or a const lvalue.The code should either be fixed to not use const if possible, or the MoveTemp should be removed as it is redundant.Templates and macros can use MoveTempIfPossible when it's hard to tell if the argument is const - this follows the old behavior of MoveTemp.

  • Bug Fix:Any references to FCoreUObjectDelegates::PreGarbageCollect/PostGarbageCollect delegates should be replaced with calls to FCoreUObjectDelegates::GetPreGarbageCollectDelegate() and FCoreUObjectDelegates::GetPostGarbageCollectDelegate() respectively

  • Bug Fix:Fixed console output not working when using -log in a shipping build

Gameplay Framework

  • New:As part of the changes for cross-level actor references newly created Sequencer actor references are now SoftObjectPtrs, but older Sequences will have to be fixed up with "Rebind Possessable References" and resaved first.

  • Scale can now be specified on play particle effect anim notify and spawn emitter Blueprint nodes.

  • Remove advanced option CreateTemporaryCopiesOfLevels from the sequencer capture object, it has not worked properly in several versions.

  • Bug Fix:UWorld functions PerformGarbageCollectionAndCleanupActors, DelayGarbageCollection, SetTimeUntilNextGarbageCollection, GetTimeBetweenGarbageCollectionPasses, and ForceGarbageCollection have been deprecated.The equivalent functions on GEngine should be used instead.

Media Framework

  • BREAKING: MediaSoundWave assets were replaced with MediaSoundComponents

    • There is no automatic conversion (components require different workflow & user decisions)

    • Attach new MediaSoundComponents to Actors or UMG widgets

    • Existing MediaSoundWave assets must be deleted from Content directory on disk

  • BREAKING: MediaPlayer output settings were removed.Media assets now reference a MediaPlayer instead

  • NEW: MediaTexture and MediaSoundComponent have a setting for the Media Player to pull data from

  • NEW: MediaAssets module is now always loaded to prevent server-side BP problems

  • NEW:Material texture samplers now require the new Sampler Type "External"

  • NOTE: MediaOverlay assets were removed as a concept

    • We are currently reworking caption and subtitle support in UE4

Online

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

Physics

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

Platforms

iOS

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

Rendering

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

Materials

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

Mobile Rendering

  • If your maps use Vertex Fog, Mobile preview and device will show on screen message:PROJECT HAS VERTEX FOG ON MOBILE DISABLED. Please open project settings and enable support for Vertex Fog in Mobile section.

  • Bug Fix:Vulkan will pre-allocate less memory on mobile devices

  • Bug Fix:Fixed:Shader cashing on Android.To enable shader caching use r.UseShaderCaching=1.Use r.SaveShaderCache command on device to save current cache to file, which then you can include into your game package.

Optimizations

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

PROGRAMMING UPGRADE NOTES

AI

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

Animation

General

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

Audio

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

Blueprints

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

    Where a single half-angle used to be required to specify the cone, the new radian-based function should be substituted; however, where both yaw and pitch were provided, the new degree-based function should be used instead.For example:

    • Calls to RandomUnitVectorInConeFromStream() should be replaced with RandomUnitVectorInConeInRadiansFromStream().

    • Calls to RandomUnitVectorInConeWithYawAndPitch() should be replaced with RandomUnitVectorInEllipticalConeInDegrees().

    From this point onward, the inconsistency in units between the elliptical and non-elliptical functions should be mitigated, as the degree or radian variants can now be used as appropriate.

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

    • Instead, UAT now looks at the value of the "BlueprintNativizationMethod" setting in DefaultGame.ini.This can be set by the user in the Editor UI in the Project Settings->Packaging section.If that value does not exist in DefaultGame.ini, then the value is assumed to be "Disabled" (off).

    • You can override the setting by including the following on the UAT command line: "-ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=", replacing the "" substring with one of those 3 available options.

    • Similarly, if your build pipeline calls UE4Editor.exe directly (for cooking) and/or UnrealBuildTool.exe directly (for building), the same holds true for those tools as well.You can also override the setting by including the same argument as noted above on each of their command lines, respectively.In that case, you'll need to ensure that both tools are specifying the same nativization method in their command lines.

Editor

  • New:To disable array reordering, use the metadata flag EditFixedOrder on the TArray.

  • Developers can now register a delegate with SlateApplication to tell when a window's DPI changes

  • The new port is set by default to 17777, which may conflict with projects that have hardcoded their ports when playing in editor.

Sequencer

  • New:UTexture::GetMaterialType is now const

Gameplay Framework

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

    • FStringAssetReference is now FSoftObjectPath

    • FStringClassReference is now FSoftClassPath

    • TAssetPtr is now TSoftObjectPtr

    • TAssetSubclassOf is now TSoftClassPtr

    • StringAssetReference.h/StringClassReference.h is now SoftObjectPath.h

    • AssetPtr.h is now SoftObjectPtr.h

    Including the old headers will give compiler warnings.The old type names are not officially deprecated because many games will have a large number of them, but they should be fixed up as well.

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

Networking

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

Online

  • IOnlineIdentity::GetPlatformUserIdFromUniqueNetId is now const

Android

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

iOS

  • ObjC exceptions default to off, if they are required then set bForceEnableObjCExceptions = true in your ModuleRules.

  • To enable add the following line to your IOSRuntimeSettings config: bDisableForceInline=true

Rendering

Optimizations

  • New:

    • UTexture2D::RequestedMips was removed and should be replaced by GetNumRequestedMips()

    • UTexture2D::ResidentMips was removed and should be replaced by GetNumResidentMips()

    • UTexture2D::PendingMipChangeRequestStatus was removed and streaming status should be handled through HasPendingUpdate() and IsReadyForStreaming()

XR

VR

  • If you maintain a custom VR plugin that needs to allocate its own render targets, you now need to move the methods out of your IStereoRendering implementation into a IStereoRenderTargetManager implementation.You can reduce the amount of duplicate code by extending FXRRenderTargetManager instead of implementing the interface directly.

  • Bug Fix:A receipt based system was added to request an override of the social screen mode to mirroring so that system dialogs are visible on the social screen, or potentially for other reasons.HMDSetupDialog is the only current use of this system.

DEPRECATIONS

Core

  • Removed unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)

  • Removed FPackageFileSummary's CompressedChunks array as it was no longer being used by anything.

Physics

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

Platforms

Mac

  • The support code for running the Unreal Engine 4 Editor & Games on Mac OS X 10.11 El Capitan has been removed.The minimum macOS version required for Unreal Engine 4 is no MacOS 10.12.6 Sierra.This was necessary due to the number of Metal features absent from Mac OS X 1.11 that are now required for Unreal Engine 4.

Rendering

  • Deprecating support for the Editor running in Shader Model 4

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

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

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

Mobile Rendering

  • The Android OpenGL ES deferred renderer has been removed.

Tools

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

UnrealBuildTool

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