690 Views
October 07, 25
スライド概要
UE5 Mobile Game Development Essentials 2025 の講演における公開資料です。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
UE5.6におけるモバイルプレビュー とモバイル開発向けの新機能と進化 Axel Riffard Software Engineer, Developer Relations Epic Games Japan
自己紹介 日本住まい12年 フランス出身 エピックゲームズジャパンで主にライセンシーサポートとiOS 開発の手伝い 最近良かったゲーム:なんとか33、マフィアオリジン 最近ハマっている和食:家系ラーメン、七味、ちくわ(紀文)
GPU & Rendering Updates
UE5のDeferredMobileレンダラーが TileBaseGPU向けに開発された
タイルベースレンダリングとは? 画面を小さな「タイル」(ピクセルのブロック)に分割する 各タイルをローカルメモリで順に処理する メモリとGPU間のデータ移動を削減する 処理速度を向上させ、省電力を実現する 携帯で広く利用されている たとえ: 壁全体を一度に塗るのではなく、区画ごとに塗る方が速く、無駄が少ない。
タイルベースレンダリングとは? モバイルのGPUは「タイルベース」レンダリング 尻尾 うちの猫は「テイルベース」レンダリングだ 必ずしっぽがフレームバッファを覆い尽くす
実は、5.7でMobileDeferredのレンダラーは Non-TileのGPUでもデフォルトになる。 GPUのメモリが使えないけど、それでもメリットがあるので、 90fpsが必要なVRを除いて基本的にForwardレンダラーの利用はおすすめ しない みんなDeferredに移動しよう!(試してから!)
モバイルレンダラーDeferredシェーダー改善 128ビット/ピクセルGbuffer より多くのライティングモデルと静的ライティングがサポートさ れるようになった iOSとVulkanでのメモリレスGPUタイルメモリにオンチップ保存 OpenGL ESでのマルチパス PLSやフレームバッファフェッチよりも安定していて、早い
モバイルレンダラー改善 ライトモデル(BRDF)がデスクトップレンダラーに合わせて変更された モバイルフレンドリーなスクリーンスペースの反射 Dbufferデカール リアルタイムのスカイライトキャプチャ iOSシェーダーライブラリ 5.5/5.6で改善されたMetalサポート Metalシェーダーライブラリとメタデータがpakファイルから直接メ モリマッピングされ、RAMを節約し、デプロイを簡素化した
モバイルレンダラー改善 GPUシーンの追加: スキンメッシュのサポート ナイアガラ メッシュ パーティクルのサポート InstancedStaticMeshのインスタンスごとのオプションのGPUカリング PSOプリキャッシュの改善 iOS、Androidの場合GLESおよびVulkan
モバイルDeferredレンダラー サブパスからマルチパスへ 5.6では、現在のMobile Deferred Rendererはサブパスを持つ 1 つのベース パスを使用し、タイルメモリのGPUコアにGbufferを完全に保持 残念ながら、フルスクリーンDepthバッファは、フルプリパスなしでは利用 できない 5.7以降では、マルチパスの遅延はベースパスを最初にレンダリングし、 GbufferとDepthをシステムメモリに解決 これらのバッファーは、高度なシャドウに使用できる
Multipass Deferred Merits マルチパスのメリット DepthバッファはGbufferパスで取得でき、Depthプリパスは不要 DFAO、DFシャドウ、インセットシャドウ、SSR、Dbufferデカールはスケーラビリ ティ制御可能 処理や半透明レンダリングでGbufferデータにアクセス可能 一部ハードウェアでvertex shader/pixel shaderのオーバーラップ増加 マルチパスはiOS/Androidサブパスと同等かやや高速
マルチパスのデメリット この場合、Vulkan / MetalでのGbufferテクスチャの余分なシ ステムRAM使用量~15MB メモリ帯域幅消費の増加(発熱とバッテリー) 最新のデバイスでできるなフレームバッファ圧縮によって いくらか軽減される
Mobile Upscaling & Anti-Aliasing モバイルレンダラーには、ARMやQualcommなどのベンダーのTemporal Upscalingプラグインをサポートするために必要な拡張機能が追加された 5.7ではSMAAなどのAA品質とパフォーマンスのトレードオフを向上させ るためのサポートを追加される
NaniteとLumenモバイルで利用可能?
モバイルNanite デスクトップレンダラー Apple M2での Full NaniteおよびiPadでの新しいApple Siliconの experimentalサポート。iPhone 15 Pro、16 Pro、17 Proでも対応 Androidの状況はよりむずかしい。 GPUベンダーはNanite対応だが、現在 のデバイスやリリースされたドライバーが完全に使えるものはない
モバイルLumen デスクトップレンダラー すべての主要なAndroid GPUベンダーは、 Lumenで動作するVulkanの下でハードウェアRTをサポートしている これは5.4からexperimentalであり、 クアルコムは過去の2年前のUnrealFestでデモを発表
モバイルレンダラーの場合は? クロスプラットフォームゲームの場合、使えるすべてのデバイス に拡張する方法が本当に必要 ローエンドのモバイルにスケールダウンするライティングソリ ューションの研究中 最近、ハードウェア ラスタライズのみのNanite実装のプロトタイプを 作成したが、パフォーマンスはローエンド端末に現実的ではない
その他
WindowsでiOSシェーダークック 大規模プロジェクトでビルドサーバーを節約 Metal Developer Tools for WindowsによりPCでiOSMetalシェーダーライブラリ生成可能、Hordeと統合 Fortnite規模では多数のシェーダーpermutationコンパイルに大量RAMが必要 PCでのクックはコスト効率が高く、Hordeインフラに適合 iOSゲームはPCで完全クック可能(ソースコンパイルはMac必須)
iOSへのZen Streaming USB C経由でUSB 3.xの速度でデータを転送できるのは、15 Pro、16 Pro、および17 Proのみ。それ以外はWifiの方が早い USB-Cケーブルを接続した後、15秒待ってからZenServerを再起動 - macOSはランダムな「link local network」 IPアドレス(169.254.x.x)を割り当てるのに時間がかかる
AndroidへのZen Streaming 新しいデバイスはUSB 3.x速度を サポートしており、ケーブルは一 般的にWiFiよりも高速 AndroidへのZenStreaming 高品質のUSB 3ご利用ください USBTreeViewなどのツールを使 用して、接続がSuperSpeedであ ることを確認する
Preview, Emulator, Simulator
プラットフォームプレビュー エディタセッションで別のプラットフォームとデバイスプロファイル のレンダリング機能と制限をシミュレート レンダリング機能、ライティング、スケーラビリティ、マテリアルは、プロ ジェクト設定とiniファイルに基づいてデバイス上に適用される オーサリング中またはPIE中にコンテンツをプレビューおよびデバッグ するためにすばやく切り替えるできる
プラットフォームプレビュー ターゲット プラットフォームの機能を定義する DataDrivenPlatformInfo設定を使用 同じ機能のレベルとシェーダを適用するターゲットプラットフォームとして結果 確認可 ターゲットプラットフォームからRendererSettingsのiniファイル設定を適用 例:Project\Config\Android\AndroidEngine.ini
プラットフォームプレビュー とは? エディタでプラットフォームがサポートしている 場合は、ターゲット プラットフォーム(TP)と同じ DataDrivenPlatformInfo設定を使用 TPと同じ機能レベルを使用 TPのスケーラビリティを使用 TPのTextureLODSettingsがデバイス プロファイル で定義されている場合は、それらを使用 TPのRendererSettingsセクションの下にある Settings.ini
プレビューの動き方 一部の機能は、エディタのプラットフォーム/ ハードウェアがサポートできないため、エミ ュレートできない たとえば、バッファSRV、インラインレイト レーシング、Lumen、Nanite これを制御するコードは、関数 UpdatePreviewPlatforms()の \Engine\Source\Runtime\RHI\Private\DataDriv enShaderPlatformInfo.cpp
プレビューの動き方 RHIInitでDataDrivenPlatformInfo iniを読み取り、す べてのPreviewPlatformセクションを収集 プラットフォームSDK不要でプレビュー取得可能 TargetPlatformモジュールがTargetPlatformSettings とTargetPlatformControlsにリファクタリングされ たため実現 TargetPlatformSettings は ini とプレビューに必要な 情報を保持
プレビューの動き方 ShaderPlatformsはエンジンでグロー バル定義され、ライセンスでは変更や 追加不可(エンジンコード改変が必要 ) プレビュー プラットフォームはエン ジンコードを変更せず追加可能 TPのConfigフォルダに DataDrivenPlatformInfo.iniを作成し、 PreviewPlatformを定義すればよい
プレビューの使い方 ビューポート ツールバーから選択
プレビューの使い方 プレビューするシェーダープラットフォームの DataDrivenPlatformInfoプロパティを使用する新し いプレビューシェーダープラットフォームが使用 される [/Script/Engine.RendererSettings] セクションのプ ラットフォーム固有の設定も適用される プレビューは、プレビュー Json を使用しない限 り、ini ファイルで設定されたデバイス プロファ イルを使用
どこが役にたつ? 常に最初にプレビューでバグを再現してみ てください ほとんどの高レベルの問題も再現する必要 があり、デバイスに展開するよりもデバッ グが高速で簡単 プラットフォーム固有のツールをパケージ 化、展開、処理する必要がなくなる
どこが役にたたない? 1つの特定のドライバー/デバイス の組み合わせでのみ発生 ログにドライバーのエラーが見つ かる RHI系のエラー 細かいパフォーマンスの問題
プレビューの新機能 デバイスのテクスチャ LOD (最大解像度、ミップ) がプレビュ ーで確認可 AndroidデバイスJson - 接続されたAndroidデバイスから設定をインポ ートしてプレビューする
新機能紹介 Android Preview Json File
Androidの端末ジャング ルに対応するのは、大変 すぎるよね?
Preview JSon File デバイスプロファイルセレクターによっ て決定された実行時にデバイスが使用す る実際のデバイスプロファイルとフラグ メントをプレビュープラットフォームに 使用させる機能が追加された プロジェクトのMatchingRulesを使用す るため、FNの場合、フラグメントが正 しく設定される 複数のRHIを持つプラットフォーム (Android)の制限として、プレビューする RHI(VulkanまたはOpenGL)を指示する 必要がある
Preview JSon Fileの使い方 テストするデバイスをPCに接続し、 adbコマンドを使用できるように DevModeがオンになっていることを 確認 「Generate Platform Json」を押す
Preview JSon Fileの使い方 「Preview via Json...」を選択、 Vulkan または Opengl RHI を選 択 新しいウィンドウがポップアッ プ表示され、前の手順で作成し たデバイスjsonを選択
Preview JSon Fileの使い方 Bravo!これで、正しいデバイ スプロファイルを使用してjson をプレビュー 右下隅に、デバイスプロファイ ルセレクタがそのデバイスに設 定したデバイスプロファイルを プレビュー中!
Android Emulator
Android Emulator エディター統合の改善 エミュレーターは [プラットフォーム] メニューにデバイスとして表示され、 起動しようとすると自動的に電源がオン Android SDKのインストール時にUnreal用に自動的に作成および設定される Engine/Extras/Android/SetupEmulator.bat Windowsのエミュレーターで起動すると、バイナリx86_64自動的にビルドされ る(arm64は引き続き使える)
Android Emulator Windows & macOS
Android Emulatorでできないこと Vulkanのみ (OpenGLESのサポートはUEの要件に対して低 すぎる) PCビデオカードのVulkanドライバを使用(macOSのMetal でエミュレートされたVulkan) デバイス自体の制限をエミュレートできない PCでのArm64エミュレーションが遅く、安定しない場合 がある 実際のデバイスのパフォーマンスを正確にエミュレートで きない
端末なしのテスト 常にデバイスでテストする必要がある Platform Preview Android Emulator (Windows and Mac)
iOS Simulator
iOS Simulator Deprecation (5.7) シミュレーターにはいくつかの問題がある A8までしか対応しない (iPhone6) すべての静的ライブラリのカスタムバイナリビルドが必要 カスタムシェーダーコンパイルが必要 Metalの完璧なエミュレーターではない
もっといい方法ある?
“Designed For iPad”
Designed for iPad GenerateProjectFiles.cmd UE エディタ、RunUAT.sh、または ushell を使用してステージ プロジェク トをビルド、クックする Xcode から起動して、 UE5(IOS).xcworkspaceを開く 「My Mac (Designed for iPad)」選択 Xcodeで実行
iPad??iPhoneはない? デフォルトでは、iOSとiPadOS両方をサポートしている 「Designed for iPhone」を有効にするには、iOSのプロジェクト設定で iPadのサポートを無効になる 制限 まだmacOSで実行されているため、Metalはまだ完全に一致しない パフォーマンスはデバイス上のパフォーマンスを表すものではない タッチスクリーンイベントのシミュレーションが難しい ゲームコントローラーを使用するのが最善
端末なしのテスト 実際の行動とパフォーマンス機能については、 常にデバイスでテストする必要がある Platform Preview (Windows & Mac) iOS Simulator (Mac only, deprecated) Designed for iPad/iPhone (M1+ Mac only)
Merci ! Questions?