Многопользовательский сервер для приложения iPhone, использующий устройство в качестве сокет-сервера - PullRequest
0 голосов
/ 02 марта 2010

Я работаю над многопользовательским приложением для iPhone, которое позволяет подключаться и играть до 6 пользователям в режиме реального времени.Я смотрел на размещенные и не размещенные серверы сокетов ( SmartFox , ElectroServer , Фотон / Нейтрон , ProjectDarkstar ) и ямне интересно, если у кого-нибудь есть какие-либо рекомендации по услугам или реализации?У кого-нибудь есть представление о том, что игра, подобная Live Poker от Zynga, использует для этого типа функций или какое оборудование вам может понадобиться?

Некоторые подвопросы:

  1. Игра пошаговая.Имеет ли смысл использовать AMF и опрашивать сервер, или мне следует выбрать маршрут на основе сокетов?В настоящее время меня беспокоит ограничение одновременных подключений и стоимость хостинга.

  2. Можно ли "транслировать" устройство в качестве сервера сокетов?то есть, как только я подключу все свои плееры, могу ли я выделить одно из 6 устройств в качестве сервера сокетов и передать всю связь через это устройство?Это было бы сумасшествием?Это могло бы обойти проблемы параллелизма, и мне нужно было только полагаться на службу сервера сокетов в качестве лобби для начального соединения.Выделенный пользователь будет оставаться на связи, чтобы облегчить взаимодействие игры с сервером.

1 Ответ

2 голосов
/ 02 марта 2010

1.

Гораздо проще использовать опрос, и, поскольку игра основана на пошаговом режиме, вы можете опрашивать с относительно медленной скоростью (возможно, за пару секунд), что означает меньший расход батареи. Тем не менее, использование сокетов или постоянных HTTP-соединений было бы более приятным способом сделать это (и намного больше работы). Эти два вопроса могут представлять интерес:

Как создать чат-сервер, который не управляется опросом?

COMET (передача на сервер клиенту) на iPhone

Я не знаю, почему вы бы использовали AMF. Почему не JSON? Или, может быть, HessianKit ?

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

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

...