Estoy trabajando en una aplicación de servidor C# para un motor de juego que estoy escribiendo en ActionScript 3. Estoy usando un modelo de servidor autorizado para evitar hacer trampa y asegurar juego justo. Hasta ahora, todo funciona bien:¿Cómo puedo obtener la latencia entre el servidor y el cliente en C#
Cuando el cliente comienza a moverse, le dice al servidor y comienza a procesar localmente; el servidor, entonces, le dice a todos los demás que el cliente X ha comenzado a moverse, entre los detalles para que también puedan comenzar a renderizar. Cuando el cliente deja de moverse, le dice al servidor, que realiza cálculos basados en el momento en que el cliente comenzó a moverse, y el cliente procesa el retraso y responde a todos, para que puedan actualizar con los valores correctos.
El hecho es que cuando uso la demora de tics predeterminada de 20ms en los cálculos del servidor, cuando el cliente se mueve por una distancia bastante larga, hay una inclinación hacia delante cuando se detiene. Si aumente ligeramente el retraso a 22 ms, en mi red local todo funciona sin problemas, pero en otros lugares, la inclinación todavía está allí. Después de experimentar un poco, noté que el retraso adicional necesario está más o menos ligado a la latencia entre el cliente y el servidor. Incluso lo reduje a una fórmula que funcionaría muy bien: delay = 20 + (latencia/10).
Entonces, ¿cómo procedería para obtener la latencia entre un determinado cliente y el servidor (estoy utilizando conectores asíncronos). El esfuerzo de la CPU no puede ser demasiado, para que el servidor no se ejecute lentamente. Además, ¿esta es realmente la mejor manera, o hay una manera más eficiente/más fácil de hacer esto?
+1 por "Blame Einstein". –