नेटवर्क याग क्षतिपूर्ति से निपटने के लिए खेल यांत्रिकी में ट्रिक्स?


20

नेटवर्क लैग क्षतिपूर्ति को लागू करना कठिन है, इससे कैसे बचें?

हो सकता है कि ट्रिक्स का उपयोग करना और गेम मैकेनिक्स का निर्माण इस तरह से करना संभव है कि लैग को एक गैर-महत्वपूर्ण या यहां तक ​​कि खेल के प्राकृतिक हिस्से के रूप में माना जाएगा?

वे क्या टेकनीक हैं और क्या कोई मौजूदा गेम (MMORPG, रणनीतियाँ, ...) है जो इस तरह की टेकनीक का उपयोग करता है?

अपडेट करें:

टर्न आधारित खेलों में अंतराल क्षतिपूर्ति की आवश्यकता नहीं होती है, लेकिन यह वास्तविक समय के लिए दृष्टिकोणों को देखने के लिए दिलचस्प होगा (या वास्तविक समय की एक छाप, महत्वपूर्ण हिस्सा - उपयोगकर्ता को अवरुद्ध नहीं किया जाना चाहिए और प्रतीक्षा करने के लिए मजबूर होना चाहिए)।

मेरे लिए लैग मुआवजे से बचने का मुख्य कारण सादगी है।


1
यह लिंक मदद कर सकता है: developer.valvesoftware.com/wiki/Source_Multeps_Networking
जॉन मैकडॉनल्ड

6
यदि आप एक ऐसे खेल का निर्माण करना चाहते हैं, जहाँ विलंबता एक गैर-मुद्दा है; कुछ सेकंड के लिए स्वीकार्य है, जहां आधारित है कि कुछ के निर्माण पर विचार करें।
वॉन हिल्ट्स

3
वह वाल्व लिंक उन सभी जटिल तरीकों के बारे में है जिसमें नेटवर्क लैग क्षतिपूर्ति को लागू किया जाता है - इसलिए, यह सवाल के बारे में जो पूछता है उसके विपरीत है।
काइलोटन

@JohnMcDonald Yep, मुझे वाल्व से उस लेख के बारे में पता है, और जैसा कि उल्लेख किया गया है - यह इसके विपरीत है जो मैं पूछ रहा हूं :)।
अलेक्सी पेट्रुशिन

साथ ही आप GGPO पर एक नज़र लेने के लिए चाहते हो सकता है: ggpo.net
शिष्टाचार

जवाबों:


16

ग्राहक के लिए किसी प्रकार की प्रतिक्रिया को लागू करना आम बात है ताकि खिलाड़ी को तुरंत पता चल सके कि उनकी चुनी हुई कार्रवाई पंजीकृत हो गई है, जैसे:

  • इंटरफ़ेस ध्वनि (जैसे। बटन क्लिक)
  • इन-वर्ल्ड साउंड (उदाहरण के लिए, "एक बार, कमांडर" एक चरित्र कह रहा है)
  • एनीमेशन (जैसे तलवार चलाना शुरू करना)

जानकारी सर्वर पर यात्रा करते समय हो सकती है ताकि खिलाड़ी को यह महसूस न हो कि उनकी कार्रवाई अभी तक शुरू नहीं हुई है। जब तक सर्वर तुरंत जवाब देता है और कार्रवाई जल्द ही शुरू हो जाती है, खिलाड़ी देरी को नोटिस नहीं कर सकता है।

ये ट्रिक्स उन खेलों में काम करते हैं, जहाँ खिलाड़ी इनपुट्स काफी कम होते हैं और इसलिए आपके द्वारा इनपुट करने के लिए इनपुट के इंतज़ार में जितना समय व्यतीत होता है, वह कुल मिलाकर खेले जाने वाले समय का अपेक्षाकृत कम अनुपात होता है। इसलिए, आप खेल की संरचना के तरीके ढूंढना चाहेंगे ताकि खिलाड़ी कम आदान प्रदान करे। इसका मतलब शायद खिलाड़ी की क्रियाओं को अधिक सारगर्भित बनाना और खेल को निम्न स्तर के व्यवहार को लागू करना है। उदाहरण:

  • पथपाकर यांत्रिकी के साथ स्टीयरिंग यांत्रिकी को बदलें
  • लक्ष्यीकरण यांत्रिकी को लक्ष्य चयन यांत्रिकी से बदलें
  • अधिक सामरिक या रणनीतिक योजनाओं के साथ दौर-दर-चरण मुकाबला निर्देशों को बदलें
  • असतत / टर्न-आधारित सिस्टम के साथ वास्तविक समय / निरंतर गेमप्ले को बदलें

1
धन्यवाद, आपने औपचारिक रूप से मुझसे जो पूछा है - खिलाड़ी से अनैतिक, स्थगित इनपुट का उपयोग करें। दिलचस्प होगा कि वास्तविक खेलों को देखने के लिए जो इसका उपयोग करते हैं।
एलेक्सी पेट्रुशिन

2
सैकड़ों खेल किसी न किसी तरह से इस तरह की चीजों का उपयोग करते हैं, लेकिन सबसे अधिक संभावना है कि यह अन्य कारणों से लाभकारी प्रभाव को छिपाने के लिए किया गया था।
Kylotan

7

एकाएक विचार:

  1. धोखा: रॉकेट का उपयोग करें । रॉकेट किसी भी विचित्रता को छिपाते हुए एक दायरे में विस्फोट करते हैं।
  2. धोखा: परिणाम को पूर्व निर्धारित करें और स्थिति को नेत्रहीन होने के लिए मजबूर करें
  3. धोखा: हमलों में समय लगता है , atk + anim + result discontinuity में विलंबता छिपाएं
  4. धोखा: नेटवर्किंग सामान से स्थानीय प्रतिक्रिया को डिस्कनेक्ट करें
  5. धोखा: बहुत सारी वीएफएक्स या स्क्रीन गतिविधि जो किसी भी अजीबता को कवर करती है।
  6. एक क्रिया-प्रतिक्रिया डिज़ाइन का उपयोग करें जिसे जारी रखने से पहले संकल्प की आवश्यकता होती है

तो हाँ, बहुत धोखा।


4

इसका उत्तर काफी सरल है - बस ऐसे खेल बनाएं जिसमें समय महत्वपूर्ण खंड न हों। आप एक विशिष्ट कारण के लिए इस प्रकार के प्रक्षेपों को लागू करने से बचने के लिए देख रहे हैं जो मैं इसे लेता हूं, जिसका अर्थ है कि आप चिकोटी और तेज गेमप्ले के बारे में चिंतित नहीं हैं। यह सभ्यता (जो एक रणनीति का खेल है) सहित बहुत सारे खेलों के लिए पूरी तरह से अनुकूल है। हालांकि, यह समझें कि यह वास्तविक समय रणनीति गेम के लिए स्वीकार्य नहीं है, जहां आपको चर समय पर नेटवर्क पर बहुत अधिक डेटा पास करने की आवश्यकता होती है। यदि आप बहुत उच्च विलंबता नेटवर्क के आसपास कोई गेम डिज़ाइन करना चाहते हैं, तो निम्नलिखित पर विचार करें:

  1. बारी आधारित खेल बनाएँ। इस प्रकार के खेलों में, राज्य के वास्तविक समय के इनपुट की आवश्यकता नहीं होती है और अन्य खिलाड़ी बस खेल की स्थिति को अपने ग्राहक में धकेल सकते हैं जब उनकी बारी हो। यह नेटवर्क पर दबाव को कम करता है और यदि कुछ इच्छा है तो कुछ सेकंड के ऊपर की तरफ देरी की अनुमति देता है। सभ्यता एक आधारित आधारित खेल है जो बहुत लोकप्रिय है, और रणनीति नस में है।
  2. अन्य खिलाड़ियों के निर्णयों को कम से कम रखें। यदि आपका गेम रणनीतिक है और टर्न-आधारित नहीं खेल सकता है, तो विलंबित पैकेट के प्रभाव को कम करने पर विचार करें। क्या ग्राहक ज्यादातर सिमुलेशन कर सकता है? एक उदाहरण एक रणनीति गेम है जो थोड़ी देर के लिए अकेले खेला जाता है और फिर कहते हैं, 16 मिनट के बाद, किसी अन्य खिलाड़ी (शायद एक मुकाबला खेल) के खिलाफ नकल की जाती है जहां खिलाड़ी हर x अंतराल में सैनिकों को भेजते हैं और हर y अंतराल पर वापस रिपोर्ट करते हैं।

मुझे उम्मीद है कि यह कम से कम थोड़ा मदद करता है; आपके सटीक गेम विचारों को जाने बिना यह मुश्किल है। मेरा मानना ​​है कि आपके पास इस तरह के एक पैटर्न (सादगी, बैंडविड्थ पर बचत, कम नेटवर्क जटिलता) के आसपास अपना गेम बनाना चाहते हैं।


4

आप भी "यथार्थवाद" खातिर अपने गेमप्ले का हिस्सा बन सकते हैं। मान लीजिए कि आपके खिलाड़ी कुछ रोबोटों को दूर से नियंत्रित करने के लिए हैं, आप अंतराल को कम से कम 500ms या 1s करने के लिए बाध्य कर सकते हैं (आपको कुछ डायनामिक लैग पैडिंग सिस्टम लागू करना होगा)।


यह एक अच्छा मोड़ है
o0 '।

0

यह केवल खिलाड़ियों के कार्यों को छिपाने के लिए एक अच्छी चाल है। बहुत सारे एफपीएस गेम बिल्कुल यही करते हैं। वे अधिकांश गोलियों के किसी भी दृश्य को नहीं दिखाते हैं केवल ध्वनियां बजाई जाती हैं और आपको खिलाड़ियों को होने वाली क्षति के रूप में परिणाम मिलता है।

मैंने कुछ एफपीएस गेम खेले हैं जहां उच्च सटीकता वाले हथियार (स्निपर्स और ऐसे) का बहुत स्पष्ट दृश्य प्रभाव था, और आप वास्तव में देख सकते थे कि दूसरे खिलाड़ी ने आपके पीछे से गोली मार दी थी, लेकिन लैग मुआवजे के कारण आप मारे गए थे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.