¿Trucos en la mecánica del juego para evitar lidiar con la compensación del retraso de la red?

20

Implementar la compensación del retraso de la red es difícil, ¿cómo evitarlo?

¿Tal vez es posible usar trucos y construir mecánicas de juego de tal manera que el retraso se perciba como un juego no crítico o incluso natural?

¿Cuáles son esas técnicas y hay algún juego existente (MMORPG, Estrategias, ...) que use tales técnicas?

ACTUALIZAR:

Los juegos basados ​​en turnos no requieren compensación de retraso, pero sería interesante ver enfoques para el tiempo real (o simplemente una impresión del tiempo real, la parte importante: el usuario no debe ser bloqueado y obligado a esperar).

La razón principal para evitar la compensación de retraso es la simplicidad.

Alexey Petrushin
fuente
1
Este enlace podría ayudar: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
John McDonald
66
Si está buscando construir un juego donde la latencia no sea un problema; considere construir algo basado en turnos donde unos segundos sean aceptables.
Vaughan Hilts
3
Ese enlace de la válvula se trata de las formas bastante complejas en que se implementa la compensación del retraso de la red, por lo tanto, es lo contrario de lo que se pregunta.
Kylotan
@JohnMcDonald Sí, sé sobre ese artículo de Valve y, como se mencionó, es lo contrario de lo que estoy preguntando :).
Alexey Petrushin
Es posible que desee echar un vistazo a GGPO también: ggpo.net
Decency

Respuestas:

16

Es común que el cliente implemente algún tipo de retroalimentación para informar al jugador de inmediato que su acción elegida ha sido registrada, por ejemplo:

  • sonido de la interfaz (por ejemplo, clic de botón)
  • sonido en el mundo (p. ej., un personaje que dice: "A la vez, comandante")
  • animación (por ejemplo, comenzar a balancear una espada)

Esto puede tener lugar mientras la información viaja al servidor para que el jugador no se dé cuenta de que su acción aún no ha comenzado. Mientras el servidor responda con prontitud y la acción comience pronto, el jugador puede no notar la demora.

Estos trucos funcionan en juegos en los que las entradas de los jugadores son poco frecuentes y, por lo tanto, la cantidad de tiempo que pasas esperando que una entrada surta efecto es una proporción relativamente pequeña del tiempo total dedicado a jugar. Por lo tanto, querrás encontrar formas de estructurar el juego para que el jugador haga menos entradas. Esto probablemente significa hacer que las acciones de los jugadores sean más abstractas y que el juego implemente el comportamiento de bajo nivel. Ejemplos:

  • reemplazar la mecánica de dirección por mecánica de recorrido
  • reemplazar la mecánica de apuntado con la mecánica de selección de objetivos
  • reemplazar las instrucciones de combate ronda por ronda con planes más tácticos o estratégicos
  • reemplazar el juego en tiempo real / continuo con sistemas discretos / basados ​​en turnos
Kylotan
fuente
1
Gracias, formalizas lo que me preguntan: utiliza entradas diferidas y poco frecuentes del reproductor. Sería interesante ver los juegos reales que usan eso.
Alexey Petrushin
2
Cientos de juegos usan cosas como esta de alguna manera, pero lo más probable es que se haya hecho por otras razones con la ocultación del retraso como un efecto secundario beneficioso.
Kylotan
7

Pensamientos aleatorios:

  1. truco: usar cohetes . Los cohetes explotan en un radio, ocultando cualquier rareza.
  2. truco: predetermina el resultado y obliga a que la condición ocurra visualmente
  3. truco: los ataques toman tiempo , ocultan la latencia en el atk + anim + discontinuidad de resultados
  4. truco: desconecta los comentarios locales de las cosas de redes
  5. truco: mucha actividad de efectos visuales o de pantalla que cubre cualquier rareza.
  6. use un diseño de acción-reacción que requiera resolución antes de continuar

Así que sí, engaña mucho.

Patrick Hughes
fuente
4

La respuesta es bastante simple: solo crea juegos que no tengan secciones de tiempo crítico. Estás buscando evitar implementar este tipo de interpolaciones por una razón específica, lo que significa que no te preocupa el juego nervioso y rápido. Esto es perfectamente accesible para muchos juegos, incluido Civilization (que es un juego de estrategia). Sin embargo, comprenda que esto NO es aceptable para un juego de estrategia en TIEMPO REAL en el que necesita pasar una gran cantidad de datos a través de la red en tiempos variables. Si desea diseñar un juego alrededor de una red de latencia muy alta, considere lo siguiente:

  1. Construye juegos por turnos. En este tipo de juegos, no es necesaria la entrada del estado en tiempo real y el otro jugador simplemente puede llevar el estado del juego a su cliente cuando sea su turno. Esto reduce la presión en la red y permite retrasos incluso de unos pocos segundos si así lo desea. Civilization es un juego basado en torneos que es muy popular, y en la línea de estrategia.
  2. Mantenga el impacto de las decisiones de los otros jugadores al mínimo. Si su juego es estratégico y no puede jugar por turnos, considere reducir el impacto de los paquetes retrasados. ¿Puede el cliente hacer la mayor parte de la simulación? Un ejemplo es un juego de estrategia que se juega solo durante un tiempo y luego, después de decir, 16 minutos, se simula contra otro jugador (quizás un juego de combate en el que los jugadores envían tropas cada intervalo x e informan cada intervalo y.

Espero que esto ayude al menos un poco; sin conocer tus ideas exactas del juego es difícil. Supongo que tiene sus razones para querer crear su juego en torno a ese patrón (simplicidad, ahorro de ancho de banda, complejidad de red reducida)

Vaughan Hilts
fuente
4

También podrías hacer que el retraso sea parte de tu juego por el bien del "realismo". Digamos que sus jugadores están destinados a controlar algunos robots desde la distancia, podría forzar el retraso de al menos 500 ms o 1 s (tendría que implementar un sistema dinámico de relleno de retraso).

Arkh
fuente
Este es un buen giro
o0 '.
0

También es un buen truco simplemente ocultar las acciones de los jugadores. Muchos juegos de FPS hacen exactamente esto. No muestran imágenes de la mayoría de las balas, solo se reproducen sonidos y obtienes el resultado en forma de daño infligido a los jugadores.

He jugado algunos juegos de FPS donde las armas de alta precisión (francotiradores y demás) tuvieron efectos visuales muy claros, y en realidad se podía ver que el otro jugador disparó detrás de ti, pero debido a la compensación por retraso te mataron.

VSZM
fuente