PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE4 Editor軽量化 改訂版

Unreal Engine 4 (UE4) Advent Calendar 2020 - Qiita の19日目の記事です。

環境

UE4.26.0

PC Spec
RAM : 64GB (65448 MB)
CPU : AMD Ryzen 5 3500 6-Core Processor (6 CPUs), ~3.6 GHz
GPU : GeForce RTX 2070
Display Size : 1920 x 1080
4Kモニターを使用してますが、PBPで1920 x 1080でEditorを立ち上げています

概要

UE4が一般公開されるようになった5年ほど前と比べてUE4 Editor自体は随分と軽くなりました。
それでも、ラップトップで作業されている方やどうしてもPC Specにはお金をかけれないという人向けに本記事を書くことにしました。
いくつか情報を出してくださっている方がいるため、それらをまとめたものにはなります。

検証環境
今回は新規にThird Person Templateを使用したプロジェクトを作成しています。
・プログラミング : Blueprint
・Quality : Maximum Quality
・Raytracing : Disabled
・Target Hardware : Desktop / Console
・Starter Content : No Starter Content
f:id:PaperSloth:20201218193315p:plain

Editorの軽量化について

EditorFPS表示

まずはEditorの実行速度を確認するためにEditorのFPSを表示します。
Edit -> Editor Preference -> General -> Performance内の
「Show Frame Rate and Memory」から有効化できます。
f:id:PaperSloth:20201218193002p:plain

有効化するとEditorの右上にFPSが表示されます。
※今回は検証用に最大FPSを300にしています。
FPSの変更方法については後ほど

f:id:PaperSloth:20201218195208p:plain
この段階で180 fpsほど出ています。

Realtimeを切る

次にEditorのViewportのRealtimeをOFFにします。
Ctrl + RもしくはViewport左上のメニューからViewport Optionの「Realtime」をオフ
無効化するとViewportに「Realtime : Off」と黄色く表示されます。
f:id:PaperSloth:20201218193603p:plain

これをOffにしただけで200 fpsほどになり、かなり早くなりました。
動くものが多ければ多いほど高速化されることになります。
f:id:PaperSloth:20201218195357p:plain

Third Person Templateで分かりやすい部分でいえば画面中央の「?」のアイコンの回転が止まりました。
このFlagを切ることによってスクロールするMaterialや移動するActorなどの更新を止めることになります。
空も動いていることが多いため、そこそこの効果が見込めるかと思います。
特に動くものがない場合はデフォルトで切っておいてしまってもいいかもしれません。

Realtime Thumbnailオフ

次にContent Browser内に表示されるMaterial等のRealtime Thumbnailを切ります
Content Browser内の右下の目玉アイコン(View Options)から
「Real-time Thumbnails」をオフにします。
f:id:PaperSloth:20201218195003p:plain

こうすることで回転や移動を行うMaterial等のThumbnail表示のリアルタイム更新がストップします。

これで210 fpsほどになりました。
スクショのタイミング問題もあるため、実際にはそこまで大きな効果がないとは思いますが多少軽量化されます。
f:id:PaperSloth:20201218195526p:plain

Background CPU

続いてBackgroundにある際のCPU更新頻度を下げるオプションについてです。
Edit -> Editor Preference -> General -> Performance内の
「Use Less CPU when in Background」のフラグをONにすると有効になります。
f:id:PaperSloth:20201218195821p:plain

このフラグを有効にすることでEditorを操作していない時のEditorの更新頻度を大幅に下げることができます。
フラグが無効な場合
何の操作をしていなくとも90 fpsが出ており、それなりにCPUパワーが持っていかれます。
f:id:PaperSloth:20201218195914p:plain

フラグが有効な場合
フラグを有効化すると10 fps以下まで落とされ、Editorを操作していない時のCPUへの負荷が大幅に軽減されます。
ラップトップ等で直ぐに熱を持ってしまうという方は有効化しておくと調べ物をする時などに負荷を減らせるかと思います。
f:id:PaperSloth:20201218200030p:plain

Rendering品質を落とす

この変更は見た目に影響を及ぼしますが、大幅に軽量化できるかと。
Settings内の「Engine Scalability Settings」から設定項目が開けます。
「Auto」を押下することで、PCに合ったQualityに設定してくれます。
Low等、PC Specに応じて変更してみると良いかと思います。

同様にMaterial Quality Levelの方も変更してみても良いかもしれません。
f:id:PaperSloth:20201218200824p:plain

手元の環境ではGPUがそこそこのものなので、大きな変更はなかったです。

Mobile Rendering Preview ON

さらに別途Renderingの設定を変更していきます。

プロジェクト作成時にTarget Hardwareを「Desktop / Console」にしていました。
Rendering設定をMobile向けに変更します。

先程同様にSettings -> Preview Renderig Levelを「Android ES 3.1」に変更します。
Shader Compileが結構な量走るため、実行する際は時間がある時に行うことをオススメします。
f:id:PaperSloth:20201218205115p:plain

変更が完了するとSettingsの隣に「Android ES 3.1」のアイコンが出てきます。
f:id:PaperSloth:20201218211438p:plain

こちらもGPU都合で手元の環境では大きな変化はなかったですが
人によってはすごく効果があるかと思います。

t.MaxFPS

Output Logか実行時にUSキーボードだと「`」JISキーボードだと「@」でConsole Command が入力可能です。
f:id:PaperSloth:20201218211750p:plain

ここのConsole Command入力画面に
「t.MaxFPS (任意の最大FPS値)」を入力することでEditorの最大FPSを抑制することができます。

記事の冒頭で最大FPSを300 に設定していたのもこのコマンドです。
UE4のDefault設定では120 fpsが設定されているかと思います。
この値をPC Specに応じて30 fps 等まで下げることで随分と軽量化されると思います。

PIEの解像度を落とす

PIEとはゲームを実行する際に別Window として立ち上げるPIEという機能です。
Playの「New Editor Window(PIE)」から立ち上げることができます。
f:id:PaperSloth:20201218212137p:plain

こちらの解像度の設定はPlay方法の変更と同様にPlayの横のOptionから
「Advenced Settings」を開きます。
f:id:PaperSloth:20201218212546p:plain

するとEditor PreferenceのLevel Editor -> Play の部分が開かれます。
この中の「Game Viewport Settings」の「New Viewport Resolution」からPIE時の解像度の変更が可能です。
デフォルトでは1280 x 720ですが、解像度を下げることで負荷の削減が可能ですので
テストするにあたって許容可能な範囲で下げてみるのも手かもしれません。
f:id:PaperSloth:20201218212724p:plain

EditorのViewport解像度を落とす

最終手段ですが、効果はあります。
デフォルトでは大体これぐらいのViewportサイズになっているかと思います。
f:id:PaperSloth:20201218213001p:plain

この解像度を下げることでもちろん負荷は下がります。
Viewportを一切触らない時には多少下げてみるのも手なのかもですね。
個人的には作業しにくいため、ここの解像度を下げることはありませんが。
f:id:PaperSloth:20201218213059p:plain