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

Android P2P Многопользовательская игра (с) Обсуждение XMPP/Google b) JXTA peerdroid c) другим способом)

Я разработчик Android, и я сделал несколько настольных игр. Теперь я хочу сделать некоторые из моих настольных игр многопользовательскими. Я не хочу создавать и размещать собственный веб-сервис, поэтому я подумал о P2P.

Первое, что я нашел, это протокол XMPP, но это не настоящий P2P, но если я смогу использовать существующую службу Talk Talk, я готов к работе. Возможно ли это при использовании существующей учетной записи google, не мешая нормальной работе вашего клиента Google Talk?

Затем я услышал о JXTA, реальном P2P-решении, и он уже портирован с J2ME на Android (http://code.google.com/p/peerdroid/).

Может быть, я слишком много переоцениваю здесь (как иногда бывает)

Я просто хочу знать самый простой способ сделать простой P2P для настольной игры.

Все ваши мнения приветствуются! Спасибо заранее

4b9b3361

Ответ 1

Кристоф, вы получили ответ на свой вопрос? Недавно я работал над многопользовательским приложением, хотя я решил разместить сервер (изначально). Я теперь пересматриваю свой выбор, но библиотека, которую я использую, полностью поддерживает одноранговые связи. Основной протокол построен поверх Google Protobuf. Это, по сути, полнодуплексный RPC-стек, построенный поверх Netty, который может использовать Protobuf. Здесь URL-адрес прототипа RPC: http://code.google.com/p/protobuf-rpc-pro/

Автор был очень полезен, и я нашел пару ошибок, ничего серьезного. У меня также было очень мало проблем с тем, чтобы эти библиотеки работали на моем телефоне Android, но они не ужасно "компактны". Ничего необычайно большого, просто не маленького:). До сих пор у меня не возникало проблем, связанных с тем, что сообщения работают синхронно и асинхронно. Таким образом, я могу перенести свою игру на "одноранговый" стиль и просто предоставить необходимый сервер регистрации/регистрации, который будет использоваться для поиска существующих игр/сервера.

Ответ 2

Использование XMMP должно быть возможным для вас. Посмотрите smack из igniterealtime. У них хороший и активный java api, который помогает создавать собственные пакеты расширения jabber, которые можно использовать для переноса изменений в состоянии игры.

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

Ответ 3

Вы не можете использовать существующую службу Google Talk/Connection из того, что мы видели. Вы должны взять совет Януша и проверить библиотеку smack, что ваш лучший выбор. Чтобы разрешить нескольким неинтерферирующим соединениям с одним и тем же именем GTalk, посмотрите на компонент ресурса адреса XMPP, это позволяет вам одновременно регистрироваться на двух клиентах в одну учетную запись. Вы можете эффективно сделать свою игру другим клиентом. Подробнее здесь: http://code.google.com/appengine/docs/java/xmpp/overview.html#JIDs_and_Resources

Наконец, в версии 2.2 есть некоторые новые функции, связанные с коммуникацией с устройством, но я еще не изучил ее. 2.2 еще не широко развернуто, так что, вероятно, ограниченное использование.

Ответ 4

В основном, если вы хотите написать многопользовательскую игру или игру, построенную поверх XMPP (Jabber), вам следует серьезно взглянуть на расширение pubsub XMPP. Он предназначен для передачи данных с сервера клиентам, в противоположность HTTP. В HTTP клиент должен постоянно извлекать информацию с сервера, чтобы знать, когда будут перенесены некоторые новые данные. Хотя XMPP предназначен для передачи данных клиентам, когда что-то происходит. Меньше ресурсов, используемых на сервере и клиентах.

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

В pubsub вы можете создать дерево узлов, где клиенты могут прослушивать любые новые данные, опубликованные в любом node или subnod в дереве, к которому подписывается клиент. Поэтому, если какой-либо клиент публикует данные на одном node, все клиенты, подписавшиеся на этот node или любой родитель, будут уведомлены об этих данных.

Хорошая часть с XMPP заключается в том, что она расширяема, поэтому вы можете расширить протокол своими собственными расширениями. Я также даю вам авторизацию пользователя, аутентификацию и шифрование, и вам не нужно отлаживать это самостоятельно.

Вы можете использовать любой XMPP-сервер с хорошей поддержкой для pubsub, или вы можете разместить один сервер самостоятельно. Для этого доступно множество серверов. У GTalk нет поддержки для PubSub в прошлый раз, когда я смотрел.