Juego de Android P2P Multijugador(con a) XMPP/Google Talk b) JXTA peerdroid c) de otra manera)
google-talk (4)
Soy un desarrollador de Android e hice algunos juegos de mesa. Ahora quiero hacer algunos de mis juegos de mesa multijugador. No quiero crear ni alojar mi propio servicio web, así que pensé en P2P.
Lo primero que encontré fue el protocolo XMPP, sin embargo, no es un P2P real, pero si puedo usar el servicio de Google Talk existente, estoy listo para comenzar. ¿Es esto posible mientras usa su cuenta de Google existente sin interferir con el funcionamiento normal de su cliente de Google Talk?
Luego me enteré de JXTA, una verdadera solución P2P, y ya se ha transferido de J2ME a Android ( http://code.google.com/p/peerdroid/ ).
Tal vez estoy superando las cosas aquí (como hago a veces)
Solo quiero saber la forma más fácil de hacer P2P simple para un juego de mesa.
Todas sus opiniones son bienvenidas! Gracias por adelantado
Básicamente, si quieres escribir un juego para varios usuarios o un juego construido sobre XMPP (Jabber), deberías echar un vistazo serio a la extensión de pubsub de XMPP. Está diseñado para enviar datos de un servidor a los clientes, en la forma opuesta a HTTP. En HTTP, el cliente tiene que extraer información del servidor todo el tiempo para poder saber cuándo se insertan datos nuevos. Mientras que XMPP está diseñado para enviar datos a los clientes, cuando sucede algo. Menos recursos utilizados en servidor y clientes.
No debe usar la parte de chat de XMPP, ya que eso interferirá con la presencia de los usuarios.
En pubsub puede crear un árbol de nodos, donde los clientes pueden escuchar los nuevos datos publicados en cualquier nodo o subnod en el árbol al que se suscriba el cliente. Entonces, si algún cliente publica datos en un nodo, todos los clientes que se hayan suscrito a ese nodo, o cualquier padre, serán notificados sobre estos datos.
Lo bueno de XMPP es que es extensible para que pueda extender el protocolo con sus propias extensiones. También le doy autorización de usuario, autenticación y cifrado, y usted no necesita depurarlo.
Puede usar cualquier servidor XMPP con un buen soporte para pubsub o puede hospedar un servidor usted mismo. Hay un montón de servidores utilizables para esto. GTalk no tiene soporte para PubSub la última vez que miré.
Kristof, ¿Recibiste una respuesta a tu pregunta? También he estado trabajando en una aplicación multijugador recientemente, aunque elegí alojar el servidor (originalmente). Sin embargo, ahora estoy reconsiderando mi elección, pero la biblioteca que estoy usando es totalmente compatible con las comunicaciones de igual a igual. El protocolo subyacente está construido sobre Google Protobuf. Esencialmente es una pila RPC dúplex completa construida sobre Netty, que puede usar Protobuf. Aquí está la URL de la pila de protobuf de RPC: http://code.google.com/p/protobuf-rpc-pro/
El autor ha sido de gran ayuda y he encontrado un par de errores, nada importante. También tuve muy pocos problemas para que estas bibliotecas funcionaran en mi teléfono Android, pero no son tan "compactas". Nada extraordinariamente grande, pero no pequeño :). Hasta ahora, no he tenido problemas para que las comunicaciones funcionen de forma síncrona y asíncrona. Como tal, puedo estar cambiando mi juego a un estilo de "igual a igual" y simplemente proporcionar el servidor de ubicación / registro necesario que se usaría para encontrar los juegos / servidor existentes.
No puedes usar el servicio / conexión de Google Talk existente de lo que hemos visto. Deberías seguir los consejos de Janusz y visitar la biblioteca, esa es tu mejor opción. Para permitir múltiples conexiones no interferentes con el mismo inicio de sesión de GTalk, observe el componente de recursos de la dirección XMPP, es lo que le permite iniciar sesión en dos clientes al mismo tiempo en la misma cuenta. Puedes hacer que tu juego sea otro cliente. Más aquí: http://code.google.com/appengine/docs/java/xmpp/overview.html#JIDs_and_Resources
Finalmente, parece que hay una nueva funcionalidad en 2.2 relacionada con la comunicación push del dispositivo, pero todavía no la he investigado. La versión 2.2 tampoco se ha implementado ampliamente, por lo que probablemente tenga un uso limitado.
Usar XMMP debería ser posible para su caso. Mira el smack de igniterealtime. Tienen una api java agradable y activa que te ayuda a construir tus propios paquetes de extensión jabber que se pueden usar para transportar los cambios en el estado del juego.
Creo que usar dos clientes de Google Talk al mismo tiempo con la misma cuenta podría ser difícil. Pero sería genial porque podrías invitar a todos los amigos de tu lista para que jueguen contigo directamente desde tu juego. De esta manera, fácilmente podrías hacer que más personas jueguen tu juego.