मैं क्लाइंट-साइड हैकिंग का विरोध करने वाले दृश्यों के साथ मल्टीप्लेयर क्लोकिंग को कैसे लागू कर सकता हूं?


19

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

अब, मैं इन खेलों का उद्देश्य से उल्लेख करता हूं क्योंकि दोनों ने चुपके से अलग तरीके से लागू किया। एलओएल ने दो संभावित अवस्थाओं के साथ चुपके किया है: आप या तो पूरी तरह से दृश्यमान हैं या पूरी तरह से अदृश्य हैं। दूसरी ओर HotS, इस तरह से चुपके से लागू होता है कि आप हवा में एक टिमटिमाना द्वारा बता सकते हैं:

तूफान के नायकों अदृश्यता

मुझे लगता है कि यह एक साफ-सुथरा मैकेनिक है, क्योंकि यह आपके आसपास के माहौल पर ध्यान देता है। हालाँकि, इस मल्टीप्लेयर गेम के होने से मुझे एहसास हुआ कि यह आसानी से शोषक साबित हो सकता है।

जब आप 'एलओएल' तरीके से चुपके को लागू करते हैं, तो आप बस अन्य ग्राहकों को खिलाड़ी निर्देशांक भेजना बंद कर सकते हैं। जब खिलाड़ी का चरित्र चुपके से टूट जाता है, तो सर्वर स्थान को फिर से प्रसारित कर सकता है। हालांकि, हॉट्स मॉडल के साथ, एक टिमटिमाना हवा में देखा जा सकता है जहां चरित्र के बारे में आगे बढ़ रहा है। इसका मतलब है कि सर्वर को दूसरे क्लाइंट को प्लेयर की लोकेशन भेजनी होगी। जिसका अर्थ है कि बनावट या मॉडल या यहां तक ​​कि खेल कोड को बदलने वाले खिलाड़ी क्लोक मैकेनिक को बेकार कर सकते हैं। यहाँ इसके बारे में हॉट्स बोर्डों पर एक सूत्र दिया गया है।

मेरा सवाल यह है कि क्या क्लोकिंग को लागू करने का कोई तरीका है (एक 'टिमटिमाना', ला ला हॉटस के साथ), इस मुद्दे के बिना कि चालाक खिलाड़ी खेल (डेटा) और 'सिस्टम को हरा सकते हैं' को संशोधित कर सकते हैं। क्या यह संभव है, और यदि नहीं, तो इस मैकेनिक के साथ अन्य मल्टीप्लेयर गेम कैसे निपटते हैं? क्या केवल अदृश्यता की LoL शैली अकारण है?

मैंने सर्वर को फर्जी 'क्लोक' स्थानों पर भेजने के बारे में सोचा था, लेकिन यह भी निष्पक्ष खिलाड़ियों को परेशान करता है जो सिर्फ ध्यान दे रहे हैं, इसलिए ऐसा नहीं होगा।


संबंधित लिंक है , लेकिन मैं दूसरों से टकराव के बारे में नहीं पूछ रहा हूं (जो कि सर्वर द्वारा नियंत्रित किया जा सकता है), बल्कि क्लोक्ड इकाइयों को प्रदर्शित करना।
underflow

यह एक बुरा सुझाव है, लेकिन आप सर्वर पर सभी चित्रमय प्रतिपादन कर सकते हैं, फिर प्रत्येक खिलाड़ियों को अपने ग्राहकों के लिए स्क्रीन प्रसारित करें। वे केवल इनपुट भेजते हैं, आप केवल आउटपुट भेजते हैं। क्लाइंट एक पतला शेल है जो केवल वीडियो दिखाता है और ऑडियो चलाता है।
user137

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

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

2
@TheSpooniest: क्या आप समझा सकते हैं कि आपके द्वारा जो मतलब है वह वास्तव में आप खिलाड़ी निर्देशांक भेजने के लिए एलओएल -स्टाइल क्लोकिंग को लागू नहीं कर सकते हैं ? यदि खिलाड़ी A अदृश्य है और सर्वर B और C के लिए सह-निर्देशांक नहीं भेजता है, तो भी सर्वर A और B के बीच खिलाड़ियों की टक्कर को संभाल सकता है जैसे A के शीर्ष पर B के चरित्र को स्थानांतरित करने से मना कर (जैसे कि वे चले गए एक दीवार में)। यदि A (अभी भी अदृश्य) B के लिए एक कौशल फायर करता है, तो सर्वर "स्थिति x से निकाल दिया गया कौशल , A से B और C. से दिशा d में y को निकाल सकता है "
Underflow

जवाबों:


20

आप इसे शोषित करने के लिए आसान किए बिना एक टिमटिमा प्रभाव को लागू नहीं कर सकते ... लेकिन क्या होगा अगर आपने किसी अप्रत्यक्ष साधन का उपयोग किया है कि कोई व्यक्ति आसपास है, एक साधन जो दृश्य खिलाड़ियों पर भी लागू होता है?

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

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


without making it easy to exploit-> यह सभी खेल यांत्रिकी पर लागू होता है , न कि केवल इस विशेष पर।
एस। तारिक inetin

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

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

3
बेशक, इस मामले में एक क्लाइंट साइड हैक यह दिखाने के लिए किया जा सकता है कि कौन से ट्रैक नए हैं।
मुहम्मद

3
क्लाइंट साइड हैक उन पैरों के निशान को उजागर कर सकता है जो उन क्षेत्रों में बनाए जाते हैं जो किसी खिलाड़ी के स्थान के अनुरूप नहीं होते हैं।
एडवर्ड कॉफ़ी

31

जब आप मल्टीप्लेयर गेम्स में धोखा देने से रोकने के बारे में अनगिनत अन्य प्रश्नों को देखते हैं जो इस साइट पर हैं तो आप आसानी से देखेंगे कि वास्तव में क्लाइंट-साइड धोखा को रोकने के लिए कोई तकनीकी उपाय नहीं है।

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


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

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

@NateDiamond हाँ, बिल्कुल। यही कारण है कि मैं बताता हूं कि सर्वर वास्तविक स्थान की एक विशिष्ट ऑफसेट बनाता है। फिर, जैसा कि वास्तविक अभिनेता चलता है, ऑफसेट टिमटिमाना को भी आगे ले जाएगा। झिलमिलाते हुए ध्यान से देखने के रूप में यह चलता है, आप वास्तविक अभिनेता कहाँ है, लेकिन यह है कि कुछ काम लेता है घटा सकते हैं। यदि अदृश्यता वास्तविक थी, और वास्तविक जीवन में इस टिमटिमाहट का कारण बना, तो मुझे लगता है कि यह अतिरिक्त ध्यान वास्तव में है जो अदृश्यता को दूर करने के लिए आवश्यक होगा।
कीता -

एक दिलचस्प संशोधन था, और केवल वही जो वास्तव में काम करता था, ioquake3 का वॉलहॉक-प्रूफ सर्वर बनाने के लिए । अगर खिलाड़ी A को B की स्थिति की जानकारी प्राप्त करनी चाहिए तो निर्णय लेने से पहले विचार किया जाता था कि क्या खिलाड़ी A दूसरे खिलाड़ी B (यानी, कोई दीवार और न ही अन्य अवरोध को देख सकता है) को देख सकता है। Wallhacks, के रूप में वे बेकार गाया गया था। तो नीचे बिंदु यह है कि यह सुनिश्चित करने का एकमात्र तरीका है कि कोई भी डेटा को हेरफेर नहीं करता है, उन्हें बिल्कुल भी कोई जानकारी नहीं देना है।
13

@ विस्तृत, हालांकि यह एक महंगी जाँच है, खासकर हर खिलाड़ी के लिए हर टिक पर। यह बहुत अच्छी तरह से एक सार्थक खर्च हो सकता है, लेकिन कुछ ऐसा है जो डेवलपर को सर्वर की लागत और क्षमताओं पर विचार करना होगा।
नैट डायमंड

1

हां, जो भी जानकारी आप क्लाइंट को भेजते हैं, वह आपके इरादे से ज्यादा जाहिर है। लेकिन यहाँ चाल है:

प्रभाव को कम करना

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

1. खिलाड़ी क्या देखता है?

  1. आप मौके पर विशेषताओं के साथ चरित्र को देखते हैं: इस मामले में ग्राहक के पास सभी जानकारी होगी और हैक्स बस क्लो को पूर्ववत कर सकता है
  2. आप मौके पर कुछ देखते हैं: इस मामले में ग्राहक के पास स्थान की जानकारी है। यह स्थान को स्पष्ट कर सकता है लेकिन अन्य जानकारी अभी भी छिपी होनी चाहिए।
  3. आप कुछ निरीक्षण करते हैं लेकिन यह स्पॉट में नहीं है

ए। आप कुछ देखते हैं, लेकिन यह मौके पर नहीं है (ब्रिज या बुश चलता है, लेकिन इसका बड़ा तो आपको पता नहीं है कि कहां पर काम करना है, केवल 2 सेकंड की देरी से पैदल यात्रा हो सकती है): इस मामले में ग्राहक को केवल यह पता है कि वहाँ है कुछ, लेकिन नहीं कहाँ / बिल्कुल क्या।

ख। आप एक अलग तरीके से कुछ का निरीक्षण करते हैं (यदि क्षेत्र में कुछ है तो ध्वनि; निकट दिशा के साथ या बिना दिशा में निकटता संकेत)

उद्धरण में स्क्रीनशॉट 1 और 2 के बीच लगता है क्योंकि यह शायद सीमित जानकारी पर आधारित है, लेकिन आप अभी भी रूपरेखा देखते हैं जो कुछ जानकारी को दूर कर सकती है।

2. खिलाड़ी क्या कर सकता है?

मान लीजिए कि आपको लगता है कि कोई व्यक्ति XY का समन्वय कर रहा है, तो आप क्या कर सकते हैं? यहाँ कुछ विशिष्ट विकल्प दिए गए हैं:

हमला

  1. आप उस पर हमला कर सकते हैं जैसे कि वह लबादा नहीं है
  2. आप उस पर AOA के हमलों / जाल के साथ हमला कर सकते हैं जो उसे अनलॉक करता है या नहीं
  3. आप उसे सक्रिय रूप से अनलॉक कर सकते हैं और केवल बाद में उस पर हमला कर सकते हैं
  4. आप उस पर हमला नहीं कर सकते

चलती

  1. जैसा कि आप चलना शुरू करते हैं, आप ध्यान देते हैं कि इंजन रहस्यमय तरीके से आपको चक्कर में ले जाता है
  2. आप सामान्य रूप से अपने लक्ष्य की ओर चलना शुरू करते हैं, लेकिन जब आप छिपे हुए चरित्र तक पहुँचते हैं तो आप उसके चारों ओर चलते हैं या रुक जाते हैं
  3. आप छिपे हुए चरित्र से अवरुद्ध न हों

यदि मार्ग चयन सामान्य रूप से क्लाइंट-साइड किया जाता है


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

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

1
@ जेजेमाओं हां, 'विस्थापन' मैकेनिक के कुछ प्रकार शांत होगा, भी। हालांकि, क्लोक की स्थिति में जो काम नहीं करेगा: मैं उन खिलाड़ियों को दंडित नहीं करना चाहता जो टिमटिमा रहे हैं; उदाहरण के लिए, कौशल के उद्देश्य से उन्हें झिलमिलाते हुए 'सटीक' स्थान की आवश्यकता होगी।
underflow

-2

रिपल प्रभाव shader कोड के माध्यम से किया जा सकता है। आप इस मोड में बनावट के उपयोग को अक्षम कर सकते हैं इसलिए सरल बनावट परिवर्तन अब समस्या नहीं है।

3 डी में, जब मॉडल खेलने में आता है, तो आप अभी भी केवल एक मॉडल को बदल सकते हैं जो अपवर्तन का अनुकरण करता है, सिर्फ मॉडल की सतह का उपयोग करके, रंग को त्यागना। यहां तक ​​कि जब मॉडल को किसी तरह बदल दिया जाता है, तो भी प्रभाव बना रहता है।

पूर्व संकलित shader को संशोधित करना गेम कोड को संशोधित करने के समान कठिन होगा और मुझे लगता है कि यह गेम फ़ाइलों के भीतर कुछ बनावट लुकअप की तुलना में एक स्तर कठिन है।


3
आप वास्तविक प्रश्न से चूक गए। यह तकनीकी रूप से इस तरह के विरूपण प्रभाव बनाने के बारे में नहीं था। यह इस बारे में था कि ग्राहक को वह जानकारी कैसे दी जाए, जहां वह उसे उपयोगी जानकारी दिए बिना उसे प्रस्तुत कर सके, वह खिलाड़ी को उजागर कर सकता है।
फिलिप

1
खैर, मैं इसे संबोधित करता हूं Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless:। और मैं नहीं देखता कि मैंने सवाल क्यों याद किया whether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data) । एक: यह टिमटिमाना के साथ क्लोकिंग विज्ञापन करता है, बी: यह सरल बनावट परिवर्तन की तुलना में संशोधित करना कठिन है। वास्तव में रेंडर करने का दूसरा पक्ष कहां है। यदि स्थिति एकमात्र ऐसी चीज है जिसके लिए हमें आस-पास प्रभाव को लागू करने की आवश्यकता है, तो यह खिलाड़ी को भेजा जाने वाला एकमात्र डेटा होना चाहिए।
मंगल

2
मैंने अतीत में क्लाइंट साइड हैक विकसित किए हैं। धारणा है कि शेड्स को संशोधित करना कठिन है, बहुत भ्रामक है। हां, यह हमले के सबसे बुनियादी संभावित रूप को रोकता है , लेकिन सभ्य Google-फू वाले कोई भी इसे दोपहर में समझ सकता है। अब अपने गेम को एक सभ्य हैकर के खिलाफ गड्ढे में डाल दें और देखें कि जब तक उन्हें क्लाइंट साइड चीटिंग अच्छाई नहीं मिलती है, तब तक कितना समय लगता है।

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

@ Thebluefish निष्पक्षता में, इस वजह से कि डेवलपर्स ने धोखा देने से रोकने के लिए संसाधनों को खर्च करने से दूर चले गए , और इसके बजाय धोखा देने वालों का पता लगाने के लिए बहुत जटिल, अस्पष्ट और अच्छी तरह से निर्मित संसाधनों पर खर्च किया और अपने प्लेटफार्मों पर आक्रामक खिलाड़ियों पर प्रतिबंध लगा दिया ... (जाहिर है स्टीम के VAC जैसे सिस्टम का संदर्भ लें)।
Trotski94
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.