Saya sedang menulis game iOS jaringan. Ketika mengirim paket dengan GKMatchSendDataReliable
(yang saya asumsikan adalah UDP dengan kode penerimaan paket mereka sendiri ditulis) pada 60 paket per detik (jadi 16 ms antara paket yang berdekatan), waktu ping rata-rata dengan cepat menjadi lebih buruk: Saya membuka 7 pertandingan GameCenter di bawah ini (satu demi satu ) dan hanya mengirim "banjir" 100 paket (dengan kecepatan 60 paket per detik). Saya mengukur waktu pulang pergi rata-rata, dan ini adalah hasilnya:
[ 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
Setelah 2 tes terakhir hasilnya sekitar 1000 ms.
Tampaknya saya diperlambat, kemungkinan besar oleh ISP saya. Karena ini adalah permainan iOS, orang akan menggunakan koneksi perumahan biasa.
Ketika saya mengubah kecepatan pengiriman paket menjadi 10 kali lebih lambat (jadi 1 paket setiap 160 ms), pengujiannya memakan waktu lebih lama, tetapi waktu bolak-balik tetap rendah secara konsisten.
[21:31:27]: Saya melihat waktu pulang pergi rata-rata 55.289109 ms, ia melihat 69.032727 ms
Jadi sepertinya menjaga latensi rendah pada koneksi (dan tidak akan "dihukum" oleh ISP) saya harus mengurangi tingkat paket yang saya kirim. Perlu diingat bahwa ini adalah paket yang sangat kecil, seperti maksimum 40 byte, namun saya masih dibatasi.
Saya mencari pedoman tentang berapa banyak paket UDP yang dapat saya kirim per detik untuk menghindari terkekeh! Apakah ada pedoman umum di mana saja?