アンリアル 4.15 がリリースされました!
February 15, 2017

アンリアル 4.15 がリリースされました!

作成 Alexander Paschall

今回のリリースに含まれる 79 の改善点は、GitHub のアンリアル エンジンのデベロッパーのコミュニティから寄せられたものです!こうしたアンリアル エンジン 4.15 に対する多大なご協力に謝意を表します (以下、敬称略)。

20tab srl (20tab), Andreas Schultes (andreasschultes), AndrewMAlvarez, Andrzej K. Haczewski (ahaczewski), Artem V. Navrotskiy (bozaro), BhaaLseN, Black Phoenix (PhoenixBlack), Brett Kercher (BrettKercher), Brian Harris (BrianHarris), BrodyHiggerson, CA-ADuran, Céleste (CelPlays), Chris Robertson (CJRobertson), Christopher P. Yarger (cpyarger), Deborggraeve Randy (DeborggraeveR), Deniz Piri (DenizPiri), Dennis Theisen (Soleone), Derek van Vliet (derekvanvliet), Dorgon Chang (dorgonman), Dustin Biser (dustin-biser), dyf303, EricLeeFriedman, finap, Garrett (RoyAwesome), Hannah Gamiel (hgamiel), How2Compute, Hyeon-Cheol Cho (crocuis), Jacob Shaffer (Phyllostachys), Joel McGinnis (joelmcginnis), Jordan Hueckstaedt (assumptionsoup), Jørgen P. Tjernø (jorgenpt), Jukka Jylänki, Justin Graham (mannewalis), kallehamalainen, kayosiii, Kory Postma (korypostma), Marat Radchenko (slonopotamus), Marco Antonio Alvarez (surakin), Mario Zechner (badlogic), Markus Breyer (pluranium), Martin Mittring (MartinMittringAtOculus), Max Shawabkeh (max99x), Michael Atkins, Moritz Wundke (moritz-wundke), Nako Sung (nakosung), Nathan Sizemore (nathansizemore), Nathan Stocks (CleanCut), nero81af, Nicolas Roblin, Orfeas Eleftheriou (orfeasel), Piotr Bąk (Pierdek), PjotrSvetachov, poiyomi, projectgheist, rarihoma, Rex Feany (laeos), Robert Segal (robertfsegal), Rūdolfs Bundulis (rubu), Satheesh  (ryanjon2040), Sébastien Rombauts (SRombauts), stefanzimecki, Stephen Dawkins (elFarto), Thomas Mayer (tommybear), Thomas McVay (ThomasMcVay), tmiv, Yours3lf, Zerophase

新機能

アンリアル エンジン 4.15 では、全体的な安定性、デベロッパー ワークフローへの追加機能、開発作業の効率を上げるランタイム パフォーマンスの改善、リリース後の素晴らしいエンド ユーザー体験が実現されています。

プログラマーは約半分の時間で コンパイル できるようになりました!今回のリリースでは、アンリアル エディタの実行中における コンテンツのリロード、マテリアルでの リルート ノード、新登場の ブレンドスペース エディタ と演算 Blueprint ノードなど、その他にも開発プロセスの合理化につながる多くの改善を行いました。

パフォーマンス関連では、ブループリントの C++ ネイティブ コードへのクック処理が実験段階の機能から本機能になりました。テクスチャ ストリーミング システムを全面的に見直しを行いました。NVIDIA SLI による NVIDIA SLI によりハイエンド システムが強化されました。

シネマティクス パイプラインおよびアニメーション パイプラインがさらにパワフルになりました。シーケンサーがアニメーション ブレンドに対応し、LOD でのカリング用に アニメーション カーブ がボーンに関連づき、Animation ブループリントのカーブは Modify Curve ノードでできるようになりました。Level Sequence の Actor ブループリントへの埋め込みが可能になり、アーリーアダプターが Level Sequence コンポーネントの早期サポートを利用できるようになりました。

プラットフォームの改善点の 1 つとして、Nintendo Switch の開発を実験的に実施できるようになりました。新しいロケーション サービスを使って、iOS および Android で GPS データ にアクセスできるようになりました。さらに iOS では、オーディオのストリーミングおよびリモート通知がフルサポートされました。モバイル用 VR プラットフォームのオプションである Monoscopic Far Field RenderingHDR ディスプリ 出力が実験的に利用できるようになりました。さらに Playstation VR Aim Controllers を使う機能も追加されました。

主要機能

新規:Nintendo Switch のサポート

アンリアル エンジン 4 の Nintendo Switch 用ゲーム開発に向けて、エピックは Nintendo と提携しました!

SnakePass-Switch.png

Nintendo Switch コンソール用ゲーム開発の早期サポートを追加しました。今回のリリースでは実験的機能ですが、次回リリースでは本機能となる予定です。

新規:物理ベースのデフォルト ポスト プロセス設定

トーンマッパがデフォルトで、映画さながらの色とトーンを出せるようになりました!

PostProcess_Cropped_003.jpg

Academy Color Encoding System (ACES) に対応する映画のようなトーンマッパがデフォルトで有効にされました。さらに、このトーンマッパによりエンジンが HDRディスプレイなどの複数の表示タイプに対応できるようになりました。Bloom 設定が更新されて、物理的により正確な結果をデフォルトで出せるようになりました。

前のバージョンのエンジンで使用したトーンマッパとは異なる、映画のようなトーンマッパです。プロジェクトの DefaultEngine.ini の SystemSettings セクションに r.TonemapperFilm=0 を追加すれば今まで通りのトーンマッパに戻すことができますが、前のバージョンで使用していたトーンマッパは新しいバージョンのエンジンでは削除する予定です。

新規:テクスチャ ストリーミングの改善

低解像度アーティファクトを取り除き、異なるプラットフォーム間でばらつくメモリ負荷制限を自動処理しつつ、CPU、メモリ、ロード時間を短縮するためにテクスチャ ストリーミング システムを最適化しました。

  • テクスチャ メモリ使用量の改善 - テクスチャ ストリーミング システムによるコンポーネントビジビリティごとの処理、静的ジオメトリの結合マテリアルごとの計算により (計算数が減少し) 、テクスチャ メモリ使用が 40% 削減されました。

  • テクスチャのロード時間の改善 - 表示されているミップをトラックすることで、ストリーマーが表示されているテクスチャ、次にプリフェッチ データと強制取り込みデータにフォーカスできるようになったため、テクスチャ ロードが 2 倍から 3 倍の速さになりました。

  • CPU 時間の短縮

    • 動的コンポーネント処理とその他のタスクを非同期テクスチャ ストリーミング タスクへ移動したことで、他のゲーム スレッド タスクと平行して実行できるようになり、ゲーム スレッドの更新時間が半分に短縮されました。

    • ならし処理のため、ストリーミング レベルのテクスチャ処理遅延が 98% まで減りました。

  • 低解像度アーティファクトの削減 - メッシュ UV 濃度がメッシュ単位ではなくマテリアル単位で計算され LOD を考慮するようになりました。テクスチャ ストリームが、パーティクル システムやインスタンス化したスタティックメッシュをはじめ、さらに多くのコンポーネント タイプをサポートするようになりました。

  • 自動メモリ - テクスチャ ストリーミング システムがビヘイビアを自動調整するようになり、手入力による調整なしでメモリ割り当てが変更されるようになりました。ビジュアルの品質を維持するためにはどのテクスチャを削減すべきか、多様なヒューリスティックによって選択でできるようになりました。

新規:ブループリントを C++ にクックする

ブループリントの実行時にかかる VM オーバーヘッドを下げるために、ブループリントをネイティブ ソースコードにパッケージする機能が本機能になりました!

この機能は実験的機能として使用されていましたが、Robo Recall など弊社独自のプロジェクトで正常な機能が確認されているため、そのラベルを削除しています。

個々のブループリントを排他的にネイティブ化、あるいはすべてのブループリント アセットを包括的にネイティブ化することができます。大規模プロジェクトで Inclusive モードを使用した場合、プラットフォームによっては実行ファイルの大きさが問題になる場合があります。ほとんどのプロジェクトでは、Exclusive モードを使用してパフォーマンス重視のブループリントのみをターゲットにすることがベストプラクティスになります。詳細は ブループリント ネイティブ化関連文書 をご覧ください。

新規:C++ コンパイルの高速化

アンリアル エンジン 4 コードベースの コンパイルが 2 倍の速さでできるようになりました! Engine.h や UnrealEd.h などのモノリシック ヘッダを含む大きなソースファイルまで全部含むのではなく、ヘッダファイルには必要なヘッダのみがインクルードされます。これを *Include What You Use (IWYU) といいます。

CompileTimes_006.jpg

新規モデルの規則は以下の通りです。

  • 各ヘッダにはコンパイルに必要なものがすべてインクルードされます - よく使われる型 (FString、FName、TArray、FVector など) を含む CoreMinimal.h ヘッダ ファイルがほとんどのヘッダで最初にインクルードされるようになりました。

  • .cpp ファイルは対応する .h ファイルを最初にインクルードします - これにより、必要なものすべてが各ヘッダにインクルードされていることが確認しやすくなりました。UnrealBuildTool は、ソースファイルがこの規則に適合しているかチェックします。

  • Engine.h や UnrealEd.h などのモノリシック ヘッダはエンジン コードにインクルードされなくなりました - 含また場合はエンジンから警告が出されます。ゲーム プロジェクトと互換性はあるので、そこに含まれた場合は警告が出されません。

  • エンジン コードはプリコンパイル済みのヘッダを明示的にインクルードしなくなりました - PCH はまだ使用しますが、UnrealBuildTool でコンパイラ コマンドラインに強制的にインクルードされます。これにより、現在インクルードされている依存を壊さずに内容の調整ができます。

注記:.build.cs ファイル (あるいはグローバルな BuildConfiguration.xml ファイル) から 'bEnforceIWYU = false' を設定すると、これらの規則の違反に対する警告やエラーを無効にすることができます。

新規:Background Blur ウィジェット

UMG 内の他の UI と 3D シーンをぼかすことができる Background Blur ウィジェットが登場しました! Background Blur ウィジェットには、ぼかしが入らないウィジェットを追加するコンテンツ スロットもあります。

背景のぼやけ度合は、強度を表す数値を 1 つ指定して定義します。これは 0 (オフ) から 100 (フル) まであり、時間とともにぼやけていくようにアニメートすることができます。

UIBlur_2_001.jpg UIBlur_10_001.jpg UIBlur_50_001.jpg

強度 = 2

強度 = 10

強度 = 50

新規:Material Editor Reroute ノード

Reroute ノードをマテリアル エディタで使えるようになったので、マテリアル グラフの中をすっきりきれいにすることができます。このノードはブループリントとマテリアル エディタ間で理想的に動作し、純粋に表示されるだけなので、マテリアルの最終的な命令数は変わりません。

MaterialRerouteNode_Combined_Web_04.jpg

マテリアル エディタに Reroute ノードを追加するには、以下の手順を行います。

  • Utility のマテリアル パレットの [Add Reroute Node] をグラフへドラッグします。

  • 接続スプラインをダブルクリックして、新規の Reroute ノードをインラインに挿入します。

新規:シーケンサー アニメーション ブレンド

シーケンサーが複数のアニメーション間でウェイト付けブレンドをサポートするようになり、既存のアニメーションから複雑なアニメーション シーケンスを構築できるようになりました。加算 (ローカル空間) アニメーションを好きな数だけ、好きな回数ブレンドすることができます。

シーケンサー アニメーション ブレンド

トラックを拡張し、望ましいタイムラインの値でキーを取得して、アニメーションのウェイトを調節することができます。フルボディ アニメーションの場合、ウェイトは正規化されるので、メッシュの縮小または拡大しすぎは起こりません。加算アニメーションの場合、指定ウェイト値は変更せずに使用されます。

アニメーション ブレンド スケルタルメッシュを有効にするには、新しい Blend Multi by Alpha ノードを使ってメッシュの Animation ブループリントの Anim Graph に追加します。コンテキスト メニューで新しいポーズの追加ができます。

新規:ブループリントのシーケンサー アニメーション (実験的)

Actor Sequence Component を追加する新しいアクタ シーケンサー プラグインです。シーケンスを Actor ブループリントに埋め込むことができます!この機能により、アニメーションをブループリント インスタンスに結合して、イベントグラフでトリガーすると、シーケンスを再利用することができます。また、Actor Sequence コンポーネントをワールドのすべてのアクタに追加して、アクタの単一のインスタンスにアニメーションを追加することもできます。

Actor ブループリント

Actor ブループリントのビューポート

新規:Content Hot-Reloading (実験的)

新機能の Content Hot-Reloading によって、ディスクからオンザフライでパッケージをリロードできるようにサポートを大幅に改善しました。

この機能を使うと、ロードしたアセットの処理時に、インエディタのすべてのソース コントロール演算子がさらに安定します。ディスクからアセットを強制的にリロードする "Asset Actions" に入っている "Reload" オプションも使用できます。アセットへの変更を保存せず、オンディスク版にリバートしたい場合、特に便利なオプションです。

この機能を有効にするには [Editor Preferences (エディタ環境設定)] の [Experimental (実験的)] セクションの [Content Hot-Reloading (コンテンツのホットリロード)] を有効にします。

注記:現在、エディタが開いている間にコンテンツのホット リロード機能を使うには、インエディタ ソース コントロールを使わなければなりません。技術的にも、すべてから同期がとれるように今後解決したいと思っています。

新規:High Dynamic Range 対応ディスプレイへの出力 (実験的)

高いコントラストと幅広い色域などの機能を使って、アンリアル エンジン 4 で High Dynamic Range (HDR) 対応ディスプレイへ出力できるようになりました。

デモンストレーション用のシミュレーション画像です。

HDR ディスプレイへの出力が Windows Direct3D 11 (NVIDIA-only)、Mac Metal の各プラットフォームでもサポートされるようになりました。この他のデバイスも今後のリリースでサポートされる予定です。GitHub に追加されていれば利用することができます。現時点では、標準 ACES トランスフォーム ([modification] -> [reference rendering] -> [output display]) でレンダリング シーンをフルプロセスで処理し、1000-nit または 2000-nit ディスプレイへの出力を実行するパスがあります。標準ホワイト バランスおよび色域調整をほぼカバーするトーンマッピング パスの一部として、デバイス固有のトランスフォームを参照テーブルにベイクしました。デフォルトで LDR コントロールとの相性が悪いため、HDR 出力中はフィルム マップ カーブは無効になっています。関連する幅調整とエンコードが必要であればトーンマッピングの後に適用します。

さらに、実験的に LDR UI コンポジションもサポートするようになりました。HDR 出力を有効にすると、LDR の見た目ができるだけ変わらないように自動処理されます。ただし、新しいコンソール変数で UI を少しだけ増やして、輝くメインシーンの横で廃れて見えないようにした方がよいかもしれません。

現在 HDR への出力サポートは、サポート対象のディスプレイが接続されている場合のみ、起動時に探知され、フラグがセットされます。全画面モードを起動し、HDR 出力を有効にすると、アプリケーションはサポート対象のディスプレイに自動的に移動しようとします。HDR 出力は、新しいコンソール変数もしくは GameUserSettings のいずれかで切り替えが可能です。これにより、現在のデバイスに対して最も一致が近いものへ自動的にクランプし、必要なフラグをすべて設定します。

新規:モバイル レンダリング プレビュー (OpenGL ES 3.1、Metal、Vulkan)

モバイル プレビュー機能が改善され ハイエンド モバイル機能をエディタのビューポートでプレビューできるようになりました。このモードは、iOS Metal、Android OpenGL ES 3.1、Android Vulkan の各デバイスで使用可能な機能をエミュレートします。

HQPreview_Web_001.jpg

注記:プロジェクト設定で有効にしたデバイスのみ、プレビュー プラットフォーム メニューに表示されます。

新規:ブループリント用 Map と Set のコンテナ

アイテムのコレクションは、以前から使用可能な Array 変数型に加えて Map / Set 変数型によってブループリントに格納できるようになりました。Map / Set 変数型は、エントリを重複せず、Map に関しては ‘keys’ の繰り返しもなく、確実にユニークなアイテムのみ格納します。大きいデータベースで頻繁にルックアップする場合、特に便利です。

TMapTSet_BP_Web_001.jpg

Variable Type の調整が、‘Single Variable’、‘Array’、‘Set’、‘Map’ からドロップダウンで選択できるようになりました。‘Map’ を選択すると、2 つ目のドロップダウンで ‘value’ 型が表示されます。

Map / Set プロパティのレプリケーションはまだ C++ やブループリントではサポートされていませんが、C++ で宣言された Set / Map 変数がブループリントへ公開できるようになりました。

新規:ゲームプレイ タグ

ゲームプレイ タグが改善され、フルサポート機能になりました!

ゲームプレイ タグは、"Family.Genus.Species" または “IndividualThing” の形式名称です。これらのタグはベースとなる辞書に登録されています。“.” を用いて名前をネスティングすると、文字どおりのタグとすべての親タグの両方を一致検索することができます。GameplayTagContainer は一致操作に使用するタグ群です。

タグは、テキストを手入力する代わりに名前リストを定義できるので、デベロッパーにとって便利です。ゲームプレイ タグを使うには、新しい Gameplay Tags プロジェクト設定ビューからベースとなるタグ辞書にアクセスして登録しなければいけません。

GameplayTags_Full_02.jpg

[Import Tags from Config] オプションを有効にすると、このページ上の Gameplay Tag List によってエディタからタグを追加することができます。タグの優先度をデータに登録したら、ブループリントまたは C++ のいずれかでクエリし、機能を変更することができます。BlueprintGameplayTagLibrary には便利な関数がいくつか付いています。

新規:カラー グレーディングの調節

ポストプロセス設定の Color Grading プロパティに新しい調整機能が追加されました。

 

PostProcessUI_001.jpg

目玉は以下の機能です。

  • 各スライダの下にある色付けされた行が、そのスライダーで変更できるカラーチャネルを表します。

  • 値の編集用のスライダーの精度が改善されました。編集中に Shift キーを押すと、さらに精度が高まります。

  • 新しいカラーホイールで、X、Y、Z チャネルの一括変更が可能になりました。カラーホイールの下のスライダーで X、Y、Z チャネルの色調を調整します。

新規:VR エディタ メニューの改善点

VR エディタの Quick Menu と Radial Menu が更新され、ユーザビリティと機能性の改善だけでなく、ルック・アンド・フィールも一新しました。

ラジアルメニューによる複製

サムスティックまたはタッチパッドをクリックしてラジアル メニューを呼び出し/ メニューを閉じ、サムスティック / タッチパッドを動かしてオプションを選択し、トリガーで選択します。レーザーでアイテムを選択することもできますが、サムスティック / タッチパッドがレーザーをオーバーライドします。

クイックメニューによる回転

クイック メニューによる呼び出し/終了機能の変更はほとんどありませんが、クイック メニューは表示し、レーザーは非表示にして、画面をすっきりさせました。

新規:VR エディタ / 数字パッド

数字パッド UI が新しくなりました! 数字 (0-9) だけでなく、VR エディタのテキストフィールドの負の値や小数の入力も早くなります。

VR エディタ数字パッド

ボタンをトリガーして数を選択、グリップを握ってエンターを押します。バックスペースにはモディファイア キーを使います。数字パッドを閉じるには、シーンのどこか別の場所をクリックするか、標準のラジアル メニューと同じようにタッチパット / サムスティックをクリックします。

新規:Texture Streaming Debugging Visualization ツール

テクスチャ ストリーミング システムを自分のゲームで使いやすくする 3 種類のビューモードが登場しました!

  • Primitive Distance Accuracy - ストリーマーが計算した距離をGPU が計算した距離と比較して精度を表示します。ストリーマーはビューポイントから座標軸に平行なバウンディング ボックス (AABB) テクスチャ インスタンスまでの距離を計算します。このバウンディング ボックスは、テクスチャを使用するコンポーネントの LOD- セクションの AABB を合計することによって、ビルド プロセスで計算されます。

  • Mesh UV Densities Accuracy - ストリーマーがメッシュ単位で使用する UV 密度のエフェクトを表示します。UV 密度が正しくないと、これらのメッシュ上のテクスチャがストリーミング不足 (ぼやける) あるいはストリーミング過多 (メモリの無駄遣い) になります。

  • Material Texture Scales Accuracy - マテリアルで使われるテクスチャには、メッシュ UV チャネルのスケール値を使ってサンプリングされるものがあります。テクスチャ ストリーミングのビルドでは、どのテクスチャ座標を使うか、サンプリングされた各テクスチャにどのスケールを適用するかを計算しようとします。これは多くの理由から失敗するかもしれません。その場合、ストリーマーはテクスチャがテクスチャ座標 0 およびスケール 1 でサンプリングされたことを前提にします。
    マテリアルは多くのテクスチャをサンプリングするため、このビューモードではサンプリングされたすべてのテクスチャ全体で最悪のエラー (アンダーストリーミング、オーバーストリーミング) を生じています。チェッカーボード全体でこうした 2 つの極値が表示されています。ひとつは、最悪のオーバーサンプリングで、もうひとつは最悪のアンダーサンプリングです。各テクスチャは "View Mode Options" で調べることもできます。

stat streaming コンソール コマンドを使ってライブのテクスチャ ストリーミング統計情報へのアクセスも可能になりました。統計情報には、パフォーマンス、メモリの使用、テクスチャ ストリーマーが使用するその他のメトリクスが表示されます。メモリのデータを読み出す場合、「プール」という言葉は概念的なメモリを表します。実際に使われるメモリのことではありません。「ミップ」マップは、テクスチャが取得中のメモリを表します。メモリ メトリクスは以下の 3 つのメイン プールに分類されます。Texture、Streaming、Wanted です。これらのプール サイズは各行の右側にあります。

新規:フライト スティックとハンドルのサポート (Windows)

新規 Raw Input プラグインを使用して Windows でハンドル、フライト スティック、その他の XInput をサポートしないデバイスに対応できるようになりました。

プロジェクト設定で新規デバイスを設定するか DefaultInput.ini を編集することで新規デバイスを簡単に追加できます。すべての Vehicle テンプレートと Vehicle Game が Logitech G920 で機能するように設定されました。

新規:Force Feedback コンポーネント

Force Feedback コンポーネントをワールドでアクタに追加してローカライズしたハプティック エフェクトを生み出すことができます。このコンポーネントには減衰プロパティがあり、フォース フィードバック パターンの再生の強度をプレイヤーとエフェクトとの距離に応じて判断します。減衰プロパティはコンポーネント上で直接指定するか、コンテンツ ブラウザで Force Feedback Attenuation アセットを作り、それを複数のコンポーネントで再利用することができます。Force Feedback コンポーネントは、オーディオ、デカール、パーティクル エミッタのようにブループリントからワールドにスポーンすることもできます。

新規:PlayStationⓇVR Aim Controller のサポート

PlayStationⓇVR の UE4 ゲームの没入感は、Aim Controller のサポートによりさらに高まります。

AimController_01_notice.png

Motion Controller コンポーネントで “Hand” の値を “Gun” に変えるだけでアクティベートすることができます。 PlayStationⓇVR の Aim Controller のボタンは Dual Shock ゲームパッドと同じボタンにマッピングされます。

新規:Mathematics Material ノード

要望が多かった数式系マテリアル ノードを追加しました。一般的な演算でマテリアル関数やカスタム ノードを使用する必要性をなくします。

“Fast” タグがあるノードは、実際の命令の代わりに近似を実行します。複雑なマテリアルでは有意なパフォーマンスの改善が見られますが、入力の制約と精度のトレードオフがあります。

新規:Previous Frame Switch マテリアル ノード

Previous Frame Switch ノードが追加されました。これにより、マテリアルで実装されている複雑な頂点アニメーションで正確なモーション ベクターを生成し、Temporal AA (テンポラル アンチエイリアシング) とモーション ブラーで正確に機能するようにします。

Previous Frame Switch

単に時間の関数のマテリアル頂点アニメーションが改善なしに既に機能していますが、マテリアル パラメータなどアニメーションに影響を与える他の変数を取ることができません。Previous Frame Switch (前フレーム スイッチ) を使用すると、例えば、ブループリントでこうしたパラメータがどのように変化するかを追跡できれば、アーティストはこの問題を手動で解決できます。

この機能を使用する場合は、頂点変形からの正確なべロシティを有効にする必要があります。

新規:Pre-Skinned Local Normal マテリアル ノード

Pre-Skinned Local Normals を使って、ローカルで位置合わせした 3 面マテリアルを使ってスケルタルメッシュに自動 UV マッピングなどのエフェクトを適用できるようになりました。

この機能は、新規 Pre-Skinned Local Normal マテリアル ノードとして公開されます。 これは、Pre-Skinned Local Position ノードと同じように機能しますが、スケルタルメッシュとスタティックメッシュのローカルの表面法線を戻します。この機能によって一段とローカルな空間、メッシュに合わせたエフェクト、動的サーフェス データを別のマテリアルにリードバックするマスクに書き込むなど高度なユースケースの可能性が開かれます。

新規:macOS と iOS で Metal のサポートを向上

MacOS 10.12 Sierra と iOS 10 で Apple が追加した新規 API およびシェーダー言語機能の多くを使用するように Metal サポートが拡張されました。

Apple 社と連携し、この新しい Metal Tessellation パイプラインを使用して、Mac でアンリアル エンジンのテセレーション機能のフルサポートを実装しました。これまでは利用できなかった Displacement (変位) と world position offset の機能を Mac で使えるようになりました。デフォルトで Mac Metal でテセレーションを使うようにElemental サンプルがアップデートされました。

Mac と iOS では、プロジェクト設定として Metal Shader Standard バージョンを指定できるようになり、デベロッパーは新規機能を採用するか、完全後方互換性を維持するかを選ぶことができます。新しい Metal v1.2 standard を有効にすると、すべての Metal プラットフォームのピクセル シェーダーで UAV を使用し、他の RHI のように任意のデータを生成することができます。 

Retina iMac などの適切なディスプレイを組み込んだ Mac 、または Thunderbolt で接続された Mac の HDR レンダリングも実験的にサポートします。プロジェクト単位の HDR 設定を有効にすると、DCI-P3 色域をサポートする HDR ディスプレイにレンダリングするように Metal を設定します。

Metal サポートには、開発のためにデフォルトで有効になる内部の検証レイヤーも含まれ、Xcode とは独立して実行します。これにより、一時的な問題やハードウェア固有の問題のデバッグを支援するデベロッパー ツールをインストールしていなくても Metal 実行時に発生するエラーに関する情報をはるかに多くレポートすることができます。このレイヤーはパフォーマンス重視の Test と Shipping のビルドで自動的にコンパイルされます。

新規:シーケンサーのイベント トラックのペイロード

シーケンサーのイベントにデータのペイロードが含まれるようになりました。これにより、再生しているシーケンスにどのように反応するかについて一段とコンテキスト リッチな情報でイベントをトリガーできるようになります。ペイロードでイベントをトリガーするには、イベントのパラメータを定義する構造体を作成し、それをイベントのパラメータの構造体プロパティに適用します。

EventTrackPayloads_001.jpg

イベントは関数を呼び出し、イベントのコンテキストでカスタム イベントをトリガーすることができます。ただし、指定したパラメータの構造体が目的の関数のプロトタイプとビット単位で互換性があることを前提とします。

新規:シーケンサーで動的オブジェクトをアニメート

ブループリントを使ってシーケンサーのトラックのバインドができるようになり、ランタイムにオブジェクトにシーケンスを適用できるようになりました。つまり、シーケンスでオーサリングしたオブジェクトとは別のオブジェクトをアニメートすることができます。シーケンスのバインドの識別子をシーケンスから抽出するには、新規GetSequenceBindings ノードを使用します。

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

シーケンサーに新しい Transform Keys/Sections ツールが加わりました。これにより、現在の選択を再配置、再スケーリングすることができます。

その他の改善点:

  • トラックを互換性のあるオブジェクトにコピー&ペーストできるようになりました。

  • マスター シーケンス内にあるショットを見る場合、その相対時間でシーケンス全体を評価します。ショット自体は “Evaluate Sub Sequences in Isolation” を設定することで、切り離すことができます。

  • コンポーネントのキーフレーミングに、オートキーを含むキーフレーミング ツールが加わりました。コンポーネントを個別に選択し、キーフレームを設定できます。

  • トラックをアタッチすると、トランスフォームを合わせるのではなく、実際にはアクタを対象にアタッチすることになります。これにより、アタッチメントと相対的なトランスフォームを一緒にシーケンスにすることができます。

新規:シーケンサーのオーディオ ボリューム / ピッチのカーブ

オーディオ セクションのボリュームとピッチをシーケンサーで直接制御できるようになりました。デザイナーがフェードイン、フェードアウト、その他のエフェクトを有効にすることができます。

新規:ブレンドスペース エディタの改善

ブレンドスペース エディタの外観が新しくなり、ワークフローが改善されました!

EventTrackPayloads_001.jpg

  • サンプルのプロパティを変更する複数の方法 - サンプルをドラッグ&ドロップする以外に、サンプル値やアニメーション シーケンスを変更するために、コンテキスト メニューとスピン ボックスが追加されました。

  • Shift キーを押しながらブレンドスペースを (固定) プレビュー - 様々なアングルやズームレベルなどでメッシュをプレビューできるように、プレビュー値を固定する機能を加えました。Shift キーを押しながらプレビュー値を動かします。

  • リサイズ時にサンプルを新しいグリッドにスナップ - グリッド分割数またはいずれかの軸のサイズが変更された場合、既存のサンプルは利用可能な最も近いグリッド ポイントにスナップされます。有効な位置がみつからなければ、無効とマーク付けされ、赤くなります。

  • ドラッグ&ドロップ操作 - どこにサンプルを配置するかの表示、ブレンドスペースに対してアニメーションが有効かどうかの表示などアニメーション ツールのアセット ブラウザからのドラッグ&ドロップ操作のバリデーションとプレビューが改善されました。

  • 空間に合わせてストレッチ vs 最大軸に合わせてストレッチ - グリッドが占める UI 空間を変更したため、レイアウト空間全体に合わせてグリッドをストレッチするか、最大軸に合わせてストレッチする機能を加えました。つまり、最大軸はグリッドの最大幅または最大高さになります。

新規:ポーズのスナップショット機能

ランタイムのスケルタルメッシュのポーズをキャプチャーする機能をブループリントに加え、Anim ブループリントで使用できるようにしました

これはデス ポーズから ‘get up’ アニメーションへのブレンド (ラグドールのシミュレーション後) に便利です。後で Skeletal Mesh コンポーネントと使用するためにポーズのスナップショットを変数に格納することもできます。

新規:質量プロパティのデバッグ

物理オブジェクトに関連する重心と慣性テンソルを視覚化する機能を追加しました。

MassProperties_Web_04.jpg

質量のプロパティを視覚化するには、新しい表示フラグを有効にします (Show > Advanced > Mass Properties)。各軸の厚さは軸に沿った慣性モーメントの大きさを示しています。

新規:カーブをボーンにリンク

アニメーション カーブをスケルトンの特定のボーンにリンクし、LOD が変化するときにボーンと合わせてカリングすることができます。これは、フェイシャル アニメーションをセットアップする場合に特に役立ちます。不正確なレイヤーからカーブ値をオーバーライドするのを防ぐためにレイヤーのブレンドと合わせて使用することもできます。

新規:Modify Curve Animation ノード

アニメーションをより動的に操作するためにアニメーション グラフで任意のロジックを使ってアニメーション カーブを修正できるようになりました。

Modify Curve ノードを追加した後、その上で右クリックして修正するカーブを選択します。これで各カーブは、ロジックを接続可能な入力 float ピンとして表示されるようになります。

新規:Font アセットの改善

新しい Font Face アセットを使ってフォント データを Font アセット間で共有できるようになりました。メモリ消費を削減し、安定性を高めます。

Font Face はフォント データを保存するアセットであり、こうしたアセットは Font アセットによって参照されます。つまり、同じフォント データを複数のフォント アセットで再利用することができます。さらに、ひとつの Font アセット内で複数のタイプフェースを再利用することもできます。ロード中に既存の Font アセットはその内部フォントデータを、埋め込まれた Font Face アセットに自動的にアップグレードします。フォント エディタを使ってこうした埋め込まれたアセットを、編集、共有可能な実際の Font Face アセットに分割することができます。

新規:Linux ARM64 のサポート

Linux を実行する ARM64 (AArch64) デバイスのサポートを追加しました。エンジンを実行するためには、こうしたデバイスはデスクトップの OpenGL 3.2 以上をサポートしていなければなりません。

新規:NVIDIA SLI の Alternate Frame Rendering のサポート

複数のグラフィックス カードが検出された場合、パフォーマンスを上げるために Nvidia SLI コンフィギュレーションの AFR レンダリングをサポートするようになりました。最大の改善点は、レンダラーが GPU 間でフレーム間の従属関係を可能な限り早くコピーすることです。デベロッパーは NVIDIA と連携してゲームをテストし、適宜 AFR に自動的に切り替わるようにする必要があります。

新規:モバイル VR の Monoscopic Far Field Rendering (実験的)

Monoscopic Far Field Rendering では遠隔のオブジェクトを一回だけレンダリングすることでパフォーマンスを大幅に改善することができます!

オブジェクトがカメラから離れてレンダリングされるにつれてステレオの発散は減ります。一定の距離になると、遠くのオブジェクトのステレオ レンダリングが通常のモノスコピック レンダリングと区別がつかなくなります。Monoscopic Far Field Rendering では、クリッピング平面でシーンを近距離と遠距離の 2 つに区切ることでこれを活用しています。クリッピング平面の近距離側にあるものはすべてステレオでレンダリングされます。遠距離側にあるものは一回だけレンダリングされて、その後近距離の結果に合成されます。

Monoscopic Far Field Rendering は、現時点ではモバイル プラットフォームに限りサポートされています。Monoscopic Far Field Rendering を有効にするには、Project Settings -> Rendering -> VR のチェックボックスを選択します。現在、マルチビューとモノスコピックの遠距離を同時にはサポートしていません。モバイル HDR を無効にする必要があります。

新規:モバイルのカスタム ステンシル

モバイル デバイスは、マテリアルのポスト プロセスで ‘Custom Stencil’ を使用できるようになりました。オブジェクトのアウトライン、オクルードされたオブジェクトの視覚化、その他のエフェクトが可能になります。

この機能では、MobileHDR を有効にする必要があります。プロジェクトでこの機能を有効にするには、Project Settings -> Rendering -> Postprocessing の順に進んで、  ‘Custom Depth-Stencil Pass’ を ‘Enabled with Stencil’ に設定します。

新規:モバイルのシェーダー メモリ削減のオプション

モバイルのシェーダー置換が原因のメモリ使用を大幅に減らすことができるようになりました。これはモバイル ゲームで利用しないライティングのセットアップを無効にすることで行います。

Project Settings -> Rendering で利用できる以下の設定を使ってメモリの使用を削減し、アプリケーションのパッケージ サイズを減らすことができます。

  • Allow Static Lighting を無効にする

  • Support Combined Static and CSM Shadowing を無効にする

  • Support Distance Field Shadows を無効にする

  • Support Movable Directional Lights を無効にする

  • Max Movable Point Lights を 0 に設定する

  • Use Shared Movable Point Light Shaders を有効にする

SunTemple サンプル コンテンツで使用していないライティングのセットアップを取り除くようにフラグを設定すると、Android パッケージ サイズが 22 MB 減りました。

新規:Android グラフィックス デバッガーの統合をサポート

Android アプリケーションでサードパーティのグラフィックス デバッガーをサポートするようにパッケージングできます。デバイスの GPU に応じて Mali Graphics Debugger または Adreno Profiler を選択することができます。グラフィックス デバッガーのオプションは、Project Settings -> Android にあります。

まず、GPU ベンダーのウェブサイトからこうしたデバッガーをダウンロードし、インストールする必要があります。デバッグ用にデバイスを設定するために追加のセットアップが少々必要になります。デバッガーの種類を選択後に表示される指示に従ってください。

特定の GPU デバッガーをサポートするようにアプリケーションをパッケージングした場合は、別の GPU を備えたデバイスを実行する際に正しく機能しないことがあります。

新規:Android と iOS の GPS の位置情報サービス

Android と iOS で GPS データを利用できるようになりました!  新しい On Location Changed デリゲートが利用可能になり、Services->Mobile->Location でブループリントのノードが利用できます。

新規:iOS でオーディオをストリーミング

iOS でオーディオのストリーミングがサポートされます。オーディオのストリーミングによってメモリ使用とレベルのロード時間を減らすことができます。ストリーミングのために既にマーク付けされているアセットは、他のプラットフォーム同様に自動的にストリーミングされます。

新規:iOS のリモート通知

iOS のリモート通知がサポートされるようになりました! ゲームは通知を処理するためにコールバックを登録することができます。エディタにはアプリケーション用に通知をセットアップするツールがあります。

新規:ビークルのサポートがプラグインに移動

PhysX Vehicle サポートをオプションのプラグインにリファクタリングしました。ビークルを使用しないゲームでこの機能を除外して、ディスク空間とメモリを節約することができます。便利な物理の拡張ポイントもエンジンに加わり (例、OnPhysSceneInit/Term、 OnPhysSceneStep)、他のデベロッパーが独自の類似システムを簡単に記述できるようになりました。

注意: 古い ‘TireType’ アセット (非推奨) を新しい ‘TireConfig’ アセット (新規 PhysXVehicles プラグインで定義) に移行する場合は、手作業が必要になります。これを行うために UE4 エディタで利用可能な新規コンソール コマンドがあります。コンソールを呼び出し、‘ConvertTireTypes’ と入力するだけです。これで、新しい TireConfig アセットが作成されて、プロパティにコピーされ、それらを任意の VehicleWheel ブループリントに割り当てます。これで古い TireType アセットを取り除くことができます。

Release Notes「訳注:以下は、非常に技術的な部分が含まれるため、翻訳を省略します。」

AI

  • New: A Cone EQS generator has been added.

  • Bugfix: Fixed AI perception system not properly registering perception listeners spawned as part of "begin play" in streamed-in sublevels.

  • Bugfix: Fixed a bug in the Env Query Generator Simple Grid resulting in one extra column and row of points being generated.

  • Bugfix: A number of fixes to how and when static mesh collision gets applied to navmesh generation process. This makes static mesh collision changes instantly applied to navmesh on the level.

  • Bugfix: Pasting nodes in the Behavior Tree editor has been fixed to make pasting location predictable.

  • Bugfix: Fixed a bug in EQS debug drawing resulting in item labels not showing.

  • Bugfix: Fixed a bug in EQS debug drawing resulting in displaying labels of item that are no longer being debugged.

  • Bugfix: Fixed vertical jitter in replicated Nav Walking movement.

  • Improvements for using gameplay debugger in Simulate in Editor mode, unified category toggling with input events between simulate and game/play modes.

Behavior Tree
  • Bugfix: Fixed the Blackboard component pausing but never being unpaused if we ended up restarting the Behavior Tree instead of continuing.

Debugging Tools
  • Bugfix: Fixed gameplay debugger's EQS category skipping timestamps, and improved readability of presented data.

Navigation
  • New: Added new component for creating navigation links: Nav Link Component.

  • Bugfix: Get Random Point In Navigable Radius has been fixed to not return invalid locations if there's any navmesh within specified radius.

  • Bugfix: Fixed a bug in the Nav Link Proxy Point Links' Area Class application that was resulting in the value getting ignored.

Animation

  • New: Added experimental support for facial animation.

  • New: Anim Blueprint thread safety is now checked in the compiler.

    • Added extra warnings in the Anim Blueprint compiler based around these new keys to help people catch suspect thread usage.

  • New: Expanded pose snapshot system.

    • Allows poses to be stored in variables so they can be managed like any other Blueprint data.

    • Added modes to Anim Node Pose Snapshot so that we can either use the named pose or a Pose Snapshot variable pin.

  • New: Added editor-only flag Update Animation In Editor and setter function to Skeletal Mesh Components to allow playback of animations on Skeletal Meshes placed in the level.

  • Bugfix: Fixed a crash when retargetting animation assets to another skeleton via duplicate and retarget.

  • Bugfix: Fixed marker sync crash when animation being played by a sequence node changes while that nodes sync group is not active.

  • Bugfix: Fixed 'auto' check box in Morph Target panel.

  • Bugfix: Fixed situation in which stale material references could be present as override materials on Static and Skeletal meshes inside of a level.

  • Bugfix: Fixed removal of bone tree entries from a Skeleton after performing "Remove Unused Bones" (caused retargeting options to become out of sync).

  • Bugfix: Fixed anim blueprint compiler not following reroute nodes when building cached pose fragment list.

  • Removed 4.11 deprecated functions from animation systems.

  • Removed warning on Least Destructive animation compression (it was incorrectly applied to least destructive due to legacy reasons).

  • Added extra information to log warning about using additive animations in Single Node Anim Instance.

  • Changed “Ensure All Indices Have Handles” to try and maintain validity of as many of the handles as possible to stop crash when calling “Get Key.”

  • Morphtarget applying priority has changed.

    • First, it will apply animation curves to active morphtarget list.

    • Second, it will apply (and override if exists) Set Morph Target curves to active morphtarget list.

    • Set Morph Target can also clear the weight if you decided to not to remove from the list.

Animation Assets
  • New: Added the ability to specify per-sample animation rate scales in blendspaces.

  • Bugfix: Fixed shadowing issue for Alembic Caches which had incorrect (too small) bounds.

  • Bugfix: Fixed popping in On Rep Replicated Anim Montage.

  • Made Scrubbing the Play Back Speed property on Geometry Cache components less sensitive.

  • Changed behaviour for calculating blendspace grid weighting for one, two or colinear triangles.

    • One: Fill grid weights to single sample.

    • Two: Find closest point on line between the two samples for the grid point, and weight according to the distance on the line.

    • Colinear: Find two closest samples and apply behaviour above.

Animation Blueprint
  • New: Added Blend Option (and optional Custom Curve) to Pose Blend Node.

  • Bugfix: Fixed anim sub-instances only allowing one pin to work when any pin required a call out to the VM for evaluation.

  • Bugfix: Fixed Joint Target Location not being available in the detail panel.

  • Exposed various montage functions to Blueprint.

  • Added curve panel to anim BP editor.

  • Copy-to-array now works with the anim blueprint 'fast path'.

  • ‘Blend Two Poses Together Per Bone’ will now blend curves using ‘combine’. Previously it only took curve data from the second pose input.

Import/Export
  • Bugfix: Fixed an issue where Matrix Samples would be imported incorrectly for Alembic Caches.

  • Changed the way we populate Smoothing Group information for Alembic Caches.

  • Refactored the Skeletal LOD workflow. Now we track source files for LODs to save time when reimporting LODs often. It's still possible to pick new files and overwrite the current settings.

Skeletal Mesh
  • New: Added support for per-component vertex color overrides for Skeletal Meshes.Nintendo

    • Use the Set Vertex Color Override function (also exposed to Blueprints) to specify a new color buffer to apply.

  • Bugfix: Fixed edge cases so Skeletal Mesh Components should now properly scale collisions when simulating, or when using physical animation.

  • Bugfix: Fixed bounds not being updated on existing skeletal mesh components when changing physics assets.

  • Made sure Set Morph Target still take precedence over Animation Curves for Slave Component.

Tools
  • New: Added access to the viewport client from Persona Viewport.

  • New: Added "Show Selected and Parents" to bone display options.

  • New: Added display/edit of bone transforms in details panel.

  • New: Widened bone reference widget to give a better view of the name and added full name to tooltip.

  • New: Auto select current bone when opening the skeleton tree on a bone reference.

  • New: Newly added virtual bones are now selected in the skeleton tree.

  • New: Changed "Reference Pose" option for additive animation ref pose to "Skeleton Reference Pose" to make it clearer that it is not the meshes reference pose being used.

  • Bugfix: Fixed crash in thumbnail rendering when creating a new montage.

  • Bugfix: Fixed skeleton tree selection disappearing when filtering changes.

  • Bugfix: Fixed notify validation not triggering when using set time/set frame context menu options.

  • Bugfix: Fixed montage thumbnail rendering using ref pose instead of the actual asset.

  • Bugfix: Fixed "number of curves" label on an animation not updating after adding or removing a curve.

  • Bugfix: Fixed newly imported animations having black thumbnails.

  • Bugfix: Fixed compile error when blend space on aim offset nodes is exposed as pin.

  • Bugfix: Fixed scrolling in Pose Asset editor panel.

  • Bugfix: Fixed tooltip when dragging animation assets onto animation player nodes.

  • Bugfix: Fixed new virtual bones being created off screen.

  • Bugfix: Fixed missing mesh when setting preview skeletal meshes in animation editors.

  • Current asset is now initially selected in the asset family shortcut bar dropdown.

  • Camera is no longer reset when setting skeletal meshes in the skeletal mesh editor (etc.).

    • Focus shortcut (F key) now works in the skeleton tree too.

  • Removed FPersona and supporting classes.

    • Please use individual asset editors instead.

  • Rezeroing animation is now explicit about what it does (current