JavaScript - ¿Dónde iría la lógica?

 
Vista:

¿Dónde iría la lógica?

Publicado por alejandro (1 intervención) el 06/07/2022 17:52:03
Buenos días foro. Me encuentro estudiante desarrollo web y aplicaciones y actualmente estoy trabajando en un pequeño proyecto propio. Tengo una parte muy básica de la lógica para un juego web de estrategia, estilo juegos de mesa como axies & allies, tal vez mas parecido a Advance Wars, en donde cada jugador tiene una serie de unidades y los mueve por un mapa grilla cuadrada hecha con DIVs posicionados con css flexbox. Hasta ahora vengo muy bien en dado que ya logré un pequeño sistema de pathfinding y cálculo de costos de movimiento. Las unidades son instancias de un class "unidad" con un metodo que calcula en cada frame la posisión para "dibujarla" en la grilla. El tema es que ahora estoy implementando el principio para el multijugador con node.js y la librería websockets, donde el servidor "escucha" los movimientos que ocurren en el cliente y "emite" los cambios para todos los otros clientes.
La duda es si estoy encarándolo correctamente ya que toda la lógica del movimiento de las unidades ocurre del lado del cliente con javascript. Mi pregunta es: ¿Debería ser calculado el movimiento y las acciones de las unidades del lado del servidor y enviar los datos ya procesados al front, donde solo se dibuje la posición de las unidades? ¿Sería mala práctica que cada cliente se encargue de hacer los calculos de costos, manejar los clicks, el combate, etc. y que el lado del server solo refleje lo que pasa en un cliente para actualizar los datos del resto?
No se si loro hacerme entender.
Desde ya gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ivan

¿Dónde iría la lógica?

Publicado por Ivan (118 intervenciones) el 06/07/2022 18:34:57
Hola,

aunque nunca he programado un juego multijugador, si he programado juegos y la lógica sería la misma que en un videojuego de dos jugadores.

La respuesta es que el servidor es quien manda, recibe las acciones de los jugadores, las procesa y devuelve los datos procesados para que el cliente haga la animación gráfica.

El cliente no debe procesar datos con otros jugadores ... míralo de la siguiente manera con 5 jugadores:


Cada jugador emite sus acciones a los otros jugadores, recibe las acciones de los otros jugadores, procesa todos los datos, envia el resultado a todos los jugadores, cada jugador muestra los resultados...

o

Cada jugador envía sus acciones al servidor, el servidor lo procesa, devuelve la respuesta al jugador y este dibuja el resultado.

Creao que se ve claramente que lo mejor es que los clientes mandan acciones el servidor, éste las procesa, devuelve el resultado y el cliente lo dibuja.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar