問題タブ [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.
ios - 既に提示されている場合に GKMatchmakerViewController を閉じて、招待を受け取ったときに新しいインスタンスを提示する方法は?
次のデリゲート メソッドは、人が招待を受け入れると、gameKit によって呼び出されます。
これは、ユーザーがまだGKMatchmakerViewController
.
招待が届いたときにユーザーがすでに GKMatchmakerViewController を使用している場合、これは機能しません (例: ユーザーが既に一致を見つけようとしている場合)。この場合、招待が届いたときに次の警告が表示され、招待されたコントローラーは表示されません (表示されている matchmakercontroller が既に存在するため)。その結果、ユーザーは招待に応答できません。(何も起こりません)。
iOS6 では、次のようにしてこれを回避できます。
を作成しGKMatchmakerViewController
ます。dismissModalViewControllerAnimated:
iOS6 で廃止されました。代わりに使用することをお勧めしますdissmissViewControllerAnimated:completion:
が、私にはうまくいきません。これは私が試したものです:
if ブロックに入りますが、既存の GKMatchmakerViewController は閉じられず、新しいものは表示されません。if ステートメントにブレーク ポイントを配置すると、ブレーク後に「続行」すると、ビュー コントローラーは閉じられますが、新しいビュー コントローラーはポップアップしません。
どうすればこれを機能させることができますか?
ios - GKMatch - リアルタイム - 招待ハンドラー
プログラムでゲームセンターを使用してリアルタイムマルチプレイヤーゲームを作成しようとしています。inviteHandler
私の問題は、古いものが廃止されたため、ドキュメントが不足していることです。
最初に行うのは認証です。
その後、Apple ドキュメントに記載されているとおり、招待プロセスを開始します。
次のメソッドを実装しましたが、呼び出されることはありません。
他のプレイヤーが招待を受信して応答できるようにするにはどうすればよいですか? アップルのドキュメントでは、古い非推奨の方法が示されています。
ios - Game Center への招待を受信して処理しましたが、試合が開始されません
私は Game Center のコードで問題が発生し、研究を重ねて研究し、受け入れられている標準的なアプローチと思われるものを使用しています。どこで問題が発生しているのかわかりません。
私は 4 人用のカード ゲームを書いています。脱落したプレイヤーがいる場合は、ゲームに招待してもらいたいと思っています。
シナリオは次のとおりです。試合が行われており、すべてのプレイヤーがゲームに参加しています。1 人のプレーヤーがゲームから脱落します。指定されたホストは切断を検出し、 を使用してドロップアウトに招待を送信しaddPlayersToMatch
ます。ドロップアウトのinviteHandlerが最初に設定されており、発火します。ドロップアウトは招待を受け取り、標準コードと思われるものを呼び出します。
ドロップアウト マシンでは、MatchMakerViewController が適切に表示され、すでに試合に参加しているプレイヤーのみが表示され、すぐに「準備完了」とマークされます。ただし、コントローラーには「ゲームが開始されるのを待っています...」というメッセージが表示され、起動されdidFindMatch
ません。ゲームを開始するための UI はありません (唯一のボタンは左上の [キャンセル] です)。
奇妙なことは、ホスト マシンinviteeResponseHandler
が起動するため、ドロップアウトが戻ってきたというメッセージをホストが受け取ったようです。こちらに電話finishMatchmakingForMatch
していますが、何もしていないようです。
では、ドロップアウトに MatchMakerViewController を閉じるように指示するにはどうすればよいでしょうか?
髪を引き裂く!
ios - Swift の iOS 8 の startBrowsingForNearbyPlayersWithHandler()
現在、Swift で 2 人用の戦略ボード ゲームを作成しており、2 台の iPad をローカル WiFi または Bluetooth 経由で接続する必要があります。今日何を試しても、お互いを検出できません (ローカル WiFi と Bluetooth で試しました)。
これは、アプリが最初に起動したときに UIViewController で実行される認証コードです (これは常に ID と共に "Self local player is authenticated." を返します:
別のUIViewControllerで近くのデバイスを検出するコードは次のとおりです。
2 台の iPad (どちらも iPad 3 のモデル) で何をしようとも、どちらにももう一方が表示されることはありません。startBrowsingForNearbyPlayersWithHandler を正しく呼び出していますか?
また、上記の認証コードでは、次の投稿で推奨されている Objective-C の回避策を使用していることにも注意してください: Game Center not authenticateating using Swift。
また、ローカル WiFi を介して両方のデバイスで Spelltower を実行したので、ハードウェアは適切に機能しているようです。ここで何がうまくいかないのでしょうか?
ios8 - GKMatchRequest が「無効」になるのはいつですか?
まれではありませんが、まれにfindMatchForRequest:withCompletionHandler:
エラー 13 またはGKErrorMatchRequestInvalid
「マッチ リクエストが無効なため、リクエストされた操作を完了できませんでした」が返されることがあります。
ドキュメントには次のように書かれています:
GKErrorMatchRequestInvalid です
マッチ リクエストのプロパティを満たすことができません。たとえば、最小プレーヤー数を最大プレーヤー数より大きくすることはできません。iOS 4.0 以降で利用できます。
1回目の試行、つまりXcodeから起動した直後では決して発生しないと思いますが、2回目/3回目/...の試行でのみ発生します。デバイスまたはシミュレーターのいずれかで発生します。だから私は何か間違ったことをしていると思いますが、何ですか?が無効となる条件の完全なリストはありますか?GKErrorMatchRequestInvalid
GKMatchRequest
GKErrorMatchRequestInvalid
をリコールして から回復しようとしましたfindMatchForRequest:
が、成功しませんでした。一度 'invalid' を取得すると、それ以降の呼び出しもmatch
すべてfindMatchForRequest:
match
'invalid' で返されます。[[GKMatchmaker sharedMatchmaker] cancel]
と...の両方を使用してこれを改善しようとしていますが、有効なto[[GKMatchmaker sharedMatchmaker] finishMatchmakingForMatch:
さえありません。match
finishMatchmakingFor:
マッチメイキングはシングルトンで行われます (それが重要な場合)。関連するコードは次のとおりです。
ios - プログラムによる GKMatchmaker が他のプレイヤーを見つけられない
私はしばらくの間、独自の GKMatchmaker インターフェイス (GKMatchmakerViewController なし) を実装しようとして苦労してきました。GKMatchDelegate と GKLocalPlayerListener を実装する Ray Wenderlich チュートリアルに書かれている別の GameKitHelper クラスがあります。GKMatchmakerViewController を使用すると、招待とランダム マッチメイキングが問題なく機能しました。ただし、以下に示すように、「findMatchForRequest(... withCompletionHandler:. ..)」。特定の値をテストする println() がいくつかありますが、毎回 match.expectedPlayerCount が 0 に達することはなく、1 のままです。これは、「if matchStarted == false and match.expectedPlayersCount == 0」を意味します。が満たされることはなく、lookupPlayers() メソッドが呼び出されないか、マッチを開始できません。ボタンをクリックして呼び出される最初のメソッドは次のとおりです。
プレーヤーが接続したときに呼び出される GKMatchDelegate のプレーヤー状態変更メソッドは次のとおりです。
問題が見つかりましたらお知らせください。よろしくお願いいたします。私が現在遊んでいる可能性は 2 つあります: いくつかの異なる方法を使用してその試合に参加する他のデバイスとの 1 つの試合でのみ試合を作成する場所が必要です... または addPlayersToMatch(...) と finishedMatchmaking( ...) メソッドはどこかにあります。前もって感謝します!
ios - Game Center でプレイヤーが見つかりません。ゲームのテストが間違っていますか?
Xcode シミュレーターと iPhone でゲームを実行しています。検索を押すと、1 人のプレーヤーが既存のゲームに参加するのではなく、両方とも別々のゲームに入れられます。これはターン制のゲームで、Game Center が自動対戦している間にプレイヤーは最初のターンを行うことができます。サンドボックス設定をオンにして、2 つの別々の Game Center アカウントを使用しています。私が間違っているかもしれないことは何ですか?Game Center 対応のゲームを開発したことがある方へ、どのようにテストしましたか? 助けてくれてありがとう!
いくつかのコード:
ios - Swift で GKMatchmakerViewControllerDelegate を設定しているときにエラーが発生しますか?
viewController
ゲームのマッチメイキングを設定したいと思います。そのために、次のようになるように、という名前GKMatchmakerViewControllerDelegate
のメインにデリゲートを追加します。UIViewController
Home
マッチメイキング インターフェイスをロードするために、次のコードを使用しています。
class Home: ...
ただし、コードを実行しようとすると、次のエラーが表示されます。エラーメッセージには次のように記載されています。
なぜそれが起こっているのですか?