ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
空間コンピューティング向けのゲーム開発
visionOSで素晴らしいゲーム体験を開発する方法を紹介します。このプラットフォームにおけるゲーム開発の基本的な要素を解説し、イマーシブ体験の異なるレベルをスムーズに移行する方法や、ARKit、RealityKit、Reality Composer Pro、Unity、Metalおよび Compositorの可能性を探るためのロードマップを共有します。
関連する章
- 0:00 - Intro
- 0:41 - Types of spatial games
- 3:51 - Rendering, audio, and input
- 12:10 - Development frameworks
- 13:49 - Build with RealityKit
- 18:05 - Wrap-Up
リソース
関連ビデオ
WWDC23
-
ダウンロード
♪ ♪
こんにちは Tricia Grayです RealityKit Tools teamに所属してます Build great games for spatial computing にようこそ この新しいデバイスの ゲーム制作についてお話しします 空間コンピューティングで 新しいタイプのゲームが作れます レンダリング・オーディオ・入力において ユニークな特徴があります ゲーム制作で使用できる フレームワークとツールがいくつかあり RealityKitがその一つです まず この新しいプラットフォームで どのようなゲームが可能か お話ししましょう これは独立型な 空間コンピューティングデバイスで 高解像度で広視野角 そして高リフレッシュレートの ディスプレイを備えています 空間オーディオは素晴らしいものです また両手の動きと周りの部屋の形を捕らえる LiDARを備えています そして高精度なパススルーによって プレイヤーは周りの環境を常に把握できます これらの素晴らしい特徴を活かし 様々なゲーム制作が可能になります プレイヤーの注意をどれだけ惹くかによって 幅広いのゲームを 作り出すことができます すべてのアプリとゲームは Shared Spaceから始まります 他のゲームやアプリ そしてプレイヤーの環境と 同じスペースに共存できるということです プレイヤーのデスクトップに ゲーム進行中のバーチャルチェスボードや バーチャルペットがいるかもしれません どのアプリも共存しており プレイヤーは自由に インタラクトすることができます Full Spaceでは ゲームに専念できます 他のウインドウやボリュームを閉じ あなたのコンテンツに集中する間 パススルーで周りの環境とのつながりを 維持できます アクションゲームに最適です ゲームをプレイしながら 実世界とインタラクトできるのです 宇宙船を壁の穴から 飛び込ませるのがその例です ゲームがすべての視野を占めるのが Fully immersiveな体験です 部屋の代わりに、別な環境があり 実世界は見えなくなります もちろん伝統的な2Dゲームも可能です バーチャルウインドウの大きさを 自由自在に変えることができます 垂直のウインドウだけに限られず 床に平らに置くことも可能です 壁にかけたり机に置いたり 目の前に巨大なスクリーンを 置くことも可能です iOS同様にプレイヤーは ゲームとインタラクトできますが 画面をタッチせず オブジェクトに目線をあわせ 指をタップし選択します iOS同様 Bluetoothコントローラーや キーボードを接続できます その場合パススルーで 手元のコントローラーを 見ることができます また2Dゲームに3D要素を足して 楽しさを膨らませることもできます 例えばウインドウに奥行きがあるので オブジェクトを別のレイヤーに描画し 立体効果を作り出せます また平面から煙や火花など エレメントを出すことも可能です またカスタムハンドジェスチャーを 足すことも可能です これらのオプションで可能性が広がりますね ゲームをデザインする際 これらの新しい可能性をゲームプレイに 取り入れてみてください 巨大な高解像度画面をつくったり 自分の部屋でプレイできる パーソナルなものであったり ゲームを机の上に表示できたり 壁に映したり 何かを飛ばしたり 手の上に着地させたり 周りの実世界を取り込んだり まったくの別世界を作り出すこともできます レンダリングとオーディオ及び入力は 他のプラットフォームとは異なります Shared Spaceでは ゲームのコンテンツはほかのアプリや システムインターフェイスや パススルーのコンテンツと共に描かれます レンダリングは一箇所で管理することで フレームワークはすべてのアプリの 共存を保証し 個別のレンダリングが他のアプリの 処理に影響しません このモードではMaterialXで surface shadersとgeometry shadersを 使用できます visionOSのレンダリングは 他とは少し違います すべてのピクセルではなく すべてのモデルとテクスチャー そしてシェイダーにおいて 対象としているもののみを描写します また デバイスがそれを自動的に それぞれの目に対してレンダリングします このレンダリングのもう一つの利点は dynamic foveationを応用して 解像度を増やせることです Dynamic foveationは プレイヤーが見ている箇所で 高い解像度を実現する技術です つまりシーン全体をレンダリングせず 追加の機能開発をすることなく その部分だけの解像度が鮮明になるのです デフォルトとして RealityKitは あなたのオブジェクトが 周りの実世界のオブジェクトに 現実的にブレンドするようレンダリングします RealityKitはプレイヤーの部屋の 実際の光をサンプリングし レンダリングするオブジェクトに適用します マテリアルには粗さや 鏡面や金属など 代表的パラメータを持つ 物理的ライティングモデルを使用します これによって リアルな見た目が可能になります でも現実的から空想的まで 希望のスケールを選ぶことができます 組み込み型のPBR shaderの代わりに MaterialXを使って 独自のshader contentを作ったり Reality Composer Proや その他のパッケージで shader graphを編集できます また独自の照明効果にIBLsを オブジェクトに割り当てられます またコンテンツに システムワイドのエフェクトを適用できます これにはゲームを他のアプリと協調させ プレイヤーを守る目的があります Depth Mitigationは環境内のオブジェクトに 隠れているコンテンツを少し透明にします オブジェクトが 浮かんでいる感じが避けられます Near-field vignettingは プレイヤーが近づくと コンテンツを薄れさせます これはコンテンツが 近くの平面に切り込むのを避けます Breakthroughは視野に 接近する人物を現せて 気づかずに衝突するのを避けます さらに、オブジェクトが 実在する物の近くに置かれた時 grounding shadowsが足され シーンに調和されている感じを作り出します Fully immersive はShared Spaceと似ていますが パススルーや他のアプリと 画面を共有する代わりに あなたのアプリだけが表示されます このモードでは実世界の代わりに あなたが周りの環境を作り出します このモードのレンダリングは Shared Spaceに似ています シーンを描写し それをデバイスが表示します あなたが見えるすべてをコントロールできるので 自由にデザインできます 例えば実世界の 照明環境を適応する必要はありません 自由自在に明るさも調整できるのです デバイスの強みはShared Spaceにもありますが プレイヤーを別世界に導いて イマーシブな体験も提供できます 独自のエンジンを書くなら CompositorServices APIが visionOSのMetalレンダリングに アクセスを提供します ARKitと連携させて world trackingと hand trackingで イマーシブな体験を創造できます このモードでは画面にフルアクセスでき それぞれの目に対して シーンをレンダリングします 全カスタムのMetal shadersと post processorsを使用できます これで実世界コンテンツを バーチャルコンテンツに 置き換えることができます パススルーや他のアプリは表示されません これに関する詳細は Discover Metal for immersive appsを ご覧ください オーディオもイマーシブになります visionOSは空間オーディオで プレイヤーのスペースの オブジェクトに命を与え 実世界の部屋の音響にマッチさせます AVAudioEngineなどの 基本iOS audio APIsで オーディオを再生すれば オーディオはアプリウインドウと 相対的に位置をとります。 プレイヤーの空間にあるオブジェクトから オーディオを出したいなら RealityKitで特定のエンティティーから オーディオを再生できます またAppleやほかのAPIで 独自のオーディオを設定できます ヘッドトラッキングを使用したい場合 ARKitでプレイヤーの頭の位置を測定します グラフィックとオーディオに加え インタラクションも イマーシブな体験の大切な一部です ゲームには入力が必要で このプラットフォームは 幾つもの入力方法を提供します オブジェクトに対する入力イベントは SwiftUIで提供されるドラックや拡大などを 基本システムジェスチャーで行えます これはphysics collisionに基づきます ジェスチャーを可能にするには collision shapeを提供する CollisionComponentと インタラクティブだと示す InputTargetComponentが必要です 空間入力はプレイヤーにとって 魔法のようですが ほかの入力方法もあります ゲームコントローラーもそうです Look & Tapジェスチャーは 自然的に感じますが 視線は一つだけしかなく タップ・ピンチや掴むことは 両手でしかできません 更なる入力が必要なゲームもあります その解決策の一つが Bluetoothコントローラーです さらにvisionOSはコントローラーに加え トラックパッドや マイスやキーボードをサポートしています 伝統的なゲームに最適でしょう visionOSは独特な入力方法もサポートします 身体をコントローラーとして使うのが その例です ハンドトラッキングで物を掴んだり 指で物を指したり空手チョップなどの カスタムジェスチャーも導入できます ARKitでハンドトラッキングにアクセスし デバイスがプレイヤーに 許可を求めます 位置情報やマイクのアクセス許可と 同様です この入力方法の場合 考慮すべきことがあります 手はカメラの範囲内でしか トラッキングできません また素早い動きはトラッキングが困難です それらを考慮してください Full Spaceの場合 scene understandingをリクエストできます Scene understandingは バーチャルメッシュで プレイヤーの周りの部屋を描きます またplane detectionで 垂直・水平面を検出できます またカーペットや床板など 材質も検出できます つまり部屋そのものを 入力方法として使用できるのです ハンドトラッキング同様 プレイヤーの許可が必要です あなたのゲームにとって どの入力方法が最適かよく考慮してください 入力にプレイヤーの身体を使うのは ゲーム世界に引き込むのに最適です しかし両手でのジェスチャーは 疲れる動作であるのも確かです 長時間のプレーが必要であったり 素早いアクションが必要なら 間接的ジェスチャーや視線の使用も 考慮してみてください そうすればプレイヤーは 両手を膝の上で休ませ Look & Tapを活用することができます デバイスは毎日使用するためのものであり 快適さが重要になります 伝統的なゲームコントローラーも 理に適うかもしれません このプラットフォームはほか同様 マルチプレイヤーやネットワーキングを サポートしています ウェブベースや低レイヤーのソケットベース マルチピア接続が利用できます またSharePlayでより親密な交流が 簡単に行えます またこの素晴らしいデバイスと iPhoneやiPadを使用するプレイヤーと ネットワークで結ぶことも可能です 例えばドミノゲームなどでは iPadを持つ友達はゲームを2Dで あなたは3Dで イマーシブな体験ができるのです ゲーム用デバイスとして 使用するための ゲーム開発用フレームワークをご紹介します 幅広い流通目的の2Dゲームを作りたいか イマーシブなゲームを作りたいかによって 違ったオプションがあります イマーシブのためのフレームワークRealityKitや Metalに直接書いたり Unityの使用も可能です すでにiPhoneやiPad用ゲームつくっている場合 多くはそのままで Look & Tapを使って バーチャルウインドウ内で プレーできます これは互換性のある3Dゲームも同様です デバイスの平面ウインドウでプレーできます ゲームを立体表示したい場合は Spatial computing APIsを使用します 互換性のあるゲームもすばらしいですが デバイスをフルに活用したいなら 専用ゲームを作ることをおすすめします そうすればジェスチャー入力や perspectiveやvolumetric smokeなど 2.5Dエレメントを使用できます デバイス用の2Dゲームの制作には SwiftUIやSpriteKitなどの 2Dフレームワークを使用できます UnityでvisionOS用ゲームを 作ることもできます これは既存のUnityゲームをポートしたり Unityデベロッパである場合に 最適のオプションです Unityについてさらに学びたい場合は Bring your Unity VR app to a fully immersive spaceか Create immersive Unity appsを ご視聴ください 最後にRealityKitです これはイマーシブ空間体験のための リアルタイム レンダリング・フレームワークです APIにはvisionOS用の 3Dゲームを作る素晴らしい新機能が たくさんあります RealityKitは素晴らしいゲーム作りの あらゆる機能をサポートします カスタムビヘイビアのための entity component systemや 物理・アニメーション・パーティクル オーディオにおける拡張性などがあります レンダリング面では USDモデルとカスタムメッシュの 両方をサポートします オブジェクトのグラウンディングには MaterialXとIBL lightingがあります 新機能のAttachmentsは rich SwiftUIをRealityKitオブジェクトに 直接コネクトします SwiftUIを使えば パススルーとレンダリングされたコンテンツを Windows Volumes Spaces AnchorsやPortalsなどの機能を使い 様々な方法でミックスできます 入力にはシステムジェスチャーや ARKitでハンドトラッキングや scene understandingに アクセスできます visionOS用のゲームを作成するために visionOSテンプレートから 新しいXcodeプロジェクトを作ります これによりRealityViewを含んだ SwiftUIウインドウが与えられます SwiftUI階層内のRealityViewには ゲームの3Dレンダリングと シミュレーションが含まれます SwiftUIに不慣れなら 少し学ぶことに価値があるでしょう デフォルトとしてあなたの3Dコンテンツは ウインドウによる volumetric boxに現れます コンテンツはウインドウ内にあり ウインドウごと移動します RealityKitはSwift APIです Swiftはゲーム作りに適した言語ですが ほかの言語も使用できます Swift APIとの間に ブリッジを作ればいいのです XcodeにはSimulatorがあります デバイスなしにすぐにゲームを 作り始めることができます もちろんデバイスを使って テストするのが一番です デフォルトとして3Dコンテンツは SwiftUIウインドウに表示されます ゲームデベロッパとして まず最初にそのウインドウの枠を出て プレイヤーの周りに コンテンツを描いてみましょう いくつかのオプションがあります Volumesを使用できます Volumesはウインドウに似ていますが 一つ違いがあります ウインドウはプレイヤーが大きさを決めます コーナーをドラッグして大きさを変え コンテンツはそれに適合せねばなりません ウインドウがコンテンツより小さいと コンテンツの一部が切れてしまいます Volumesはその逆になります Volumesの場合 "この大きさでこの高さで この奥行きのボックスが欲しい”と言うと プレイヤーはどこにでも そのボックスを置けますが ボックスの大きさは変わりません つまり十分大きなボックスの中に 体験すべてを収めることができ コンテンツの一部が切れることはありません ボックスを使いたくないなら スペースを使えます この場合 プレイヤーの周りの実世界に コンテンツをレンダリングします 例えばプレイヤーの周りを 蜂で覆うことができます ゲームのタイプによって 違ったスペースがあります Shared Spaceで ほかのアプリと実行したり Full Spaceの場合は あなたのゲームだけを実行します Anchorsは実世界のオブジェクトと シーンを連動させ 動きに従わせることができます horizontalとvertical surface anchorで 机や壁にエンティティーを 貼り付ることができます またhand anchorsでコンテンツを プレイヤーの手に取り付けることもできます Portalsはプレイヤーの実世界に穴を開け 空想的現実を作り出すこともできます 実世界の壁にポータルを設置し そのポータルに穴を開けさせ レンダリングされた世界を 覗き見ることができます ポータルの中に何でもレンダリングでき ポータル内から オブジェクトを実世界に 取り出すこともできます RealityKitはUSDファイルを 読み込みレンダリングできます Volumetric contentを 簡単に始める方法の一つが 既存のオブジェクトで シーンを作ることです しかしvisual toolが必要です Reality Composer Proは Xcodeに含まれているツールです USDモデルを読み込み デバイスでどう見えるかプレビューできます Reality Composer Proで オブジェクトを作る時 アセットは自動的に デバイス用に最適化されます Reality Composer Proについては これらをご視聴ください このセッションが ゲーム作成のロードマップになればと 思っています フレームワークに関する これらのセッションもぜひご覧ください このプラットフォームは 交流やゲームに最適です みなさんのアプリ開発を楽しみにしています ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。