लाभ:
- इंजन, संस्करण, भाषा और वास्तुशिल्प संदर्भ देकर कृत्रिम बुद्धिमत्ता से विश्वसनीय, संकलित गेम कोड तैयार करने और कोड को पढ़कर और समझकर इसे एकीकृत करने की क्षमता
- संकलन, परीक्षण और प्रोफाइलिंग के माध्यम से गेम कोड-विशिष्ट प्रदर्शन (प्रति फ्रेम आवंटन), इंजन जीवनचक्र और मतिभ्रम जोखिमों को प्रबंधित करने की क्षमता
- मल्टीप्लेयर गेम में होस्ट-अथॉरिटी के सिद्धांत को लागू करने और केवल अपने गेम की रक्षा और सत्यापन के लिए सुरक्षा जानकारी का जिम्मेदारी से उपयोग करने की क्षमता।
गेम सॉफ्टवेयर है; इससे कोई फर्क नहीं पड़ता कि इसे कितनी अच्छी तरह डिज़ाइन किया गया है, इसे कोड के साथ लागू किया जाता है। गेम इंजन वह बुनियादी ढाँचा है जो गेम को चलाता है: यूनिटी (C# में स्क्रिप्टेड इंजन का व्यापक रूप से उपयोग किया जाता है) और अनरियल इंजन (C++ और विज़ुअल स्क्रिप्टिंग भाषा ब्लूप्रिंट का उपयोग करने वाला इंजन) दो सबसे आम हैं। एआई कोड जनरेशन में सबसे परिपक्व सहायता में से एक है: प्लेयर कंट्रोलर, इन्वेंट्री सिस्टम, स्टेट मशीन, सेव/लोड, इंटरफ़ेस लॉजिक, डिबगिंग और रीफैक्टरिंग (इसके व्यवहार को तोड़े बिना कोड को रीफैक्टरिंग करना)। लेकिन गेम कोड के अपने नुकसान हैं: प्रदर्शन (फ़्रेम दर), इंजन जीवनचक्र, मल्टीप्लेयर सुरक्षा। इस इकाई में आप सीखेंगे कि गेम कोड में एआई का सुरक्षित और कुशलतापूर्वक उपयोग कैसे करें।
महत्वपूर्ण सिद्धांत: इंजन और संस्करण संदर्भ
यदि एआई को यह नहीं पता है कि वह किस इंजन और संस्करण के लिए लिख रहा है, तो यह एक भ्रमित, अप्रचलित या अस्तित्वहीन एपीआई उत्पन्न करेगा। इसलिए प्रत्येक कोड प्रॉम्प्ट में इंजन, संस्करण, भाषा और आर्किटेक्चर संदर्भ दें। "एकता के लिए खिलाड़ी आंदोलन लिखें" कमजोर है; "यूनिटी 2022.3, सी#, नया इनपुट सिस्टम, रिगिडबॉडी आधारित भौतिकी आंदोलन" शक्तिशाली है। निर्दिष्ट करें कि क्या आप अवास्तविक में ब्लूप्रिंट या सी++ चाहते हैं और आप किस संस्करण का उपयोग कर रहे हैं।
चरण दर चरण सुरक्षित कोड प्रवाह:
- संदर्भ दें (इंजन, संस्करण, भाषा, वर्तमान वास्तुकला, बाधाएं)।
- इसे छोटा और परिभाषित करना चाहते हैं (एकल घटक, संपूर्ण सिस्टम नहीं)।
- कोड को पढ़ें और समझें (पंक्ति दर पंक्ति समझें कि यह क्या करता है; वह कोड न डालें जो आपको समझ में न आए)।
- निर्माण और परीक्षण (इंजन पर चलाएं; प्रोफ़ाइल - प्रदर्शन को मापें)।
- रिफैक्टर और इंटीग्रेट (प्रोजेक्ट मानक से मेल करें)।
युक्ति: एआई से कोड पूछते समय, "टिप्पणियों के साथ समझाएं" कहें। आपका लक्ष्य कोड को समझना है; जिस एआई कोड को आप नहीं समझते हैं उसे किसी प्रोजेक्ट में डालने से अप्राप्य ऋण जमा हो जाएगा। छोटे, परीक्षण योग्य हिस्सों में कोड भी मांगें: 500-लाइन प्रणाली के बजाय, एक 30-50 लाइन घटक जो एकल परिभाषित कार्य करता है, उसे सत्यापित करना और एकीकृत करना दोनों आसान है।
गेम कोड के लिए विशिष्ट जाल
प्रदर्शन. गेम कोड प्रति सेकंड 30-60+ बार चलता है। एआई प्रत्येक फ्रेम पर चलने वाले अपडेट लूप में महंगे ऑपरेशन (मेमोरी आवंटन, लुकअप, स्ट्रिंग हेरफेर) डाल सकता है; इससे फ़्रेम दर कम हो जाती है. प्रोफ़ाइल प्रदर्शन महत्वपूर्ण कोड और एआई बाधाएं जैसे "हर फ्रेम पर चलाएं, कोई आवंटन नहीं"।
इंजन जीवन चक्र. एआई कभी-कभी भ्रमित करता है जब विशेष तरीकों को बुलाया जाता है, जैसे कि अवेक/स्टार्ट/अपडेट इन यूनिटी, बिगिनप्ले/टिक इन अनरियल। परीक्षण द्वारा जीवनचक्र त्रुटियों को पकड़ें।
मल्टीप्लेयर सुरक्षा. आईटी/सुरक्षा की दृष्टि से यह सबसे महत्वपूर्ण मुद्दा है। मल्टीप्लेयर में कभी भी क्लाइंट पर भरोसा न करें: प्लेयर के कंप्यूटर पर क्लाइंट को धोखा देने के लिए हेरफेर किया जा सकता है। सर्वर पर अंक, क्षति, धन जैसी महत्वपूर्ण स्थिति सत्यापित करें (सर्वर-आधिकारिक)। इस सिद्धांत के विरुद्ध AI द्वारा उत्पन्न नेटवर्क कोड को नियंत्रित करें; यदि एआई ने क्लाइंट-भरोसेमंद भेद्यता पैदा की है, तो इसे ठीक करें। इस जानकारी का उपयोग केवल अपने खेल का बचाव और सत्यापन करने के लिए करें; किसी अन्य के सर्वर तक अनधिकृत पहुंच या धोखाधड़ी अवैध और अनैतिक है।
सावधानी: एआई जनरेट किए गए कोड में कमजोरियां हो सकती हैं (अनुपलब्ध इनपुट सत्यापन, क्लाइंट ट्रस्ट, फ़ाइल हेरफेर सहेजें)। कोड को आंख मूंदकर स्वीकार न करें; विशेष रूप से नेटवर्क, अर्थशास्त्र और सेव कोड की सुरक्षा समीक्षा करें।
वास्तुशिल्प और रखरखाव ऋण
एआई व्यक्तिगत कार्यों को शीघ्रता से उत्पन्न करता है; लेकिन गेम की संरचना - सिस्टम कैसे विभाजित होते हैं, वे एक-दूसरे से कैसे बात करते हैं, डेटा कहां रखा जाता है - एक दीर्घकालिक निर्णय है, और यह मानव का है। यदि आप एआई को "संपूर्ण इन्वेंट्री लिखने, मुकाबला करने और सिस्टम को एक साथ सहेजने" के लिए कहते हैं तो आपको यार्न की एक कामकाजी लेकिन कसकर-युग्मित, बनाए रखने में मुश्किल, गैर-विस्तार योग्य गेंद मिलती है। इसके बजाय, आप आर्किटेक्चर डिज़ाइन करते हैं, परिभाषित इंटरफेस के साथ छोटे घटकों को पॉप्युलेट करने के लिए एआई का उपयोग करते हैं। जैसे-जैसे खेल बढ़ता है, अच्छे आर्किटेक्चर से फर्क पड़ता है: खराब फैसले एक साल बाद तकनीकी ऋण के रूप में वापस आते हैं जो हर नई सुविधा में देरी करता है।
रखरखाव ऋण का एक अन्य स्रोत वह कोड है जो बिना समझे परियोजना में प्रवेश करता है। एआई द्वारा लिखित प्रणाली आज काम कर सकती है; लेकिन जब आपको इसे छह महीने बाद बदलना पड़ता है और किसी को याद नहीं रहता कि उन्होंने क्या किया, तो कर्ज ब्याज में बदल जाता है। इसलिए दो अनुशासन आवश्यक हैं: उत्पादन समय पर कोड को पढ़ना और समझना, और एआई से स्पष्ट टिप्पणियां मांगना। एक सामान्य नियम के रूप में, अपने प्रोजेक्ट में कोई भी एआई कोड न डालें जिसे आप स्वयं दोबारा नहीं लिख सकें या कम से कम लाइन दर लाइन समझा न सकें। एआई गति देता है; आपका अनुशासन स्थिरता देता है.
तीन मिनी मामले
केस 1 - रिलीज़ संदर्भ ने बग को रोका। एक प्रोग्रामर ने सबसे पहले कहा, "एकता के लिए सूची लिखें"; कोड एक पुराने एपीआई का उपयोग कर रहा था, यह संकलित नहीं हुआ। फिर इसने "स्क्रिप्टेबलऑब्जेक्ट पर आधारित यूनिटी 2022.3, सी#" संदर्भ दिया; कोड पहली बार संकलित हुआ और प्रोजेक्ट में फिट हुआ। संदर्भ ने डिबगिंग का एक घंटा बचा लिया।
केस 2 - प्रदर्शन जाल। एक गेम में फ़्रेम दर कम थी. प्रोफाइलिंग करते समय, यह देखा गया कि एआई द्वारा निर्मित एक अपडेट विधि ने प्रत्येक फ्रेम में एक नई सूची आवंटित की और दुश्मनों की खोज की। कैश्ड संदर्भ और गैर-द्विघात अद्यतन के साथ कोड को ठीक किया गया, फ्रेम दर को 42 से बढ़ाकर 60 कर दिया गया।
केस 3 - सुरक्षा भेद्यता पकड़ी गई। मल्टीप्लेयर गेम में, AI-जनरेटेड कोड क्लाइंट पर हुए नुकसान की गणना करता है और सर्वर को इसकी सूचना देता है; यह धोखाधड़ी के लिए खुला था (ग्राहक असीमित क्षति पहुंचा सकता था)। कोड को सर्वर-अथॉरिटेरियन (सर्वर क्षति की गणना करता है) बना दिया गया है। ऑडिट ने प्रकाशन-पश्चात धोखाधड़ी घोटाले को रोक दिया।
चार प्रतिलिपि योग्य टेम्पलेट
1) संदर्भ सहित कोड अनुरोध:
इंजन: यूनिटी 2022.3। भाषा: सी#. वास्तुकला: [उदा. घटक आधारित] बाधा: अद्यतन में आवंटन; पठनीय और टिप्पणी योग्य बनें। कार्य: [एकल, परिभाषित घटक, उदा। "डबल जंप कैरेक्टर कंट्रोलर"]। सत्यापित करें कि आपके द्वारा उपयोग किया जाने वाला प्रत्येक एपीआई इस संस्करण में है; यदि आप निश्चित नहीं हैं तो मुझे बताएं।
2) कोड स्पष्टीकरण/समीक्षा:
निम्नलिखित कोड को पंक्ति दर पंक्ति समझाएं और लिखें (1) यह क्या करता है, (2) संभावित प्रदर्शन समस्याएं (प्रति फ्रेम आवंटन, महंगी खोज), (3) संभावित बग, (4) सुधार के लिए सुझाव। कोड: [पेस्ट करें]
3) मल्टीप्लेयर सुरक्षा ऑडिट:
सुरक्षा के लिए निम्नलिखित मल्टीप्लेयर कोड की जाँच करें। विशेष रूप से: वे स्थान जहां ग्राहक पर भरोसा किया जाता है, महत्वपूर्ण स्थिति जिसे सर्वर पर सत्यापित करने की आवश्यकता होती है (क्षति, अंक, धन), इनपुट सत्यापन गायब है। सर्वर-सत्तावादी बनाने के लिए समाधान सुझाएं। यह सिर्फ मेरे अपने खेल का बचाव करने के लिए है। कोड: [चिपकाएं]
4) प्रदर्शन प्रोफ़ाइल केंद्रित रिफैक्टर:
यह कोड प्रत्येक फ़्रेम पर चलता है और फ़्रेम दर को कम करता है: [कोड]। आवंटन, महंगे लुकअप और अनावश्यक फ़्रेम-दर-फ़्रेम संचालन ढूंढें; कैशिंग और कम लगातार अपडेट के साथ व्यवहार को तोड़े बिना अनुकूलन करें। परिवर्तनों को समझाइये।
कमजोर संकेत/मजबूत संकेत
कमजोर संकेत:
यूनिटी में एक सेव सिस्टम लिखें।
कोई संस्करण, प्रारूप, डेटा दायरा, सुरक्षा नहीं; परिणाम सामान्य और जोखिम भरा है.
शक्तिशाली संकेत:
इंजन: यूनिटी 2022.3, सी#। कार्य: JSON आधारित सेव/लोड सिस्टम। सहेजे जाने के लिए: खिलाड़ी का स्थान, सूची, प्रगति। बाधा: फ़ाइल भ्रष्टाचार के विरुद्ध त्रुटि प्रबंधन प्राप्त करें; प्लेयर द्वारा इसे आसानी से बदलकर धोखाधड़ी को रोकने के लिए सेव फ़ाइल में एक अखंडता जांच (हैश) जोड़ें। कोड पर टिप्पणी करें और सत्यापित करें कि प्रत्येक एपीआई इस संस्करण में है।
वर्जनिंग, स्कोप, त्रुटि प्रबंधन और अखंडता जांच आउटपुट को सख्त बनाती है।
इंजन/भाषा संदर्भ तालिका
इंजन
भाषा
आपको AI को क्या देना है
विशेष ध्यान
एकता
सी#
संस्करण, इनपुट/भौतिकी प्रणाली
अद्यतन आवंटन, जीवनचक्र
अवास्तविक
खाका
संस्करण, नोड संदर्भ
दृश्य तर्क सीमाएँ
अवास्तविक
सी++
संस्करण, मॉड्यूल संरचना
मेमोरी, जीसी, मैक्रोज़
मल्टीप्लेयर
दोनों
नेटवर्क मॉडल
प्रस्तुतकर्ता-अधिनायकवाद
सामान्य गलतियाँ
- इंजन/संस्करण निर्दिष्ट नहीं किया जा रहा है। यह पुराने या बने-बनाए एपीआई से आता है।
- कोड को समझे बिना उस पर भरोसा करना। अकारण कर्ज जमा हो जाता है।
- प्रदर्शन को मापना नहीं. फ़्रेम-दर-फ़्रेम आवंटन चुपचाप फ़्रेम दर को कम कर देता है।
- ग्राहक पर भरोसा करना. मल्टीप्लेयर में धोखाधड़ी की भेद्यता है।
- एक ही बार में पूरा सिस्टम चाहते हैं. छोटा, परीक्षण योग्य टुकड़ा अधिक सुरक्षित है।
संक्षेप में
गेम कोड में AI एक शक्तिशाली सहायक है, लेकिन इसके लिए इंजन, संस्करण और वास्तुशिल्प संदर्भ की आवश्यकता होती है। कोड को पढ़े और समझे, संकलित और परीक्षण किए बिना, और प्रदर्शन और सुरक्षा की जांच किए बिना इसे किसी प्रोजेक्ट में न डालें। मल्टीप्लेयर में सर्वर-अधिनायकवाद बनाए रखें और सुरक्षा जानकारी का उपयोग केवल रक्षात्मक और सत्यापन उद्देश्यों के लिए करें।
आवेदन कार्य
एक छोटा घटक चुनें (उदाहरण के लिए डबल जंप या साधारण इन्वेंट्री)। "संदर्भ के साथ कोड अनुरोध" टेम्पलेट के साथ इंजन और संस्करण प्रदान करके कोड उत्पन्न करें। फिर "कोड विवरण/समीक्षा" टेम्पलेट के साथ समान कोड की समीक्षा करवाकर प्रदर्शन और बग जोखिमों को दूर करें। इंजन में कोड संकलित करें और उसका परीक्षण करें।
जांच सूची
- [ ] मैंने इंजन, संस्करण, भाषा और वास्तुकला का संदर्भ दिया।
- [ ] मैंने कोड पढ़ा और समझा; मैं इसे कमेंट्री के साथ चाहता था।
- [ ] मैंने इसे इंजन में संकलित और परीक्षण किया और प्रदर्शन को मापा।
- [ ] मैंने नेटवर्क/इकोनॉमी/सेव कोड में सुरक्षा जांच की।
- [ ] मैंने केवल अपने खेल का बचाव करने के लिए सुरक्षा जानकारी का उपयोग किया।