मैं एक नेटवर्क iOS गेम लिख रहा हूं। जब साथ पैकेट भेजने GKMatchSendDataReliable
(जो मैं मान लिया 60 पैकेट प्रति सेकंड (आसन्न पैकेट के बीच तो 16 एमएस), औसत पिंग समय पर अपने स्वयं के पैकेट स्वागत लिखे कोड के साथ यूडीपी था) तेजी से बदतर हो: मैं एक के बाद नीचे (एक 7 GameCenter मैचों खोला ) और बस 100 पैकेटों की "बाढ़" (60 पैकेट प्रति सेकंड की दर से) भेजी। मैंने औसत राउंडट्रिप समय मापा, और ये परिणाम हैं:
[ 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
अंतिम 2 परीक्षणों के बाद परिणाम लगभग 1000 एमएस हैं।
ऐसा लगता है कि मैं थर्रा जा रहा हूं, सबसे अधिक संभावना मेरे आईएसपी द्वारा। क्योंकि यह एक iOS गेम है, लोग नियमित आवासीय कनेक्शन का उपयोग करेंगे।
जब मैंने पैकेट भेजने की दर को 10 गुना धीमा (इसलिए 1 पैकेट प्रत्येक 160 एमएस) किया, तो परीक्षण में अधिक समय लगता है, लेकिन राउंडट्रिप समय लगातार कम रहता है।
[२१:३१:२27]: मैंने ५५.२ ms ९ २० एमएस के औसत दौर का समय देखा, उन्होंने ६ ९.०३२ ms२27 एमएस देखा
इसलिए ऐसा लगता है कि कनेक्शन पर कम विलंबता रखना (और आईएसपी द्वारा "दंडित नहीं किया जाना") मेरे द्वारा भेजे जाने वाले पैकेट की दर को कम करना है। ध्यान रखें कि ये बहुत छोटे पैकेट हैं, जैसे अधिकतम 40 बाइट्स, फिर भी मुझे थ्रोट किया जा रहा है।
मैं दिशानिर्देशों की तलाश कर रहा हूं कि कितने यूडीपी पैकेट मैं प्रति सेकंड भेज सकता हूं ताकि थ्रॉटल होने से बचा जा सके! कहीं कोई सामान्य दिशा-निर्देश तो नहीं हैं?