Mac OS X

WWDC23:macOS Sonomaのゲーム開発環境最新情報

※本サイトは、アフィリエイト広告および広告による収益を得て運営しています。購入により売上の一部が本サイトに還元されることがあります。

What’s new in managing Apple devices

What’s new in managing Apple devices

WWDC23において、MetalとAppleシリコンの強力な機能を使って、最新のハイエンドゲームをMacとiPadに導入する方法について説明するセッション「What’s new in managing Apple devices」が公開されています。

Appleシリコン搭載Macの高度なグラフィックス、素晴らしいパフォーマンス、没入感のあるオーディオ、美しいディスプレイ、そして機能豊富なソフトウェアで、素晴らしいゲーム体験を提供するために必要なものはすべて揃っています。

Macがかつてないほど普及している今こそ、あなたのゲームを何百万人もの新しいプレイヤーに届ける絶好のチャンスです。


Game Porting Toolkit

Game Porting Toolkit

WindowsゲームをMacに移植するのは、これまで以上に速くなりました。今年は、新しい「Game Porting Toolkit」が、既存の未修正のWindowsゲームを実行するためのエミュレーション環境を提供し、それを使って、Macで実行した場合のグラフィックス機能の使用状況やパフォーマンスの可能性を素早く理解することができます。

ゲームの見た目、サウンド、プレイの感覚をつかむのに何ヶ月もかかるわけではありません。ゲームの可能性がすぐにわかります。

ソースコードの再コンパイル、何千ものカスタムシェーダーのHLSLからの変換、グラフィックサブシステムの再実装、オーディオ、入力、ディスプレイ、HDRレンダリングの使用方法の変換など、通常、Windowsゲームをまったく新しいプラットフォームに移植するには、最初のシーンが動くのを確認する前に多くのステップが必要で、リリース前にデバッグとパフォーマンスの最適化を行うことになります。


Port your game

Port your game

クロスプラットフォームエンジンでは、Windowsゲームで追加されたプラットフォーム固有のコードやプラグインを移植する前に、ゲームの可能性を確認することができます。

Macへのゲームの移植は、ゲームの評価から始まり、シェーダーのコンパイル、Metalでのレンダリング、ゲームの入力、オーディオ、ディスプレイの使用方法の変換、HDRレンダリングと続きます。

最初のステップは、Game Porting Toolkitを使ってゲームを評価することです。


Metal Shader Converter

Metal Shader Converter

Game Porting Toolkitには、新しい「Metal Shader Converter」が含まれており、これを使用すると、既存のすべてのHLSL GPUシェーダをMetalに自動的に変換することができます。

Metal Shader Converterを使えば、シェーダとグラフィックをMacに取り込むのにかかる時間も大幅に短縮されます。

より早く出荷しても、MacとAppleシリコンのユニークな機能を活用するための時間を確保することができます。

クロスプラットフォームエンジンを使って移植のほとんどを行う場合にも、ゲームがすぐに動作するのを確認することは有効です。


Game Porting Toolkit

Game Porting Toolkit

Game Porting Toolkitの環境では、ゲームのIntel命令と、キーボード、マウス、コントローラの入力、オーディオ再生、ネットワークとファイルシステムの使用、そしてもちろんグラフィックのためのWindows APIの使用が変換されます。

GPU駆動のパイプラインやSIMD演算といった最新のグラフィックス機能から、テッセレーションやジオメトリシェーダーといった旧来の機能まで、すべて変換されます。


The Medium

The Medium

Game Porting Toolkitを使って、Blooberが開発したWindows DirectX 12ビルドの三人称視点の心理的ホラーゲーム「The Medium」を検証する方法を紹介します。

WindowsビルドをMacにコピーし、ターミナルから起動します。Game Porting Toolkitの翻訳環境で起動すると、ターミナルにロギングやデバッグ情報が表示されます。

ゲームを起動すると、このロギングに潜在的な問題が含まれている場合がありますが、Blooberの開発者にとっては、ここはクリアなようです。

Game Porting Toolkitのドキュメントを見ると、ゲームのロギングで見つかるかもしれないものの詳細を見つけることができます。

ここで開発者は、ゲームがすべてのグラフィックス機能を有効にしてうまく動作していること、そして期待通りに動作していることを確認します。

透明度、反射、ジオメトリシェーダー、テッセレーション、そしてユニークでムーディーなグローバルイルミネーションのライティングアプローチなどの機能がすべてMetal 3に反映され、鮮明でピクセルパーフェクトに見えることがわかるでしょう。

次に、ベースラインパフォーマンスを把握するために、少しプレイしてみます。Windowsゲームを実行したときのベースライン・パフォーマンスには、Game Porting Toolkitのオーバーヘッドがすべて含まれていることは、注目に値します。


Metal Performance HUD

Metal Performance HUD

Blooberの場合、Windows版ではもちろんMetalFXアップスケーリングのようなパフォーマンス向上機能は使用されていません。

非ネイティブのゲームがこれらの翻訳レイヤーを通過すると、そのパフォーマンスと電力効率に影響を与える可能性があります。

ゲームをMacにネイティブで導入すれば、パフォーマンスが向上し、MetalFXのような機能やAppleの内蔵ディスプレイの拡張ダイナミックレンジ機能など、AppleシリコンとMacハードウェアの多くの高度な機能を利用できるようになります。

ゲームを評価するための優れたワークフローは、Metal Performance HUDを有効にした状態でゲームをプレイし、より深く観察する必要がありそうな特定のスポットを探すことです。
開発者は、HUDが時折ドロップするフレームや、平均フレームレートが大幅に低下している箇所を発見しました。

そこで、Instrumentsを使用してMetal System Traceをキャプチャすることができました。
これは、パフォーマンスの問題を調査するのに最適な方法です。

Game Porting Toolkitで実行する場合、Metal Performance HUDは強化されています。


Metal Performance HUD

Metal Performance HUD

レンダリングしているGPUと解像度に関する情報、瞬時のフレームレート、現在から現在までの間隔、使用されているGPU時間の概算が表示されます。

これらの統計の高い値と低い値を強調表示し、メモリ使用量を表示し、過去数秒間のデータのグラフを提供します。

さらに、命令セット変換やどのDirect3D APIバージョンが使用されているか、レンダーエンコーダーの数、コマンドバッファとディスパッチの数、ジオメトリシェーダーやテッセレーションシェーダーなどの各機能がフレームごとに何個使用されているかなどの詳細がHUDに表示されました。

さらに、リソースのコピーとクリアもキャプチャされます。

ここでは、トレースファイルをInstrumentsで開き、ブラウズしてフレームドロップが見られる箇所を素早く見つけています。


ゲームのパフォーマンス

ゲームのパフォーマンス

ここでは、GPUのタイムラインに大きなギャップがあり、ほとんど利用されていない領域があり、まったく作業が予定されていないフレームがいくつかありました。

これを調べてみると、命令変換のオーバーヘッドやAPI変換による差異が原因である可能性が非常に高そうです。

これらは、ゲームをMacネイティブで実現することで解消される問題ばかりです。ゲームのパフォーマンスが向上し、より効率的に動作するようになることは間違いありません。

さらに、Metalでのレンダリングにベストプラクティスを用い、MetalFXアップスケーリングを採用すれば、ゲームのパフォーマンスはさらに高まります。

このシーンでは、Metal 3とApple Siliconをより最適に活用することで、フレームレートを劇的に向上させています。


Metal Shader Converter

Metal Shader Converter

既存のWindowsゲームを実行してグラフィックス機能とパフォーマンスを評価した後は、その知識を活かしてシェーダーパイプラインを移植します。

Metal Shader Converterツールを使用すると、ジオメトリ、テッセレーション、メッシュ、レイトレーシングの各ステージを含む、ゲームの高度なシェーディングパイプラインをすべて変換することができます。


MetalFX

MetalFX

Metalを使ったレンダリングについて見ていきましょう。

Metal 3は、MetalFX、高速リソースロード、オフラインコンパイル、メッシュシェーダ、レイトレーシングなど、現代のハイエンドゲームで使用される高度なグラフィックスおよびコンピュート機能をすべて提供しており、グラフィックスコードの変換は非常に簡単です。


Apple input frameworks

Apple input frameworks

Windowsゲームは、すでにクロスプラットフォームのゲームエンジンで構築され、一般的な入力プラグインを利用しているか、XInputやGameInputなどの低レベルのWindows APIを直接利用しているか、ゲーム周辺機器用のカスタムSDKがバンドルされている可能性があります。

Appleプラットフォームでは、Game Controllerフレームワークが、ゲームパッド、キーボード、マウス、レーシングホイール、アーケードスティックなど、さまざまな周辺機器のゲーム入力をスレッドセーフかつ低レイテンシーでサポートしています。

また、ハプティクスやモーションなど、ゲームコントローラの追加機能を利用することもできます。

Appleのプラットフォームでは、アプリケーションごとの入力リマッピングをシステムレベルのユーザー設定でサポートするほか、あらゆるゲームでコントローラーからスクリーンショット、ビデオ録画のキャプチャ、ゲームプレイの15秒間のハイライトを自動的にサポートします。


Apple audio frameworks

Apple audio frameworks

オーディオは、魅力的なゲーム体験のもう一つの重要な要素です。既存のゲームのオーディオワークフローと機能をMacにネイティブに取り込むのは、非常に簡単です。

Apple製デバイスには最先端のスピーカーが内蔵されており、大音量のファンでかき消されることがないため、プレイヤーは大きな声ではっきりと聞くことができます。

また、低遅延の空間オーディオをサポートする、Appleデバイスと互換性のある優れた有線および無線オーディオ周辺機器も数多くあります。

既存のゲームでは、Wwise、Unity、FMODなどのクロスプラットフォームオーディオミドルウェアソリューションが既に使用されていると思われます。これらのミドルウェア製品は、一般的にシステムオーディオAPIやフレームワークを抽象化しています。

Windowsでは、DirectSound、XAudio2、WASAPIなどの低レベルのAPIの上にミドルウェアレイヤーを使用している可能性があります。Appleのプラットフォームにも同じミドルウェア製品が存在します。

これらは、Spatial Mixer Audio Unit、PHASE、AVAudioEngineなど、高位および低位のAppleオーディオフレームワークの豊富なセットを利用します。これらのミドルウェアは、Apple SiliconのネイティブSDKでしっかりとサポートされているのが嬉しいところです。

ミドルウェアを使わないのであれば、もちろん、ミドルウェアと同じように、プラットフォームが提供するオーディオフレームワークやAPIを直接使うことができます。


Apple advanced display feature stack

Apple advanced display feature stack

Appleのディスプレイは、プレイヤーに魅力的で没入感のあるゲーム体験を提供するために不可欠な要素です。

Game Porting Toolkitを使えば、ゲームのレンダリングコードが、翻訳環境の基本的な標準ダイナミックレンジとフレームペーシングAPIの上で動作する様子を見ることができます。

Windowsでは、AdvancedColorInfo色空間APIなど、ハイダイナミックレンジを実現するためのカラーマネジメントやトーンマッピングAPIを使用している場合があります。また、IDXGISwapChain で利用可能なタイミングとフィードバックを使用して、SDR と HDR コンテンツのペース配分を行うかもしれません。

CAMetalLayer の拡張ダイナミックレンジのサポートにより、さらに高度な表示機能にアクセスできます。

浮動小数点や10ビット整数レンジ、HDR10やPQ10シェーダーなど、HDRやトーンマッピングのロジックを簡単に移動することができます。CAMetalDisplayLink APIは、ゲームの入力と表示のレイテンシーを最小にするためのきめ細かなコントロールを提供します。

Apple Silicon Macプラットフォームは、すべてのソフトウェアとハードウェアの機能を備えています。


関連記事

この記事のハッシュタグ から関連する記事を表示しています。

新着記事