#UE4 利用初日に設定したい、超手軽なMac版Editorの速度改善法

2015年2月4日水曜日

1年分サブスクリプション付きUE4本、すごい人気ですね。
初版のみクーポン付きということで手に入れられなかった人も結構いそうですが。

見てわかるUnreal Engine4 ゲーム制作超入門 (GAME DEVELOPER BOOKS)
掌田津耶乃
秀和システム
売り上げランキング: 293

さて。
やる気が高まってよっしゃーやるぞーとUE4を触り始めたMacBook Pro Retinaユーザがきっと最初に感じるのは「Mac上のUnreal Engine 4 Editorがやたらカクカク動く」辛さでしょう。

標準添付のテンプレートプロジェクトを走らせてstat fpsコマンドを叩くと表示が10fpsを下回っていたり、普通に編集しているだけなのに「FPSが低すぎるから低負荷モードに切り替えるで」的なダイアログが出てきたりと、私はUnity方面から来てギョッとしました。

しかしこれ実は簡単な解決方法があります。
さっと探した感じでは見当たらなかったのでblogにまとめましたが、「えっ そんなの普通やるでしょm9(^Д^)」というツッコミもお待ちしています。



使用前→使用後はこうなります。
このスクショを見て「あぁ^〜〜」とタネが分かった方はブラウザをそっと閉じて下さい。
分からなかった方はもう少々お付き合いください。ネタばらしは最後にします。
なおMacBook Airでは終盤で紹介するささやかなhackぐらいしかできません(多分)。



簡単な方法: 13インチMacBook Pro Retinaなどを使っている人は15インチのGeForce搭載MBPRを買って下さい。
独立GPUのパワーはすごいです。別世界が見えます。

APPLE MacBook Pro Retina Display(15.4/2.3GHz Quad Core i7/16GB/512GB/Iris Pro/GeForce) ME294J/A
アップル (2013-10-23)
売り上げランキング: 16,762
…。値段もさることながら、重すぎんよ15インチ。Macを据え置きにしたくないやい!
という方は、

この箱(あるいは同系統の動作報告あるもの)を買いましょう。
Thunderbolt 2経由でGPUを外付けできるようです(GPU外付けは公式サポートリストにないけれど)。

SONNET Echo Express III-D PCIe Thunderbolt 2 Expansion Chassis, Desktop, Three slots
SONNET TECHNOLOGIES
売り上げランキング: 641,902

…。この記事でNvidia GTX 780の動作報告が書かれているけど、10万円ぐらい軽くするのつらすぎんよ。

えいやっと買ってみて動かないとかだと怖すぎるし10万円に加えてGPU代も、と考えるとなかなか手が出ません。
同記事ではもっと安価な代替策についても書かれているので、興味のある方は読んでみると良いと思います。
あっ。そして、お安い方法でうまく動いたら構成情報をこっそり教えて下さい。


本題


さて。本題です。

確かOS XのRetina処理ってx2(ピクセル数ではx4)でレンダリングした結果を画面用にリサンプルしてたよな…。

と思い出して考えてみると、手元は解像度高めに使うために1680x1050に設定してるんだけど、仮にこれ全画面をx2で処理すると3360x2100か。そらHaswellあたりの組み込みGPUには重いわな。という気持ちになりました。

ちなみに13インチだと物理解像度は2560x1600みたい(Appleのサポートページ)で、確実にdots-by-dotsを上回る処理結果からディスプレイ用にリサンプルしている格好です。


Editorの描画負荷を減らすためには単純にシステム設定からディスプレイの解像度を下げて使えば良さそうですが、それでは使用感がだいぶ悪いです。
利用者の好み次第ですが、私は一番右のMore Spaceの設定が好みです。

というわけでRetina向けのレンダリングだけを手軽に、UE4動作時に限って低いものへと切り替えられたら良いのではなかろうか。
と思って試したところうまくいったので以下で紹介します。


まずは正攻法


OS XのHiDPI設定を無効化できるユーティリティは、実はApple自身が提供しています。

https://developer.apple.com/downloads/index.action
を quartz で検索すると Graphics Tools for Xcode - Xcode 6.1 (時期によっては新しいバージョンが出ているかも)が見つかります。


これをインストールし、Graphics Tools内のQuartz Debugツールを開きます。

この中でWindowメニューのUI Resolutionを開くと

 HiDPIモードのon/offチェックボックスがあります。

このチェックを外し、ログアウトしてログインしなおしてUE4を起動すればはいおっけー!
UE 4 Editorの信じられないようなカクカク感がだいぶスムースになります。

…。しかしアプリ全部閉じるのだるすぎんよ。


続いてラクなほう


SwitchResXというMac用ユーティリティがあります→ http://www.madrau.com/

前述のQuartz Debugと同様、そして更に柔軟な設定をログアウトなしで出来る優れものです。

アプリを開き、一番下のColor LCDへ行き、右側に表示される2つ目のメニュー「Current Resolutions」を開くと、このように利用できる解像度と詳細設定の一覧が表示されます。

現在チェックがついているものとほぼ同じ解像度でHiDPIの文字がついていないものを選択しましょう(ちなみに、ほぼ見た目の差が無いので微妙に違う解像度で使っていますが、下までスクロールすると1680x1050のHiDPI無し設定もあります)。

画面がブラックアウト→チラつきますが、手元では3-4秒で収まります。

設定は以上です。
これだけで、既に開いているUE4 Editorも新規に開くものもfpsが大きく改善します。

ログアウトせずに設定を変更できるので良いですね。

もちろん注意点もあります。
やっていることの性質として、Retinaでのテキストレンダリングのきれいさを完全に捨てているので、LowDPI状態での常用は正直なところ厳しいです。
UE4のEditorを使っている中でも、たとえばBlueprintをひたすら編集するフェーズなどではHiDPIのほうが結果的に体感良いかもしれません。
そこそこに好みで、そこそこ疲れないポイントを探るか、お金をかけて15" Retinaを買うか、という選択肢でしょうか(ドヤァ

なお、SwitchResXは設定保存をする機能が有料という扱いなので、私の用途では機能制限状態で良いかな、とまだお金払ってないんですが、UE4を使って世に何かを出せた暁にはふいっと払いたい(覇気)。

別解


話としては統合GPUのfill-rateが頭打ちしているか、ピクセルシェーダがボトルネックになってるか、そんなところかなと思っています。

つまり、ワールドの画を描画する部分の領域を小さくすれば 似た効果を得られそうです。
ということで画面を分割するとこんな感じになります。

HiDPI状態のままで4分割画面へ変更してみた結果:




HiDPIを解除すると、どうしてもUIの文字列レンダリング品質が落ちて気になるという方も居るかもしれないので、その際にはこちらの策がよさそうです。

最大化を解除した状態にしてthird person shootingのテンプレートにてゲーム実行するとHiDPIで17-20fps程度、 LowDPIで24-28fps程度でした。

しかしこの先はいくら描画領域を小さくしてもあまりfpsは伸びません。
ボトルネック箇所が変わってくるのでしょう。

ちなみにUE Editorアプリのアイコンを右クリック→Get Infoからの Open in Low Resolution チェックボックスを付けることでUE4のみ永続的にこの設定をおこなって簡単に効果を得られないかな、と思って試してみました。
結果、テキスト描画の品質は確かにlow-resになりますが、さしてfpsは改善しませんでした。描画エリアは依然高解像度になってるんだろうなという感じです。

軽くベンチマーク


手元で、MacBook Pro Retina 13"(Late 2013、Core i5機)上のUE 4.6.1にて画面解像度1680x1050 HiDPI対1650x1050LowDPIでざっとテンプレートプロジェクトのfpsを調べた感じはこのような結果でした。

fpsのカッコ内はLowDPI + 全画面ビュー解除で4分割時です。
First Person(Editor): 11fps → 14fps (17fps)
First Person(Play): 14fps → 18fps (25fps、瞬間的に30fps)
Rolling(Editor):  12fps → 14fps (24fps)
Rolling(Play): 12fps → 16fps (26fps)
Vehicle(Editor): 13fps → 17fps (23fps)
Vehicle(Play): 13fps → 18fps (23fps)
Third Person(Editor): 12fps → 16fps (24fps)
Third Person(Play): 13fps → 17fps (28fps)

数値はあまり正確なものではなく、数秒間stat fpsの値を眺めて概ね中央らしい値を読んでいます(※冒頭のスクリーンショットの下段、古いテンプレートのThird Person+UE4.5のものは結構エッジーなショットが撮れたようで、改めて新テンプレート+UE4.6.1で測ってみるとThird PersonのPlay時に10 fpsを割るのはそれなりに稀でした)。

30fpsは当然、できれば60fps、欲を言えば75fps出したいという人にはやっぱり厳しい結果ですが、全体的に体感がけっこう変わります。
10fps前半での2-5fps差は大きなものです。
触ってられない、ダメだAlienwareのラップトップ買わなきゃ」 と思っていたのが「まあこんなもんだよね」ぐらいにはなります。

 もう一工夫で実用域へ


前述の解像度1680x1050や1650x1050ではゲーム画面が概ね正方形表示されます。
スマフォ向けの16:9ゲームを開発する際には、細かな工夫ですがゲーム画面部分が16:9程度になるようウィンドウの縦幅を縮めるのがおすすめです(縦持ち前提のものを作っているなら横幅を縮める)。
↑これを ↓こうする
前述の環境にて、これだけでThird Person(Editor)は安定して20fps程度になりました。
編集パネルが窮屈になる分は、メニューを切り離して再配置しましょう。

こんな感じで。
これで、編集の利便性を犠牲にせずエディタの応答を底上げできます。
まあ、通常画面外にあるけれどリリース前に削除しなきゃいけないオブジェクトへ気付けずリリース後に悲しい思いをするなどあるかもしれませんが、仕事でやってる人は諦めてマシン買ってくだせぇ。
広いワークスペースが必要なレベルデザイン担当の人も良いマシン買ってくだせぇ。

本題はここまでです。
それでは快適なUE4ライフを!

スクショの何がネタなの

blogへアップする際の画像リサイズで分かりづらくなったのですが、元データを部分拡大するとこういう感じです。


左上(HiDPI)と比較して、文字サイズは揃えていますが右下(LowDPI)のものはボケていることから、きっと元解像度が低いものを引き伸ばして貼ったんだな、と気付くとこの設定によるものと察しがつく、という話でした。


まとめ


かしこいかわいいSwitchResX (ささやき声)

1 件のコメント: