2010-10-04 3 views
2

У меня есть игра в понг с четырьмя игроками, и когда один игрок отключается (по какой-либо причине, входящий вызов, скучающий, ловить автобус), другие игроки могут продолжать играть. Однако я хочу, чтобы этот человек смог восстановить связь после того, как его вызов был закончен, есть ли у кого-нибудь идея, как я могу это вытащить?iPhone Game Center reconnect

Когда два игрока были развиты, я бы просто реанимировал этого человека, но как я должен это делать в этой ситуации?

Редактировать: Я забыл упомянуть, что я использую API Game Center. Поэтому я использую объект совпадения для передачи данных игрокам, но после того, как игрок отключится, матч все равно будет работать, и если нет, то есть способ вернуться к матчу?

+0

Shit I пропустил этот раздел: – Mark

+0

Добавление игроков в существующее совпадение Иногда , у вас может уже быть матч, и вы просто хотите добавить к нему игроков. Например, если ваша игра требует четырех игроков, и игрок отключается, вы можете предложить вариант замены, вместо того, чтобы прервать текущий матч. Для этого вы используете код, аналогичный приведенному в листинге 5-7, но вместо вызова метода findMatchForRequest: withCompletionHandler: ваше приложение вызывает метод addPlayersToMatch: matchRequest: completeHandler, добавляя дополнительный параметр для соответствия, чтобы добавить игроков. – Mark

ответ

1

1) создать ключ, который определяет этот пользователь как часть этой игры (может быть, UUID совместно со всеми участниками этой игры вместе с пользователем х у компонента?)

2) поиск методологии в перезапустите приложение после того, как она была прервана

3) перезапуск, отправить уникальный ключ на сервер, вернуться в игру

+0

Прежде всего, Кевин, спасибо за ваш ответ. Во-вторых, это касается Game Center, я использую объект Match, который я могу сохранить в этом объекте, но не буду уверен, что этого будет достаточно, чтобы присоединиться к матчу. Я попробую. – Mark

0

Может быть, ваша игра имеет имена пользователей? поэтому, если игрок отключается, он снова появляется, когда он подключается к серверу, проверяя, находится ли это имя пользователя в предыдущих играх/комнатах? note: это означает, что имена пользователей должны быть уникальными.

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

Оба метода могут быть легко использованы путем обратного проектирования сохраненного файла или выбора имени пользователя, которое отключено на другом телефоне, например.

Лучший способ - использовать какую-то систему имени пользователя/пароля, которая делает все имена пользователей уникальными.

Если пользователь подключается к 2-му/3-му раз, сервер должен выдавать какое-либо сообщение о том, что пользователь в настоящее время вошел в систему?

Если это лицо прервано, либо отправьте отсоединяющий пакет, либо если сервер не может позаботиться об этом. Либо соединение будет потеряно с сервером, чтобы состояние пользователя отключилось. Или каким-то образом связь все еще жива? возможно, UDP-сокет? сервер попытается отправить пакет типа ping-pong, если нет ответа, то очевидно, что пользователь отключен от этого приложения, поэтому отключено состояние отключено и т. д.

+0

Что делать, когда пользователь входит в систему снова (2-й, 3-й, ...) раз? – KevinDTimm

+0

Что я сказал не так? – SSpoke