La predicción del lado del cliente es una técnica de programación de red utilizada en videojuegos para disimular los efectos negativos de las conexiones de alta latencia . Esta técnica busca que la interacción del jugador se sienta más instantánea, controlando sus acciones 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 haya reconocido la entrada y actualizado el estado del juego. [ 1 ] Así, en lugar de que el cliente solo envíe la entrada de control al servidor y espere una actualización del estado del juego como respuesta, el cliente también predice el estado del juego localmente y proporciona retroalimentación al usuario sin esperar una actualización del estado del juego por parte del 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 mantener el juego 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 llevaría a un "ajuste", 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 un cierto error epsilon de su ubicación del lado del servidor . Si no, la información del lado del cliente se actualiza directamente en el lado del servidor (ajuste 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 se establece dentro de un pequeño margen de error con respecto a la ubicación del cliente, que generalmente se considera "lo suficientemente pequeño" como para no resultar intrusivo 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 denomina reconciliación del servidor . [ 2 ] El cliente incluye un número de secuencia en cada entrada enviada al servidor y conserva 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 que aún no ha procesado el servidor, eliminando por completo los problemas de desincronización visibles en la mayoría de los casos.
El primer juego de disparos en primera persona conocido que utilizó predicción del lado del cliente es Duke Nukem 3D , que la tenía integrada desde el lanzamiento 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 estaba incluido en el juego original de Quake , estaba optimizado principalmente para el juego LAN . Al tener conexiones domésticas de alta velocidad (una rareza en ese momento), los diseñadores de Quake pasaron por alto sus suposiciones de alto ancho de banda 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ó popular tanto entre los jugadores de alta como de baja latencia.
Véase también
Referencias
- 1 2 Bernier, Yahn W. (2001). "Métodos de compensación de latencia en el diseño y optimización de protocolos de juego cliente/servidor" (PDF) . Recuperado el 19 de diciembre de 2008 .
- ↑ Gabriel Gambetta, Predicción del lado del cliente y conciliación del servidor
- ↑ Dransfield, Ian (14 de julio de 2018). "The Engine Room: Build" . Retro Gamer (182). Reino Unido: Future plc : 62–67 . ISSN 1742-3155 . Consultado el 24 de noviembre de 2018 .
- ↑ Duke Nukem 3D (versión 1.5 en CD) Lanzamiento del código fuente - 1 de abril de 2003 , Ver domovethings(), fakedomovethings() y fakedomovethingscorrect(), Preservación de videojuegos, 15 de mayo de 2019 , consultado el 15 de mayo de 2019
{{citation}}: CS1 mantenimiento: otros ( enlace ) - ↑ John Carmack, QuakeWorld.plan
- desarrollo de videojuegos