Подтвердить что ты не робот

Android-игра с двумя игроками, которую нужно играть в Интернете

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

Как это сделать?

Я слышал о механизме C2DM. Что это за сценарий, который я описал, и является ли он надежным?

Спасибо:)

4b9b3361

Ответ 1

Другой вариант - использовать какой-то IM в качестве среды связи для приложения. Напр. Используйте Asmack для подключения к XMPP Im like GTalk. Попросите пользователя создать учетную запись там, для вашей игры. И используйте его для отправки и получения команд через IM. Таким образом вам не нужно будет настраивать ваш посреднический сервер.

Это работает, если пользователь знает, с кем он играет. Чтобы собрать пользовательские данные и позволить им искать доступных игроков, вам все равно нужно настроить сервер. Возможно, в комнате IRC также есть возможность избежать этого.

  • GTalk был просто примером. Вы также можете использовать любые IM или IRC.

Ответ 2

Да, C2DM идеально подходит для этого типа игры. Это то, что я использую для своей собственной игры (http://www.chesspresso.net), который является клиентом соответствия для андроида.

Что нужно учитывать при использовании C2DM:

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

  • Его доступный для Android 2.2 +, который является большинством устройств. Но если вы хотите поддерживать более старые устройства, вам придется рассмотреть альтернативу. Я использую опрос для более старых устройств.

  • Вам необходимо запросить доступ к разработчику, после того как ваше приложение будет готово, вы должны запросить статус производства. Если вы этого не сделаете, вы быстро достигнете квоты статуса разработчика после его выпуска! Они очень щедры с квотой на производство, но вы должны объяснить, для чего вы ее используете, и это может занять несколько недель, чтобы принять ее.

  • У ваших пользователей должна быть учетная запись google, которая авторизована, otherswise C2DM не будет работать. Большинство пользователей будут иметь учетную запись, связанную с их устройством, но некоторые из них не так, это означает, что вы, возможно, захотите проверить наличие учетной записи, чтобы уведомить пользователя.

  • Его надежность, но время от времени устройству придется ждать сообщения. Иногда несколько минут. Обычно его мгновенно.

Надеюсь, что это поможет!

UPDATE: C2DM теперь устарел и заменен Google GCM.

Кроме того, я настоятельно рекомендую взглянуть на другие варианты, поскольку привязать себя к API, специфичному для Google, означает, что вы не сможете поддерживать внешние рынки. Для альтернатив, я в настоящее время оцениваю Amazon SNS, и я также буду смотреть Городской дирижабль. Есть, возможно, другие альтернативы, которые я еще не рассматривал.

UPDATE: Обновление оценки оповещений, не связанных с Google: Amazon SNS - это не проект для этой задачи, и Urban Airship для подавляющего большинства приложений слишком дорого. К сожалению, все другие альтернативы тоже очень дороги, особенно если ваше приложение (как и мое) сильно зависит от нажатия.

Ответ 3

Хорошим способом сделать это является использование простого прямого TCP-соединения между одноранговыми узлами.

Если вы новичок в программировании сокетов на Java, попробуйте следующее:

Все о сокетах

Ответ 4

C2DM он не предназначен для передачи информации, даже если они маленькие, как "лошадь в b4" или подобные вещи. Он предназначен для информирования устройства о чем-то, может быть, о новой версии документа или других статей на веб-сайте. Такие вещи.. Он не предназначен для связи устройства с устройством. А также может быть недостаточно быстро для игры в шахматы в реальном времени.

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

Ответ 5

ИМХО, C2DM - это именно то, что вам нужно для шахматной игры; чтобы быть уведомленным, когда oppo сделал свою очередь (что может быть минут/часов/дней позже?). Я обсуждал свою игру с несколькими разработчиками Google Android, и они заявили, что C2DM идеально подходит для этого. Вам нужно будет пройти через централизованный сервер (но не обязательно, но очень желательно), так как могут возникнуть проблемы с повторной синхронизацией игрового состояния и т.д. Беспокоитесь о "достижении предела"? Ну, для начала мой c2dm acct ограничивается "всего" 100 000 сообщений в день. Думаю, ты покупаешь напитки, если попадешь в это!

Ответ 6

Шахматы часто играют по электронной почте. Вы могли бы это сделать.

Конечно, любая централизованная/федеративная система обмена сообщениями будет работать.

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

Ответ 7

Google App Engine, если вы знаете Python или Java.

В качестве альтернативы сегодня существуют два стиля API веб-приложений: веб-службы SOAP XML и RESTful.

Если вы знаете RoR, я бы рекомендовал использовать JSON/REST, потому что вы можете просто использовать Phusion Passenger с Apache для развертывания вашего приложения. Бесплатно, очень легко и делает ваш сервер очень надежным.

Вы могли бы, и я только упоминаю об этом, потому что мои друзья делают это все время, используют твиттер в качестве сервера между играми.

Я также нашел lib под названием mages, который выглядит довольно многообещающим.

Удачи.

Ответ 8

Я сделал это для своего онлайн-2D rpg: http://developingthedream.blogspot.com

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

Я бы не рекомендовал C2DM из-за предела сообщения и потому, что время ожидания еще велико. Используя свой собственный сервер, вы можете его оптимизировать, плюс вы будете использовать только одну услугу, чтобы ваши данные быстрее доставлялись.

Ответ 9

Я думаю, что C2DM не подходит для игры в шахматы, потому что нет гарантии, что сообщения будут доставлены. Вам нужен более надежный способ передачи данных