2017-02-17 9 views
1

私はGKTurnBasedMatchで他のプレイヤーに交換を送信しようとしています。私はそれを送信すると、私の完了ハンドラがこれらの記述と、大きなエラーメッセージが表示されます。GKTurnBasedMatchを実際に起動して交換を送信するにはどうすればいいですか?

The requested operation could not be completed because the session is in an invalid state. 
Game is not active, session state is Matching 

は、私はちょうど2つのプレーヤーがあるときに起動するのではなく、16人の選手の合計を許可するように試合をしたいです。当然私はmaxPlayers = 16minPlayers = 2と設定しています。私は2人のプレーヤーが座ったら自動的に試合を開始すると思っていたが、そうではない。

if match.participants?.count == 2 { 
     match.status = GKTurnBasedMatchStatus.open 
    } 

をしかし、私はstatusが読み取り専用であることを告げています:

マッチが2人の選手を持っていたら、私は、これを行うにしようとしました。手動で設定することはできません。

さて、通常のGKMatchで、私は正式に呼び出すことによって、試合を開始します。

GKMatchmaker.shared().finishMatchmaking(for: match) 

しかしGKTurnBasedMatchのための同様のブツがあるようには思えません。

実際に試合を開始するにはどうすればいいですか?2人のプレーヤーの間で交換を送ることはできますか?

答えて

1

男、GKTurnBasedMatchのマニュアルはです。

実際にはGKTurnBasedMatchを明示的に開始しません。あなたはエンドそれはexpliciltyです。

ゲームプレイ中に、1つのアクティブプレイヤーから別のアクティブプレイヤーに順番を渡すだけです。最初のプレーヤーが座ったらすぐに技術的にゲームが始まります。

私が持っていた問題は、他のアクティブなプレーヤーがいないときに私がターンを通過したことです。だから私は偶然Game Centerに空席にターンを割り当てるように言った。エラーメッセージが

Game is not active, session state is Matching 

私に言ったときにそれは現在の座席が空とまだそれを埋めるために選手を探していたことを意味しました。現在のプレーヤーのステータスがMatching(空席を示す)であれば、ゲームは明らかにアクティブ状態から外れます。

なぜ地球上でこれは、その全体の目的任意の選手、現在のプレイヤーがが私を超えている、あるどんなに間の通信を可能にすることである交流を、送信影響を与えるでしょう。しかし、そこに行く。

解決策:実際の人が現在のターンを保持し、空席でないことを確認します。その後、交換を送ることができます。それ以外の場合はできません。

関連する問題