2017-02-17 6 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 

Я хочу, чтобы матч, чтобы начать, когда есть только два игрока, но, чтобы в общей сложности 16 игроков. Поэтому, естественно, я устанавливаю maxPlayers = 16 и minPlayers = 2. Я думал, что автоматически начнется матч, как только два игрока будут сидеть, но это не так.

Я пытался сделать это после того, как матч состоит из двух игроков,:

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

Но тогда я сказал, что status только для чтения. Я не могу вручную установить его.

Теперь, с регулярным GKMatch, я официально начать матч по телефону:

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

Но не похоже, чтобы подобная штуковина для GKTurnBasedMatch.

Как я могу начать матч, чтобы я мог отправить обмен между двумя игроками?

ответ

1

Человек, документация по GKTurnBasedMatch: редкий.

Вот что: вы фактически не запустили GKTurnBasedMatch. Вы только конец это explicilty.

Во время игры вы просто передаете ход от одного активного игрока другому активному игроку. Игра технически начинается, как только первый игрок сидит.

Проблема, с которой я столкнулась, состоит в том, что я прошел поворот, когда не было другого активного игрока. Поэтому я случайно сказал Game Center назначить поворот на пустое место. Поэтому, когда сообщение об ошибке сказал мне

Game is not active, session state is Matching 

Это означало, что текущее место было пусто и все еще ищет игрока, чтобы заполнить его. Игра, по-видимому, выходит из активного состояния в любой момент, когда текущий статус игрока равен Matching (что означает пустое место).

Почему на земле это может повлиять на отправку обменов, у которых вся цель состоит в том, чтобы обеспечить связь между любых игроков, независимо от того, кто в настоящее время игрок, не за мной. Но ты туда.

Решение: убедитесь, что текущий поворот удерживается фактическим лицом и не является свободным местом. Затем вы можете отправлять биржи. В противном случае вы не сможете.