Tôi đang viết một trò chơi iOS nối mạng. Khi gửi các gói với GKMatchSendDataReliable
(mà tôi giả sử là UDP với mã nhận gói tin riêng được viết) ở mức 60 gói mỗi giây (vì vậy 16 ms giữa các gói liền kề), thời gian ping trung bình nhanh chóng trở nên tồi tệ hơn: Tôi đã mở 7 trận đấu GameCenter bên dưới (lần lượt từng trận đấu khác ) và chỉ cần gửi một "lũ" 100 gói (với tốc độ 60 gói mỗi giây). Tôi đã đo thời gian làm tròn trung bình và đây là kết quả:
[ 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
Sau 2 lần kiểm tra cuối cùng, kết quả là khoảng 1000 ms.
Có vẻ như tôi đang bị điều chỉnh, rất có thể là do ISP của tôi. Vì đây là một trò chơi iOS, mọi người sẽ sử dụng các kết nối dân cư thông thường.
Khi tôi thay đổi tốc độ gửi gói thành chậm hơn 10 lần (vì vậy 1 gói cứ sau 160 ms), các thử nghiệm mất nhiều thời gian hơn, nhưng thời gian làm tròn vẫn luôn thấp.
[21:31:27]: Tôi thấy thời gian khứ hồi trung bình là 55.289109 ms, anh ấy thấy 69.032727 ms
Vì vậy, có vẻ như để giữ độ trễ thấp trên kết nối (và không bị "trừng phạt" bởi các ISP) Tôi phải giảm tốc độ gói tin tôi gửi. Hãy nhớ rằng đây là những gói rất nhỏ, như tối đa 40 byte, nhưng tôi vẫn đang bị điều chỉnh.
Tôi đang tìm hướng dẫn về số lượng gói UDP tôi có thể gửi mỗi giây để tránh bị điều chỉnh! Có bất kỳ hướng dẫn chung ở bất cứ đâu?