He estado leyendo el artículo de Valve sobre redes multijugador que se ha adaptado del artículo de 2001 de Yahn Bernier llamado Métodos de compensación de latencia en el diseño y optimización de protocolos en el juego cliente / servidor . Estoy haciendo un juego multijugador en tiempo real usando un servidor node.js conectado a clientes a través de socket.io y tengo algunas preguntas sobre los principios detallados a continuación:
Interpolación de entidad
[Interpolación] evita el movimiento nervioso que esto normalmente llevaría al almacenar temporalmente las actualizaciones del servidor y luego reproducirlas con los espacios interpolados suavemente. También puede proteger contra fallas ocasionadas por la pérdida de paquetes.
Predicción del lado del cliente
La predicción es la noción de que el cliente predice los efectos de las acciones del jugador local sin esperar a que el servidor los confirme. El estado previsto de una entidad se prueba con los comandos del servidor a medida que llegan hasta que se detecta una coincidencia o una coincidencia incorrecta.
Compensación de retraso
La compensación de retraso es la noción de que el servidor usa la latencia de un jugador para rebobinar el tiempo al procesar [entrada del usuario], para ver lo que el jugador vio cuando se envió el comando. En combinación con la predicción, la compensación de retraso puede ayudar a combatir la latencia de la red hasta el punto de eliminarla desde la perspectiva de un atacante.
¿Los principios se aplican a TCP como lo hacen a UDP y habría alguna diferencia en la implementación? Puedo ver que la interpolación de la entidad no necesitaría proteger contra la pérdida de paquetes, pero eso es todo.
¿Puedo incluso comunicarme entre un servidor y un navegador web y viceversa usando UDP y Node.js?
Dado que el documento tiene más de una década, ¿se siguen utilizando estos principios o ha aparecido otra tecnología?
Cualquier ayuda sería muy apreciada.