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?
fuente
De acuerdo con Mikolaj no copiar todo. Envíe la menor cantidad de datos posible. Puede tener las mismas clases (que representan solo el modelo de datos, no otros activos) en el cliente y el servidor, pero no los envíe a través de la red. Desea serializarlos en el servidor y deserializar en el cliente. El cliente debe enviar solo comandos al servidor.
Está planeando un MMORPG por turnos (aunque no tengo idea de cómo funcionaría). Entonces la velocidad no es un gran problema. Puede usar cualquier tipo de servicio, REST puede ser bueno, es simple. Por lo general, los MMORPG usan UDP (no seguro, más pequeño, más rápido) para cosas como actualizaciones de movimiento donde un paquete perdido o dos no importan y TCP (seguro, sobrecarga) para una comunicación segura. La mayoría de los juegos probablemente usan algún tipo de protocolo personalizado encriptado y comprimido sobre UDP y TCP para que sea rápido y difícil de descifrar.
Por lo general, desea tener un grupo de subprocesos. Cada subproceso del grupo atiende una solicitud y luego se recicla. Cuando no tiene suficientes hilos, puede considerar bloquear o asignar más hilos.
Mikolaj ya buscó en Google eso para ti ...
fuente