全ての Unreal Editor for Fortnite (UEFN) の島は、ハイエンド PC からモバイル デバイスまで、さまざまなハードウェアをサポートしていますが、モバイル向けの島を適切に作成するには、開発当初から最適化とメモリ効率を念頭に置いてビルドする必要があります。
このページでは、モバイル向けの設計を行う際の主な考慮事項について説明します。
モバイル向け設計のベストプラクティスの概要
プレイヤーを考慮した設計:
オーディエンスと何がモバイル ゲーム体験に求められているのかを理解しましょう。
モバイル画面上でシンプルで見やすく、使いやすいカスタム UI を作成します。
さまざまな画面に合わせた設計を行い、さまざまな種類の画面と解像度で プレイテストを頻繁に 行いましょう。
フォートナイトの既存のモバイル コントロール を活用し、それに応じてゲームを設計します。
ゲームプレイを通じてエンゲージメントを創出する:
短いながらも説得力のある ゲームプレイ ループ を作成し、ゲームを気軽に始めたりやめたりできるようにしましょう。
プレイヤーを楽しませるゲーム メカニクスを紹介する、簡潔で 魅力的なイントロダクション を作成します。
進捗、持続、報酬の感覚を提供し、繰り返しプレイしたくなるようにします。
モバイル ゲーマーにとって魅力的なゲーム モードやジャンルを選択します。
プロジェクトを最適化する:
テクスチャを効果的に管理 します。
アセットを最適化 します。
メモリ効率 を優先します。
スケーラビリティ設定 (Scalability Settings)
UEFN はプラットフォームのスケーラビリティに対応できるように設計されています。 ハードウェアの制限により、一部の機能が無効になったり、より低品質レベルでスケールダウンされたりします。 エディタ内のビジュアル スケーラビリティ ツールを使用して、さまざまなスケーラビリティ グループで島をプレビューできます。 さまざまなレベルでテストすることが強く推奨されます。
以下の表は、さまざまな品質レベルでスケールまたは無効になっている主な機能を示しています:
スケーラビリティを高めて島やアセットを構築すると、デバイスに関係なく、パフォーマンスとビジュアルを最高の状態に保つことができます。 考慮すべき主な点:
メッシュ LOD: カスタム スタティックメッシュまたはスケルタルメッシュの メッシュ LOD を使用して、ポリゴンの数を削減し、1 秒あたりのフレーム数 (FPS) を増やします。
ワールドおよび HLOD: HLOD および World Partition を使用してマップをストリーミングすることで、レンダリングされる対象を減らし、GPU の負荷を軽減し、FPS を向上させます。
テクスチャ グループとミップ マッピング: MIP マッピングを使用してランタイム マテリアル スケーリングを有効にします。 スムーズなスケーリングとビジュアル品質のために、テクスチャが適切なグループに含まれていること、および 2 の累乗 で作成されていることを確認してください。 2 の累乗に適合しないテクスチャはストリーミングされません。
マテリアルの品質:複雑なマテリアルは、ローエンド プラットフォームでは負荷がかかりすぎる可能性があります。 異なるプラットフォーム ティアに向けてマテリアルのさまざまな側面をさらにカスタマイズできるよう、マテリアル関数ラッパーを作成しました。
[Fortnite] > [Materials] >「Functions] に移動すると、
MF_QualitySwitch_MaterialAttributes、MF_QualitySwitch_Scalar、およびMF_QualitySwitch_Vectorがあります。 これらの高品質スイッチ ラッパーを使用して、低品質設定でマテリアル関数を効率化すると、パフォーマンスが向上します。 詳細については、「マテリアル関数」ページを参照してください。
モバイル向けにアートとアセットを最適化するためのヒント
最初からモバイル プラットフォームの制限事項を意識します。
過負荷を避けます。 レイヤーを平坦化し、透過性を制限し、オーバーラップする乱雑なトリミングを行います。
テクスチャを単純化します。 最小化ツールを使用します。
モバイルの仕掛けで島を徹底的にテストしましょう。 UI の競合や、ゲームプレイ コントロールと重なっている要素を探します。 モバイル エクスペリエンスをプレイテストするには、Amazon Luna または Xbox Cloud Gaming を使用できます。
メモリ計算ツールを実行して、レベル内で最もコストが高いアセットの詳細なリストを取得します。
その他の最適化のヒント
UEFN はエンジンのスケーラビリティに優れていますが、コンテンツの合理化と最適化が必要です。 ハードウェアのオーバーロードは、FPS の低下、ロード時間の低下、最適なエクスペリエンスにはつながりません。 パフォーマンス向上のために以下のガイドラインに従ってください:
メッシュの最適化: ポリゴンの数をできるだけ低く抑えます。 ポリゴン数の予算については、「フォートナイト対応アセットの作成」を参照してください。
マテリアル数: 使用するマテリアル数は最小限にします。 各メッシュで使用するマテリアル セクションは、1 つのみにすることが理想的です。
テクスチャ解像度: モバイルの仕掛けではテクスチャ メモリが制限されています。 512x512 ピクセルのテクスチャを使用し、可能な場合はサイズが大きくならないようにします。
ドロー コールの数を減らす:固有のオブジェクトとテクスチャを同時にレンダリングしないようにします。 インスタンス と 階層インスタンス化スタティックメッシュ (HISM) を使用し、可能であれば小さいオブジェクトを大きな小道具にグループ化します。
World Partition およびデータ レイヤー: 画面上のアセットとロード時間を短縮します。 World Partition の詳細については、「メモリ管理」のドキュメント ページを参照してください。
ライティングの最適化: ライト半径を可能な限り小さくし、ライトの重なりを変え、ライトの可動性を [固定] に設定します。
シャープなシャドウを必要としないライト (特にスカイライトで十分な環境光が得られる屋外領域) で、影を生成するをオフします。
Lighting Scalability Manager を使用する: 各 ESS レベルに対して異なるライティング シナリオを作成します。 低レベルおよび中レベル (モバイルおよび旧型コンソール) 向けに単純化し、よりパフォーマンスの高いライティング スキームを設定できます。
ミップマップ、またミップマップが必要な理由
ミップマップは、テクスチャの LOD と考慮することができます。 テクスチャ解像度は、カメラの距離と向きによって切り替わります。
よりシャープなレンダリングを得るためにミップマップを含まないテクスチャを使用したくなるだろうと考える一方で、そういったテクスチャは仕掛けメモリに保持されたままになり、UEFN のストリーミング プロセスをバイパスします。
次の表では、テクスチャのメモリ使用量をサイズ別に示します。 たとえば、1024x512 のテクスチャが 1024x1024 テクスチャの半分のメモリを使用するとします。
1 つ 1 つではわずかに見えるものの、多くのテクスチャが一度に画面にロードされ、カメラが目をそらす際にもメモリからすぐにクリアされることはありません。 この蓄積により、メモリの制限超過による仕掛けのクラッシュにつながる場合があります。
モバイルのトラブルシューティング
ここでは、モバイル用の島を最適化する際の一般的な問題とその解決策をご紹介します。
仕掛けにおける 1 秒あたりのフレーム数 (FPS) が低い
問題: ドロー コール が多すぎると、グラフィック カードがオーバーロードされています。
解決策: 表示されるコンテンツを一度に削減します。 World Partition を使用してレベルを分割し、レンダリングされるものを減らします。
解決策: HLOD およびメッシュ LOD を使用してアセットの複雑さとポリゴン数を削減し、GPU でオブジェクトをより高速にレンダリングできるようにします。
解決策: 低品質設定で複雑なマテリアルを単純化するか、フレームごとの GPU 計算がより多く必要になるユニークなマテリアルの数を削減します。 可能であればマテリアルを再利用します。
解決策: 可能であれば、小さなオブジェクトを 1 つの大きなアセットにグループ化します。 これにより、グラフィック カードはそれらを単一のアイテムまたはドロー コールとしてレンダリングできます。
問題: 同時にロードするアセットが多すぎることがあります。
解決策: World Partition を使用してレベルを分割し、ロードされるコンテンツの量を減らします。
解決策: 固有のアセットの数を減らすために HISM およびインスタンスを使用します。
解決策: 可能であればマテリアルを再利用して、フレームごとの GPU の計算を減らします。
島のメモリ使用量が多すぎる
問題: 最適化されていないコンテンツ。
解決策: 可能であれば 512x512 テクスチャを使用し、正しいテクスチャ グループを割り当て、ストリーミングが有効になっていることを確認します。
解決策: カスタム メッシュの場合、最小のポリゴン数を使用することで、効果的な LOD が得られ、クック サイズが縮小されます。
問題: 固有のメッシュが多すぎる。
解決策: 可能な場合は、HISM とソリューション インスタンスを使用します。 同じアセットを別の方法で再利用することで、メモリに保存されるユニークなアセットの数を減らすことができます。
解決策: 可能であれば、小さなオブジェクトを 1 つの大きなアセットにグループ化します。
サポートされているモバイル仕掛け
次の表は、モバイル エクスペリエンスをテストする際に考慮する必要のある仕掛けと仕様です。
Android
| カテゴリー | 最小要件 |
|---|---|
オペレーティング システム | Android OS 10.0 以降 |
アーキテクチャ | ARM64 プロセッサ上の 64 ビット Android |
RAM | 4GB の RAM |
GPU | Adreno 530 以上、Mali-G71 MP20、Mali-G72 MP12 以上 |
Apple
| 仕掛け | モデル |
|---|---|
iPhone | 11、11 Pro、11 Pro Max、12、12 mini、12 Pro、12 Pro Max、13、13 mini、13 Pro、13 Pro Max、14、14 Plus、14 Pro、14 Pro Max、15、15 Plus、15 Pro、15 Pro Max、16、16 Plus、16 Pro、16 Pro Max |
iPhone SE | 第 3 世代 2022 年 |
iPad Pro | 12.9 インチ 第 2 世代以降、11 インチ 第 1 世代以降、10.5in |
iPad Air | 第 4 世代 2020 年、第 5 世代 2022 年 |
iPad | 第 10 世代 2022 年 |
iPad mini | 第 6 世代 2021 年 |
その他のリソース
次のリソースをチェックして知識を深めましょう:
フォートナイトのドキュメントの「メモリと最適化」セクション
YouTube 動画の「Project Optimization in UEFN」
YouTube 動画の「Memory Management in UEFN」