J'écris un jeu iOS en réseau. Lors de l'envoi de paquets avec GKMatchSendDataReliable
(que je supposais être UDP avec leur propre code de réception de paquets écrit) à 60 paquets par seconde (donc 16 ms entre les paquets adjacents), les temps de ping moyens s'aggravent rapidement: j'ai ouvert 7 matchs GameCenter ci-dessous (l'un après l'autre) ) et a simplement envoyé un «flot» de 100 paquets (à raison de 60 paquets par seconde). J'ai mesuré le temps moyen aller-retour, et voici les résultats:
[ 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
Après les 2 derniers tests, les résultats sont d'environ 1000 ms.
Il semblerait que je suis étranglé, probablement par mon FAI. Parce que c'est un jeu iOS, les gens utiliseront des connexions résidentielles régulières.
Lorsque j'ai modifié le taux d'envoi des paquets à 10 fois plus lentement (donc 1 paquet toutes les 160 ms), les tests prennent beaucoup plus de temps, mais les temps d'aller-retour restent constamment bas.
[21:31:27]: J'ai vu un temps d'aller-retour moyen de 55,289109 ms, il a vu 69,032727 ms
Il semble donc que pour garder une faible latence sur la connexion (et ne pas être «puni» par les FAI), je dois réduire le taux de paquets que j'envoie. Gardez à l'esprit que ce sont de très petits paquets, comme 40 octets maximum, mais je suis toujours limité.
Je cherche des directives sur le nombre de paquets UDP que je peux envoyer par seconde pour éviter d'être étranglé! Y a-t-il des directives générales quelque part?