नेटवर्क गेमिंग में गैर-आधिकारिक ग्राहकों को रोकने की तकनीक?


22

मल्टी-प्लेयर नेटवर्क गेम्स में, यह सुनिश्चित करने के लिए क्या तकनीक मौजूद है कि उपयोगकर्ता आधिकारिक क्लाइंट एप्लिकेशन से जुड़ रहे हैं, न कि कुछ हैक किए गए क्लाइंट ऐप?

मुझे लगता है कि ऐसा करने का कोई पक्का तरीका नहीं है, बल्कि मैं उन तकनीकों में दिलचस्पी रखता हूँ जिन्हें समस्या को कम करने के लिए नियोजित किया जा सकता है।

मैं विशेष रूप से किसी भी तकनीक में रुचि रखता हूं जिसका उपयोग वेब आधारित खेलों के लिए किया जा सकता है, लेकिन मुझे लगता है कि अधिकांश को आम तौर पर लागू किया जा सकता है।

धन्यवाद!


कुछ लोगों का मानना ​​है कि सामान्यीकृत क्लाउड गेमिंग कोने के आसपास है। यह इस प्रश्न को पूरी तरह से हल करता है।
लॉरेंट कौविदो

जवाबों:


13

यह दिलचस्प समस्या है, लेकिन मुझे लगता है कि आप यहां गलत सवाल पूछ रहे हैं। मुझे हैक किए गए क्लाइंट दृष्टिकोण का पता लगाने से शुरू करें:

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

इसके अलावा, उपयोगकर्ता अपने स्वयं के क्लाइंट को धोखा देने के लिए उपयोग कर सकता है - माउस आंदोलन और उदाहरण के लिए क्लिक करके।

तो सवाल यह होना चाहिए - कैसे एक बॉट खिलाड़ी का पता लगाने के लिए?

यहां आपके पास कुछ विकल्प हैं - क्लिकों के बीच समय को मापना, माउस आंदोलनों की गति को मापना - क्या माउस बिंदु A से बिंदु B तक कई बार घूमता है और ठीक उसी कोर्ड्स से टकराता है? क्या उपयोगकर्ता आंदोलन दोहराए जाने योग्य है? यदि वह संसाधन जो उपयोगकर्ता एकत्रित कर रहा था, तो समाप्त हो गया था, क्या उपयोगकर्ता अन्य कार्रवाई में जाता है या वह घंटों तक प्रतीक्षा करता है? दिन के अंत में आप लेखन पैटर्न मान्यता कोड को समाप्त करते हैं।


4
बॉट एक्शन के चारों ओर कुछ शोर को जोड़ने के साथ आपकी बॉट चेकिंग तकनीक को मिनटों के भीतर पीटा जा सकता है।
AsTeR

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

2
अकेले कार्यक्रम की रोकथाम असंभव है, यही वजह है कि वाह जैसे गेम में बहुत सारे प्रवेशकर्ता होते हैं जो दोहरावदार काम करने वाले लोगों की जांच करते हैं और उनसे सवाल पूछते हैं कि वे मानव हैं।
DampeS8N

1
@AsTeR सही दिशा में आगे बढ़ने के लिए कुछ विचार थे। ऐसे कई लेख और प्रस्तुतियाँ हैं जो इस समस्या को और अधिक गहराई से पेश करते हैं, जैसे यह एक उदाहरण के लिए: iis.sinica.edu.tw/~swc/pub/bot_trajectory.html
Kamil

5
"तो सवाल होना चाहिए - कैसे एक बॉट खिलाड़ी का पता लगाने के लिए?" मैं असहमत हूं, बॉट होने के बिना धोखा देने के कई तरीके हैं। उदाहरण के लिए ग्राहक को बहुत अधिक जानकारी या ग्राहक पर भरोसा करना।
मात्सेमन्न

9

मल्टी-प्लेयर नेटवर्क गेम्स में, यह सुनिश्चित करने के लिए क्या तकनीक मौजूद है कि उपयोगकर्ता आधिकारिक क्लाइंट एप्लिकेशन से जुड़ रहे हैं, न कि कुछ हैक किए गए क्लाइंट ऐप?

मुझे नहीं लगता कि यह सही तरीका है या कम से कम एकमात्र ऐसी चीज नहीं है जिससे आपको चिंतित होना चाहिए।

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

  2. अधिकांश गणना सर्वर साइड (स्थिति आदि) पर करें। ग्राहक यह कर रहा है कि यह स्वयं की गणना है लेकिन BUT कभी भी अपने मूल्यों को केवल अपने कार्यों को नहीं भेज सकता है। सर्वर को जांचना होगा कि क्या यह कार्रवाई वैध है और यह खेल को कैसे प्रभावित करेगा।

  3. 1 और 2 आमतौर पर भविष्यवाणियों के साथ संयुक्त होते हैं। क्लाइंट और सर्वर कुछ व्यवहारों की भविष्यवाणी करने की कोशिश करते हैं। उदाहरण के लिए क्लाइंट खिलाड़ी को ले जाता है लेकिन हर x सेकंड या एमएस। सर्वर द्वारा एक सुधार प्राप्त करता है

  4. क्लाइंट के लिए अपने खातों के लिए उपयोगकर्ताओं को चार्ज करें, इस तरह एक उपयोगकर्ता एक टूटे हुए संस्करण को पकड़ सकता है, लेकिन बिना खाते के नहीं खेल सकता है।

2 के साथ आप यह सुनिश्चित कर सकते हैं कि कोई मनी हैक्स, पोजीशन हैक्स या वॉल हैक्स आदि नहीं हैं, लेकिन बॉट हमेशा कई कंपनियों के लिए एक समस्या रही है। यहां तक ​​कि बड़ी कंपनी जैसे बर्फ़ीला तूफ़ान से भी परेशानी है। आप जो कर सकते हैं वह प्रति खाते में खेलने योग्य समय को सीमित करना है, ताकि कोई व्यक्ति प्रति माह 540 घंटे से अधिक समय तक ऑनलाइन न रह सके। मुझे एक बॉट याद है जो कि XP ​​के फार्म के लिए राक्षसों + माउस इनपुट के रंग मूल्यों का उपयोग करता था। एक और तरीका एक अतिरिक्त कार्यक्रम प्रदान करना होगा जो अन्य चल रहे एप्लिकेशन और मेमोरी एक्सेस के लिए जांच करता है लेकिन यह एक नई समस्या लाता है।

संपादित करें:

शुरुआती लोगों के लिए बहुत अच्छी तरह से लिखे गए लेख: http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/


हाँ, मैं मानता हूँ कि यह एकमात्र ऐसी चीज़ नहीं है जिससे हमें चिंतित होना चाहिए। हम इनमें से अधिकांश चीजें पहले से कर रहे हैं, लेकिन ग्राहक की ओर से कुछ उजागर तत्व अपरिहार्य हैं।
UpTheCreek

@UpTheCreek क्या आप हमें बता सकते हैं कि आप सबसे अधिक किससे चिंतित हैं? बॉट्स, डेटा में फेरबदल, किस तरह की जानकारी क्लाइंट को या क्लाइंट को भेजी जाती है, जिसे संरक्षित करने की आवश्यकता होती है। जैसा कि आप पहले ही नोटिस कर चुके हैं कि क्लाइंट क्रैक को सुरक्षित बनाना आसान काम नहीं है, लेकिन हो सकता है कि हम आपकी चिंताओं की जड़ों तक जाकर आपकी थोड़ी मदद कर सकें।

वैसे हमारे लिए यह सर्वर लागत / सर्वर लागत के साथ सिमुलेशन को संतुलित करने का मामला है। हम वह सब कुछ शामिल करने में असमर्थ हैं जो हम चाहेंगे। मैंने इसके बारे में बहुत सोचा है, लेकिन मैं यह देखना चाहता था कि क्या ग्राहक को बेहतर तरीके से बचाने के लिए कोई सरल चाल चल रहे हैं :) ग्राहक जावास्क्रिप्ट आधारित है, इसलिए आप कल्पना कर सकते हैं कि यह उपयोगकर्ताओं के लिए हैक करने के लिए सामान्य से भी आसान है। !
उपराष्ट्रपति

4

"आधिकारिक ग्राहक" चल रहा है, इसकी गारंटी देने का कोई वास्तविक तरीका नहीं है; इस तरह का कोई भी तंत्र सर्वर पर किसी प्रकार के "गुप्त" संचार करने वाले सत्यापन कोड पर निर्भर करेगा, जिसे पर्याप्त समय दिया जा सकता है, जो रिवर्स इंजीनियर हो सकता है। यह मूल रूप से तब होता है जब एंटी-हैकिंग सॉफ़्टवेयर सर्वर को बताता है कि क्लाइंट ठीक है।

संपादित करें: ऊपर थोड़ा सा विस्तार करने के लिए, उस कोड पर विचार करें जो क्लाइंट पक्ष को मान्य कर रहा है। इसमें दो बहुत मुश्किल काम हैं: जाँच करना कि मूल कोड का उपयोग किया जा रहा है (और कुछ भी मौजूद नहीं है जो मूल कोड के साथ गतिशील रूप से / रनटाइम पर!) में हस्तक्षेप कर सकता है, और इस परिणाम को सर्वर पर वापस संचारित कर सकता है, इस तरह से! यह संचार नकली नहीं हो सकता। जबकि पहला भाग पागलपन से कठिन है, जबकि दूसरा भाग सर्वथा असंभव है।

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

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

सर्वर पर पर्याप्त डेटा होना भी अनियमित व्यवहार का पता लगाने में एक पहला कदम है - यह लक्ष्य करना कि शायद मनुष्यों के लिए बहुत जल्दी है, आदि। स्पष्ट रूप से सही सिमुलेशन स्थिति आमतौर पर संभव नहीं है, लेकिन कुछ प्रकार के स्केल-डाउन, अनुमानित मॉडल का उपयोग किया जा सकता है। कई स्थितियाँ।


+1। मैं अक्सर रहस्य को बदलने के विचार का उल्लेख करने के लिए आया था, जिसका अर्थ हैकर्स को अपना काम दोहराना होगा। जटिल रहस्य इसे और भी बेहतर बनाते हैं, जैसे। सर्वर जो भेजता है उसके आधार पर परिवर्तन होता है।
काइलोटन

4

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

  1. सभी गणना और गेम क्रियाएं सर्वर साइड पर करें, क्लाइंट सिर्फ एक डंब टर्मिनल और ग्राफिक्स इंजन है। इसलिए यदि खिलाड़ी एक अलग ग्राहक का उपयोग कर रहे हैं, तो यह वास्तव में खेल के मामले में कोई फर्क नहीं पड़ता, वे खेल की भौतिकी को धोखा नहीं दे सकते।
  2. स्पष्ट संगणक कार्यक्रमों / क्लाइंट के लिए जाँचें, स्पष्ट कंप्यूटर क्रियाओं जैसे क्लिक इवेंट्स और माउस मूवमेंट्स की सही पुनरावृत्ति।
  3. गैर-स्पष्ट बॉट प्रोग्राम / क्लाइंट और इश्यू में गेम मॉडरेटर्स के लिए चेक।

वे तब खेल में दिखाई देते हैं (यदि यह संभव है, तो Starcraft 2 जैसे गेम के लिए यह नहीं है) या अन्यथा एक 'मानव जांच' के रूप में अपने कार्यों के बारे में खिलाड़ी को देखें / बात करें। या कम से कम यह है कि यह कैसे संभाला जाना चाहिए। बर्फ़ीला तूफ़ान इस बारे में बहुत अच्छा है, लेकिन ऐतिहासिक रूप से अन्य MMO कंपनियां नहीं हैं।

गैर-स्पष्ट बॉट्स के लिए जाँच करना आसान नहीं है, लेकिन कुछ बुनियादी नियमों का पालन करना शामिल है

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

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

इसलिए अंतिम चरण जब कोई व्यक्ति या बॉट बहुत लंबे समय से कुछ दोहरा रहा है, तो वास्तव में खिलाड़ी के सामने आने और उनसे बात करने के लिए एक मानवीय तरीका होना चाहिए। यदि वे वहां हैं और मानवीय जवाबों के साथ जवाब देते हैं, तो वे मानवीय हैं। आमतौर पर मॉड्स खिलाड़ी को कुछ समय के लिए रुकने के लिए कहेंगे, या उनका कहीं और पालन करेंगे और कुछ अन्य कार्य करेंगे, हुप्स समय के साथ अधिक जटिल हो जाएंगे।

Tanget

बेशक, अंततः कोई व्यक्ति एक बॉट बनाएगा जो एक वास्तविक व्यक्ति से अप्रभेद्य है, जो ट्यूरिंग टेस्ट पास कर रहा है। और वहाँ बहुत सारे बॉट लेखक हैं जो सिर्फ ऐसा करने का लक्ष्य रखते हैं।

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

/ स्पर्शरेखा

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

अंत में, आप अपने गेम स्पेस की वास्तविकता के रूप में बॉट्स के साथ भी रह सकते हैं और उनके उपयोग को प्रोत्साहित कर सकते हैं। इसके लिए बॉट, ट्रेनर और हेल्पर कार्यक्रमों के अंतिम और आम उपयोग के आसपास अपने खेल को डिजाइन करना आवश्यक है। मैं कहना चाहता हूं कि एक पैराग्राफ था जिसने लगभग 10 साल पहले ऐसा किया था, लेकिन मुझे याद नहीं है कि यह कौन सा था। इसने खेल के अंत में जादू कर दिया, क्योंकि MMO भारी हैं और इसका मतलब है कि 95% खिलाड़ी किसी भी समय अपने कीबोर्ड से दूर रहते हैं और समुदाय को नष्ट कर देते हैं। यदि आप इस मार्ग पर जाते हैं, तो सावधान रहें।


3
आपके अंतिम पैराग्राफ पर, SOE की स्टार वार्स आकाशगंगाएँ एक बहुत मजबूत इंजील स्क्रिप्टिंग / मैक्रो भाषा के साथ एक MMO का एक उदाहरण थी, फिर भी इसमें बहुत अधिक बॉट समस्या नहीं थी। जो समाप्त हुआ वह यह था कि कुछ अधिक थकाऊ अंतर्ज्ञान आवश्यकताएं लिपिबद्ध की गईं थीं (अधिकांश स्टार्सपोर्ट्स के पास एक पूर्ण स्वचालित हीलर बफ-इन बॉट के सामने खिलाड़ियों की कतार थी, उदाहरण के लिए), और निम्न-स्तरीय XP पीस अक्सर इस तरह से होता था। भी। IMO इस खेल में सभी बड़े पैमाने पर जोड़ा गया है, जो इसे मार डाला वह कुछ अविश्वसनीय रूप से खराब निर्णय और खेल परिवर्तन थे, जिनमें कोई चेतावनी या संचार नहीं था।
गठरन

3

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

यदि एक दिया गया गेम-फीचर बॉटेबल हो सकता है, तो गेम पर वैसे भी यह सुविधा क्यों है ?? वह विशेषता उपयोगकर्ता को बॉट बनाने के लिए स्पष्ट रूप से बुला रही है।

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

मेरी लब्बोलुआब यह है: मैं कहूंगा कि एक जटिलता की न्यूनतम मात्रा पर एक सीमा है जो एक खेल को वनस्पति नहीं बनाने की आवश्यकता है। गैर-तुच्छ विकल्पों को जोड़कर अपने खेल को उस सीमा से ऊपर बनाएं जो अंततः उपयोगकर्ता अनुभव को बढ़ाएगा।

वैसे भी, शायद यह प्रतिमान अब वर्तमान दिनों पर लागू नहीं होता है ... लेकिन मेरा मानना ​​है कि यह वही है जो एक अच्छा खेल बनाता है।


1
+1 धोखाधड़ी के खिलाफ एकमात्र प्रभावी तरीका खेल को इस तरह से डिजाइन करना है कि धोखा पहली जगह में प्रभावी नहीं है।
एपीआई-जानवर

मेरा अंतिम वाक्य सही था क्योंकि मैं किसी को आश्चर्यचकित नहीं कर रहा था, यहां तक ​​कि एक संभावना के रूप में भी नहीं माना था ...
जॉर्ज लीताओ

2

मौजूदा उत्तर पहले से ही अच्छे हैं, लेकिन मैं यह बताना चाहता था कि यदि आपके चेक महंगे हैं (उदाहरण के लिए: क्लाइंट को धोखा नहीं दे रहा है, तो यह सुनिश्चित करने के लिए पूरे गेम सर्वर-साइड चल रहा है, तो आप केवल कुछ ऐसा करना चुन सकते हैं समय

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

सुनिश्चित करें कि जब सर्वर कार्रवाई को मान्य नहीं कर रहा है और जब वह नहीं है तो सर्वर उसे दूर नहीं करेगा। हमेशा अपनी मानक प्रतिक्रिया भेजें जब तक आप कार्रवाई करने के लिए तैयार न हों (और जब आप सत्यापन कर रहे हों और जब आप प्रतिक्रिया दे रहे हों तो प्रतिक्रिया भेजने में अधिक समय न दें।

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


1

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


0

सबसे सरल तरीका यह है कि ग्राहक को एक गूंगा टर्मिनल बना दिया जाए। सब कुछ सर्वर पर किया जाता है, और क्लाइंट बस सर्वर को कमांड भेजता है। इस तरह से सर्वर पूरी तरह से सब कुछ नियंत्रण में है।

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

इसके अलावा, केवल ग्राहक को यह भेजें कि उसे "पता" क्या होना चाहिए। उदाहरण के लिए, यदि कोई दुश्मन खिलाड़ी किसी दीवार के पीछे है, तो उस जानकारी को किसी ग्राहक को न भेजें, या हैक किया गया ग्राहक इस जानकारी को पढ़ नहीं सकेगा (पढ़ें: wallhack)।


-1

संपादित करें: मैंने प्रश्न को गलत समझा। मैंने इसे "हैक किए गए सॉफ़्टवेयर के बजाय" पायरेटेड / हैक की गई कुंजी को रोकने के रूप में व्याख्या की है जो खिलाड़ी के लिए 1 बिलियन सोना उत्पन्न करने के लिए एक संदेश भेज सकता है। "

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

हाई स्पीड इंटरनेट और पी 2 पी फ़ाइल ट्रांसफरिंग के प्रचलन के साथ, कंपनियों ने सीडी-कीज़ से स्विच किया है जो क्लाइंट पर स्थानीय रूप से उन कीज़ के लिए जमा होती हैं जो उनके सर्वर पर एक अकाउंट से जुड़ी होती हैं। कोई भी "आधिकारिक" या "गैर-आधिकारिक" क्लाइंट सॉफ़्टवेयर नहीं हैं क्योंकि कोई भी क्लाइंट डाउनलोड कर सकता है। लेकिन आप केवल तभी खेल सकते हैं जब आपके पास खेलने के लिए पहुंच वाला खाता हो।

इससे कंपनी को भी लाभ होता है क्योंकि उन्हें सॉफ़्टवेयर की अधिक उत्पादन वाली भौतिक प्रतियों को खर्च करने की आवश्यकता नहीं होती है।


मैं वह नहीं था जिसने आपको वोट दिया था, लेकिन मेरे लिए यह वास्तव में कोई सुरक्षा प्रदान नहीं करता है। लगता है जैसे आप केवल अधिकृत उपयोगकर्ताओं को कनेक्ट करने के बारे में बात कर रहे हैं - यह आसानी से निपटा जाता है। लेकिन समस्या यह है कि किसी को मान्य खाता रिवर्स इंजीनियरिंग संदेश भेजने के साथ किसी को रोकने के लिए कुछ भी नहीं होगा, और अपने स्वयं के हैक किए गए क्लाइंट को लिखना होगा।
12

-1 यह सवाल का जवाब नहीं देता है, एक ऑन-लाइन खाता होने से किसी को हैक किए गए क्लाइंट के साथ जुड़ने से नहीं रोका जा सकता है, उदाहरण के लिए, इन-गेम क्रियाओं को स्वचालित करता है। वाह पूरी तरह से ऑनलाइन आधारित है और यह अभी भी लगातार हैक हो जाता है। इस बर्फ़ीले तूफ़ान को रोकने के लिए उनके "वार्डन" एंटी-चीट सॉफ़्टवेयर को नियुक्त किया गया, जो प्रश्न में समस्या से निपटने का एक उदाहरण है
dreta

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