ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Game Centerでのルールベースのマッチメイキング
新しいルールベースのマッチメイキング機能をリアルタイムのマルチプレイヤーゲームに組み込む方法を紹介します。カスタマイズされた柔軟なマッチメイキングを提供し、プレイヤーのマッチの質を向上させ、すべてのプレイヤーにとってより楽しく魅力的な体験を生み出す方法を確認しましょう。
リソース
- App Store Connect API
- Generating JSON Web Tokens for API requests
- Matchmaking rules
- Metrics
- Python script to test your matchmaking rules using the App Store Connect API
関連ビデオ
Tech Talks
-
ダウンロード
こんにちは Philip Smithです Game Center Services Teamで エンジニアをしています
Game Centerのルールベースの新しい マッチメイキング機能について説明します
この機能は ゲーム用のマッチメイキングを カスタマイズするものです これによりマッチの品質が向上し より魅力的で公平なゲーム体験が 実現します
Game Centerのマッチメイキング機能の 概要から説明します この機能を使用すると リアルタイム マルチプレイヤーゲームのプレイヤーが ほかのプレイヤーを見つけて つながることができます さらにルールベースのマッチメイキングを 設定する方法を説明します
始めます
マッチメイキングを通じてプレイヤーに 楽しく魅力的な体験を提供できます プレイヤーを魅了できれば 長期間にわたって ゲームをプレイしてもらえます
ゲームにはそれぞれ違いがあるため マッチメイキングの ユースケースも様々です
独自のルールを備えた特別な ゲームモードを作成して パーソナライズされた ゲーム体験を提供したり
スキルレベルや設定に基づいて プレイヤーをグループ化して 公平でバランスの取れた対戦を 実現したりできます
これにより不満や退屈につながる ゲームのミスマッチを回避できます 一部のゲームモードでは チーム同士が対戦する場合があり バランスの取れたチームを編成して ゲーム体験が一方的に なることを避ける必要があります
ほかにも パーティーコードを使用して 友人やより幅広いソーシャルグループに プライベートマッチを設定する ユースケースがあります しかし 対戦が決まるまでの 待ち時間が長いと プレイヤーの不満につながります したがって 待ち時間とマッチ品質の バランスを保つために 制約を緩和できることが重要です
Game Centerの従来の マッチメイキングでも プレイヤーがリアルタイム マルチプレイヤーゲームで ほかのプレイヤーを見つけて つながることができます 一方 ルールベースのマッチメイキングでは より多くのことができます
公平でバランスの取れた対戦のための カスタムルールを提供したり 時間に合わせて制約を緩和する 機能を提供したり ルールを簡単に更新して実際の 使用パターンに合わせたりできます
マッチメイキングシステムの各部分が どのように連携するか見てみましょう
Game Centerの従来の マッチメイキングシステムは プレイヤーのマッチ方法に関しては ブラックボックスです この例でAliceとBobは今すぐ プレイしたいと考えています ゲームはGameKitを通じて 対戦リクエストを送信します GameKit APIを使用すると ゲームは 対戦のリクエスト先を 同じプレイヤーグループ内に制限できます Game Centerがマッチを見つけると すぐにGameKitに通知され
デバイス間でのリアルタイム接続の 作成が開始されます 本日はブラックボックスを開けて ルールベースのマッチメイキングの 詳細を説明します ゲームでプレイヤーの マッチング方法をカスタマイズし より良いプレイヤー体験を 実現できるでしょう
App Store Connect APIを使用すると ゲームに最適なルールを設定できます ゲーム側では 対戦リクエストキューを 指定するためのAPIと ルールで使用する プレイヤーのカスタムプロパティが GameKit SDKを通じて提供されます
Game Centerサービスでは ルールを使用してキュー内の リクエスト間のマッチを見つける アルゴリズムを定期的に実行します
マッチが見つかるとGameKitに 通知され デバイス間のリアルタイム接続の作成が 開始されます
ルールベースのマッチメイキングでは Game Centerが提供するマッチメイキング フレームワークを使用して ゲーム用にカスタマイズしたキューと ルールセットを設定できます 強力なルール言語を使用して マッチメイキングの制約を表現できます GameKitが提供するゲーム向けの 新しいAPIを使用すると ルールで使用するカスタムのプレイヤー プロパティを含めることができます またデベロッパツールを使用して サンプルリクエストでルールをテストしたり 実際の プレイヤー体験を理解するのに役立つ メトリックスを取得したりできます
ルールベースのマッチメイキングを設定 テスト 観察する方法を説明します
ルールベースのマッチメイキングを 設定するには6つの手順があります 1つずつ見ていきましょう 最初の手順はApp Store Connect APIを使用するための準備です
ルールの設定には App Store Connect APIの RESTエンドポイントを 使用します これに 精通していれば簡単に理解できます APIにアクセスするには 組織のApp Store Connect アカウントを使用して プライベートAPIキーを 作成する必要があります APIの呼び出しには認証用の JSON Web Tokenが必要です App Store Connect APIの APIキーを作成する方法と 認証トークンを生成する方法については Apple Developerドキュメントを 参照してください 次に ルールセットを作成し ルールを追加して マッチメイキングをカスタマイズする 手順を説明します
スキルベースのマッチメイキングを 検討するユースケースです スキルレベルの近いプレイヤーとの 対戦を提供すれば より良いゲーム体験につながります ただし 最大スキル差に厳しい条件を課すと 対戦が組まれるまでプレイヤーが 長時間待たされる可能性があります 待ち時間の経過に応じて最大スキル差を緩和し 待ち時間とスキル差のバランスを 調整できればゲーム体験が向上するでしょう ルールベースのマッチメイキングでは 時間の経過とともに制約を緩め マッチの質と待ち時間の バランスを確保できます この例ではキューにスキルレベルの異なる 3人のプレイヤーがいます このゲームの対戦に適しているのは スキル値の差が20以内の プレイヤーだとします 現時点ではこの制約を満たす プレイヤーはいません 5秒待ってから必要な最大スキル差を 40に拡張したいと思います するとスキルが20と45のプレイヤーが マッチすると考えられます
ただしここで キルが45の プレイヤーが離脱して リクエストをキャンセルしたとすると 残りのプレイヤーでは対戦できません
そこで再び スキル範囲を拡張します 例えば さらに5秒待ってから 最大スキル差を100まで拡張し プレイヤーが確実に対戦できるようにします これで対戦が組まれます プレイヤーは待たされましたが 対戦が組まれ ゲームを楽しむことができます 次回はきっとスキルが近いプレイヤーと 対戦できるでしょう 組織のルールセットとルールを 設定するには App Store Connect API エンドポイントを使用します ここではルールセットを設定するために gameCenterMatchmakingRuleSets エンドポイントを使用しました このゲーム用にSkillBasedRules というルールセットを作成しています
ルールセットにルールを追加するために gameCenterMatchmakingRules エンドポイントを使用します このゲームには互換性のない 複数のアプリバージョンがあるため マッチには互換性のあるアプリバージョンを 必要とするルールも追加します
遅延が小さいプレイヤーを優先する 別のルールを追加します 最後に 対戦するプレイヤーが 所定範囲のスキル値を 持つことを求めるルールを追加します リクエストの内容を詳しく説明します ここではまず ルールを含むルールセットを 作成し 参照名
プレイヤーの最少人数 最大人数を渡します
これらのプロパティはこのゲームに固有です ルールセットとキューは App Store Connectのプロバイダ組織に 関連付けられているため ゲームバンドルIDの逆引きドメイン名の プレフィックスを使用して ルールセット名の競合を回避することを お勧めします これが応答です 新しく作成した ルールセットのIDが含まれています これは後続のAPI呼び出しで ルールを追加し キューを作成するために必要です 次に gameCenterMatchmakingRules エンドポイントを使用して ルールを追加します ここではSkillDifferenceルールの 詳細だけを示します
作成したルールセットにルールを追加し 最後の応答のIDを参照します ルールタイプをMatchにします
説明を追加します
ルールに名前を付けます
最も重要なのは評価される式です
式の構文にはオープンソースの JSONクエリ言語である JMESPathを使用します
この式について少し説明します これは比較であり 左側の値が右側の値以下であるかを 確認しています
左側はdiff関数で 現在の候補リクエストの最低スキルレベルと 最高スキルレベルの差を計算します 右側は固定値20です
この式では最大スキル差が20の 対戦リクエストを要求しています この式は初期テストでは問題ありませんが 実際に使用すると一部のプレイヤーは 対戦まで長時間待つことになるでしょう
リクエストの時間経過に応じて スキルの範囲を拡大し 適切な時間内にプレイヤーが 対戦を組まれ ゲームを楽しめることが必要です それには別の式が必要です
ルールを更新するために gameCenterMatchmakingRules エンドポイントと PATCHメソッドを使用します
この操作のURLとコンテンツには ルールのIDが必要です
更新された説明と更新された式が
含まれています 今度はより適切に機能するはずです
式は複雑になっています
左側の比較には変更がありません
右側はagedValuesという関数になり 候補リクエストの平均経過時間に応じて スキルの範囲を拡大します 最初のパラメータは候補リクエストの 平均経過時間です
次のパラメータは リクエストの経過時間が5秒未満の場合に 適用する初期スキル範囲20です
次のパラメータは拡大した スキル範囲値の配列です 40は最初に拡大するスキル範囲を示し 経過時間が5秒以上10秒未満の場合に 適用します
100は2回目に拡大するスキル範囲を示し 経過時間が 10秒以上の場合に適用します
最後のパラメータはスキル範囲を 拡大する基準となる 経過時間の境界値の配列です 5秒と10秒に設定しています
次に ルールセットをテストして 意図した通りに動作するか確認します
App Store Connect APIの gameCenterMatchmakingRuleSetTestsは アプリと統合する前にルールのテストと 検証を行うために提供されています エンドポイントに必要な コンテンツは非常に冗長なため スクリプトを使用して 複雑さを隠すと便利です 入力がはるかにシンプルになり ルールをより効率的にテストできます
この動画に関するリソースのリストを確認し Pythonスクリプトを ダウンロードしてください gameCenterMatchmakingRuleSetTests エンドポイントを含む App Store Connect APIの 使用方法の詳細は App Store Connect APIに関する Apple Developerドキュメントを 参照してください testrules Pythonスクリプトの 使用例を示します
事前に作成したルールセットのIDを 使用してスクリプトを実行しています
キューに3つのリクエストがあります 最初のリクエストはスキルが10で キューに入ったばかりです 2番目のリクエストはスキルが50で キューに入って5秒が経過しています 3番目のリスクエストはスキルが90で キューに入って10秒が経過しています 先ほど設定したルールでは 新しいリクエストの場合には スキル差が20以下 5秒以上キューに入っている リクエストの場合には スキル差40以下を要求していました 最初と2番目のリクエストは マッチするでしょうか スキル差が 20を上回るためマッチしません 2番目と3番目のリクエストは マッチするでしょうか スキル差が40ですが キューに入ってから 5秒経過しているのでマッチします 出力は2番目と3番目のリクエストが マッチしたことを示しているため ルールは期待どおりに機能しています
もちろん その他のテストケースも実行して ルールが適切であることを 確認する必要があります
次の手順はリクエストの キューを設定することです
設定を中断した場所を思い出してください ルールセットとルールを作成しました ルールをテストしたところ 期待どおりに機能しています そこで gameCenterMatchmakingQueues エンドポイントを使用して ルールセットに関連付けられた アプリリクエストのキューを作成します ここではそれをSkillQueueと呼びます
作成したルールセットに 関連付けられたキューを 作成するために必要なコンテンツを 詳しく説明します ルールセットIDを参照し キューに適切な名前を付けます ルールセット名と同様に 逆引きドメイン名のプレフィックスを キュー名に使用します
マッチメイキングルールに関する App Store Connect APIの 設定は以上です 次に ルールベースのマッチメイキングと 統合するにあたって アプリに追加するコードについて説明します
既存のGameKitフレームワーククラスの GKMatchRequestとGKMatchを 使用します
これらにはルールベースの マッチメイキングをサポートするための 新しいオブジェクトプロパティ queueNameとpropertiesが含まれています
GKMatchRequestオブジェクトを 作成するコードをアプリに追加します また スキルレベルキューと プレイヤーを見つけるための 一連のルールを使用するために マッチメイキングルールの プロパティを設定します
キュー名のプロパティは 以前に作成した キューの参照名に設定します GKMatchRequestの リクエストプロパティを ルールの式で使用する値を提供する キーと値のペアの辞書に設定します ここでのルールでは ローカルプレイヤーのスキル値に 1つのプロパティのみを使用します
GKMatchmakerメソッドを使用して 対戦リクエストを送信し ユーザーインターフェイスを 表示せずにマッチを見つけます または GKMatchmakerビューを表示して マッチを見つけることもできます
最後の手順はマッチメイキングルールが 実際のプレイヤーに対してどのように 機能するかの観察です
App Store Connect APIの メトリックスエンドポイントを使用して マッチメイキングルールの 問題を診断できます メトリックスには結果ごとの リクエスト数が含まれます 結果はマッチ キャンセル または期限切れです さらに 結果に至るまでの時間 キュー内のアクティブなリクエストの数 ルール評価のエラーと結果に関する メトリックスもあります これらのメトリックスデータを 取得する時間粒度は 8時間に対して15分単位 24時間に対して1時間単位 または 30日間に対して1日単位に設定できます
Game Centerがマッチを見つけるのに 時間がかかりすぎる場合や マッチを見つけられない場合は Apple Developerドキュメントの記事 「メトリックスを使用した マッチメイキングルールのトラブル シューティング」を参照してください
この例のクエリは リクエストのキュー内の カウントと時間を1日の粒度で 返します 応答には日時範囲とメトリックス値を持つ データポイントが含まれます スクリプトを使用すると 応答データをグラフに変換して マッチメイキングルールがプレイヤーに対して どの程度うまく機能しているかを 確認できます
ルールベースのマッチメイキングに 関する新しい情報は以上です
この新機能は現在利用可能です この素晴らしい新機能をご活用ください
各機能の使用方法については Apple Developerドキュメントを 参照してください
皆さまからのフィードバックを お待ちしています Game Centerの機能に関する ご要望がありましたら Appleのフィードバックアシスタントを 通じてお知らせください ご視聴ありがとうございました
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。