Servidor de juegos Java para tirador espacial de desplazamiento lateral

Mis amigos desarrollaron este juego usando Java y me pidieron que hiciera la multicapa. Es un tirador de desplazamiento lateral como los asteroides. Sé que tendría que lidiar con sockets y la identificación prefiere usar tcp sobre udp para tener una conexión constante y no tener grupos de datos de un lado a otro. Tengo un prototipo que envía cadenas de ida y vuelta desde el cliente al servidor y viceversa. pero, ¿cómo implementaría esto en un juego? ¿enviaría las coordenadas x e y del barco al juego que aloja el juego y luego enviaría las otras coordenadas del juego? Cualquier ayuda sería muy apreciada gracias de antemano.

Respuesta 1

Sugeriría esta estructura para tu juego:

  • Crea un servidor que aloje el juego y haz cálculos.
  • Deje que el servidor cree y maneje objetos (enemigos) que se mueven en la pantalla. De esta manera, solo tiene que enviar el servidor de datos -> cliente para actualizar la interfaz de usuario.
  • En cuanto a las naves espaciales, el servidor tiene que actualizar a todos los clientes al mismo tiempo, por lo que, en el lado del cliente, envíe las coordenadas x, y al servidor cada vez que haya un movimiento y luego transmita la nueva posición a cada jugador. Lo mismo ocurre con el disparo o cualquier otro evento generado por el lado del cliente.
  • Para cuando dos objetos colisionan (por ejemplo, un láser y un enemigo), esto debe ser manejado por el servidor, que tiene tanto los objetos como las posiciones de los barcos.

Los clientes solo tendrán que leer las coordenadas de los objetos, dibujarlos y enviar naves / posición del láser al servidor.
El servidor generará objetos y enviará su posición a todos los clientes. Al mismo tiempo, lea la posición de los barcos y actualice la interfaz de los usuarios.

Enviar / leer datos puede ser difícil aunque. Hay varias formas de hacerlo y depende de lo que sea más fácil de comprender por ahora. Se puede mejorar más tarde.

  • Durante todo el juego, el servidor sigue enviando objetos a la posición.
    Si el número de objetos en la pantalla no es siempre el mismo, envíe una cadena que contenga el número de objetos en este momento + sus coordenadas. El lado del cliente recorre esas coordenadas utilizando el número que especificó anteriormente.
  • Lo mismo vale para los barcos. Supongo que será un número fijo, así que puedes enviar sus coordenadas.
  • Dentro de la cadena, las coordenadas deben estar separadas por algo para que pueda leerlas cuando las reciba.
    Una forma de hacerlo es separarlos con un personaje específico
    "x1, y1; x2, y2; x3, y3; x4, y4; ..." 
    ("," entre xy y ";" entre conjuntos de coordenadas)
    o, ya que está enviando un String, escríbalos siempre con la misma cantidad de caracteres (digamos 4)
    "0012054201620104" (x1: 12, y1: 542; x2: 162, y2: 104)
  • Finalmente, sugiero agregar un encabezado a cada paquete que envíe, para saber si es una lista de coordenadas de objetos o una lista de coordenadas de barco.
Respuesta: 2

Tomcat se inicia con éxito en Eclipse, sin embargo, cualquier acción relacionada con el Servlet da el error a continuación. Sospecho que el problema es que TomCat está buscando clases en la carpeta WEB-INF, aunque tengo ...

Tengo un GenericDAO que delega sus operaciones a una clase pública DataSource clase BaseDAOImpl <T> implementa BaseDAO <T> {DataSource ds; actualización T pública (entidad T) {...

quería practicar el desarrollo de programas de bases de datos en java, así que configuré el classpath en E: \ software \ instalado \ java \ jre \ lib declarando un nuevo classpath de variable ambiental y le di el valor como E: \ software \ ...

Tengo una matriz 2d dbl llena de datos, a la que puedo llamar en cualquier lugar dentro del código: System.out.println (twodarray [0] [0]); Y funciona bien. Cuando lo llamo como parte de Actionlistener no funcionará, ...