Возможности онлайн-игры для iPhone? - PullRequest
3 голосов
/ 12 февраля 2009

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

Спасибо заранее, ВСН

Ответы [ 4 ]

5 голосов
/ 12 февраля 2009

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

Посмотрите на классы NSOperation и NSOperationQueue. Вы сделаете каждую фоновую задачу представленной экземпляром класса NSOperation. Этот класс заботится о запуске операций, следит за тем, чтобы они выполнялись в соответствующем порядке, и учитывал любые установленные вами приоритеты.

Самый распространенный способ использования NSOperation - это написать собственный подкласс и переопределить метод main. Основной метод вызывается для выполнения операции, когда NSOperationQueue планирует его выполнение.

Если вы не хотите накладных расходов на создание подклассов, взгляните на класс NSInvocationOperation. Это конкретный подкласс NSOperation, который позволяет легко прикрепить операцию к существующему методу. NSInvocationOperation объекты могут быть добавлены в NSOperationQueue (так же, как NSOperations), так что вы получите многопоточность без необходимости создавать подклассы.

1 голос
/ 12 февраля 2009

Посмотрите на пример WiTap (в xcode выполните полнотекстовый поиск для witap). Он использует NSStreams для получения асинхронного поведения без необходимости прибегать к управлению своими собственными потоками или опросом.

1 голос
/ 12 февраля 2009

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

0 голосов
/ 08 октября 2010

Используйте OpenFeint. Позволяет разрабатывать через Интернет по всему миру простые и многопользовательские игры в режиме реального времени.

Я не уверен, что GameCenter теперь поддерживает подобные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...