ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
ハイエンドゲームのiPhone 15 Proへの展開
A17 Proのパワーを活用して、ゲームをiPhone 15 ProおよびiPhone 15 Pro Maxで最大限に楽しめるようにする方法を紹介します。ベストプラクティスとテクニカルなリソースを紹介するとともに、ゲームのパフォーマンス、入力、アセット管理を最適化する方法を確認しましょう。
リソース
関連ビデオ
WWDC23
- Background Assetsの新機能
- Macへのゲーム展開 Part 1:ゲームプランの作成
- Macへのゲーム展開 Part 2:シェーダーをコンパイルする
- Macへのゲーム展開 Part 3:Metalでのレンダリング
Tech Talks
WWDC22
-
ダウンロード
こんにちは Jason Janeです Appleでエンジニアリング マネージャーをしています 本日は高負荷のゲームを iPhoneに展開する方法をお話します
以前 高負荷のパソコンゲームや コンソールゲームを Appleシリコン搭載のMacの スケーラブルな統合プラットフォームに 簡単に展開するための新しいツールと ベストプラクティスについての 3つの解説を公開しました
その中で Macの高度なグラフィックスや 素晴らしいパフォーマンス 臨場感あふれるオーディオ 見事なディスプレイ 機能豊富なソフトウェアを活用した 圧倒的なゲーム体験を 提供するために必要なものが すべて揃っていることを 説明しました
今回 最新のiPhone 15 Proと iPhone 15 Pro Maxが Appleシリコン搭載のMacモデルとなり この統合プラットフォームを活用して 一段上のレベルのゲームを 構築できるようになりました
こうした新しいiPhoneではiOSの あらゆるゲームとアプリを実行できます
また 非常にハイエンドなゲームも 高いパフォーマンスで プレイできるようになりました ポケットサイズながら ゲーム機のパワーを備えています iPhone 15 Proと iPhone 15 Pro Maxには 高速なCPUとGPU パソコンやコンソール向け テクスチャのハードウェアサポート 追加のシステムリソースが含まれており Macと同様に これらのiPhoneを簡単に ターゲットにできます
ここからは ゲームをiPhoneに 展開するために追加された機能と ツールについて説明します
まずは ゲームのポーティング計画を作るための ツールと戦略を説明します 次に iPhone 15 Proと iPhone 15 Pro Maxを ターゲットにする方法を説明します
さらに 長時間のプレイセッションを 最適化する方法 コントローラを中心に設計されたゲームで 最高の体験を構築する方法 最後に ゲーム内で大規模な 高品質アセットを処理する方法を説明します
では ゲーム計画の作成を考えましょう どのようなポーティングプロセスにして ゲームをiPhoneに展開する際には 段階的な手順をどのように進め 自分やチームが迅速に実行できる反復手法を 作成すればよいでしょうか
Kojima Productionsが 画期的なゲームDeath Strandingを まずAppleシリコン搭載のMacに 展開してから iPhoneへの ポーティング作業を開始したのは 自然なことです 同社は Macへのポーティングから始めることで Appleシリコン搭載の MacとiPhoneに共通する ソフトウェアAPI 統合されたメモリアーキテクチャ ハードウェアとGPUの高度な機能を ターゲットにしました
作業の初期段階では XcodeとInstrumentsを 使用して Mac上で迅速に反復処理を 行うことができました
強力なデスクトップMacの 豊富なメモリとリソースを活用しました デバッグとテストの スキャフォールドのために 追加のストレージとメモリがあれば 開発時に非常に有用です デベロッパは簡単に作業を開始でき 自分の席からそのまま コマンドラインの自動化や キーボード マウス コントローラの 入力を使用して テストを実施できました
Mac上で実行できたら Appleシリコンの統合アーキテクチャと iPhone 15 Proや iPhone 15 Pro Maxの リソースと機能を通じて MacからiPhoneへは簡単に ポーティングできます わずか数日でゲームが動きました このようなスケーリングを実現する 同等の一貫性と機能を備えた プラットフォームは他にありません
携帯型のiPhoneやiPadから Mac MiniやiMacに そして非常に強力なデスクトップである Mac StudioやMac Proに 自然にスケーリングできるのが Appleシリコンの素晴らしいところです
iPhoneへの対応中に Macへのポーティングを開始するには ゲームポーティングツールキットの使用も お勧めします このツールキットにより パソコンゲームの グラフィックスやシェーダが Appleシリコン上でどのように 動作するかを 初期に把握できます 変更を加えていない Windowsパソコンゲームを Mac上ですぐに試すことができます
ソースコードを再コンパイルする前に HLSLからのカスタムシェーダの変換 グラフィックサブシステムの再実装 オーディオ 入力 ディスプレイ HDRレンダリングの 使用の変換を行います こうした作業を行ってから Mac上で実行して最初のシーンを確認したり iPhone用のデバッグと 最適化に着手するのではなく
未変更のWindowsバイナリを Mac上で実行し 分析するとよいでしょう Appleシリコン上でのゲームの動作を プロファイリングして理解し ゲームの計画を作るのに役立ちます ポーティング作業の開始については 「Macへのゲーム展開」シリーズの パート1で詳しく説明しています
iPhone 15 Proの 一段上のレベルの性能や パフォーマンス 機能が ゲームに必要な場合は これらのデバイスを最小仕様として 直接ターゲットにできます
当社はiOS 17とApp Storeに iPhoneパフォーマンスゲーム層を 定義しています これはアプリの info plistファイルで UIRequiredDeviceCapabilitiesセクションに 追加するフラグです
このフラグを追加することで 最小仕様を指定します 少なくともこの機能を備えるデバイスを 所有する顧客のみがアプリを 購入 インストール レビューできます
この最小仕様を設定するには Xcodeを使用してinfo plistの required device capabilitiesセクションに エントリを追加します
この最小仕様の機能を設定するには 最小展開ターゲットとしてiOS 17も ターゲットにします
これを行うと サポートされている デバイスを所有する顧客のみが ゲームを購入してインストールできるように App Storeに登録されます iPhone 13 Proを所有する顧客には このように表示されます
ゲームの品質とパフォーマンスを iOS 17が動作するすべてのiPhoneに 動的に拡張させるには iPhone 15 Pro向けに ゲームを強化する方法も 検討する必要があります
パソコンやコンソールのゲームでは スケーリングは珍しくありません 対応可能な 最大限の市場を ターゲットとするのに優れた方法です
ハードウェアアクセラレーションによる メッシュシェーディングや レイトレーシングをオプションで 利用するには Apple 9 GPUファミリーをクエリして Apple A17 Pro GPU搭載デバイスの 使用を確認してください
次に iPhoneで長時間実行される ゲームセッションで 一貫性のある高品質パフォーマンスを 実現するための 最適化について説明します
パフォーマンスの視覚化 新しいパフォーマンスプロファイル シェーダを最適化する手法 iPhoneでのMetalFXの使用 について説明します
Metal Performance HUDを使用すると パフォーマンスをリアルタイムで 簡単に視覚化できます Metal Performance HUDをテスト中に 日常的に有効にしていれば フレームの欠落やメモリリークを すぐに発見できます HUDでは 使用しているGPUと解像度 瞬間フレームレート 表示間隔 概算GPU時間が確認できます これらの統計値の最大と最小が ハイライトされ メモリ使用量が示され 直近の数秒間のデータを表す グラフが表示されます 「Metal Performance HUDについて」で 詳細をご確認ください
iPhone 15 Proと iPhone 15 Pro Maxには Sustained Executionモードと呼ばれる 新しいシステムパフォーマンス プロファイルが導入されます デフォルトのシステム パフォーマンスプロファイルは 3つの時間領域で最適なパフォーマンスを 提供することを目的としています バースト的な短いワークロードでは 最大限のパフォーマンスを 顧客セッションの大部分では 一定したパフォーマンスを 長時間のワークロードでは デバイスの制約を考慮して 安定した状態を提供します このため ゲームの調整方法を 決定する必要があります 初期パフォーマンスを調整したり 時間の経過とともにゲームの パフォーマンスを変更したり 開発中に時間をかけて パフォーマンスを安定させ それに応じて再調整したりできます
この労力を軽減し 一貫したエクスペリエンスを提供するために 当社はiPhone 15 Proと iPhone 15 Pro Maxに Sustained Executionモードを導入します
この新しいプロファイルを選択すると アプリの起動直後から 安定した状態のパフォーマンスを 実現できます これにより ターゲットデバイスに適した レベルの品質とパフォーマンスを すばやく特定し 各プレイヤーに対してまったく同じ 一貫性ある品質を 確実に提供できます
ゲームの動作中に Sustained Executionモードを有効にするには エンタイトルメントをアプリに追加します Xcodeに移動して 「Signing and Capabilities」ツールで 「Sustained Execution」機能を 追加します アプリのプロビジョニング プロファイルでも このエンタイトルメントを プロビジョニングする必要があります これはApple Developerアカウントの プロファイルセクションで行います
Metalはもう1つの重要な パフォーマンス技術である シェーダのプリコンパイルを サポートしています モバイルデバイスでは通常 ソースからシェーダを デバイス上にコンパイルするのは 電力効率が悪いため避けるべきです 実行時のデバイス上コンパイルは 予期しない問題を起こす可能性もあります パソコンやコンソールのゲームを ポーティングする場合 プリコンパイルの重要性は増します シェーダがより多いことが考えられ できる限り迅速に準備する 必要があるからです
Metalシェーダコンバータと Metalコンパイラによる 事前コンパイルを常に使用して アプリのビルド時に metal libを生成し バンドルにパッケージ化します
場合により metal-ttを使用して Metal GPUファミリー9用の コードを生成し metal libを使用して GPUバイナリまで仕上げることもできます 詳細については「Macへのゲーム展開 パート2:シェーダのコンパイル」を ご覧ください ゲームをMacにポーティングする場合の アドバイスが iPhoneにも当てはまります
最後に MetalFXも 今年iOS 17に導入された 優れたパフォーマンス技術です MetalFXは昨年に Macに導入されました はるかに少ないピクセル数で 高品質 高解像度の画像を生成して ゲームのパフォーマンスを向上させ 電力と時間を節約できます
MetalFXは2つのアップスケーリング 効果を提供します パフォーマンス上のメリットをもたらす 空間的効果と 最適な品質を実現する時間的効果です 今年 当社はMetalFXのパワーを iOSに展開します 空間アップスケーリングは iOS 17に対応する すべてのiPhoneで利用でき 時間アップスケーリングは A14以降を搭載する デバイスで利用できます
低解像度でのレンダリングは ゲームのパフォーマンスを 高める1つの方法です GPUの負荷を減らすことで 電力を節約し より高い フレームレートを実現できます すべてのiPhoneには高品質の 内蔵ディスプレイスケーラがあり CAMetalLayerのコンテンツを ネイティブディスプレイ解像度に 自動的にスケーリングします 皆さんも使用経験が あるかもしれません MetalFXを使用するとターゲット 解像度を維持できるので ディスプレイスケーラは 引き続き利用できますが ゲームのレンダリング解像度は低下します
MetalFXは高負荷のゲームが ProMotionディスプレイやそれ以外の ディスプレイで安定したフレームレートを 実現するのに役立ちます ゲームのワークロードに応じて MetalFXとディスプレイの アップスケーリング率を 様々に組み合わせて試し パフォーマンスと品質の 最適なバランスを実現できます MetalFXの使用に関する ベストプラクティスの詳細は 過去のWWDCセッション 「MetalFXアップスケーリングによる パフォーマンスの向上」と 「Macへのゲーム展開 パート3: Metalによるレンダリング」を参照してください
コントローラのサポートがさらに改良され iPhoneでのゲーム操作が これまで以上に簡単になりました パソコンとコンソールのゲームの多くは コントローラでの入力を中心に 設計されています 素晴らしいことに ゲームをiPhoneに 展開してもそれは変わりません iOSは 人気の高いすべての ゲームコントローラへの接続に 対応しています これには 低遅延USBCを使用する 各種サイズのiPhone 15に 完璧に適合して動作する新世代の フォームフィットコントローラも 含まれます Backbone製のこの PlayStation版コントローラは 私のお気に入りの1つです
コントローラでプレイするのが 最適なゲームでは プレイヤーが その点を 把握できるように Xcodeの「Signing and Capabilities」セクションを使用して ゲームコントローラへの対応を追加します
次に GCRequiresControllerUserInteraction 辞書をinfo plist配列に 追加し ブール値YESを持つiOSキーを含めます
この構成セットを使用すると App Storeにコントローラ推奨バッジが表示されます
これによりゲームコントローラの 使い方や比較についての詳細 互換性のあるフォームフィット コントローラや スタンドアロンコントローラを 見つけて購入できる場所の 情報が表示されます
iPhoneは低遅延 高精度の マルチタッチによって モバイルゲームにも革命をもたらしました ゲームがタッチ操作もサポート していることは重要であり App Storeのレビュープロセスにも 含まれています
今年は さらに多くの カスタムのタッチコントロールを アプリに簡単に追加 できるようになりました GC Virtual Controller APIでは 独自のオンスクリーン コントロールを必要な場所に 描画できるようになりました タッチ処理はゲームコントローラの 入力イベントに変換されます このため ゲームコントローラの 入力ロジックの大部分を維持したまま ゲームUIの見た目と操作性を カスタマイズできます
最後ですが iPhone 15 Proと iPhone 15 Pro Max は パソコンとコンソールの最高品質の アセットをシームレスに サポートできるようになりました ゲームの元の基本アセットは 高解像度テクスチャデータ 高ポリゴン数のジオメトリ 非圧縮の オーディオデータや音声データなど 非常に大きくなる場合があります これらのファイルを変換してパッケージ化し パソコンやコンソールの利用可能な システムリソースに適合させ ターゲットハードウェアと 効率的に相互運用するのは アセットパイプラインの役割です この際 テクスチャの解凍 ジオメトリのインスタンス化 オーディオミキシングなどの 高速化された機能を 活用します
iPhone 15 ProとiPhone 15 Pro Maxが 登場する前は モバイルデバイスをターゲットにする際の 労力に不安があったかもしれません 汎用モバイルアセット パイプラインを新たに作成して 限られたリソースに収まるように 高度に圧縮されたアセットを生成したり モバイル専用のテクスチャ形式を 処理したりした経験があるかもしれません
iPhone 15 Proと iPhone 15 Pro Maxでは パソコンやコンソール用の既存の アセットパイプラインを 簡単に使用できます
ハードウェアアクセラレーション 対応のBCとテクスチャを サポートしているため 既存の大規模な アセットパッケージを変換する 必要がありません しかもASTC圧縮により 圧縮や品質が 向上する可能性があります また 専用メモリが増えると Retina ProMotionディスプレイで 非常に映える サイズの大きい 高品質アセットを シームレスに読み込み 格納 移動 できるようになり ポーティング作業が簡素化され 時間を節約できます
Metalデバイス検査関数の supportsBCTextureCompressionを 使用して BCnの可用性をクエリします
iOS 17を実行する他の iPhoneモデルもサポートする場合 アセットの圧縮に ASTC圧縮を使用するのは 品質をさらに高め 圧縮率を向上させるための 素晴らしい選択肢となります
利用可能なメモリを最大化するには Apple Developerプロファイルで Xcodeの既存の増加メモリ制限 エンタイトルメントを 必ず有効にしてください リソースが増えると より詳細にレンダリングでき 解像度 深度バッファ シャドウバッファを向上させ より複雑で リソース消費の多い レンダリングアルゴリズムを実装できます デバイス間でスケーリングする場合は os_proc_available_memoryを使用して 利用可能なリソースを動的に 決定することもできます サイズが大きいアセットを iPhoneに展開するには アプリでそのアセットを動的に ダウンロードする必要があります これを行う方法には オンデマンドリソース バックグラウンドアセット 独自のカスタムダウンロードの実装 という3つがあります
ダウンロードする際は 顧客のバックアップに影響を与えず 必要に応じてシステムが削除できる場所に アセットを保存してください アセットを取得したら データコンテナの ライブラリディレクトリ配下にある キャッシュディレクトリに アセットを移動します このディレクトリは アプリユーザーごとの 重要なデータと一緒には バックアップされません またシステムが このキャッシュを むやみに消去することもありません 最新のダウンロードテクノロジーの 詳細は バックグラウンドアセットに関する WWDCの最新の講演をご覧ください
ベストプラクティスの説明は以上です ハイエンドのゲームを妥協することなく iPhone 15 ProとiPhone 15 Pro Maxに展開できるはずです Apple A17 PRO GPUはパワーと グラフィック機能が 大きく向上しており ゲームをiPhoneにすばやく 簡単に展開できます これらのiPhone 15 Proモデルが Appleシリコン搭載のMac ファミリーに加わり 一段上のレベルの ゲームプロジェクトを実現する 統合ターゲットプラットフォームを 構成できます 皆さんがiPhoneに展開したゲームをプレイできるのを楽しみにしています
-
-
0:01 - Slide 24: Scale by GPU family capabilities
MTLDevice *device = MTLCreateSystemDefaultDevice(); if ([device supportsFamily:MTLGPUFamilyApple9]) { // features available in Apple GPU Family 9: // hardware accelerated mesh shaders // hardware accelerated ray-tracing } else { // fall back on alternative techniques }
-
0:02 - Slide 54: Scale textures size & quality
MTLDevice *device = MTLCreateSystemDefaultDevice(); if (device.supportsBCTextureCompression) { // BCn textures are available } else { // fall back to ASTC texture assets for maximum compatibility }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。