"गैर-परिपूर्ण" AI लड़ाके बनाने में क्या व्यवहार होना चाहिए?


19

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

संपादित करें: मेरा विशिष्ट उपयोग मामला MMO जैसे दुश्मनों के साथ है, जैसे कि वर्ल्ड ऑफ Warcraft, हालांकि इसमें कम ग्राफिक्स शामिल हैं। ध्यान दें कि दोनों मानव और अमानवीय दुश्मन (जानवर, राक्षस, आदि)

जवाबों:


14

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

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

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

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

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

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

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


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

जबकि मैं यादृच्छिककरण का उपयोग नहीं करने से सहमत हूं, मैं "खिलाड़ी की मदद करने" से सहमत नहीं हूं: यह धोखा देने जैसा होगा, केवल इसलिए कि आप खिलाड़ी से झूठ बोलेंगे।
ओ ० '।

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

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

1
वास्तव में मुझे लगता है कि सटीकता पर यादृच्छिककरण एक अच्छा तरीका है। जो कि महान है, कभी कभी वह एक गलती करते हैं और में एक बेहतर गेंद को हिट नहीं है एक असली खिलाड़ी के साथ।
AttackingHobo

10

मुख्य अवधारणा NPC को "संपूर्ण ज्ञान" देने से बचने की है।

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

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


4

एक सही AI फाइटेबल रेंडर करने का एक त्वरित तरीका यह है कि इसके इनपुट या इसके आउटपुट में से कुछ 'शोर' को जोड़कर यह बिना किसी निर्णय के किया जाए। शोर से मेरा मतलब कुछ यादृच्छिक कारकों से है।

यहाँ आउटपुट के लिए एक छोटा सा उदाहरण दिया गया है:

  • परफेक्ट एल्गोरिथ्म एक स्कोर के साथ रैंक की गई तीन संभावित क्रियाओं को प्राप्त करता है।
  • प्रत्येक स्कोर में एक यादृच्छिक मान जोड़ें।
  • सर्वश्रेष्ठ स्कोर चुनें।

इनपुट के लिए कुछ विचार इस प्रकार हैं:

  • यदि क्रियाएँ प्रतिद्वंद्वी के स्वास्थ्य पर आधारित हैं, तो AI द्वारा कथित अवस्था में यादृच्छिक कारक (0-100 स्वास्थ्य पट्टी के लिए +/- 10) जोड़ें।
  • क्रियाओं की रेटिंग के लिए भी, यदि एआई जानता है कि कुछ हमले दूसरों की तुलना में अधिक मजबूत हैं, तो कुछ मूल्यों को यादृच्छिक रूप से जोड़ / घटा सकते हैं।

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

उम्मीद है इससे मदद मिलेगी और सौभाग्यशाली हो!


3

यह जानने के बिना कि आप क्या करने का प्रयास कर रहे हैं, सीधे उपयोगी उत्तर देना मुश्किल है।

मेरे पास इस विषय पर कहने के लिए दो चीजें हैं जो आपकी मदद कर सकती हैं।

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

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


1

मुझे याद है कि कॉलेज में हमारे एआई पाठ्यक्रम में एआई को अधिक "मानव" और कम परिपूर्ण बनाने के बारे में एक विषय था। यह कई साल पहले था इसलिए मुझे बस अपने दिमाग के ऊपर से कुछ बुलेट पॉइंट याद हैं।

  • "चाल के पुस्तकालयों" का उपयोग करें। यदि आप एक orc से लड़ रहे हैं, तो उसे 3 लड़ाकू रूटीन दें, जो वे हर बार दोहराते हैं। यह अधिक पूर्वानुमान होने से कंघी को आसान बनाता है, जो कि आप जो चाहते हैं उसके विपरीत प्रतीत होता है, लेकिन फिर भी एआई को कम "सही मशीन" बनाता है और अधिक "नोब एक ही चाल को दोहराता है"।
  • यदि संभव हो, तो अपनाएं। यदि, जैसा कि आप कहते हैं, आपका AI सर्वश्रेष्ठ चाल की गणना पर आधारित है, इस गणना पर एक कृत्रिम सीमा रखें। खोज प्रवर्धक बनाएं, या चरणों की संख्या सीमित करें। अब तक के सबसे अच्छे कदम के बजाय, एआई इसके बजाय बस एक अच्छी चाल का चयन करेगा। यह आपके दुश्मनों के व्यवहार में बहुत विविधता ला सकता है, क्योंकि सर्वश्रेष्ठ चाल से कई अधिक अच्छे हैं।
  • उद्देश्य पर गलतियाँ करना। सर्वश्रेष्ठ चाल के बजाय, दूसरा या तीसरा सर्वश्रेष्ठ चुनें। या यहां तक ​​कि एक चाल चुनें जिसमें खराब उपयोगिता है। यह आपके "अप्रत्याशितता" बिंदु को संबोधित कर सकता है।

बेशक ये केवल सामान्य सलाह हैं जिनका अध्ययन किया जाना चाहिए और प्रत्येक मामले के लिए नाटक किया जाना चाहिए, और वास्तव में आपके एआई को इच्छित से अधिक कृत्रिम बना सकता है। हालाँकि मुझे लगता है कि वे एक अच्छी शुरुआत हैं।


0

मैंने बस इस पॉप को देखा और एक विचार साझा करना चाहता था जिसका उपयोग मैंने अतीत में किया है।

मान लीजिए कि चरित्र में तीन चालें हैं और प्रत्येक को गोल किया जाता है, उच्च स्कोर बेहतर चाल है। (अन्य जवाब इस स्कोर को बनाने के लिए शोर जोड़ने के बारे में बात करते हैं।)

  • तलवार से हमला (30 अंक)
  • अग्नि मंत्र (50 अंक)
  • बर्फ का गोला (20 अंक)

कुल अंक बढ़ाएँ (100)

इस स्टैट के लिए अधिकतम संभव मान से वर्ण की खुफिया स्टेट लें (मान लें कि 100 में से 60 कहते हैं)।

कुल अंकों (100) से 0 (या किसी और मंजिल) और खुफिया अनुपात (0.6) के बीच एक यादृच्छिक संख्या उत्पन्न करें। हमारे उदाहरण में, मान लीजिए कि परिणाम 45 है।

अब आप इस मूल्य से खराब चाल को तब तक घटाना शुरू करते हैं जब तक कि आप शून्य को हिट नहीं करते। (क्रम में घटाएँ)

सबसे पहले, हम आइस स्पेल मानते हैं, जिसने 20. 45 - 20 = 25 स्कोर किया। यह शून्य से ऊपर है, इसलिए हम आइस स्पेल को बाहर फेंक देते हैं।

दूसरा, एक तलवार से हमले को देखें, जिसकी कीमत 30 अंक है। 25 - 30 = -5। हम अपनी दहलीज पर चोट करते हैं, इसलिए हम एक तलवार कार्रवाई के साथ हमला चुनते हैं।

इस प्रणाली में, कम बुद्धि वाला चरित्र सबसे अच्छा कदम नहीं उठाएगा। और उच्च बुद्धि वाला एक चरित्र अक्सर सबसे अच्छा कदम उठाएगा। (इस उदाहरण में, सही बुद्धिमत्ता वाला एक चरित्र उस समय का 50% सर्वश्रेष्ठ चाल है।)

यादृच्छिक संख्या में एक फर्श तंत्र को जोड़ने से यह मौका बढ़ेगा कि बेहतर चाल का चयन किया जाता है।

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