por - Sincronización de tiempo entre el servidor simple basado en socket python y los clientes
servidor python windows (2)
Accidentalmente me topé con una publicación de blog insoportablemente buena sobre cómo hacer física de redes distribuidas en general (sin la predicción tradicional del cliente). Lo recomiendo encarecidamente, junto con las diapositivas GDC presentadas por Fiedler hace un par de años. ¡Buena suerte!
Tengo los comienzos de un pequeño juego de varios jugadores que estoy escribiendo en python como un ejercicio de aprendizaje. Actualmente, el servidor funciona a 10 fps, mientras que los clientes funcionan a la velocidad que deseen. Esto funciona bien para conservar el ancho de banda, pero a menos que el cliente le informe al servidor cuando se produjo su entrada, todas las entradas se cuantifican a intervalos de 100 ms. ¿Cómo puedo sincronizar el tiempo entre el cliente y el servidor para poder hacer estas correcciones? Un gran obstáculo aquí es que tendré que determinar los tiempos de ping y compensarlos.
Esta es una pregunta muy interesante. Lamentablemente, no hay una respuesta fácil. Simplemente debe entender bien el problema y conformarse con una solución que sea lo suficientemente buena para su aplicación.
Mi primer instinto fue que el protocolo de tiempo de red (Network Time Protocol, NTP) para configurar los relojes de la máquina desde los servidores NTP habría abordado este problema. Uno de los problemas abordados se refiere a Jitter Buffers , que implica la variación del retraso del paquete . Esto está elaborado en RFC 3393; Métrica de variación de retardo de paquetes IP para métricas de rendimiento de IP (IPPM) .