गेम लैग और पैकेट लॉस का सिमुलेशन
नेटकोड 1 ms पिंग वाले लोकल कनेक्शन पर लिखा जाता है और होटल के वाई-फ़ाई पर खिलाड़ी उसे परखते हैं। यह टूल उस फ़ासले को आपकी अपनी मशीन पर पाटता है, सिर्फ़ गेम प्रोसेस पर, जबकि बाकी कंप्यूटर इस्तेमाल लायक रहता है।
यहाँ से शुरू करें
गेम क्लाइंट को निशाना बनाएँ, उसे एक यथार्थवादी खराब कनेक्शन दें, और पाँच मिनट बाद उसे खुद रुकने दें:
BeanNetworkTester.exe --latency 120 --jitter 60 --loss 3 --target mygame.exe --duration 300
इसके लिए एक तैयार टाइमलाइन भी है: scenarios फ़ोल्डर में overloaded-game-server.json कनेक्शन को भीड़ में ले जाती है और वापस निकालती है, ताकि आप देख सकें कि क्लाइंट बदलाव की दोनों दिशाओं को कैसे सँभालता है। समय आधारित सिनेरियो देखें।
गेम में पैकेट लॉस क्यों दिखता है जबकि ब्राउज़र में नहीं
ज़्यादातर गेम ट्रैफ़िक UDP है, और UDP के पास पैकेट लॉस छिपाने की कोई जगह नहीं। TCP पर वेब पेज चुपचाप दोबारा भेजता है और बस ज़्यादा समय लेता है, इसीलिए 5% पैकेट लॉस पर ब्राउज़र ठीक लग सकता है जबकि उसी 5% पर मैच अटकता है, किरदार को पीछे खींचता है और सिंक से बाहर हो जाता है।
इसी से गेम पैकेट लॉस परखने की ईमानदार जगह बन जाता है: जो आप तय करते हैं, क्लाइंट असल में वही झेलता है।
क्या तय करें, और वह क्या उजागर करता है
| सेटिंग | आज़माएँ | यह क्या उजागर करता है |
|---|---|---|
| लेटेंसी | 80 से 250 ms | प्रेडिक्शन और इंटरपोलेशन। क्या गोली चलने के बाद आपका किरदार पीछे खिसक जाता है? |
| जिटर | 40 से 100 ms | बफ़रिंग। लगातार 200 ms को छिपाना उस पिंग से आसान है जो बदलती रहती है। |
| पैकेट लॉस | 2 से 10% | गायब स्टेट अपडेट, और यह कि क्लाइंट सँभलता है या भटक जाता है। |
| झटके | 1 सेकंड, कभी-कभार | वह ठहराव जो टावर बदलने से होता है। आम तौर पर सबसे बदसूरत। |
| लिंक चालू और बंद | 10 s चक्र, 30% बंद | दोबारा जुड़ना और फिर से शामिल होना। |
जिटर को औसत के बजाय 95वें पर्सेंटाइल और मीडियन के बीच के फ़ासले से मापें: जिटर औसत को मुश्किल से हिलाता है, इसीलिए कोई रन कागज़ पर एक जैसा दिख सकता है और खेलने में अलग लगता है।
दो बिल्ड की तुलना के लिए seed चाहिए
यादृच्छिक पैकेट लॉस दो रन को अलग बना देता है, इसलिए “नया बिल्ड बदतर लग रहा है” कोई सबूत नहीं। वही seed वही पैकेट लॉस और वही जिटर दोहराता है, जो एहसास को तुलना में बदल देता है:
BeanNetworkTester.exe --latency 120 --jitter 60 --loss 5 --seed 42 --target mygame.exe --duration 180
यह क्या नहीं कर सकता
यह आपकी मशीन के ट्रैफ़िक को आकार देता है। यह सर्वर को धीमा नहीं करता, उसकी टिक रेट नहीं बदलता और दूसरे खिलाड़ियों को खराब कनेक्शन पर नहीं डालता, इसलिए यह आपके क्लाइंट को खराब लिंक के सामने परखता है, लोड में आपके सर्वर को नहीं। सर्वर की ओर के लिए आपको लोड टेस्टिंग चाहिए, और खराब कनेक्शनों से भरे लॉबी के लिए एक से ज़्यादा मशीन।