Ver Mensaje Individual
  #3  
Viejo 31/05/17, 11:23:23
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 856
Tu operador: Pepephone

 Cita: Originalmente Escrito por mocelet Ver Mensaje
Albricias, un poco de movimiento en el foro de programación

La forma de abordar el online de un juego depende bastante de la mecánica del juego, no es lo mismo un apalabrados que un wordament que un ajedrez que un cuatro en raya o que un juego de carreras online.

Hace poco he reescrito el online de mi cuatro en raya con Kotlin + nginx (SSL) + vert.x + mongodb y tengo otra base de datos redis por ahí para estadísticas internas. Antes era java + netty + mongodb y en el principio de los tiempos usaba kryonet.

El protocolo de comunicaciones es propio, basado en mensajes JSON, aunque por motivos históricos uso TCP ahora soporta REST, websockets y https para el envío de datos confidenciales tipo email o password (antes no había registro propiamente) y consulta de datos que no precisa interacción (la gracia de un websocket o socket es poder interactuar en tiempo real) como puede ser ver el ranking.

Existen soluciones SAAS (software as a service) para crear el backend de un juego sin programar nada, el propio Google Play Games Services, si bien o no son suficientemente personalizables o te metes en un lock-in de cuidado (atarte a un proveedor y sus condiciones) y unas tarifas que igual al principio era gratis pero en cuanto empiezas a tener usuarios, sorpresa.

Si te gusta hacerlo tú mismo, empieza definiendo los flujos cliente-servidor y qué tienes que almacenar y cómo (p.ej. es pecado transmitir en claro la contraseña y guardarla sin hacerle perrerías para que si un hacker accede a la base de datos no pueda extraer fácilmente la misma).

Ver cómo transportarlo (ya en la época que estamos tiraría por REST + JSON o websockets + JSON según la interactividad que requieras) y, si necesitaras notificar usuarios que no estén usando el juego, tendrás que usar el Google Cloud Messaging.

Elegir base de datos, normalmente SQL como mysql o NoSQL como mongoDB ya sea instalándola tú o usando un servicio de terceros. Pero como digo, ahí depende mucho del juego, cada una tiene sus pros y sus contras.

Elegir un lenguaje de programación y un framework para servicios. Si te gusta javascript tienes el venerado node.js , si te gusta java o kotlin yo me inclinaría por vert.x, Play Framework o ya si quieres meterte en el mundo de JEE algún contenedor tipo Wildfly. Y bueno, en .NET y en PHP también se pueden hacer cosas, pero de .NET ni idea y PHP no se me ocurriría usarlo.

He puesto en negrita todos los palabros tecnológicos relacionados, como ves hay mucho donde elegir

Antes de lanzarse a la aventura de elegir tecnologías lo mejor es tirar de papel y boli para definir la arquitectura. Cambia mucho el que sea un juego por turnos cortos (cuatro en raya), largos (apalabrados) o en tiempo real (disparos, carreras), así como si es multijugador de verdad donde hay interacción entre jugadores o es "falso multijugador" como los llamo yo donde juegan varios pero al final que haya más jugadores da igual porque solo sirve para comparar puntuaciones al acabar la partida (caso del wordament).

Muchisimas gracias, realmente es lo que necesitaba, se trata de un juego por turnos tipo damas. Ahora tengo que estudiar bien que tocar,

Con NodeJs y mongo he trabajado pero el hosting por lo que he visto es carete y heroku + mongolab se quedaría algo corto pronto.En realidad me gustaría tirar más por Java
__________________
Responder Con Cita