Sto scrivendo un gioco iOS in rete. Quando si inviano pacchetti con GKMatchSendDataReliable
(che supponevo fosse UDP con il proprio codice di ricezione dei pacchetti scritto) a 60 pacchetti al secondo (quindi 16 ms tra pacchetti adiacenti), i tempi medi di ping peggiorano rapidamente: ho aperto 7 partite di GameCenter in basso (una dopo l'altra ) e ha semplicemente inviato un "diluvio" di 100 pacchetti (al ritmo di 60 pacchetti al secondo). Ho misurato il tempo di andata e ritorno medio e questi sono i risultati:
[ 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
Dopo gli ultimi 2 test i risultati sono circa 1000 ms.
Sembrerebbe che io sia strozzato, molto probabilmente dal mio ISP. Poiché si tratta di un gioco iOS, le persone useranno regolari connessioni residenziali.
Quando ho cambiato la velocità di invio dei pacchetti per essere 10 volte più lenta (quindi 1 pacchetto ogni 160 ms), i test impiegano molto più tempo, ma i tempi di andata e ritorno rimangono costantemente bassi.
[21:31:27]: ho visto un tempo di andata e ritorno medio di 55.289109 ms, ha visto 69.032727 ms
Quindi sembra mantenere una bassa latenza sulla connessione (e non essere "punito" dagli ISP). Devo ridurre la velocità dei pacchetti che invio. Tieni presente che si tratta di pacchetti molto piccoli, come massimo 40 byte, eppure sono ancora limitato.
Sto cercando linee guida su quanti pacchetti UDP posso inviare al secondo per evitare di essere strozzato! Ci sono linee guida generali da qualche parte?