ゲーム テクスチャには、インゲームで適切にレンダリングするための特定の要件があります。 インポートした画像を使用して Unreal Editor for Fortnite (UEFN) でテクスチャを作成する場合は、ソース画像ファイルの高さと幅に 2 の累乗が使用されていることを確認してください。 これにより、各種プラットフォームでの島の互換性と安定性が向上します。
グラフィックス プロセッシング ユニット (GPU) 用の圧縮ファイル形式は、すべてのコンソール、PC、モバイルで 2 の累乗のテクスチャを使用する必要があります。 2 の累乗のルールを遵守していないテクスチャは、ローエンドのプラットフォームでは不安定になり、ゲームがクラッシュする可能性があります。 2 の累乗は、搭載メモリの少ないプラットフォームでテクスチャ解像度を下げるために、テクスチャ ストリーミングでも使用されます。
テクスチャ ストリーミングは以下に役立ちます。
テクスチャの解像度の変更。
ゲームのロード時間の特定。
ゲームのビジュアル品質の向上。
GPU メモリの節約。
2 の累乗とは
コンピュータやコンソールは、データを一度にまとめて処理するのではなく、限定された数のチャンクで管理および処理します。 これは、World Partition を使用して背景をレンダリングする方法と同様の原理です。
ゲーム データのチャンクが 2 の累乗のルールを遵守している場合、データ チャンクによって、メディアに対してハードコードされた物理的な制限が課されます。 これらの制限を遵守しない限り、ゲーム エンジンは アセット を適切に レンダリング しようとしてリソースを浪費します。
2 の累乗は、ゲーム データおよびレンダリング画像を最適化することで、ビジュアル エクスペリエンスを効率的に表示する方法です。
使用可能な画像サイズの例: 256x256、512x512 または 1024x2048。 2 の累乗を使用しないテクスチャは最適化されないため、不安定になり、島のパフォーマンスが低下します。
2 の累乗のテクスチャを使用すると、UEFN は次の 3 つの主要な機能を使用できます。
テクスチャの圧縮:最小限のビジュアルの負荷でメモリ サイズを約 8 分の 1 に削減する。
ミップマッピング:低解像度のバリアントを自動生成する。
テクスチャ ストリーミング:高解像度のデータがメモリにストリーミングされる前に、低解像度のバリアントを表示する。
これらの機能を組み合わせることで、4K テクスチャを使用したハイエンド アセットでも、あらゆる プラットフォーム でレンダリングすることができます。 これは、テクスチャが解像度を下げた高品質のバリアントを持つためです。
たとえば、アルファ レイヤーのない 4000x4000 のテクスチャには、64 MB のメモリが必要です。 このテクスチャは一度にロードする必要があるため、プレイヤーから遠く離れた小さな広告看板でエイリアシングを引き起こしていたとしても、4000x4000 で表示されます。 テクスチャのサイズが大きすぎると、十分なメモリを搭載していないデバイスではクラッシュする可能性があります。
対照的に、デフォルトの圧縮を使用する 4096x4096 バージョンのテクスチャは、わずか 8 MB しか消費しないため、徐々にストリーミングされ、遠くの領域で発生するエイリアシングも軽減されます。 テクスチャのサイズが大きすぎると、パッケージ サイズも増大しますが、ゲームプレイでクラッシュが発生することはありません。
テクスチャ検証
テクスチャは、プロジェクトで使用する前に、パフォーマンスの目的で検証する必要があります。 テクスチャが検証されないと、次の問題が発生します。
ソース テクスチャが大きすぎるため、メモリ不足 (OOM) によるクラッシュが発生します。
クックされたテクスチャが大きすぎるため、プラットフォームがクラッシュします。
最適でないテクスチャによる、プラットフォームのパフォーマンスの問題。
検証に合格しないテクスチャがあると、プロジェクトを公開できなくなります。
検証ルール
検証ルールには、すべてのアセットに適用される共通のルールと、テクスチャのみに適用される 3 つの主要なルールが含まれます。
ユニバーサルルール
ソース ディメンションは 4096 テクセルを超えることはできません。
UI の 2D テクスチャ
1,048,576 テクセル (1024 X 1024) 未満のクックされたテクスチャは、自動的に検証に合格します。
2D テクスチャ
1,048,576 テクセル (1024 X 1024) 未満のクックされたテクスチャは、自動的に検証に合格します。
クックされたディメンションは 2048 テクセルを超えることはできません
クック処理済みのディメンションは 2 の累乗である必要があります。
ストリーミング可能であり、ミップの作成が許可されている必要があります。
キューブマップ テクスチャ
面ごとに 1,048,576 テクセル「未満」のクックされたテクスチャは、自動的に検証に合格します。
クックされたディメンションは 1024 テクセルを超えることはできません これは面ごとで、アセット全体ではありません。
クック処理済みのディメンションは 2 の累乗である必要があります。
ストリーミング可能であり、ミップの作成が許可されている必要があります。
無効なテクスチャを見つける
UEFN にはテクスチャのサイズに関する厳格な要件があります。インポートされるすべてのテクスチャが適切なサイズ制約を使用していることを確認するため、UEFN にはフォートナイトの提供内容を超える追加のバリデータが含まれています。 これらのバリデータでは、ルールを使用してビルド プロセスの早い段階で問題を検出し、必然的にクックに失敗するプロジェクトのアップロードを回避します。
テクスチャが検証されるのは、プロジェクト検証プロセス中と、コンテンツ ブラウザに追加された時の 2 つの場面です。
プロジェクトの検証
プロジェクトで検証プロセスが実行されると、テクスチャの検証エラーが表示される。 プロセスは常に実際のテクスチャ データを使用します (アセット タグとは対照的)。 結果はすべて、「自動修正」トークンとともにメッセージ ログに出力されます。
コンテンツ ブラウザの検証
テクスチャのサムネイルとツールチップには、アイコンと概要がそれぞれ表示されます。 このコンテキスト メニューには [テクスチャを適合] オプションがあります。 適合テクスチャでは、実際のテクスチャ データの使用が試行され、パフォーマンス上の理由により、テクスチャがロードされない場合はアセット タグにフォールバックします。 アセット タグを読み取る場合、特定のタグが欠落していると、精度がやや低くなる可能性があります。 ただし、次にテクスチャの実際のデータが検証される (プロジェクト検証、OnObjectTransacted) 際、ツールチップとサムネイルは正確に更新されます。
上記の要件に準拠していないテクスチャ アセットは、コンテンツ ブラウザでエラー アイコンでマークされます。 アセットの上にマウスを置くと、ツールチップの上部に特定の問題に関する詳細が表示されます。
[テクスチャを適合] の使用方法については、後述の [無効なテクスチャを適合させる] セクションを参照してください。
UEFN のテクスチャ サイズ要件
すべての島が確実にすべてのターゲット プラットフォームで適切に動作するよう、UEFN はテクスチャ アセットに対して特定の要件を適用します。
プロジェクトにこれらの要件に準拠していないテクスチャ アセットが含まれている場合、それらのテクスチャは検証に失敗し、プロジェクトのアップロードがブロックされます。
テクスチャが UI テクスチャ グループに割り当てられている場合、その寸法は最大サイズの 2048x2048 未満である必要があります。 ただし、テクスチャの寸法は 2 の累乗である必要はありません。 (UI テクスチャは通常ストリーミングされないため、常に可能な限り鮮明に表示されます。)
テクスチャが UI テクスチャ グループに割り当てられていない場合、その寸法は最大サイズの 4096x4096 未満である必要があります。 さらに、最小しきい値 (1024 x 1024、つまり 1048576) を超えるピクセルが含まれている場合は、ストリーミング可能な状態である必要があります。 つまり、
各寸法は 2 の累乗である必要があります (例:256x256、512x512、1024x1024 など)。
各次元が2 の累乗でさえあれば、画像は正方形である必要はありません。 たとえば、256x512、512x1024、256x1024 などです。
テクスチャの [ストリーミングしない] プロパティを無効にする必要があります。
テクスチャはミップマップを生成するように設定する必要があります。
プロジェクト内のすべての非ストリーミング テクスチャの合計メモリ コストは、事前に設定された最大バジェット未満である必要があります。 プロジェクトのメモリ コストは、Never Stream プロパティが有効になっているすべてのテクスチャのメモリ コストを合計することによって決定されます。 以下のようなものが該当します。
寸法が 2 の累乗ではないすべてのテクスチャ (パディングとサイズ変更プロパティを使用して 2 の累乗にパディングまたは引き伸ばされていないもの)。 これらのテクスチャでは、「Never Stream」プロパティが常に自動的に有効になります。
[ストリーミングしない] プロパティが手動で有効になっている、その他のすべてのテクスチャ。
すべてのテクスチャには、予想される使用方法を示すテクスチャ グループ設定があります。 このグループと、上記の他のテクスチャ プロパティを設定するには、コンテンツブラウザでテクスチャ アセットをダブルクリックしてテクスチャ エディタを開きます。
テクスチャのサイズを変更する
UEFN では、不均一な寸法や肥大化したサイズを使用する古いインポートされたテクスチャを 2 の累乗に基づいてスケールすることができます。 不具合のあるテクスチャを見つけて修正するには、以下の手順を実行します。
[コンテンツ ドロワー] または [コンテンツ ブラウザ] を開き、左側のファイル ツリー パネルで FortniteGame にあるプロジェクトの ルート コンテンツ フォルダ を選択します。
[すべて] にある [YourProjectNameコンテンツ] というフォルダを見つけます。
コンテンツ ドロワー上部の検索バーで「
NeverStream==true&&TextureGroup!=UI」と入力します。 これにより、クエリが実行され、影響を受けるアセットが特定されます。
このフィルタされたビューに表示されるすべてのアセットは影響されます。 修正には時間がかかりますが、レベルのパフォーマンスが向上します。
UI グループにない影響されるテクスチャを更新するには、次の 2 とおりの方法があります。
[オプション A] は、UEFN の一括編集機能を使用して、テクスチャをグループ化し、ワンステップで編集します。 これは、正しいアスペクト比になるようにテクスチャをパディングすることで、最もすばやくテクスチャを自動的に修正できる方法です。ただし、このパディングにより不必要なメモリの使用が生じる可能性があります。
[オプション B] は若干時間がかかるものの、複数の影響を受けるテクスチャを解決する必要がある場合、メモリ バジェットを最適に使用することができます。 このオプションは、テクスチャを編集して再アップロードすることで、不要なパディングを避けることができます。
オプションA
検索バーの横にある コンテンツ ブラウザ の ハンバーガー メニュー をクリックし、 テクスチャ を選択します。 コンテンツ ブラウザで、すべてのテクスチャが分離されます。
[設定] アイコンをクリックして、[列] をオンにします。 これで、すべてのテクスチャがコンテンツ ブラウザの列にリストされます。
[寸法] 列で、2 の累乗を使用していないアセットを検索します。
2 の累乗ルールを遵守していないテクスチャをすべて選択します。
[コンテンツ ブラウザ] 内で右クリックし、[アセット] > [プロパティ マトリクスで選択内容を編集] の順に選択します。 これで一括エディタ ツールが開き、選択したすべてのテクスチャが [コンポーネント エディタ] タブでアイテムごとに表示されます。
[ルート] セクションですべてのテクスチャ ファイル名を選択します。
画像をクリックして拡大
[ピン留め済み列] タブで [テクスチャ] オプションを開きます。
[パディングとサイズ変更] ドロップダウン メニューから、[2 の累乗にパディング] を選択します。 エディタ ウィンドウの一番下に進捗バーが表示されます。
テクスチャがすべて 2 の累乗に変換され、どのプラットフォームでも機能するようになります。
オプションB
テクスチャをダブルクリックして、テクスチャ エディタ を開きます。
[詳細] パネルの上部の検索バーで、ソース ファイルの名前を入力します。 その結果、テクスチャの元のソース ファイルとして使用される PC 上のファイル パスが表示されます。
画像をクリックして拡大
GIMP などの画像エディタ、または Paint.NET 5 を使用して、テクスチャのサイズを最も近い 2 の累乗サイズに変更します。 テクスチャにアルファ レイヤーが含まれていない場合は、ペイントを使用することもできます。
2 のべき乗サイズには、256、512、1024 などがあります。
たとえば、500x500 のテクスチャは 512x512 に、600x256 のテクスチャは512x256 にします。
アスペクト比の変更が、島にマイナスの影響を及ぼすことはありません。
[コンテンツ ブラウザ] でテクスチャを右クリックして [再インポート] を選択します。
元のテクスチャ画像がファイルにない場合は、次の手順を実行します。
[コンテンツ ブラウザ] でテクスチャを右クリックして、[アセット アクション] > [エクスポート] を選択して、新しいコピーを取得します。
テクスチャのサイズを最も近い 2 の累乗のサイズに変更します。 次に、 コンテンツ ブラウザ でテクスチャを右クリックして、[新しいファイルで再インポート] を選択します。 ファイルをインポートしたら、テクスチャをダブルクリックして、テクスチャ エディタ を開きます。
[詳細] 検索バーで、[ストリーミングしない] と入力し、このオプションを[False] に設定します。 オフ に設定できない場合は、上部にある [インポート済み] の指定で、画像のサイズが 2 の累乗であることを確認してください。
[詳細] パネルで、[Mip Gen 設定] オプションを探します。 次にドロップダウン メニューで、[テクスチャ グループから] を選択します。
[詳細] パネルで、[圧縮設定] オプションを探して、ドロップダウン メニューで [デフォルト (DXT1/5)] を選択します。
この手順が完了したら、[コンテンツ ブラウザ] の検索バーでまた「NeverStream==true&&TextureGroup!=UI」を検索し、制限されたテクスチャが正常に削除されたかどうかを確認します。 これで、更新したアセットがここに表示されなくなります。
個々のテクスチャを変更する
2 の累乗のルールを遵守していないテクスチャが 1 つしかない場合は、以下の手順を実行します。
テクスチャをダブルクリックして、テクスチャ エディタ を開きます。
画像をクリックして拡大
[詳細] 検索バーに、[2 の累乗モード] と入力します。次に、[パディングとサイズ変更] ドロップダウン メニューで、[正方形にパディング] を選択します。
[ストリーミングしない)] オプションを探して、[オフ] に設定します。
[Mip Gen 設定] オプションを探します。 次にドロップダウン メニューで、[テクスチャ グループから] を選択します。
[圧縮設定] を検索して、ドロップダウン メニューで [デフォルト (DXT1/5)] を選択します。
この手順が完了したら、[コンテンツ ブラウザ] の検索バーで「NeverStream==true&&TextureGroup!=UI」を検索し、制限されたテクスチャが正常に削除されたかどうかを確認します。 これで更新したアセットがリストに表示されなくなります。
無効なテクスチャを準拠させる
外部ファイルからインポートした無効なテクスチャを修正するには、テクスチャ作成に使用した元のアプリケーションでテクスチャを編集し、アセットを再インポートするのが最善です。 UEFN に再インポートする前に、別の専用の画像編集アプリケーションを使用してテクスチャを編集することもできます。
各画像の寸法が、上記の最大寸法よりも小さいことを確認してください。 画像を UI に使用しない場合は、画像の高さと幅を両方とも 2 の累乗にします。 各次元が 2 の累乗でさえあれば、画像は正方形である必要はありません。
UEFN では、別の方法として、UEFN のテクスチャ サイズ要件に自動的に準拠する、組み込みの機能を利用することもできます。 装備の手順は以下の通りです。
[コンテンツ ブラウザ] で、1 つ以上の無効なテクスチャを選択します。
テクスチャのサムネイルを右クリックし、コンテキスト メニューから [テクスチャを適合] を選択します。
エディタは、検証の問題を回避するために、選択したテクスチャのプロパティを調整し、その結果をアウトプット ログに書き込みます。
この操作を行うと、以下のような結果になります。
テクスチャが UI テクスチャ グループにあり、その寸法が最大許容サイズより大きい場合、テクスチャの [圧縮] > [詳細設定] > [最大テクスチャサイズ] 設定が調整され、実行時に読み込むことができるテクスチャの最大解像度が制限されます。
テクスチャが UI テクスチャ グループに含まれておらず、その寸法が最大許容サイズより大きい場合、テクスチャの [LOD バイアス] 設定は調整され、テクスチャの最大のミップマップが破棄されます。 これにより、実行時に読み込むことができるテクスチャの最大解像度が実質的に制限されます。
テクスチャが UI テクスチャ グループに含まれておらず、その寸法が 2 の累乗でない場合、テクスチャの [パディングとサイズ変更] 設定は [2 の累乗にストレッチ] に設定されます。
テクスチャが UI テクスチャ グループにない場合、その [ストリーミングしない] 設定は無効になります。