हाय, हैब्र। मेरी कहानी जनवरी 2019 से शुरू होती है।
मेरे टीमा गेम डेवलपर्स और मैंने अपने इतिहास में सबसे बड़ा प्रोजेक्ट लेने का फैसला किया, एक 2D प्लेटफॉर्मर। नहीं, हमने पहले कोई FlappyBirds या सांप नहीं किया था, लेकिन इस परियोजना में काम की मात्रा ने हमारे दिमाग को उड़ा दिया। शुरू करने के लिए, हमने सामान्य, ऊर्ध्वाधर सीढ़ियों को छोड़ दिया, और सीढ़ियों को ले लिया। हमने दरवाजों के लिए तर्क लिखा, जिसे "एक कुंजी के साथ" बंद किया जा सकता था और विनाशकारी ब्लॉकों को खराब कर सकता था। एक समय ऐसा आया जब आर्टिफिशियल इंटेलिजेंस लिखना जरूरी हो गया। हमारी अनुभवहीन टीम से सबसे अनुभवी ट्रेटर के रूप में, AI लिखने का सम्मान मेरे लिए गिर गया।
मैं तकिए में रोया, समझ में नहीं आया कि क्या करना है, मुझे बहुत गर्व था कि मैं हमारी परियोजना में सबसे कठिन यांत्रिकी में से एक लिखूंगा।
स्टेज 1: रास्ता खोजना और रास्ते के साथ आगे बढ़ना
चरण 1.1: रास्ता खोजना
चूंकि मुख्य स्थान खुली हवा में नहीं होंगे, लेकिन इमारतों में, दर्जनों दरवाजों, सीढ़ियों और कमरों के बीच मार्ग की खोज करना आवश्यक था। सोचने के बाद, टीम के नेता ने फैसला किया कि यह ए * एल्गोरिथ्म की एक निश्चित पैरोडी करने के लायक है, जहां हमारे बीच नोड्स होंगे, जहां बॉट चलेगा। एक परीक्षण दृश्य बनाया, स्पष्टता के लिए, नोड्स डाल दिया, उन पर स्पार्टरेंडरर्स लटकाए। आगे क्या करना है?
इस सवाल को ध्यान में रखते हुए मैं 3 दिनों तक चला। अब तक, मेरे एक साथी ने मस्तिष्क न्यूरॉन्स की तरह, जब नोड्स उत्साहित होंगे, तो एक दिलचस्प एल्गोरिथ्म का प्रस्ताव नहीं किया है।
So. एक नोड ए है, जिसके पास एक एआई और एक नोड बी है, जिसमें एआई को आना चाहिए। सभी नोड्स को अपनी आईडी दी और जुड़े नोड्स को चिह्नित किया, जिनसे वे एक संकेत भेजेंगे। प्रत्येक नोड का अपना बूलियन वैरिएबल "Checked "और वैरिएबल" triggeredBy "होता है, जिसमें नोड की ID होती है जो इसे" उत्साहित "करती है। इसलिए, जब नोड बी प्रभावित होता है, तो यह नोड नोड के सभी आईडी को पहचानते हुए श्रृंखला से नोड ए तक जाएगा। इसलिए मुझे नोड्स की आईडी से रास्ता मिला जो बॉट से गुजरना चाहिए। अगर आपको अचानक समझ नहीं आया कि यह कैसे काम करता है, तो मैं आपको एक कहानी बताऊंगा।
एक बार, इवान के पास करने के लिए कुछ नहीं था, और इसलिए उसने अपने परिवार के पेड़ को बनाने का फैसला किया। दुर्भाग्य से, उनके पास इस विचार को वास्तविकता में अनुवाद करने के लिए पर्याप्त जानकारी नहीं थी। इवान इस विचार के लिए इतना उत्सुक था कि उसने फैसला किया कि जब वह मुख्य पूर्वज तक पहुंच जाएगा तो वह अपने अप्रत्याशित रिश्तेदारों की खोज कर सकेगा। इवान जानता था कि वह बात करने के लिए अपने पिता से मिल सकता है और वहाँ गया। पिता ने उसे बताया कि इवान के दादा का नाम इवान था और बताया कि वह कहां पाया जा सकता है। इवान को इवान मिला, और उन्होंने कहा कि इवान के परदादा इस पूर्वज को व्यक्तिगत रूप से जान सकते हैं, लेकिन वह लंबे समय से मर चुके थे। इवान ने अपना आधा जीवन अंधेरे कला के अध्ययन के लिए समर्पित कर दिया, लेकिन अंत में वह अपने परदादा को फिर से जीवित करने में सक्षम था। परदादा ने कहा कि उनके पूर्वज एक वेयरवोल्फ हैं और उनके शरीर को तीन पाइंस के किनारे पर दफनाया गया है। इवान वहाँ गया और एक आदमी को एक कब्र खोदते पाया। यह पता चला कि यह आदमी बारह-चचेरे भाई इवान है। इवान बहुत आश्चर्यचकित था कि वे एक जगह आए थे, लेकिन उसका भाई एक प्रोग्रामर निकला और सब कुछ समझाया।
- मेरे पसंदीदा खेल * नाम * से नेविगेशन का सिद्धांत यहाँ काम करता है!
- और क्या है?
- प्रत्येक वारिस से, आप सिस्टम के आम माता-पिता के पास आ सकते हैं, यदि इस प्रणाली में प्रत्येक वारिस व्यक्तिगत रूप से अपने माता-पिता को जानता है।
यहाँ परिणाम है:

यह इंट चर का एक सरणी है, जिसका अर्थ है कि यूनिट को नोड्स के माध्यम से जाना चाहिए।
कदम 1.2.1: पथ के साथ आंदोलन
मेरे पास नोड आईडी की एक सूची है, मेरे पास एक बॉट है। आगे क्या है? और फिर आपको इस रास्ते पर बॉट को स्थानांतरित करने की आवश्यकता क्या है।
खैर, मैंने इस विकल्प का अनुमान लगाया: बॉट नोड तक पहुंच गया, जांच की गई, देखा कि आगे क्या था, अगले नोड पर गया। कर दिया। यह अर्जित किया। मुझे खुशी हुई ... लेकिन ...
चरण 1.2.2: सीढ़ी और एआई के साथ उनकी बातचीत
जैसा कि एक श्वेत-श्याम नायक कहता था: "सीढ़ियाँ ... मेरा मुख्य शत्रु .."
यह निर्धारित करना आवश्यक था कि क्या अगला नोड एआई से ऊपर है, नीचे या स्तर पर। इस जानकारी के आधार पर, वह सीढ़ियों से टकराएगा (टकराव को अनदेखा करेगा), या उस पर चढ़कर (टकराव के साथ बातचीत करें)। ओह, और इंजन के साथ इस लड़ाई में बहुत सारे तंत्रिका कोशिकाओं की मृत्यु हो गई ... मैंने उन मंचों पर पढ़ा कि आप परतों में सब कुछ व्यवस्थित कर सकते हैं और संपादन-> Physics2D टैब में आप एक परत और दूसरे की टकराव की अनदेखी को कॉन्फ़िगर कर सकते हैं। यह सब काम किया!
यह केवल उसे दरवाजा खोलने के लिए सिखाने के लिए बनी हुई है। कोई समस्या नहीं थी।
परिणाम:


स्टेज 2: भावनाएँ और संकेत
स्टेज 2.1: भावनाएँ
हां, हमने भावनाओं को जोड़ने का फैसला किया ... और संकेत।
चेहरे के भाव और एक्शन एनिमेशन के साथ भावनाओं को उजागर किया जाएगा।
प्रतिकृतियां पाठ ओवरहेड के साथ प्रदर्शित की जाएंगी।
मैंने भावनाओं को एक ही बार में खराब कर दिया ... इसके लिए, मैंने पहले से ही "इमोशनआईडी" चर बना लिया है, जिसने भावना की आईडी संग्रहीत की है। और यहाँ प्रतिकृतियां हैं ...
चरण 2.2: प्रतिकृतियां
सुंदरता के लिए एक अलग वर्ग वाक्यांश बनाया
[System.Serializable]
इस वर्ग की एक सारणी बनाई। इसके अलावा, सिर्फ भावना के आधार पर, मैंने सूची से कोई भी वाक्यांश रखा। हर N सेकंड में एक बार अपडेट किया जाता है।
लेकिन मैंने आगे जाने का फैसला किया! प्रत्येक चरित्र के लिए मैंने .phrs एक्सटेंशन के साथ एक फ़ाइल बनाई, फ़ाइल में प्रत्येक वर्ण के बाइट संख्या में एक्स बाइट्स जोड़कर इसे एन्कोड किया। परिणाम अपठनीय, अपरिवर्तनीय पाठ था। अपने मार्कअप की तरह कुछ किया, एक एल्गोरिथ्म बनाया जो इस मार्कअप द्वारा वाक्यांश सरणी में इस सरणी में सब कुछ लेता है और अनुवाद करता है।
बहुत बढ़िया! सब कुछ काम करता है!
मैं इस तरह की फाइल को भरने के लिए स्वच्छ शार्प पर एक प्रोग्राम लिखना चाहता था, लेकिन यहां हम कहानी के अंत में जाते हैं।
अंत ..?
हम जल्दी से बड़े, अवैतनिक काम से थक गए थे ... एक नए एनकोडर को संलग्न करने से मदद नहीं मिली ... टीम अलग हो गई ... कोड अभी भी एकता क्लाउड पर निहित है।
बेशक, बहुत समय पहले परियोजना को जारी रखने का विचार उभरना शुरू नहीं हुआ था, लेकिन आगे विमुद्रीकरण के साथ ... अगर कुछ काम करता है, तो मैं शायद विकास के पूरे इतिहास को लिखूंगा। लेकिन यह वह जगह है जहाँ मेरी नौसिखिए और एआई के बारे में कहानी समाप्त होती है।