Convierte multijugador basado en iOS con CouchDB e IrisCouch

Yo y mi compañía de aplicaciones de inicio están trabajando en una aplicación de iPhone multijugador basada en turnos. Dejemos que ninguno de nosotros tenga ninguna database, o server, conocimiento alguno. Sin embargo, estamos dispuestos a aprender.

El flujo del juego será similar a juegos como: WordFeud, WordsWithFriends, Rumble, etc.

Permítanme comenzar por dónde nos ha llegado una gran cantidad de búsquedas en la web:

Hemos decidido usar CouchDB como una herramienta para almacenar información sobre usuarios, sesiones de juegos y otras cosas. CouchDB es un sistema de database noSQL de código abierto. La razón es que nos han enseñado que debe ser compatible con muchos usuarios concurrentes. Además, eso aumenta: esperamos ir a lo grande, por supuesto.

Nuestro CouchDB, está alojado en IrisCouch . IrisCouch es un service de alojamiento "en la nube" diseñado para ejecutar CouchDb.

Entonces, tenemos un server CouchDB en funcionamiento, y conocemos los conceptos básicos sobre cómo consultar los datos del server.

Nuestra mayor confusión en este momento es cómo debemos configurar el sistema para que funcione según las mejores prácticas. En este momento estamos en el punto donde podemos recibir y enviar datos al server.

Se supone que nuestro juego tiene integración de Facebook, para que los usuarios puedan registrarse a través de nuestra aplicación o a través de Facebook. Después de eso, pueden jugar con oponentes aleatorios, o jugar con amigos. Después de que se inicia una partida, un jugador recibirá una serie de preguntas que se le harán, una vez que haya respondido, se le notificará al otro jugador, a través de notifications push, que es su turno. Después de algunas rondas, el juego está terminado.

En este punto, pensamos que esta podría ser la mejor solución para el flujo de la aplicación:

  1. Un usuario se conecta a otro usuario -> una session de juego se abre como un documento en una database llamada "juegos".
  2. El documento recién creado contiene los nombres de los jugadores, preguntas, respuestas, etc.
  3. Un campo llamado "whos_turn" decide a cuál de los dos jugadores lo convierte.
  4. Una vez que finaliza el juego, la session se borra.

Una vez más, y como puede ver, estamos en la oscuridad de cómo hacerlo realmente, pero esta es la idea general.

Entonces, mis preguntas son las siguientes:

¿Es mejor consultar los datos directamente desde la aplicación de iPhone o a través de un service web?

¿Cuál es la mejor forma de configurar la database para administrar mejor el flujo de la aplicación?

Cualquier información que nos pueda acercar será agradecida con gusto 🙂

De antemano, gracias!

Olav Gundersen


EDITAR N ° 1: Nuestro progtwigdor Objective-C logró conectar dos dispositivos iPhone usando CouchDb. La aplicación de iPhone consiste en una vista de tabla, que tiene una connection concurrente con la database, de modo que cuando alguien POST a la database, aparece en la vista de tabla de todos los demás teléfonos conectados. He aquí: un sistema de chat severamente ineficaz.

Si es multijugador, necesitará tener la aplicación para comunicarse con el mando iriscouch.db, pero me preocupa el hecho de que usted o sus amigos no tengan experiencia en la database. Estás dispuesto a aprender, así que creo que el mejor lugar para comenzar es:

http://guide.couchdb.org/editions/1/en/index.html

Hay varios problemas que puede encontrar con la escalabilidad si planea borrar documentos continuamente. El tamaño de DB puede ser considerable en couchdb y deberá compactar y limpiar regularmente la database. Pero no creo que sea un problema importante por ahora, ya que está en un nivel inicial.

La pregunta "la mejor manera de configurar la database y administrar mejor el flujo de la aplicación" debe ser abordada por su equipo. Si no tiene a alguien con experiencia en la database, debe tratar de encontrar a alguien dispuesto a ayudarlo. Debería ser alguien con amplia experiencia en bases de datos. Puede encontrar algunos profesionales bastante razonables en http://www.odesk.com

En total, sinceramente, no creo que tenga éxito si no tiene una figura como la de un profesional independiente o un queueborador que le ayude a tener una lógica de database sólida en el juego que garantice una excelente experiencia de usuario.

Por ejemplo: ¿ha considerado el problema de retardo de latencia mediante el uso de una database basada en EE. UU. (Iriscouch) frente a la location de sus usuarios?

Por esta razón, es posible que desee hacer todo lo posible al lado del cliente (database integrada como sqlite o touchDB que es esencialmente couchDB para iPhone)

Para una aplicación para iPhone, es posible que desee probar TouchDB que está hecho exactamente para que https://github.com/couchbaselabs/TouchDB-iOS (advertencia: dado que necesita conectividad para comprobar los giros, etc., esta podría no ser la solución ideal, pero podría funcionar para almacenar información localmente).

Para establecer esto, necesitarías a alguien con experiencia con couchdb para configurar una aplicación adecuada y utilizable. No hay nada de malo en ser entusiasta acerca de su idea, pero para que sea un éxito, necesita una mente técnica en el lado de la database. Por supuesto que podrías ser muy capaz de aprender esto tú mismo. Después de leer el libro de CouchDB, debe estar en condiciones de crear un flujo básico que se ajuste a sus necesidades.

Por supuesto, otros usuarios más experimentados pueden venir con una respuesta más completa o un layout de muestra, pero no creo que sea el mejor enfoque. Incluso si alguien publica un layout completo de la estructura del documento y cómo consultarlo, ¿cómo va a dar service a la aplicación si algo sale mal, por ejemplo, las sesiones no se borran, conflictos, etc.? Por lo tanto, mi sincero consejo para get cierta experiencia ad-hoc para su caso.

Esto también podría resultar en el análisis de alternativas adecuadas. No creo que debas comprar la idea de que CouchDB puede escalar y, por lo tanto, es la mejor opción / única para ti (por supuesto, este podría ser el caso y si crees que es una buena opción … no lo hagas). Por ejemplo, twitter, google adwords y muchas otras aplicaciones en línea están usando mysql para almacenar sus datos, por lo que CouchDB no es la única database que puede escalar.

Creo que esta aplicación de demostración podría ser un buen ejemplo a seguir: iOS Couchbase Demo