Lidiando con la latencia en juegos en red

Estoy pensando en hacer un juego en red. Soy un poco nuevo en esto, y ya me he encontrado con muchos problemas tratando de armar un buen plan para calcular la latencia y la latencia de la red, por lo que me encantaría ver buena literatura sobre el tema. Describiré los métodos que he considerado.

Originalmente, simplemente envié la entrada del jugador al servidor, simulé allí y transmití los cambios en el estado del juego a todos los jugadores. Esto hizo que las trampas fueran difíciles, pero bajo alta latencia las cosas eran un poco difíciles de controlar, ya que no ves los resultados de tus propias acciones de inmediato.

Este artículo de GamaSutra tiene una solución que ahorra ancho de banda y hace que la entrada local parezca fluida simulando también en el cliente, pero parece arrojar trampas por la ventana. Además, no estoy seguro de qué hacer cuando los jugadores comienzan a manipular el medio ambiente, empujando rocas y cosas por el estilo. Estos objetos previamente neutrales se convertirían temporalmente en objetos sobre los que el cliente necesita enviar PDU, o tal vez lo hagan varios jugadores a la vez. ¿De quién ganarían las PDU? ¿Cuándo dejarían de ser rastreados los objetos por cada jugador (para comparar con la versión calculada)? El cielo prohíbe que dos jugadores participen en una partida de sumo (por ejemplo, comiencen a empujarse entre sí).

Este bit de gamedev.net muestra la solución de gamasutra como inadecuada, pero describe un método diferente que realmente no soluciona mi ejemplo colaborativo de empuje de rocas. La mayoría de las otras cosas que he encontrado son específicas de los tiradores. Me encantaría ver algo más orientado a los juegos que juegan como SNES Zelda, pero con un poco más de física / impulso involucrado.

Nota: No estoy preguntando acerca de la simulación física aquí; otras bibliotecas tienen eso cubierto. Solo estrategias para hacer que los juegos sean fluidos y reactivos a pesar de la latencia de la red.

Respuestas a la pregunta(5)

Su respuesta a la pregunta