13.4K Views
August 15, 23
スライド概要
UEFNを用いてFortniteのコンテンツの制作を行う際に、どのようにマルチデバイス対応をすれば良いかについて方法論の一部をまとめました。
UEFNでマルチデバイス向けに 快適な体験を構築する 2023/08/11
自己紹介 川 大揮 Alche株式会社 代表取締役CEO 東京工業大学大学院 物理学専攻修士修了。 大学在学中、ステージマジックサークルに入り、魔法 や不思議な出来事を通してエンターテイメンの楽しさ に気づく。VRなどの表現を通して魔法のような空間を 作ることに興味を 持つ。LINE株式会社、イスラエルのスタートアップなど を経てAlche株式会社を創業。 Taiki Kawa @r_etx
マルチデバイス Fortniteは、多くのデバイス、プラットフォームで遊ぶことができる。 ● ● ● ● ● ● PC PlayStaion Xbox Nintendo Switch Android(Fortnite公式ページよりインストール) クラウドゲーミング(iOSなども利用可能)
マルチデバイスでの課題 一方で、Fortniteでゲームを作成するとこれらすべてのデバイスで即座に利用可能になって しまう。プラットフォームごとにGPUなどの性能、コアの搭載などがまちまちで、処理性能も異 なるため、見た目や処理負荷もデバイスごとに異なってしまう。 1. 2. 3. 特定のプラットフォームやスペックの端末で画面がカクつく 特定のプラットフォームで a. 一部のマテリアルノードが正しく表示されない b. UDIMが正しく表示されない AndroidやNintendo Switchなどでは、Lumenが利用できないので a. 画面が白飛びしてしまう b. ポストプロセスや、Fogの見た目が異なる
1. マルチデバイスでの課題(パフォーマンス/ポリゴン数) PC(RTX3070) * 画像はイメージです。 120 FPS Mobile端末 22 FPS
2. マルチデバイスでの課題(UDIM/マテリアル) PC(RTX3070) Mobile端末
2. マルチデバイスでの課題(UDIM/マテリアル) PC(RTX3070) Mobile端末
3. マルチデバイスでの課題(ライティング) PC(RTX3070) Mobile端末表示
各プラットフォームごとの個別の設定を行う プラットフォーム・デバイスごとに見た目が変わってしまったり、性能が変わってしまうので、プ ラットフォーム・デバイスの描画性能、設定ごとにUEFNで制作したコンテンツを制御していき たい! 搭載されているGPU性能が低いデバイスなど、特定の端末でのみ最適化の一環としてポリゴ ン数の少ない3Dモデルを表示したい! 単純で計算が少ないマテリアルを使いたい。 Lumenが利用できる環境と、できない環境で明るさを変えたい、PostProcessでそれぞれの デバイスごとに色味を調整したい!
各プラットフォームごとの個別の設定の指標 ● Scalability Setting (レンダリングに関わる各機能のクオリティ) ● ShaderPlatformInfo (どのプラットフォームで利用しているか) ● Lumenの利用 ● Naniteの利用
各プラットフォームをEditorでシミュレート Engine Scalability SettingsとPreview Platformによるルックデブ
各プラットフォームをEditorでシミュレート 多様なデバイスに対応するための異なるグラフィックス APIやシェーダーモデルを Editorでシミュレート Android Opengl ES31:Androidデバイスの OpenGL ES 3.1用の設定。 Androidデバイスのうちこの APIに対応しているデバイスが多い。 Android Vulkan ES31: Vulkanは高性能のグラフィックスと計算の API。Androidデバイスのうち特に性能が高く Vulkanに対応したもの向け PC D3D SM5: Direct3D(D3D)はWindows PCでのグラフィックスレンダリングの主要な API。SM5はシェーダーモデル 5を指し、これは少し古 いもの。 PC D3D SM6: Direct3Dのシェーダーモデル 6用の設定で、より新しいと性能の高い PC向け PC D3D ES31: Nintendo Switch相当? に対応したシミュレート PC Vulkan SM5: PCのVulkan APIに対応する設定で、特定のゲームやアプリケーションで Direct3Dよりも優れた性能を提供することが期待 される場合がある Performance Mode: 性能最適化モードで、ハードウェアのリソースに応じて最適なグラフィック設定を選択することを目的とする
1. ポリゴン数の改善
各プラットフォームごとに表示する3Dモデルを変更する Naniteが使えるプラットフォームとそうでないプラットフォームで二分される。 Naniteが利用できない Naniteが利用できる ● Naniteを利用して無限のポリゴンを配置 ● Naniteが利用できないプラットフォームで は、フォールバックメッシュ、LODの設定
PCでNaniteを有効にするためのための推奨システム要件 ● ● ● ● GPU: ○ NVIDIA: GeForce RTX 2080以上 / AMD: Radeon RX 5700以上 最新のグラフィックドライバー オペレーティングシステム(OS): ○ Windows 10の最新バージョンで、DirectX 12 Agility SDKに対応 ○ Windows 11の最新バージョン DirectXのバージョン: ○ DirectX 12 https://www.fortnite.com/news/drop-into-the-next-generation-of-fortnite-battle-royale-powered-by-unreal-engine-5-1
各プラットフォームごとに表示する3Dモデルを変更する ● ● ● ● [Fallback Triangle Percent] を「0」に設定し て、フォールバック メッシュを可能な限り小さくす る LODの設定パネルからメッシュに 1 つ以上の LOD を追加する [LOD Settings (LOD 設定)] セクションで、 [LOD Import (LOD インポート)] ドロップダウ ンを [Import LOD Level 1 (LOD レベル 1 のイ ンポート)] に設定 [LOD Settings] セクションの [Minimum LOD (最小 LOD)] を「1」に設定。これにより、 Nanite 生成のフォールバック メッシュが無視さ れる
各プラットフォームごとに表示する3Dモデルを変更する PC(RTX3070) Mobile端末
各プラットフォームごとに表示する3Dモデルを変更する PC(RTX3070) Mobile端末
各プラットフォームごとに表示する3Dモデルを変更する フォールバックメッシュとLODを適切に設定することで、 それぞれのプラットフォームで適切なポリゴン数のモデルを表示することが可能!
2. マテリアルをプラットフォームごとに出 し分ける
ShaderPlatformInfoとScalability Setting マテリアルノードで内で、 ShaderPlatformInfoとScalability Settingを取得することができる
ShaderPlatformInfoとScalability Setting
ShaderPlatformInfo Switch
ShaderPlatformInfo Switch
Scalability Setting
ShaderPlatformInfo Switch PCにて、PlatformをMobileのシミュレートをしているため、MobileかつPCの表示になっ ている
3, ライティングをプラットフォームごとに出 し分ける
Lumenによるライティング ライティングの調整は、Lumenが利用できるどうかで大きく分かれる。 UEFNでデフォルトで用意されているTODM(Time of Day Manager)とDay Sequence Deviceは、Lumenの利用できるかどうかの可否によらず、環境全体のライティングいい感じ に調整してくれる。 一方、詳細なライトのパラメータ調整、プラットフォームごとの調整が 難しい。
3. マルチデバイスでの課題(ライティング) PC(RTX3070) Mibile端末
環境照明リグ UEFNデフォルトの環境照明を利用せず、ライティング を細かくパラメータ調整、カスタマイズしたい時は、利 用前に、TODMをオフにしておく。オンのままだとライ ティングが競合してしまう。
環境照明リグ 環境照明リグもを使えばさらに詳細な設定が 可能。 しかし、PostProcessは、Lumenのみの設定 で、Lumenが使えないプラットフォーム向けの 設定項目が含まれていない。 Lumen 露出マネジャーを利用する!
Lumen露出マネージャー Lumen露出マネージャーでは、 Lumen用の設定と、No Lumen用の設定 どちらの設定も可能! それぞれの見た目は、Scalability Settingの設定を変更することで UEFNで確認できる。
LightingScalabilityマネージャー LightingScalabilityマネージャーでは、 Scalability Settingごとに登録したアク ターの表示/非表示の制御を行うことができ る。 これを使うと、LightingをScalability Settingごとに完全に切り分けが可能。 (名前が、Lightingとなっているが、 lighting以外の アクターの表示 /非表示を制御することもできた。 )
最終的には、実機で確かめることが大切!
Appendix
Quality Level Min LOD LODを設定する場合、その最小値(一番詳 細なモデルの設定)をScalability Setting ごとに設定することが可能。 Mobile向けでは、Mobileに適した、ポリゴ ン数以上のメッシュが表示されず、Nanite が使えないハイエンドに近い端末では、より ポリゴン数の大きい詳細なモデルを表示す ることが可能。
Niagara Scalability Niagaraに関しては、同様にScalability Settingごとのパラメーター設定が可能。