La predicción del lado del cliente es una técnica de programación de red utilizada en los videojuegos destinada a ocultar los efectos negativos de las conexiones de alta latencia . La técnica intenta hacer que la entrada del jugador se sienta más instantánea mientras rige las acciones del jugador en un servidor remoto .
El proceso de predicción del lado del cliente se refiere a que el cliente reaccione localmente a la entrada del usuario antes de que el servidor reconozca la entrada y actualice el estado del juego. [1] Entonces, en lugar de que el cliente solo envíe la entrada de control al servidor y espere un estado del juego actualizado a cambio, el cliente también, en paralelo con esto, predice el estado del juego localmente y le da al usuario comentarios sin esperar una actualización. estado del juego desde el servidor.
La predicción del lado del cliente reduce los problemas de latencia, ya que ya no habrá un retraso entre la entrada y la retroalimentación visual del lado del cliente debido a los tiempos de ping de la red. Sin embargo, también introduce una desincronización de los estados del juego del cliente y del servidor, que debe manejarse para que el juego siga siendo jugable. [1] Por lo general, la desincronización se corrige cuando el cliente recibe el estado del juego actualizado, pero como la corrección instantánea conduciría a un "chasquido", generalmente hay algunos algoritmos de "suavizado" involucrados. Por ejemplo, un algoritmo de suavizado común sería verificar la ubicación del lado del cliente de cada objeto visible para ver si está dentro de algún épsilon de error de su ubicación del lado del servidor. De lo contrario, la información del lado del cliente se actualiza directamente al lado del servidor (se rompe debido a demasiada desincronización). Sin embargo, si la ubicación del lado del cliente no está demasiado lejos, se interpola una nueva posición entre el lado del cliente y el lado del servidor; esta posición está configurada para estar dentro de un pequeño paso delta desde la ubicación del lado del cliente, que generalmente se considera "lo suficientemente pequeña" para no ser intrusiva para el usuario.
Otra solución al problema de la desincronización, comúnmente utilizada junto con la predicción del lado del cliente, se llama reconciliación del servidor . [2] El cliente incluye un número de secuencia en cada entrada enviada al servidor y mantiene una copia local. Cuando el servidor envía una actualización autorizada a un cliente, incluye el número de secuencia de la última entrada procesada para ese cliente. El cliente acepta el nuevo estado y vuelve a aplicar las entradas aún no procesadas por el servidor, eliminando por completo los problemas visibles de desincronización en la mayoría de los casos.
El primer juego de disparos en primera persona conocido en utilizar la predicción del lado del cliente es Duke Nukem 3D , que lo tenía incorporado desde el lanzamiento del shareware del 29 de enero de 1996. [3] [4] La técnica también fue una característica destacada de QuakeWorld , el popular complemento de Quake . Si bien el juego en red se incluyó en el juego Quake original , se optimizó principalmente para el juego en LAN . Habiendo tenido conexiones domésticas de alta velocidad (una rareza en ese momento), los diseñadores de Quake pasaron por alto sus suposiciones de ancho de banda alto y tiempos de ping bajos que hacían que jugar en línea fuera frustrante para los usuarios de acceso telefónico . [5] Después de una serie de experimentos en una larga beta privada, id Software lanzó QuakeWorld con un nuevo modelo predictivo que resultó ser popular entre los jugadores de latencia alta y baja.
Ver también
Referencias
- ↑ a b Bernier, Yahn W. (2001). "Métodos de compensación de latencia en el diseño y optimización de protocolos cliente / servidor en el juego" (PDF) . Consultado el 19 de diciembre de 2008 .
- ^ Gabriel Gambetta, Predicción del lado del cliente y reconciliación del servidor
- ^ Dransfield, Ian (14 de julio de 2018). "La sala de máquinas: construir" . Jugador retro . Reino Unido: Future plc (182): 62–67. ISSN 1742-3155 . Consultado el 24 de noviembre de 2018 .
- ^ Lanzamiento del código fuente de Duke Nukem 3D (versión de CD v1.5): 1 de abril de 2003 , consulte domovethings (), fakedomovethings () y fakedomovethingscorrect (), Video Game Preservation, 2019-05-15 , consultado el 2019-05-15CS1 maint: otros ( enlace )
- ^ John Carmack, QuakeWorld .plan