एआई बनाने के लिए नया - कहां से शुरू करें? [बन्द है]


58

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


1
एअर इंडिया के बारे में मेरी स्लाइड यहाँ मैंने बनाई है: sol.gfxile.net/gpc/05ai.pdf
जरी कोम्पा

4
अगर बयान। बहुत से।
deceleratedcaviar

जवाबों:


34

रणनीति पैटर्न क्या करना है, लेकिन जब यह करने के लिए नहीं निर्धारित करने के लिए बहुत अच्छा है। आपको यह भी पता लगाने की आवश्यकता है कि आपके राज्य में कौन सा राज्य है और कौन से उचित निर्णय उपलब्ध हैं, यह जानने के लिए परिमित राज्य मशीनों का उपयोग करने की आवश्यकता है।

एक पूर्ण गेम एआई के निर्माण के लिए एक व्यावहारिक मार्गदर्शिका: वॉल्यूम I


27

यदि यह आपकी पहली बार AI विकसित कर रहा है, तो आपको राज्य पैटर्न, व्यवहार गणित जैसी चीजों के बारे में चिंता करने की आवश्यकता नहीं है या यहां तक ​​कि इस विषय पर एक किताब भी प्राप्त करें।

आप सचमुच कुछ इस तरह से दूर हो सकते हैं:

if( targetInRange == true )  
{
    FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
    MoveAwayFromBullet();
}
else
{
    WanderAroundAimlessly();
}

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

  • चारों ओर घूमें
  • आग
  • भाग जाओ

और ये क्रियाएं कब हो सकती हैं?

  • घूमना - फिरना और कुछ नहीं
  • आग - जब मैं एक दुश्मन को हाजिर करता हूं
  • भाग जाओ - जब मैं स्वास्थ्य पर कम हूँ / जब मैं आग / आदि ले रहा हूँ

आपके द्वारा "राज्यों" की कम संख्या के कारण ऐसा करने के बाद, जो आपके चरित्र में हो सकता है, आप ऊपर दिए गए कथन की तरह एक सरल प्रयोग कर सकते हैं। फिर मैं आपको स्टीयरिंग बिहेवियर को देखने की सलाह दूंगा क्योंकि ये लागू करने के लिए बहुत ही सरल व्यवहार हैं और इसके परिणामस्वरूप वास्तव में अच्छा दिखने वाला आंदोलन हो सकता है।

अधिक यहां पाया जा सकता है: http://www.red3d.com/cwr/steer/
और मैं निश्चित रूप से मैट बकलैंड की पुस्तक प्रोग्रामिंग गेम एआई बाय उदाहरण की सिफारिश करूंगा , खासकर जब आप शुरू कर रहे हैं।

जब आप वास्तव में इन के साथ सहज होते हैं, तो मैं राज्य और रणनीति पैटर्न को देखने का सुझाव दूंगा।

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

उम्मीद है की वो मदद करदे!


@Fuu चीयर्स फॉर द एडिट मेट :)
रे डे

9

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


क्या लोग खेलों में ओपनस्टीरर का उपयोग करते हैं या यह सिमुलेशन के लिए अधिक है?
jle

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

FreeOrion अपने सामरिक युद्धक इंजन में OpenSteer का उपयोग कर रहा है।
माइक स्ट्रोबेल

1
+1 ओपनस्टार का उल्लेख करने के लिए। यदि आप कुछ सरल बनाने के लिए एक साथ बहुत सरल व्यवहार करते हुए बहुत जटिल और जटिल लगते हैं तो कुछ महान उदाहरणों को देखना चाहते हैं। चेकआउट स्टीयरिंग व्यवहार! Google, "Boids" और कुछ शांत उपयोगों को देखें। यह शांत नहीं है कि आप क्या चाहते हैं, लेकिन यह आपको दिखाएगा कि सादगी से जटिलता आती है
onedayitwillmake

9

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

  • लक्ष्य के करीब ले जाएँ
  • हमले का निशाना
  • लक्ष्य से दूर भागना
  • बिजली अप की ओर बढ़ें
  • बिजली अप का उपयोग करें

फिर आप इन रणनीतियों के बीच चयन करने के लिए तर्क (राज्य मशीनों) का उपयोग करेंगे। उदाहरण के लिए: यदि जहाज के ढाल 50% से नीचे गिर गए हैं, तो लक्ष्य से दूर भागें और बिजली अप / हीलिंग आइटम की ओर बढ़ें।


1
इसलिए हर बार गेम लूप के माध्यम से यह तय किया जाता है कि कौन सी 'रणनीति' प्राथमिकता लेती है और फिर उस पर अमल करती है?
21

@ जले बहुत। तो आपकी प्रत्येक रणनीति आपके कोड को व्यवस्थित रखते हुए, उनकी अपनी कक्षाओं में टूट जाएगी।
ब्रायन डेनी

7

हो सकता है कि मैं सुझाव दूं कि आप इयान मिलिंगटन द्वारा खेलों के लिए आर्टिफिशियल इंटेलिजेंस पुस्तक खरीदें - यह बहुत अच्छा है! :) http://www.ai4g.com/

स्रोत कोड Github - MIT लाइसेंस पर है।

बेशक, यदि आप C / C ++ का उपयोग नहीं कर रहे हैं, तो यह कम प्रासंगिक हो सकता है।

लेकिन वास्तव में कृत्रिम मूर्खता / बुद्धि की दुनिया के लिए एक भयानक परिचय।

जिन चीजों की आपको जरूरत है, वे हैं स्टीयरिंग और स्टेट मशीन। शुरुआत के लिए।


2

यदि आप राज्य मशीनों के लिए जाते हैं तो कुछ व्यावहारिक सलाह: मेगास्टेट से सावधान रहें।

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

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

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


2

खेल एआई के लिए व्यवहार गणित

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


1

कैसे बनाएं AI एक मुश्किल सवाल है, क्योंकि इसमें कई भाग होते हैं:

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

अन्य पोस्टरों ने महान पुस्तकों का सुझाव दिया और मुझे जैकोमो द्वारा सुझाए गए AI4Games का शौक है, भले ही यह भागों में काफी सामान्य है (बहुत सारी पुस्तकों की तरह, जो कि निश्चित रूप से समझ में आता है)।

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

  • मुझे लगता है कि गेम (एआई) कोडिंग के बारे में जानने का सबसे अच्छा तरीका बहुत अच्छा, रनिंग कोड है। तो, ohloh.net और github का अन्वेषण करें और मौजूदा FOSS परियोजनाओं की तलाश करें!
  • बेशक, आप चुन सकते हैं कठिन हिस्सा है और एक मौजूदा (लेकिन सरल) खेल खेलते हैं। अभियंता के व्यवहार को उल्टा करने की कोशिश करें और सोचें कि "मैं इसे कैसे डिजाइन करूंगा?"। बेशक, संकेत हमेशा मदद करते हैं, और शायद यही कारण है कि आपने यहां gamedev.SE से पूछा है!
  • कुछ के बीच में भी GameMaker मंचों के भीतर मौजूदा शूटर खेल को देखो! आप बहुत सारी सरल स्क्रिप्ट पा सकते हैं जो चाल चलेगी! ;)

1

जब आप खेल खेलते हैं तो आप क्या करते हैं, इसके बारे में सोचें। अपने आप से कुछ सवाल पूछें।

  • मुझे कौन सी जानकारी है की जरूरत है एक निर्णय करने के लिए सक्षम होने के लिए?
  • मैं परिवर्तनों पर प्रतिक्रिया कब करूं?
  • इस विशेष सत्र में मेरे "दीर्घकालिक" लक्ष्य क्या हैं?

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

फिर, 500 मिलीसेकंड के बाद, मैं इसे फिर से करता हूं।

इसमें सीखने की क्षमता या कुछ भी नहीं है, लेकिन पर्याप्त रूप से ट्विकिंग के साथ यह बहुत ही ठोस हो सकता है, जो यह वास्तव में मायने रखता है

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