Estoy escribiendo un juego de iOS en red. Al enviar paquetes con GKMatchSendDataReliable
(que supuse que era UDP con su propio código de recepción de paquetes escrito) a 60 paquetes por segundo (es decir, 16 ms entre paquetes adyacentes), los tiempos de ping promedio empeoran rápidamente: abrí 7 coincidencias de GameCenter a continuación (una tras otra ) y simplemente envió una "inundación" de 100 paquetes (a una velocidad de 60 paquetes por segundo). Medí el tiempo promedio de ida y vuelta, y estos son los resultados:
[ 21:16:39 ]: I saw an average roundtrip time of 52.342787 ms, he saw 54.496590 ms
[ 21:16:34 ]: I saw an average roundtrip time of 62.631942 ms, he saw 61.991655 ms
[ 21:16:45 ]: I saw an average roundtrip time of 88.394380 ms, he saw 83.619123 ms
[ 21:16:51 ]: I saw an average roundtrip time of 179.053118 ms, he saw 156.869141 ms
[ 21:16:57 ]: I saw an average roundtrip time of 75.025076 ms, he saw 75.419723 ms
[ 21:17:23 ]: I saw an average roundtrip time of 8832.082488 ms, he saw 7616.877558 ms
[ 21:19:33 ]: I saw an average roundtrip time of 25088.962344 ms, he saw 16833.064914 ms
Después de las últimas 2 pruebas, los resultados son alrededor de 1000 ms.
Parece que estoy siendo estrangulado, probablemente por mi ISP. Debido a que este es un juego de iOS, la gente usará conexiones residenciales regulares.
Cuando cambié la velocidad de envío de paquetes a 10 veces más lenta (1 paquete cada 160 ms), las pruebas tomaron mucho más tiempo, pero los tiempos de ida y vuelta siguen siendo consistentemente bajos.
[21:31:27]: vi un tiempo promedio de ida y vuelta de 55.289109 ms, vio 69.032727 ms
Por lo tanto, parece mantener una baja latencia en la conexión (y no ser "castigado" por los ISP). Tengo que reducir la velocidad de los paquetes que envío. Tenga en cuenta que estos son paquetes muy pequeños, como un máximo de 40 bytes, pero todavía estoy siendo estrangulado.
¡Estoy buscando pautas sobre cuántos paquetes UDP puedo enviar por segundo para evitar ser acelerado! ¿Hay alguna guía general en alguna parte?