¿Qué técnicas de software se utilizan para reducir la latencia y sus efectos, en juegos como shooters en primera persona y MMO?

Alguien con más conocimientos técnicos puede responder a esta pregunta mejor que yo. Corrígeme si soy inexacto.

En general, la técnica utilizada es la del movimiento predictivo. El código proyecta dónde es probable que los avatares de los jugadores se muevan en el futuro cercano al cliente. Si la predicción es cierta y la latencia no es demasiado severa, no hay un efecto notable.

La compensación de latencia también es un ejercicio de humo y espejos enfocado en crear la ilusión de que no hay latencia para el jugador. Por ejemplo, cuando hace clic, el arma se descargará inmediatamente en el lado del cliente, incluso si el servidor no registra ese hecho durante otros 30 ms.

El tirador en primera persona de Sony Online Entertainment, Planetside, utilizó una versión especialmente generosa de esto.

Cuanto más se procese del lado del cliente, mejor será la experiencia del jugador, pero también puede crear importantes vulnerabilidades de seguridad. Por ejemplo, gran parte del código con respecto al posicionamiento del jugador en World of Warcraft se procesa del lado del cliente. Esto hace que el movimiento parezca mucho más limpio de lo que sería de otra manera. Sin embargo, los desarrolladores de juegos ahora están permanentemente plagados de ataques de teletransporte que han tenido consecuencias importantes para la economía del juego, lo que genera costos continuos de servicio al cliente para la compañía.

Este documento de Valve Software sobre compensación de latencia entra en detalles teóricos sobre cómo el motor Half-Life maneja el problema:

http: //developer.valvesoftware.c…

Para que lo sepas, en realidad no puedes reducir la latencia en un juego, pero puedes enmascarar sus efectos.

El método más común para suavizar la latencia es que un servidor generalmente se ejecute a una velocidad de “tic” fija donde actualiza a los clientes que escuchan a una velocidad fija. Lo que sucede es que el servidor proporciona una actualización necesaria al cliente en estos intervalos fijos en los que el cliente tiene que interpolar entre sus últimos datos conocidos (el último tick) y el actual. Esto significa que el servidor está realmente por delante del jugador en un tic y, por lo tanto, las tasas de tick más altas significan una reproducción más precisa pero también un mayor costo de ancho de banda y procesamiento.

Algunos eventos, como el disparo o el giro, deben procesarse de inmediato, por lo que estos tienden a ser enviados por UDP o procesados ​​de manera separada, en el momento en que el cliente realiza un evento importante, se transmite de inmediato a todos los clientes.

He escrito una serie detallada de artículos sobre este tema aquí: Multijugador acelerado, y recientemente agregué una sección con código de muestra y una demostración en vivo aquí: Multijugador acelerado: Código de muestra y demostración en vivo. Espero que encuentres esto útil.