ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
新しいゲームコントローラへの対応
iOS 13、macOS Catalina、tvOS 13のGame Controllerフレームワークでは、広く知られている複数のコンソールゲームコントローラに新たに対応しています。このセッションでは、新しく追加されたコントローラと、入力の伝達方法について説明します。また、オプションのボタンを処理するために推奨されているベストプラクティスと、macOSへの対応における適切なアプローチも紹介します。
リソース
関連ビデオ
WWDC20
-
ダウンロード
(音楽)
ゲームテクノロジーチームの ジェームズ・ケリーです Game Controllerフレームワークに ついて 今年導入された新機能や 変更点を説明します
Game Controllerフレームワークは iOSやtvOS macOS用ゲームの MFiコントローラをサポートします コントローラハードウェアを 共通APIで抽象化し コードを1回書けます データのマッピングは 心配無用です
今年 サポートするコントローラが 追加されました まず MicrosoftのBluetooth対応 Xboxワイヤレスコントローラ ゲームとのシームレスな統合が 可能になりました 更にはSonyの DuakShock 4コントローラも 新たにサポートされます フレームワークを通じ コントローラ対応の どのゲームにも使えます
コントローラ対応の 優れたゲームが多くあります 「レイマンアドベンチャー」 「Transistor」 「Sky Force Reloaded」 「Alto's Adventure」 App Storeにあるほんの一例です フレームワークを使えば Xboxワイヤレスや DualShock 4コントローラが使えます プラットフォームはiOS 13 tvOS 13 macOS Catalinaです
この動画ではコントローラの参照方法や インプットへのアクセス― MFi対応などの UIのベストプラクティスを紹介 古いフレームワークを使った― macOSゲーム用の アップデート方法もお勧めします
まずは 新しいコントローラ対応への 変更点です
フレームワークを使用中のゲームは 無償で対応します MFiコントローラ対応なら Xboxワイヤレスや DualShock 4コントローラも使えます
インプットのアクセスは GCControllerの GCExtendedGamepadProfile経由です
初心者のためにコントローラの 検出方法を説明します コントローラはGCControllerという クラスで表示されます このクラスはMFi他 すべてのコントローラで同じです シリアルリモートも GCControllerのインスタンスです
まず接続中のコントローラの リスト取得 GCControllerの コントローラクラスメソッドを使うと 全コントローラの インスタンスのアレイが返ります 接続がなければアレイは空です App起動時に確認し 必要なら接続を
App動作中 コントローラの オンオフはよくあります ゲーム起動後にオンになったり 電池切れや圏外になったりする場合です
オブザーバを追加して GCControllerの接続と切断の 通知を取得します application did finish launching with optionsメソッドがお勧めです
コントローラの インスタンスを取得しました ボタンや他のインプット アクセス方法を説明します
コントローラの インプットのおさらいです トリガが2つ 方向パッド スティックが2つ
メニューボタン 4つのフェイスボタン プログラム可能なLEDが4つ 2つのショルダーボタン
実際のボタンと APIのマッピングです フェイスボタンの例です ゲームパッドプロファイルにある― 4つのプロパティのリストです 4つのフェイスボタンは ここにマッピングされます Xboxワイヤレスコントローラも 同様です
DualShock 4は少し違います 文字の代わりに シンボルでボタンが表示 インプットのマッピングが あいまいな場合 マッピングに 等価位置の概念を使います
4つのフェイスボタンが ひし形で配列されるとします 下のXボタンはMFiコントローラの Aボタンと同じ位置なので マッピング先はAボタンです
右側の○ボタンはBボタン… という風に続きます
次はL3とR3と呼ばれる クリッカブルなスティックです
対応しているのはiOS 12.1や― tvOS 12.1 macOS Mojave 10.14.1です XboxワイヤレスとDualShock 4は クリッカブルですが MFiコントローラの一部は違います ではコード例を見ていきましょう
L3のクリックで キャラクターを屈ませます
OSが古いバージョンの場合は 対応するAPIがあるかを まず確認します
しかし 実際のコントローラに クリッカブルなスティックが ない場合は? 左スティックが 新しいか確認します その場合 “屈ませる”という L3にマッピングする操作が 他の方法でも 実行可能にします
クリッカブルなスティックがあるなら L3のプレスハンドラに割り当てます これで 左スティックで 操作がトグル可能に
このAPIがないバージョンのOSで ゲームしている場合 代替パスのコードが必要です
XboxワイヤレスとDualShock 4の APIに追加されたボタンがあります 補助ボタンといって 一般的にコントローラの中央にあります
まずメニューボタン ポーズメニューの表示や プレイのポーズ用です 全コントローラにあります
次にOptionsボタン 汎用ボタンですが スピード重視の用途は避けましょう 離れた位置にあるからです 未搭載の場合もあります
既存のMFiコントローラに 新APIをマッピングしましょう
メニューボタンは GCExtendedGamepadの buttonMenuプロパティに対応
このコントローラは Optionsボタンがないので buttonOptionsプロパティは空です
次はXboxワイヤレスコントローラ
複数の補助ボタンがある場合 マッピングに等価位置を使います
この例では 右の補助ボタンはメニューボタンで buttonMenuに マッピングされます
左の補助ボタンはビューボタンで buttonOptionsにマッピングされます
中央のXboxボタンは システムで予約済みです
DualShock 4も アプローチは同じで― ボタンマッピングに等価位置が使えます
右のDualShock 4の Optionsボタンは buttonMenuにマッピング
一方 左のDualShock 4の ビューボタンは buttonOptionsに マッピングされます
中央のPSボタンも予約済みです
controllerPausedHandlerは 非推奨です 代わりにbuttonMenu APIを 使ってください このコード例を見てみましょう
メニューボタンで ゲームのポーズや解除をします iOS tvOS macOSの 古いバージョンの場合 まず メニューボタンのAPIが あるかを確認
あれば― extendedGamepad.buttonMenuに pressedChangedHanderを登録します
ハンドラ内でポーズメニューを トグルします ゲームをポーズする場合 迅速さが必要なので ボタンを放すより押すことで 動作をトリガします
この新APIがなくても 旧controllerPausedHandlerで 機能を登録できます メニューボタン押下でトリガされます
メニューボタンの説明でした 次にOptionsボタンですが 全部のコントローラに 搭載されていません こちらのコード例も見てみましょう
Optionsボタンで ゲーム中の設定メニューを呼びます
OSのバージョンが古い場合 まず このボタンがあるかを確認
実際にOptionsボタンが ないこともあります Optionsボタンが新規か確認し そうなら 他の手段で 設定メニューにアクセスが必要です ポーズメニューの項目にするのも 一例です
Optionsボタンがあれば buttonOptions.pressed ChangedHandlerに動作を割り当てます Optionsボタンのクリックで 設定メニューをトグルできます
新APIがなければ 設定メニューにつながる別のパスが 必要です Game Controllerフレームワークに 今年導入された新APIの概略でした
次はコントローラごとの UIベストプラクティスです ユーザに最高のゲーム体験を 届けましょう
Game Controllerフレームワークを 拡大したことで 新たな課題があります ボタンやインプットの見た目が コントローラ間で違うことです Bボタンは MFiコントローラと一致しますが Xboxワイヤレスではボタンは赤 DualShock 4は○です
これをどう扱うか説明します 例えば 機能紹介で ブロックの方法を― ゲーム中に表示するとします ここではブロック機能は GCExtendedGamepadの Bボタンにマッピングされています
MFiコントローラでは Bボタンを表示します
しかしXboxワイヤレスは微調整を加え Bボタンを赤にします
DualShock 4使用時には ○ボタンを表示します 使うコントローラに関係なく プロンプトを理解できます そのためのコード例を見ましょう
getBlockButtonAssetは 該当のアセットを返します
まずはプロダクトカテゴリを変更 コントローラの種類を決定する 今年の新プロパティです Xboxワイヤレスの場合は 赤のBボタンアセット
DualShock 4では 赤の○ボタンアセットを返します 最後はデフォルトで MFiの緑のBボタンアセットです こうして いろいろな MFiコントローラに対応し 将来 追加されるものにも 対応するでしょう ブロックの例に戻ります コントローラごとに アセットを作る代わりに 汎用シンボルを 使うやり方もあります
等価位置にのみ依存する 汎用プロンプトで ゲーム内ガイダンスを コントローラに関係なく理解できます 右のボタンを押せばいいのは 明らかです
最後に 複数のコントローラを 同時に接続する場合です それらに対応し 切り替えができるようにしましょう 各コントローラの インプット認識のため フレームごとに引くか インプットハンドラを登録します また最後に使ったコントローラに ガイダンスなどを合わせます
MFiコントローラを使用中なら MFiアートアセットを表示 DualShock 4のインプットなら 自動的にDualShock 4の アートアセットを使います 最後のコントローラに ビジュアルを合わせることで 直感的な操作性が提供できます
macOSで以前のゲームコントローラを 実装している場合は 新たな案内事項です
Game Controllerフレームワークを 採用するだけで MFi Xboxワイヤレスなど 新しいコントローラが使えます ハードウェア間の違いに関わらず iOS tvOS macOS間で Appに統一性を持たせます これにより将来のOSアップデートにも 適合できます
IOKitなど下位のAPIで ハードコードした方は Game Controllerフレームワークへの 移行をお勧めします 新コントローラは 両方に対応しますから 競合しないよう IOKitの方を削除してください 単一インターフェイスにコード化し 新しいサポートも無料です
では動画のまとめです
Game Controllerフレームワークは 共通APIを通じハードウェアを抽象化 コントローラのレベル差を心配せず コードを1回書けます つまりXboxワイヤレスや DualShock 4などの― 新コントローラに 自動的に対応できるのです ですがユーザに 最高の体験を提供するには 使用中のコントローラに合わせ ゲームのUIを変えます 最後に 将来のOSアップデートに 適合するよう Game Controllerフレームワークへ 移行しましょう 詳細な情報は Appleデベロッパサイトを
以上がゲームコントローラの 更新情報でした ぜひ参考にして 素晴らしいゲームを作ってください
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。