Actualmente estoy haciendo un juego MMORPG, que está basado en turnos. Se supone que el cliente se ejecuta en Android. Ahora, mi amigo está haciendo los gráficos, y yo he estado haciendo las clases de juego (jugador, armamento, etc.). Ahora, si se inicia la pelea, las clases pueden ser manipuladas por interfaces (en realidad para mi compañero, es como trabajar con interfaces puras, él no necesita ningún acceso a las clases de implementación).
Ahora necesitamos introducir un servidor de juego para permitir múltiples jugadores. Y surgen algunas preguntas muy importantes:
1) ¿Debo copiar el modelo del juego en el servidor por completo, sin dejar clases en el cliente o es mejor tener 2 copias del modelo: 1 en el servidor y 1 en el dispositivo y completar la sincronización periódica entre ellos?
2) ¿Qué método de conexión elegir entre el cliente y el servidor (el cliente a la vista es un teléfono Android)? En cuanto al servidor, me estoy volviendo hacia Java porque tengo algo de experiencia con él. Pero ahora la pregunta es: ¿es mejor usar sockets para esta tarea o puedo usar los servicios REST, o incluso es posible conectarlo de alguna manera al servidor Java EE, que es genial desde mi punto de vista porque elimina mucha programación? ¿complicación? Aunque el juego es multijugador, se basa en turnos, por lo que no es necesario renovarlo con mucha frecuencia.
3) ¿Qué pasa con el enhebrado? ¿Debería cada cliente tener su propio hilo (en caso de enchufes)?
4) ¿Hay algún libro sobre programación de juegos de servidor REAL MMORPG?