Unreal Engine 5.2 が Apple シリコンと macOS のその他の開発環境をネイティブでサポート

Michael Prinke (テクニカル ライター)、Zack Neyland (リード プラットフォーム プログラマー)
Unreal Engine 5.2 以降、macOS 用 Unreal Editor がユニバーサル バイナリとしてビルドおよび配布されます。それにより、前世代の Intel ベースおよび現世代の Apple シリコン ベースの Mac が 1 つのパッケージでネイティブ サポートされるようになります。この技術ブログでは、これがどのような意味を持つのか、macOS を使用する際のワークフローにどのような影響を与えるのか、macOS をサポートする開発者に対する将来の要件は何かについて解説します。また、より多くの Unreal Engine マーケットプレイス アセットへのアクセスや Nanite の実験的サポートなど、macOS 向けに追加された新機能の概要や、プラットフォームにおける Unreal Engine の制限についても概説します。
Audi Business Innovation の提供で、A5 カブリオレ モデルが Unreal Engine マーケットプレイスの「自動車コンフィギュレーター」プロジェクトの一部として macOS で利用可能に

macOS 用のユニバーサル バイナリとは

2020 年、Apple は将来のモバイル デバイスや Mac デスクトップ マシン向けに独自のプロセッサ ラインである Apple シリコンを導入しました。Mac デバイスにとって、これは Intel の x86-64 プロセッサから ARM64 アーキテクチャへの移行を意味します。この移行を容易にするために、Apple シリコン ベースの Mac は Rosetta 2 命令トランスレータを使用して新しいアーキテクチャ上でレガシー x86 アプリケーションを実行し、互換性を確保します。しかしこの際、CPU オーバーヘッドが若干増加します。

将来のアプリケーションでは、プロジェクトをユニバーサル バイナリ、つまり x86-64 スライスと ARM64 スライスの両方を含むバイナリとしてビルドする方がよいでしょう。それにより、アプリケーションは配布可能ファイルを 1 つだけ使用して、前世代の Intel ベースの Mac または Apple シリコンを搭載した Mac のいずれかでネイティブに実行できるようになります。
「Automotive Bridge Scene」が、Unreal Engine マーケットプレイスから macOS で利用可能に

Unreal Engine 5.2 における Apple シリコンのサポート状況

Unreal Engine 5.0 以降、Mac 用のユニバーサル バイナリをサポートしていましたが、これは UE プロジェクトのスタンドアローン ビルドをパッケージ化する場合のみでした。UE 5.1 では、ネイティブ arm64 バイナリを使用して UE のソース ビルドを実行するためのベータ サポートを導入しましたが、UE のエディタ ビルドについては依然として Rosetta に依存していました。UE 5.2 では、Epic Games Launcher 経由でダウンロードする際に Unreal Engine 用のビルド済みユニバーサル バイナリを正式にリリースします。
 

macOS 上で Unreal Engine を使用する際の、これにまつわる将来的な影響

Unreal Editor をソースからユニバーサル バイナリをビルドする場合、いくつか追加の手順を実行する必要があります。詳細は以下のとおりです。Unreal Editor を実行している場合、ワークフローに対する変更は最小限で済みます。ただし、プロジェクトまたはプラグインをリリースする際に、いくつかの新しい要件が発生します。

まず、macOS 上で Unreal Engine 5.2 を実行しているユーザーは、次の開発要件を満たす必要があります。
  • 最小 macOS バージョン:12.5 Monterey 以降
  • 推奨 macOS バージョン:最新版の macOS Ventura
  • 最小 Xcode バージョン:14.1

これらは App Store のための新規の、または今後予定されている最小要件 を反映したものです。

次に、Unreal Engine マーケットプレイスでコード プラグインを公開する販売者は、Unreal Engine 5.2 以降は macOS と互換性があるとみなされるようにユニバーサル バイナリを含める必要があります。これは主に、Amazon のウェブ サービス ライブラリ (lib.AWS) などのサードパーティ ライブラリを使用するコード プラグイン (例:libaws-checksums.dylib) に影響します。
 

macOS 向けの Unreal Engine マーケットプレイス アセットを利用する際に、この変更が意味すること

これらの変更とマーケットプレイス アセットの追加要件により、Unreal Engine 5.2 を実行している macOS ユーザーは UE マーケットプレイス上でより多くのアセットにアクセスできるようになります。これには、Paragon アセット パックなどの Epic Games の無料アセットが含まれます。
「Paragon」のこの Muriel キャラクターなど、さらに多くの Unreal Engine マーケットプレイス アセットが macOS で利用可能に

Unreal Editor で Apple シリコンのサポートを利用する方法

macOS で Epic Games Launcher を通じて Unreal Engine をダウンロードした場合、ユニバーサル バイナリを含む配布可能ファイルを自動的に受け取れます。ランチャーを通じて Unreal Editor のインスタンスを実行すると、デバイスのネイティブ アーキテクチャに適したスライスが使用されます。したがって、Apple シリコン ベースのデバイスをお持ちの場合、エディタが自動的に Apple シリコンをネイティブ サポートします。

エディタをソースからビルドするときにユニバーサル バイナリを作成するには、「x64+arm64」アーキテクチャを選択して明示的にビルドする必要があります。コマンド ライン ビルドのデフォルトは x64 アーキテクチャであり、Xcode ビルドのデフォルトはホスト マシンのアーキテクチャであるためです。このプロセスの詳細については、ドキュメントのこちらの記事を参照してください。
 

エディタで Apple シリコンをネイティブ サポートすることの利点

Apple シリコンのネイティブ サポートを利用して Unreal Editor を実行すると、Rosetta 2 のトランスレーションが不要になります。そのため、CPU オーバーヘッドが減少し、パフォーマンスが向上します。

さらに、Apple シリコン ベースの Mac でエディタを実行する際にユーザー エクスペリエンスが向上します。これには、ウィンドウ フォーカスの処理に関する修正と、現行世代の Mac 画面の上部にある「ノッチ」のサポートの改善が含まれます。
macOS 上の Unreal Editor で実行されている Unreal Engine マーケットプレイスの「Infinity Blade: Grass Lands」のシーン

Unreal Engine における macOS サポートの制限事項

macOS へのサポートは継続して取り組んでいますが、macOS デバイス上で Unreal Editor またはスタンドアローン プロジェクトを実行する場合には顕著な制限があります。
  • Nanite は、Apple M1 デバイスでサポートされていないおそれのある画像アトミックとフォワード プログレスの保証に依存しています。M2 ベースの Mac では実験的なサポートを利用できますが、デフォルトでは無効になっています。有効にする場合は注意すべき事項があります (詳細は以下を参照)。将来的には Apple シリコン ベースのデバイスでの Nanite の完全な有効化を予定していますが、現時点では完全にはサポートされていません。
  • Nanite を使用するように設定されている Quixel アセットは、その非 Nanite バージョンにフォールバックします。それ以外は意図どおりに機能します。
  • グルームは画像アトミックのサポートを必要とするため、ヘア (毛髪)/毛皮/グルームのストランドは現在 macOS ではサポートされていませんが、ヘア カードとメッシュはサポートされています。
  • ハードウェア アクセラレーションによるレイ トレーシングは、現在 macOS ではサポートされていません。この制限により、Apple シリコン上では Lumen はソフトウェア レイ トレーサーのみ使用できます。ソフトウェア レイ トレーシングでは、ハードウェア レイ トレーシングと比較して結果の品質が低くなります (たとえば、反射の詳細が粗かったり、ダイナミック メッシュが表示されなかったりします)。
  • アンチエイリアシングのパフォーマンス:デフォルトのアンチエイリアス モードであるテンポラル スーパー解像度 (TSR) は現在、Apple シリコンのソフトウェアおよびハードウェアの制限に達しており、ランタイム コストが他のプラットフォームに比べて最適化されていません。これについては現在調査中です。将来のリリースで実行時のパフォーマンスを改善したいと考えています。別のアンチエイリアス モードに切り替えたい場合、今のところはプロジェクトの設定で「Anti-aliasing (アンチエイリアス)」を検索し、別の方法を選択して切り替えるようにしてください。
 

M2 デバイスで実験的な Nanite サポートを使用する方法

待望の macOS での Nanite の完全サポートに向けた最初のステップとして、ue5-main および GitHub 上の 5.2 ブランチで実験的サポートが利用できるようになりました。ただし、これはデフォルトでは無効になっています。これを有効にするには、Unreal Engine のソース コードで次の変更を行う必要があります。
  1. 「UEBuildMac.cs (Engine/Source/Programs/UnrealBuildTool/Platform/Mac/UEBuildMac.cs)」で PLATFORM_MAC_ENABLE_EXPERIMENTAL_NANITE_SUPPORT=1 を設定します。 
  2. spirv_msl.hpp」で UE_EXPERIMENTAL_MAC_NANITE_SUPPORT を有効にします。
  3. UEBuildMac.cs」の指示に従って ShaderConductor をリビルドします。
  4. 「DataDrivenPlatformInfo.ini (Engine/Config/Mac/DataDrivenPlatformInfo.ini)」で bSupportsNanite=true  bSupportsUInt64ImageAtomics=true を設定します。

このサポートを有効にする場合は、いくつかの注意事項があるため、注意してください。まず、これは M2 ハードウェアでのみ機能します。次に、パフォーマンスと信頼性に対する完全なテストはまだ行われていないため、それらに対する保証はありません。前述したように、このサポートは実験的であり、将来のリリースおよび将来の世代の Apple シリコン搭載のハードウェアでのさらなるサポートを確立するための足がかりとして意図されています。フィードバックをお待ちしております。Epic Developer Community のフォーラム までご意見をお寄せください。

    今すぐ macOS 向け Unreal Engine 5.2 を入手しましょう!

    既存の Unreal Engine ユーザーの場合は、Epic Games Launcher から macOS 用 Unreal Engine 5.2 のユニバーサル バイナリをダウンロードできます。Unreal Engine を初めて利用する場合は、以下のリンクをクリックして利用を開始してください。いずれの場合も、すべての新機能とアップグレードをお試しいただけます。