問題タブ [gkmatchmaker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xcode - GameKit Match - iOS5 と iOS6 の間で友達を招待
2 人用のリアルタイム ゲームで Game Center の招待を実装しようとしています。招待はシミュレーターではサポートされていないため、iOS5 を実行する 1 つのデバイスと iOS6 を実行する 2 つ目のデバイスでこれをテストしています (これは意図的に行われます)。
いずれかのデバイスで昔ながらの組み込みGKMatchmakerViewController
UI を使用して招待を開始した場合、iOS5 デバイスが招待を開始するときと iOS6 デバイスが招待を開始するときの両方の方法で問題なく動作します。
ただし、iOS6では招待するプレイヤーを独自のUIで選択したいので、属性GKMatchRequest
を設定してプログラムで招待を発行するために使用しています。playersToInvite
問題は、他の (iOS5) デバイスがプッシュ通知を受け取り、アプリケーションを起動し、[GKMatchmaker sharedMatchmaker].inviteHandler
.finishMatchmakingForMatch
さらに遠く。iOS5 マシンで他のハンドラー/デリゲートが呼び出されず、GKMatch
オブジェクトが返されず、両方のプレイヤーが「準備完了」とマークされ、「[iOS6 プレイヤー] がゲームを開始するのを待っています」というメッセージとともに Game Center UI が引き続き表示されます。 "。この UI の唯一のボタンは [キャンセル] ボタンです。
iOS6 マシンで招待状を送信するコード スニペットは次のとおりです。
iOS5 マシンの招待ハンドラーのコード スニペットは次のとおりです。
シーケンスは次のとおりです。
- iOS6
findMatchForRequest
は、iOS5 プレイヤー ID を使用してリクエストを送信します。 - iOS5 マシンにプッシュ通知が表示されます。
- アプリケーションが iOS5 マシンで起動され、
inviteHandler
が呼び出されます。 - は
GKMatchmakerViewController
招待の詳細とともに iOS5 マシンに表示され、iOS6 ユーザーは「接続中」ステータスで回転します。 inviteeResponseHandler
iOS6 マシンの が呼び出され、リクエストが送信されますfinishMatchmakingForMatch
。- iOS5 Game Center 画面での iOS6 ユーザーのステータスは、回転中の「接続中」から「準備完了」に変わり、この時点で両方のプレイヤーが「準備完了」としてマークされます。
- iOS6 マシンは
match: player: didChangeState:
コールバックを受け取り、iOS5 プレイヤーを として表示しますGKPlayerStateConnected
。iOS6 マシンに関する限り、マッチ プロセスは終了し、ゲームを開始できます。 - これ以降、iOS5 マシンでは何も起こりません。タイムアウトでキャンセルされるまで、「[iOS6 ユーザー] がゲームを開始するのを待っています」でスタックします。
GKMatch
どの時点でもオブジェクトを受信しないため、ゲームを開始できません。
プログラム可能な招待ではなく、iOS6 マシンで標準の Game Center UI を使用すると問題なく動作するため、ゲームを開始する必要があることを他のマシンに伝えるために、標準の UI がさらに何かを行う必要があることを意味します。しかし、関連するすべての Game Center オブジェクトをブラウズしましたが、他に送信するものは見つかりませんでした。
逆の構成 (標準 UI を使用して招待を開始する iOS5) は、両方のマシンで正常に機能することを再度言及する必要があります。
誰か助けて?
ios - iOSゲームセンターGameKitプログラマティック招待マッチメイキング
カスタムUI(GKMatchMakerViewControllerなし)を使用してリアルタイムマルチプレイヤーゲームを実装しようとしています。startBrowsingForNearbyPlayersWithReachableHandler:^(NSString * playerID、BOOL到達可能)を使用してローカルプレーヤーを検索し、GKMatchmakerシングルトン(既に開始済み)で一致要求を開始しています。
これが私が問題を抱えているところです。リクエストを送信すると、完了ハンドラーはエラーなしでほぼ即座に起動し、返される一致の予想プレーヤー数はゼロになります。その間、他のプレイヤーは間違いなくリクエストに応答していません
関連コード:
以前の質問( iOS Gamecenter Programmatic Matchmaking)から、これを含める必要があることがわかりました。
上記のコードでは、それをどこに含めるべきかわかりません。私はそれをGKMatchRequestinviteResponseHandlerとマッチメーカーfinMatchForRequest:withCompletionHandlerの両方で試しましたが無駄になりました。発生する動作は、マッチメーカーが即座に(招待者が招待される前であっても)一致を返し、招待者が一致の招待をタップした後でも、matchRequestinviteResponseHandlerが呼び出されないことです。
誰かがこれについてアドバイスを提供できますか?ありがとうございました。
...ジム
ios - ランク付けされた、または類似の対戦相手のマッチング
iOS Game Center で、スキルやランキングが似ている相手と対戦することはできますか? 経験値や合計スコアなどの範囲の値で対戦相手を一致させたい。iOS マッチメイキング システムを初めて使用します。アドバイスをありがとう。
私はいくつかの調査を行い、一致リクエストの playerGroup および playerAttribute プロパティを見つけました。これらのプロパティは、私がやりたいことに役立ちますか?
iphone - ゲームセンター、招待状の扱い方
私はマルチプレイヤーゲームに取り組んでいます。リスト、終了、および一致の作成には、私は使用しませんGKTurnBasedMatchmakerViewController
。したがって、すべての一致を表示するカスタム ビュー コントローラーがあります。
私の問題は、マッチの招待を処理できないことです。ビューを更新するために必要です。
シーン:
- アリスはゲームを起動し、招待リストを見て、対戦を受け入れるか辞退するかを考えます。
- ボブは新しい対戦の招待を送信します。
- Alice は通知センターから招待通知を受け取りますが、それをタップせずに消えます。
ここで、Bob の招待状をリストに追加する (および UI を更新する) 必要があります。しかし、招待について呼び出されるハンドラーはありません。
プレーヤーが認証された後にハンドラーを登録しようとしましたが[[GKMatchmaker sharedMatchmaker] setInviteHandler:]
、それが呼び出されたことはありません。
ios - ユーザーがゲームを閉じてから再び開いたとき、Game Center はどのようにマッチを管理しますか?
たとえば、応答するテキスト メッセージまたは通話がある場合、ゲームを再開した場合、ゲーム センターは、接続が切断されたことを通知するまでどのくらいの時間を与えますか? このタイムアウト値を変更することはできますか? サンドボックス モードと本番環境で違いはありますか?
ios - GKMatchmakerViewController デリゲート メソッドが呼び出されない
私はこれをデバッグするのに何時間も費やしたので、おそらく誰かの頭痛の種を救うためにここに投稿すると思いました!
ios - ネットワークゲーム:ターンゲームの扱い方(ラズル運営など)
iOS で ruzzle のようにマッチを処理する方法を知りたい: Game Kit Programming Guideを読みましたが、探しているものではないようです。
ruzzle では、1 人のプレーヤーがゲームをプレイでき、もう 1 人のプレーヤーもゲームをプレイできます。
GKTurnBasedMatch
一度に 1 人のプレーヤーしか移動できないため、そうではありません。
Real-Time Matches
? ただし、プレイヤーがプレイを受け入れてから切断した場合、最初のプレイヤーは終了して対戦相手の答えを待つことができますが、リアルタイムの試合ではそうではないようです
ゲームを保存する別のサーバーが必要ですか、それとも他の Apple API を使用できますか? ありがとう